Die Dogen-Muenzen: drei Saetze zu je drei Stufen

Filipe, 28.09.2026: "ich werde die drei varianten schicken fuer
niedrige spenden. mittlere und hohe spenden. alle drei varianten will
ich drauf so dass ich sie aussuchen kann wie ich will. aber pass sie
sofort diesen 3 kategorien an."

DIE ZUORDNUNG IST GELESEN, NICHT GERATEN

In allen drei Saetzen geht es nacktes Metall -> Steinkranz ->
Vollbesatz; Filipes Dateinummern (01/02/03) und die Uhrzeiten seiner
Entwuerfe laufen genau mit. Klassik: Palladium, Gold mit Saphir,
Diamant. Amethyst: Stahl, Rosegold, Vollbesatz. Neon: Chrom auf
Schwarz, Steinkranz, Vollbesatz.

AUS 25 MB WURDEN 443 KB

Je Bild 320 px WebP statt 1254 px PNG, Faktor 58. Die Zahl ist
gemessen: Groesster Fall in der Seite 110 px (Karte, hoechste Stufe),
auf der OBS-Tafel 189 px, bei doppelter Bildschirmdichte rund 220.
Drei Megabyte fuer ein 24-Pixel-Zeichen waeren ein Ladebalken mitten
in der Sendung -- wer auf dem Handy zusieht, bekaeme die Karte, wenn
sie schon wieder weg ist. Die Originale liegen neben den
Datenbanksicherungen, nicht im Repo: 26 MB, die bei jedem Klon
mitkaemen und die niemand ausliefert.

WELCHE MUENZE WANN -- ABGELEITET STATT GEPFLEGT

"Niedrig, mittel, hoch" gibt es im Haus schon: die Stufenleiter. Zwei
eigene Grenzen daneben waeren eine zweite Antwort auf dieselbe Frage,
und spaetestens beim Verschieben einer Stufe zeigte die Muenze etwas
anderes an als der Name auf der Karte. Die Leiter wird deshalb in
DRITTEL geteilt -- bei den drei Werksstufen genau eine je Muenze, bei
sechs zwei je Muenze, bei einer einzigen ueberall die mittlere.

DIE MUENZE STEHT AUCH GROSS AUF DER KARTE

Sonst haette Filipe neun Bilder fuer ein 24-Pixel-Zeichen gezeichnet.
"dogen" ist dafuer eine neue Vorlage neben Herz, Welle und Krone --
und die drei Werksstufen bekommen sie EINMAL zugeteilt, nur wo noch
die Werksvorlage steht und kein eigenes Bild hochgeladen ist. Wer
danach ein Herz zurueckstellt, findet es morgen nicht wieder als
Muenze vor: Eine Einstellung, die sich gegen den Benutzer durchsetzt,
wird abgeschafft.

Und steht sie gross da, nimmt das Stilblatt die kleine neben der Zahl
weg -- dieselbe Muenze in zwei Groessen auf einer Karte sieht aus wie
ein Versehen.

AM BILDSCHIRMFOTO NACHGEBESSERT

Bei 0,92em blieb an den Spendenknoepfen ein 13,5-Pixel-Fleck uebrig;
bei einem flachen Symbol reicht das, bei einer Muenze mit Pfote,
Schriftzug und Steinen nicht. Jetzt 1,05em ueberall und 1,6em auf den
Knoepfen. In der Auswahl sahen "Amethyst" und "Neon" bei 40 px
praktisch gleich aus -- und genau sie auseinanderzuhalten ist der
Zweck dieser Liste. Jetzt 56/64/72 px. Und was gewaehlt ist, steht
als WORT da: Neben neun glaenzenden Muenzen geht ein ruhiger Rahmen
unter, und wer Farben schlecht unterscheidet, sieht ihn gar nicht.

EIN SATZWECHSEL ERREICHT ALLE

Die Karten trugen ihren Satz immer selbst mit und waren richtig. Die
Muenzen an den Spendenknoepfen und beim eigenen Stand aber nicht --
die holt eine Seite nur bei einer Spende neu. Eine Einstellung, die
nur dort ankommt, wo sie gemacht wurde, ist keine Einstellung des
Hauses.

ZWEI BEFUNDE GEGEN DIE PRUEFUNG SELBST

1. Sie verlangte "erste Grenze ECHT kleiner als zweite". Bei genau
   zwei Stufen fallen beide absichtlich zusammen -- sie meldete einen
   Fehler, wo das Verhalten richtig ist.
2. Sie prueft die Muenzverteilung jetzt auf einer FRISCHEN Datenbank.
   Vorher lief sie auf der, die ein frueherer Abschnitt umgebaut
   hatte: Eine Pruefung, die den eigenen Kollateralschaden misst,
   misst sich selbst. Dazu eine Gegenprobe, dass eine selbst
   gewaehlte Vorlage NICHT ueberschrieben wird.

UND DREI AN DER MESSUNG

Sie suchte noch die gezeichnete Muenze (svg), wo jetzt ein Bild
liegt. Umgestellt nicht auf "ist ein img da", sondern auf
`naturalWidth > 0` -- ob es etwas ZEIGT. Ein img, das 404 antwortet,
steht genauso im Dokument wie eines, das laedt; auf dem Bildschirm
ist an seiner Stelle nichts. Und beim Satzwechsel las sie die vorige
Karte, die noch acht Sekunden stand: Die Karten laufen in einer
Schlange, also wird auf das Merkmal gewartet, das nur die neue hat.

pruef-spenden 167/0 (vorher 136) - pruef-reaktion 321/0 -
pruef-css-klassen ok - pruef-tippziele 11/0 -
mess-reaktion und mess-buehne ohne Beanstandung

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-28 19:36:05 +02:00
co-authored by Claude Opus 5
parent c00c209ac9
commit 96bdd79a91
63 changed files with 1446 additions and 770 deletions
+90 -5
View File
@@ -582,6 +582,13 @@ await zuschauer.seite.evaluate(() => {
wer: n.querySelector(".spendenkarte__wer")?.textContent?.trim(),
stufe: n.querySelector(".spendenkarte__stufe")?.textContent?.trim(),
gruss: n.querySelector(".spendenkarte__gruss")?.textContent?.trim(),
/* Welche Muenze gross auf der Karte steht -- und ob die
kleine daneben weggenommen wurde. Dieselbe Muenze in
zwei Groessen auf einer Karte saehe aus wie ein
Versehen. */
muenze: (n.querySelector(".spendenkarte__bild img")
?.getAttribute("src") || "").split("/").pop(),
kleinWeg: n.dataset?.muenze === "ja",
});
}
}
@@ -619,10 +626,19 @@ const geben = await zuschauer.seite.evaluate(() => {
da: k2 && !k2.hidden,
knoepfe: knoepfe.length,
zahlen: knoepfe.map((a) => a.querySelector(".dogen__zahl")?.textContent || "?"),
/* Ohne hochgeladenes Symbol muss die gezeichnete Muenze da sein
-- ein Knopf mit einer nackten Zahl waere kein „Dogen mit dem
Symbol". */
zeichen: knoepfe.filter((a) => a.querySelector("svg.dogen__zeichen")).length,
/* ==== DAS ZEICHEN MUSS DA SEIN -- UND GELADEN ==============
Seit dem 28.09. ist es ein BILD (Filipes Muenzen) und keine
Zeichnung mehr. Gezaehlt wird deshalb nicht, ob ein Knoten da
ist, sondern ob er etwas ZEIGT: Ein `img`, das 404 antwortet,
steht genauso im Dokument wie eines, das laedt -- und auf dem
Bildschirm ist an seiner Stelle nichts.
`naturalWidth > 0` ist der Unterschied, und er ist genau der,
den man sonst erst im Livestream sieht. */
zeichen: knoepfe.filter((a) => {
const b = a.querySelector(".dogen__zeichen");
if (!b) return false;
return b.tagName.toLowerCase() === "img" ? b.naturalWidth > 0 : true;
}).length,
/* Und nirgends ein Euro. */
geld: /€|EUR|Euro/.test(k2?.textContent || ""),
};
@@ -820,7 +836,11 @@ if (!wartet) {
da: !!p && !p.hidden,
zahl: p?.querySelector(".dogen__zahl")?.textContent || "",
wort: p?.querySelector(".dogen__wort")?.textContent || "",
zeichen: !!p?.querySelector("svg.dogen__zeichen"),
zeichen: (() => {
const b = p?.querySelector(".dogen__zeichen");
if (!b) return false;
return b.tagName.toLowerCase() === "img" ? b.naturalWidth > 0 : true;
})(),
text: p?.textContent?.trim() || "",
};
});
@@ -830,6 +850,71 @@ if (!wartet) {
console.log(" ACHTUNG: Der eigene Dogen-Stand kommt nicht an.");
ausgang = 1;
}
/* ==== DIE MUENZE MUSS ZUR HOEHE DER SPENDE PASSEN =============
Filipe: „drei varianten fuer niedrige spenden. mittlere und
hohe spenden. aber pass sie sofort diesen 3 kategorien an."
Die erste Karte sind 2,5 Dogen (Rudel-Legende, oberes Drittel),
die zweite 1 Doge (Starke Runde, mittleres). Stuende auf beiden
dieselbe Muenze, waere die ganze Einteilung wirkungslos -- und
das sieht man einer einzelnen Karte nie an. */
console.log(` Muenzen: „${nachMelden[0]?.muenze}" bei 2,5 · `
+ `„${nachJa[1]?.muenze}" bei 1`);
console.log(` Kleine Muenze daneben weggenommen: `
+ `${nachMelden[0]?.kleinWeg} / ${nachJa[1]?.kleinWeg}`);
if (!/-hoch\.webp$/.test(nachMelden[0]?.muenze || "")
|| !/-mittel\.webp$/.test(nachJa[1]?.muenze || "")) {
console.log(" ACHTUNG: Die Muenze passt nicht zur Hoehe der Spende.");
ausgang = 1;
}
if (!nachMelden[0]?.kleinWeg || !nachJa[1]?.kleinWeg) {
console.log(" ACHTUNG: Die Muenze steht zweimal auf derselben Karte.");
ausgang = 1;
}
/* ---- UND DER SATZ LAESST SICH WECHSELN ----
Gemessen ueber die Probe beim Host: Sie schreibt nichts in die
Datenbank und ist damit der einzige Weg, eine Karte zu sehen,
ohne eine Spende zu erfinden. */
await roh("/workspace/api/spenden/zeichen/satz", {
method: "PUT", keks: k.admin, rumpf: { satz: "neon" },
});
await host.seite.waitForTimeout(700);
await roh("/workspace/api/spenden/probe", {
method: "POST", keks: k.admin, rumpf: { dogen_mille: 2500 },
});
/* AUF DIE PROBEKARTE WARTEN, NICHT AUF IRGENDEINE.
Beim ersten Lauf stand noch die vorige Karte („Starke Runde",
acht Sekunden) auf dem Bildschirm, und die Messung las deren
Muenze -- sie meldete „klassik-mittel" und damit einen Fehler,
den es nicht gab. Die Karten laufen in einer SCHLANGE: Die
naechste kommt erst, wenn die vorige abgelaufen ist. Also auf
das Merkmal warten, das nur die neue hat. */
await host.seite.waitForFunction(
() => [...document.querySelectorAll('.spendenkarte[data-da="ja"]')].some(
(k2) => k2.querySelector(".spendenkarte__wer")?.textContent === "Probe"
&& k2.querySelector(".spendenkarte__bild img")),
null, { timeout: 20000 },
).catch(() => {});
const nachWechsel = await host.seite.evaluate(() => {
const k2 = [...document.querySelectorAll('.spendenkarte[data-da="ja"]')]
.find((x) => x.querySelector(".spendenkarte__wer")?.textContent === "Probe");
const b = k2?.querySelector(".spendenkarte__bild img");
/* Und auch hier: geladen, nicht nur vorhanden. */
return b && b.naturalWidth > 0
? (b.getAttribute("src") || "").split("/").pop() : "(nicht geladen)";
});
console.log(` Nach dem Wechsel auf „Neon": „${nachWechsel}"`);
if (nachWechsel !== "neon-hoch.webp") {
console.log(" ACHTUNG: Der gewechselte Muenzsatz kommt nicht an.");
ausgang = 1;
}
await roh("/workspace/api/spenden/zeichen/satz", {
method: "PUT", keks: k.admin, rumpf: { satz: "klassik" },
});
}
await host.seite.click('#reiter .reiter__knopf[data-tafel="spenden"]').catch(() => {});
+219 -11
View File
@@ -16,7 +16,7 @@
Aufrufen mit: node server/pruef-spenden.mjs
===================================================================== */
import { mkdtempSync, rmSync, readFileSync } from "node:fs";
import { mkdtempSync, rmSync, readFileSync, statSync } from "node:fs";
import { tmpdir } from "node:os";
import { join, dirname } from "node:path";
import { fileURLToPath } from "node:url";
@@ -396,12 +396,20 @@ melde("=== 8. Die Gestaltung der Karten ===");
const block = karte.match(/const VORLAGEN = \{([\s\S]*?)\n \};/);
const inKarte = [...(block ? block[1] : "").matchAll(/^\s{4}([a-z]+):/gm)].map((m) => m[1]);
ok(inKarte.length >= 5, `die Karte kennt ${inKarte.length} Zeichnungen`);
const fehlt = VORLAGEN.filter((v) => !inKarte.includes(v));
const zuviel = inKarte.filter((v) => !VORLAGEN.includes(v));
/* „dogen" IST EINE VORLAGE, ABER KEINE ZEICHNUNG. Sie zeigt
die Muenze des gewaehlten Satzes und steht deshalb nicht im
Zeichnungsblock -- verglichen wird ohne sie. Dass die Karte
sie trotzdem behandelt, prueft die Zeile darunter: Ohne sie
waere „dogen" eine Auswahl, die als Herz erscheint. */
const zeichnungen = VORLAGEN.filter((v) => v !== "dogen");
const fehlt = zeichnungen.filter((v) => !inKarte.includes(v));
const zuviel = inKarte.filter((v) => !zeichnungen.includes(v));
ok(fehlt.length === 0 && zuviel.length === 0,
(fehlt.length || zuviel.length)
? `UNGLEICH: fehlt ${fehlt.join(",")} / zuviel ${zuviel.join(",")}`
: `Server und Karte kennen dieselben ${VORLAGEN.length} Zeichnungen`);
: `Server und Karte kennen dieselben ${zeichnungen.length} Zeichnungen`);
ok(VORLAGEN.includes("dogen") && /vorlage === 'dogen'/.test(karte),
"und die Karte behandelt die Muenze als eigene Vorlage");
ok(!VORLAGEN.includes("wolke"), "Gegenprobe: eine erfundene Zeichnung steht in keiner Liste");
}
@@ -789,8 +797,12 @@ melde("=== 9. Dogen, eigener Text und Punkte ===");
"und in der Liste steht nur, wer wirklich etwas hat");
/* ---- DAS ZEICHEN ---- */
/* SEIT DEM 28.09. IST `zeichen` EINE AUSWAHL UND KEINE ADRESSE:
drei Muenzen und zwei Grenzen. Das Hochgeladene steht darin als
`eigen`. Die Saetze selbst prueft Abschnitt 10; hier geht es nur
um den Weg des eigenen Bildes. */
const ohneZeichen = await roh(CREW, "/workspace/api/spenden", { keks: k.admin });
ok(ohneZeichen.j?.zeichen === "", "ohne Hochladen gibt es kein Zeichen");
ok(ohneZeichen.j?.zeichen?.eigen === "", "ohne Hochladen gibt es kein eigenes Zeichen");
const png = Buffer.from(
"89504e470d0a1a0a0000000d494844520000000100000001080600000"
@@ -799,19 +811,23 @@ melde("=== 9. Dogen, eigener Text und Punkte ===");
const hochZ = await roh(CREW, "/workspace/api/spenden/zeichen", {
method: "POST", keks: k.admin, roher: png,
});
ok(hochZ.code === 200 && /\/spendenbild\/[a-f0-9]{32}\.png$/.test(hochZ.j?.zeichen || ""),
ok(hochZ.code === 200
&& /\/spendenbild\/[a-f0-9]{32}\.png$/.test(hochZ.j?.zeichen?.eigen || ""),
`das Zeichen laesst sich hochladen (${hochZ.code})`);
const abrufbar = await roh(CREW, hochZ.j.zeichen, {});
const eigenAdresse = hochZ.j?.zeichen?.eigen || "";
const abrufbar = await roh(CREW, eigenAdresse, {});
ok(abrufbar.code === 200,
`und ist OHNE Anmeldung abrufbar (${abrufbar.code}) -- sonst fehlte es im Stream`);
const mitZeichen = await roh(CREW, "/workspace/api/spenden", { keks: k.gast });
ok(mitZeichen.j?.zeichen === hochZ.j.zeichen,
ok(mitZeichen.j?.zeichen?.eigen === eigenAdresse,
"es steht im Stand, und zwar fuer alle");
ok(mitZeichen.j?.zeichen?.niedrig === eigenAdresse,
"und gilt fuer alle drei Stufen gleich");
const probe = await roh(CREW, "/workspace/api/spenden/probe", {
method: "POST", keks: k.admin, rumpf: { dogen_mille: 500 },
});
ok(probe.j?.karte?.zeichen === hochZ.j.zeichen,
ok(probe.j?.karte?.zeichen?.eigen === eigenAdresse,
"und reist mit jeder Karte mit");
const keinBild = await roh(CREW, "/workspace/api/spenden/zeichen", {
@@ -826,12 +842,204 @@ melde("=== 9. Dogen, eigener Text und Punkte ===");
const wegZ = await roh(CREW, "/workspace/api/spenden/zeichen",
{ method: "DELETE", keks: k.admin });
ok(wegZ.code === 200 && wegZ.j?.zeichen === "",
ok(wegZ.code === 200 && wegZ.j?.zeichen?.eigen === "",
`es laesst sich wieder wegnehmen (${wegZ.code})`);
const fortZ = await roh(CREW, hochZ.j.zeichen, {});
const fortZ = await roh(CREW, eigenAdresse, {});
ok(fortZ.code === 404, `und die Datei ist danach fort (${fortZ.code})`);
}
/* =======================================================================
10. DIE DREI MUENZSAETZE
Filipe, 28.09.2026: „ich werde die drei varianten schicken fuer
niedrige spenden. mittlere und hohe spenden. alle drei varianten
will ich drauf so dass ich sie aussuchen kann wie ich will. aber
pass sie sofort diesen 3 kategorien an."
======================================================================= */
melde("");
melde("=== 10. Die drei Muenzsaetze ===");
{
const { DOGEN_SAETZE, DOGEN_STUFEN, muenzeAdresse }
= await import("./spenden-tabellen.js");
ok(DOGEN_SAETZE.length === 3,
`es gibt ${DOGEN_SAETZE.length} Saetze: ${DOGEN_SAETZE.map((x) => x.name).join(", ")}`);
ok(DOGEN_STUFEN.length === 3 && DOGEN_STUFEN[0] === "niedrig"
&& DOGEN_STUFEN[2] === "hoch",
`und drei Stufen: ${DOGEN_STUFEN.join(", ")}`);
/* ---- JEDE MUENZE MUSS ES AUCH GEBEN ----
Die wichtigste Pruefung hier. Ein fehlendes Bild waere ein
kaputtes Zeichen neben JEDER Zahl -- im Saal und im Stream, und
gemerkt haette man es erst im Livestream. */
{
const fehlend = [];
const zuGross = [];
for (const satz of DOGEN_SAETZE) {
for (const stufe of DOGEN_STUFEN) {
const pfad = join(HIER, "..", muenzeAdresse(satz.schluessel, stufe)
.replace(/^\//, "").split("/").join("/"));
try {
const gross = statSync(pfad).size;
if (gross > 100 * 1024) zuGross.push(`${satz.schluessel}-${stufe} ${Math.round(gross / 1024)} KB`);
} catch { fehlend.push(`${satz.schluessel}-${stufe}`); }
}
}
ok(fehlend.length === 0,
fehlend.length ? `ES FEHLEN: ${fehlend.join(", ")}`
: `alle ${DOGEN_SAETZE.length * DOGEN_STUFEN.length} Muenzen liegen im Baum`);
/* UND KEINE DARF SCHWER SEIN. Filipes Vorlagen waren je drei
Megabyte; gezeigt wird die Muenze zwischen 24 und 110 Pixeln.
Ohne diese Grenze rutscht irgendwann wieder ein Original
herein, und dann laedt die Karte laenger, als sie steht. */
ok(zuGross.length === 0,
zuGross.length ? `ZU SCHWER: ${zuGross.join(", ")}`
: "und keine ist schwerer als 100 KB");
}
/* ---- UND SIE MUESSEN OHNE ANMELDUNG ZU HABEN SEIN ----
Die Spendentafel in OBS hat keine Sitzung. Eine Muenze hinter
der Schranke fehlte ausgerechnet im Stream. */
{
const a = await roh(CREW, muenzeAdresse("klassik", "hoch"), {});
ok(a.code === 200, `eine Muenze kommt ohne Anmeldung (${a.code})`);
const b = await roh(CREW, "/workspace/assets/dogen/gibtesnicht-hoch.webp", {});
ok(b.code === 404, `Gegenprobe: eine erfundene Muenze gibt es nicht (${b.code})`);
}
/* ---- WAS DER STAND SAGT ---- */
const lage = await roh(CREW, "/workspace/api/spenden", { keks: k.admin });
const z = lage.j?.zeichen;
ok(!!z && typeof z.satz === "string" && z.niedrig && z.mittel && z.hoch,
`der Stand traegt einen Satz („${z?.satz}“) mit drei Muenzen`);
/* KLEINER ODER GLEICH, nicht echt kleiner. Bei genau ZWEI Stufen
fallen die beiden Grenzen absichtlich zusammen: Dann gibt es
niedrig und hoch, und nichts dazwischen. Eine Pruefung auf „echt
kleiner" haette hier einen Fehler gemeldet, wo das Verhalten
richtig ist -- und genau das hat sie beim ersten Lauf getan. */
ok(Array.isArray(z?.grenzen) && z.grenzen.length === 2 && z.grenzen[0] <= z.grenzen[1],
`und zwei Grenzen (${z?.grenzen?.join(" / ")})`);
/* DIE GRENZEN KOMMEN AUS DER STUFENLEITER UND NICHT AUS EINER
ZWEITEN LISTE. Bei drei Stufen ist das genau eine Muenze je
Stufe. */
const leiter = (lage.j?.stufen || []).map((x) => x.ab_mille);
ok(leiter.length < 3
|| (z.grenzen[0] === leiter[Math.floor(leiter.length / 3)]
&& z.grenzen[1] === leiter[Math.floor((2 * leiter.length) / 3)]),
`sie sind aus der Leiter abgeleitet (Leiter ${leiter.join(", ")})`);
ok(Array.isArray(lage.j?.saetze) && lage.j.saetze.length >= 3,
`die Leitung bekommt ${lage.j?.saetze?.length} Saetze zum Aussuchen`);
const gast = await roh(CREW, "/workspace/api/spenden", { keks: k.gast });
ok(gast.j?.saetze === null, "ein Zuschauer bekommt die Auswahl nicht");
ok(!!gast.j?.zeichen?.niedrig, "aber die Muenzen selbst schon");
/* ---- DIE KARTE TRAEGT DEN SATZ ----
Eine Form ueberall: Die Karte bekommt dieselbe Auswahl wie der
Stand und sucht sich daraus die Muenze zu ihrer Zahl. Schickte
der Server hier EINE Adresse, gaebe es zwei Formen desselben
Dinges. */
const probe = await roh(CREW, "/workspace/api/spenden/probe", {
method: "POST", keks: k.admin, rumpf: { dogen_mille: 2500 },
});
ok(!!probe.j?.karte?.zeichen?.hoch && Array.isArray(probe.j.karte.zeichen.grenzen),
"und jede Karte bekommt ihn mit");
/* ---- AUSSUCHEN ---- */
for (const satz of DOGEN_SAETZE) {
const a = await roh(CREW, "/workspace/api/spenden/zeichen/satz", {
method: "PUT", keks: k.admin, rumpf: { satz: satz.schluessel },
});
ok(a.code === 200 && a.j?.zeichen?.satz === satz.schluessel,
`„${satz.name}“ laesst sich waehlen (${a.code})`);
ok((a.j?.zeichen?.hoch || "").includes(`${satz.schluessel}-hoch`),
`und die hohe Muenze kommt aus diesem Satz`);
}
const quatsch = await roh(CREW, "/workspace/api/spenden/zeichen/satz", {
method: "PUT", keks: k.admin, rumpf: { satz: "platin" },
});
ok(quatsch.code === 400 && quatsch.j?.fehler === "satz_unbekannt",
`ein erfundener Satz wird abgelehnt (${quatsch.code})`);
/* „eigen" OHNE HOCHGELADENES BILD GIBT ES NICHT -- sonst stuende
neben jeder Zahl ein Bild, das 404 antwortet. */
const ohneEigenes = await roh(CREW, "/workspace/api/spenden/zeichen/satz", {
method: "PUT", keks: k.admin, rumpf: { satz: "eigen" },
});
ok(ohneEigenes.code === 400,
`„eigen“ ohne eigenes Bild wird abgelehnt (${ohneEigenes.code})`);
const fremd = await roh(CREW, "/workspace/api/spenden/zeichen/satz", {
method: "PUT", keks: k.modi, rumpf: { satz: "neon" },
});
ok(fremd.code === 403, `ein Modi waehlt den Satz nicht (${fremd.code})`);
/* ---- EIN EIGENES ZEICHEN GILT SOFORT UND FAELLT SAUBER ZURUECK ---- */
const png = Buffer.from(
"89504e470d0a1a0a0000000d494844520000000100000001080600000"
+ "01f15c4890000000a49444154789c6360000002000100ffff0300000600"
+ "0557bfabd40000000049454e44ae426082", "hex");
const hoch = await roh(CREW, "/workspace/api/spenden/zeichen", {
method: "POST", keks: k.admin, roher: png,
});
ok(hoch.code === 200 && hoch.j?.zeichen?.satz === "eigen",
`ein hochgeladenes Zeichen gilt sofort (${hoch.j?.zeichen?.satz})`);
ok(hoch.j?.zeichen?.niedrig === hoch.j?.zeichen?.hoch,
"es gilt fuer alle drei Stufen gleich");
ok((hoch.j?.saetze || []).some((x) => x.schluessel === "eigen"),
"und steht ab jetzt in der Auswahl");
const weg = await roh(CREW, "/workspace/api/spenden/zeichen",
{ method: "DELETE", keks: k.admin });
ok(weg.code === 200 && weg.j?.zeichen?.satz === DOGEN_SAETZE[0].schluessel,
`nach dem Loeschen gilt wieder ein Satz, den es gibt (${weg.j?.zeichen?.satz})`);
ok(!(weg.j?.saetze || []).some((x) => x.schluessel === "eigen"),
"und „eigen“ steht nicht mehr zur Wahl");
/* ==== DIE MUENZEN HAENGEN VON ANFANG AN AN DEN DREI STUFEN ====
Filipe: „aber pass sie sofort diesen 3 kategorien an."
GEPRUEFT WIRD AUF EINER FRISCHEN DATENBANK und nicht auf dieser:
Die Leiter hier ist in Abschnitt 8 umgebaut worden, und danach
steht sie so da, wie die Pruefung sie gesetzt hat -- nicht so,
wie ein frisches Haus sie bekommt. Eine Pruefung, die den
eigenen Kollateralschaden misst, misst sich selbst.
Und die zweite Haelfte ist die wichtigere: Eine Stufe, die
jemand SELBST gewaehlt hat, wird nicht ueberschrieben. Eine
Verteilung, die sich gegen den Benutzer durchsetzt, wird
abgeschafft. */
{
const { mkdtempSync: neuerOrdner } = await import("node:fs");
const { tmpdir: tmp2 } = await import("node:os");
const { DatabaseSync: DBM } = await import("node:sqlite");
const { spendenTabellen } = await import("./spenden-tabellen.js");
const ordner2 = neuerOrdner(join(tmp2(), "muenzen-"));
const d2 = new DBM(join(ordner2, "probe.db"));
d2.exec(`CREATE TABLE einstellungen (schluessel TEXT PRIMARY KEY,
wert TEXT NOT NULL, geaendert TEXT, von INTEGER);
CREATE TABLE personen (id INTEGER PRIMARY KEY);`);
spendenTabellen(d2);
const frisch = d2.prepare("SELECT ab_cent, vorlage FROM spenden_stufen ORDER BY ab_cent")
.all();
ok(frisch.length === 3 && frisch.every((x) => x.vorlage === "dogen"),
`ein frisches Haus zeigt die Muenze auf allen ${frisch.length} Stufen `
+ `(${frisch.map((x) => x.vorlage).join(", ")})`);
/* Gegenprobe: eine selbst gewaehlte Vorlage bleibt stehen -- auch
wenn die Verteilung noch einmal laufen wuerde. */
d2.exec("UPDATE spenden_stufen SET vorlage = 'stern' WHERE ab_cent = 500");
d2.exec("DELETE FROM einstellungen WHERE schluessel = 'dogen_muenzen_verteilt'");
spendenTabellen(d2);
const nachDemZweiten = d2.prepare("SELECT vorlage FROM spenden_stufen WHERE ab_cent = 500")
.get();
ok(nachDemZweiten?.vorlage === "stern",
`Gegenprobe: eine selbst gewaehlte Vorlage bleibt (${nachDemZweiten?.vorlage})`);
d2.close();
rmSync(ordner2, { recursive: true, force: true });
}
}
melde("");
melde(`${geprueft} Pruefungen, ${fehler} Fehler`);
melde(fehler === 0 ? "ALLES IN ORDNUNG" : "NICHT IN ORDNUNG");
+109 -12
View File
@@ -142,8 +142,67 @@ export const GRUSS_MAX = 140;
* DIESE LISTE IST DIE WAHRHEIT -- `spendenkarte.js` hat dieselben
* Namen, und eine Pruefung haelt beide aneinander. Ein Name, den
* nur eine Seite kennt, waere eine Vorlage, die sich auswaehlen
* laesst und dann als Herz erscheint. */
export const VORLAGEN = ["herz", "welle", "krone", "stern", "pfote"];
* laesst und dann als Herz erscheint.
*
* „dogen" ist die einzige, die KEINE Zeichnung ist: Sie zeigt die
* Muenze des gewaehlten Satzes in der Stufe, die zur Spende passt.
* Sie steht trotzdem in derselben Liste, weil sie an derselben
* Stelle dieselbe Frage beantwortet -- eine zweite Auswahl daneben
* waere eine zweite Antwort auf „welches Bild steht auf der
* Karte". */
export const VORLAGEN = ["dogen", "herz", "welle", "krone", "stern", "pfote"];
/* =====================================================================
DIE MUENZSAETZE (28.09.2026)
Filipe: „ich werde die drei varianten schicken fuer niedrige
spenden. mittlere und hohe spenden. alle drei varianten will ich
drauf so dass ich sie aussuchen kann wie ich will. aber pass sie
sofort diesen 3 kategorien an."
Drei Saetze zu je drei Muenzen. Die Rangfolge steht in den Bildern
selbst und ist in allen drei dieselbe: nacktes Metall ->
Steinkranz -> Vollbesatz. Filipes Dateinummern (01/02/03) und die
Uhrzeiten seiner Entwuerfe laufen genau mit.
DIE BILDER LIEGEN IM BAUM UND NICHT IN DER DATENBANK. Sie kommen
mit dem Programm, aendern sich nur mit ihm, und `express.static`
liefert sie OHNE Anmeldung aus -- das braucht die Spendentafel in
OBS, die keine Sitzung hat. Ein hochgeladenes eigenes Zeichen gibt
es weiterhin; es ist der vierte Satz und heisst „eigen".
===================================================================== */
/** Die drei Stufen, in denen es jede Muenze gibt. */
export const DOGEN_STUFEN = ["niedrig", "mittel", "hoch"];
/** Die mitgelieferten Saetze. Der erste ist die Vorgabe. */
export const DOGEN_SAETZE = [
{
schluessel: "klassik",
name: "Klassik",
wort: "Palladium · Gold mit Saphir · Diamant",
},
{
schluessel: "amethyst",
name: "Amethyst",
wort: "Stahl · Rosegold mit Amethyst · Vollbesatz",
},
{
schluessel: "neon",
name: "Neon",
wort: "Chrom auf Schwarz · Steinkranz · Vollbesatz",
},
];
/** Wo eine Muenze liegt. EINE Stelle bildet den Namen -- sonst
* stuende der Pfad an vier Stellen, und beim naechsten Satz
* vergisst man die vierte. */
export function muenzeAdresse(satz, stufe) {
return `/workspace/assets/dogen/${satz}-${stufe}.webp`;
}
/** Unter welchem Namen der gewaehlte Satz in den Einstellungen steht. */
export const SATZ_NAME = "dogen_satz";
/** So viele Stufen hoechstens.
*
@@ -186,19 +245,24 @@ export const GROESSE_MAX = 2.5;
/** Wie gross ein hochgeladenes Bild sein darf. */
export const BILD_MAX_BYTES = 3 * 1024 * 1024;
/** Unter welchem Namen das Dogen-Zeichen in den Einstellungen steht.
/** Unter welchem Namen ein EIGENES, hochgeladenes Zeichen steht.
*
* Filipe: „die symbole schick ich dir spaeter. bereite jetzt alles
* vor."
*
* ES IST EINE EINSTELLUNG UND KEINE DATEI IM QUELLTEXT. Laege das
* Zeichen als Bild im Verzeichnis, haenge jedes neue Symbol an
* einem Deploy -- also an mir. So laedt Filipe es im Regiepult hoch,
* und bis dahin steht eine gezeichnete Muenze da, die in jeder
* Farbe funktioniert. Ein leerer Kasten waere die schlechtere
* Zwischenloesung: Man haelt ihn fuer kaputt. */
* Es bleibt neben den drei Saetzen bestehen und ist der vierte
* („eigen"). Anders als die Saetze gilt es fuer alle drei Stufen
* gleich -- wer ein einzelnes Bild hochlaedt, meint ein Zeichen und
* keine Rangfolge. */
export const ZEICHEN_NAME = "dogen_zeichen";
/** Unter welchem Namen steht, dass die Muenzen schon einmal an die
* Stufen verteilt wurden.
*
* Filipe: „aber pass sie sofort diesen 3 kategorien an." Das
* passiert EINMAL und nie wieder: Wer danach eine Stufe auf ein
* Herz zurueckstellt, soll sie beim naechsten Neustart nicht wieder
* als Muenze vorfinden. Eine Einstellung, die sich gegen den
* Benutzer durchsetzt, wird abgeschafft. */
export const MUENZEN_VERTEILT = "dogen_muenzen_verteilt";
/** Die Stufen, die es ab Werk gibt — „paar fertige" aus Filipes
* Ansage. Sie stehen hier und nicht in der Datenbank, damit ein
* frisches Haus sofort etwas anzuzeigen hat; geaendert werden sie
@@ -358,4 +422,37 @@ export function spendenTabellen(d) {
VALUES (?,?,?,?,?,?,?)`)
.run(s.ab_cent, s.name, s.vorlage, s.farbe, s.dauer_ms, s.groesse, nun);
}
/* ==== DIE MUENZEN EINMAL AN DIE DREI STUFEN VERTEILEN ==========
Filipe: „aber pass sie sofort diesen 3 kategorien an."
NUR EINMAL, UND NUR WO NICHTS EIGENES STEHT. Geaendert wird eine
Stufe genau dann, wenn sie noch ihre WERKSVORLAGE traegt (Herz,
Welle, Krone) und kein eigenes Bild hochgeladen ist. Wer selbst
einen Stern gewaehlt hat, behaelt ihn.
Und der Merker sorgt dafuer, dass es beim naechsten Start nicht
wieder passiert: Wer eine Stufe zurueck auf ein Herz stellt,
soll sie morgen nicht wieder als Muenze vorfinden. Eine
Einstellung, die sich gegen den Benutzer durchsetzt, wird
abgeschafft -- und dann ist auch die gute Absicht dahinter weg. */
try {
const schon = d.prepare("SELECT wert FROM einstellungen WHERE schluessel = ?")
.get(MUENZEN_VERTEILT);
if (!schon) {
const werk = new Set(STUFEN_START.map((x) => x.vorlage));
const a = d.prepare(`UPDATE spenden_stufen SET vorlage = 'dogen'
WHERE bild = '' AND vorlage IN (${[...werk].map(() => "?").join(",")})`)
.run(...werk);
d.prepare(`INSERT OR REPLACE INTO einstellungen (schluessel, wert, geaendert)
VALUES (?,?,?)`).run(MUENZEN_VERTEILT, "ja", new Date().toISOString());
if (a.changes) console.log(`[spenden] Muenzen an ${a.changes} Stufen verteilt.`);
}
} catch (fehler) {
/* Eine nicht verteilte Muenze ist ein Schoenheitsfehler, kein
Grund, den Start abzubrechen. */
console.error("[spenden] Muenzen verteilen:", fehler?.message);
}
}
+143 -14
View File
@@ -46,6 +46,7 @@ import {
VORLAGEN, STUFEN_MAX, DAUER_MS_MIN, DAUER_MS_MAX,
GROESSE_MIN, GROESSE_MAX, BILD_MAX_BYTES,
centInMille, milleInCent, ZEICHEN_NAME,
DOGEN_SAETZE, DOGEN_STUFEN, SATZ_NAME, muenzeAdresse,
} from "./spenden-tabellen.js";
const BILDER = join(DATEN_ORDNER, "spendenbilder");
@@ -284,7 +285,7 @@ function alsKarte(z) {
die eine Karte zeigt, an zwei Dinge denken muss. Die Karte
traegt alles, was sie braucht; genau das verspricht
spendenkarte.js in ihrem Kopf. */
zeichen: zeichenAdresse(),
zeichen: zeichenSatz(),
name: z.name,
gruss: z.gruss,
herkunft: z.herkunft,
@@ -307,15 +308,98 @@ function bildAdresse(datei) {
return datei ? `/workspace/api/buehne/spendenbild/${datei}` : "";
}
/** Das Dogen-Zeichen, wenn eines hochgeladen wurde.
/* ======================================================================
WELCHE MUENZE ZU WELCHER SPENDE
Filipe: „ich werde die drei varianten schicken fuer niedrige
spenden. mittlere und hohe spenden."
---------------------------------------------------------------------
DIE GRENZEN WERDEN ABGELEITET UND NICHT GEPFLEGT
„Niedrig, mittel, hoch" gibt es im Haus schon -- das ist die
Stufenleiter. Zwei eigene Grenzen daneben waeren eine zweite
Antwort auf dieselbe Frage, und spaetestens wenn Filipe eine Stufe
verschiebt, zeigte die Muenze etwas anderes an als der Name auf
der Karte.
Die Leiter wird deshalb in DRITTEL geteilt. Bei den drei Stufen ab
Werk ist das genau eine je Muenze. Bei sechs Stufen sind es zwei
je Muenze -- und bei einer einzigen gibt es kein Oben und Unten,
dann steht ueberall die mittlere.
====================================================================== */
function zeichenGrenzen() {
try {
const leiter = db().prepare("SELECT ab_cent FROM spenden_stufen ORDER BY ab_cent")
.all().map((z) => centInMille(z.ab_cent));
const n = leiter.length;
/* Ohne Leiter und bei genau einer Stufe gibt es keine Rangfolge:
alles bekommt die mittlere Muenze. Die Untergrenze 0 erreicht
niemand (Betraege sind immer groesser), die Obergrenze ist
unerreichbar gross -- also faellt alles dazwischen. */
if (n < 2) return [0, Number.MAX_SAFE_INTEGER];
if (n === 2) return [leiter[1], leiter[1]];
return [leiter[Math.floor(n / 3)], leiter[Math.floor((2 * n) / 3)]];
} catch { return [0, Number.MAX_SAFE_INTEGER]; }
}
/** Der gewaehlte Satz -- mit allen drei Muenzen und den Grenzen.
*
* Filipe: „die symbole schick ich dir spaeter."
* ==== EINE FORM UEBERALL
*
* Bis dahin ist die Antwort leer, und die Oberflaeche zeichnet
* selbst eine Muenze. Ein Platzhalterbild, das wie eine kaputte
* Datei aussieht, waere schlechter als eine saubere Zeichnung. */
function zeichenAdresse() {
return bildAdresse(einstellung(ZEICHEN_NAME, ""));
* Die Karte, die Listen, die Knoepfe und der eigene Stand zeigen
* alle dieselbe Muenze zur selben Zahl. Wuerde der Server fuer die
* Karte EINE Adresse schicken und fuer den Rest die Auswahl, gaebe
* es zwei Formen desselben Dinges -- und die Oberflaeche muesste an
* jeder Stelle wissen, welche gerade kommt. Also immer die Auswahl;
* wer sie benutzt, rechnet aus der Zahl.
*
* „eigen" ist der vierte Satz: ein hochgeladenes Bild, das fuer
* alle drei Stufen gilt. Wer ein einzelnes Zeichen hochlaedt, meint
* ein Zeichen und keine Rangfolge. */
function zeichenSatz() {
const eigen = einstellung(ZEICHEN_NAME, "");
const gewuenscht = einstellung(SATZ_NAME, "") || DOGEN_SAETZE[0].schluessel;
/* WAS NICHT GEHT, FAELLT AUF DEN ERSTEN SATZ ZURUECK -- etwa
„eigen", nachdem das Bild geloescht wurde. Ein leeres Zeichen
waere sonst ein kaputtes Bild neben jeder Zahl. */
const satz = gewuenscht === "eigen" && eigen ? "eigen"
: DOGEN_SAETZE.some((x) => x.schluessel === gewuenscht) ? gewuenscht
: DOGEN_SAETZE[0].schluessel;
const bild = (stufe) => (satz === "eigen"
? bildAdresse(eigen)
: muenzeAdresse(satz, stufe));
return {
satz,
eigen: eigen ? bildAdresse(eigen) : "",
niedrig: bild("niedrig"),
mittel: bild("mittel"),
hoch: bild("hoch"),
grenzen: zeichenGrenzen(),
};
}
/** Alle Saetze zum Aussuchen -- Filipe: „alle drei varianten will
* ich drauf so dass ich sie aussuchen kann wie ich will." */
function alleSaetze() {
const eigen = einstellung(ZEICHEN_NAME, "");
const liste = DOGEN_SAETZE.map((x) => ({
...x,
bilder: Object.fromEntries(DOGEN_STUFEN.map((st) => [st, muenzeAdresse(x.schluessel, st)])),
}));
/* Der eigene Satz steht nur da, wenn es ihn gibt. Ein leerer
vierter Knopf waere eine Auswahl, die nichts auswaehlt. */
if (eigen) {
const a = bildAdresse(eigen);
liste.push({
schluessel: "eigen",
name: "Eigenes Zeichen",
wort: "Dein hochgeladenes Bild, fuer alle drei Stufen",
bilder: Object.fromEntries(DOGEN_STUFEN.map((st) => [st, a])),
});
}
return liste;
}
/** Wen die Leitung einer Spende zuordnen kann.
@@ -374,9 +458,12 @@ spendenRouter.get("/workspace/api/spenden", (req, res) => {
umgestellt wurden, waere genau diese Kopie die stehen
gebliebene gewesen. */
stufen: stufenLesen(),
/* Das Zeichen, das neben jeder Zahl steht. Leer, solange
keines hochgeladen ist. */
zeichen: zeichenAdresse(),
/* Die Muenzen, die neben jeder Zahl stehen -- und die zwei
Grenzen, an denen sich entscheidet, welche. */
zeichen: zeichenSatz(),
/* Zum Aussuchen: nur fuer die Leitung. Ein Zuschauer soll das
Bild sehen, nicht die Auswahl daneben. */
saetze: darf ? alleSaetze() : null,
/* WAS SICH EINSTELLEN LAESST, KOMMT VOM SERVER. Stuenden die
Vorlagennamen und die Grenzen auch in der Oberflaeche, waeren
es zwei Listen -- und die eine liefe irgendwann von der
@@ -843,6 +930,38 @@ spendenRouter.post("/workspace/api/spenden/stufe/:id(\\d+)/bild", nurGeld,
ohne Schranke ausliefert. Ein Zeichen, das nur angemeldet
sichtbar waere, fehlte ausgerechnet im Stream.
====================================================================== */
/** Einen Satz auswaehlen. */
spendenRouter.put("/workspace/api/spenden/zeichen/satz", nurGeld,
express.json({ limit: "2kb" }), (req, res) => {
try {
const satz = String(req.body?.satz ?? "");
const geht = DOGEN_SAETZE.some((x) => x.schluessel === satz)
|| (satz === "eigen" && einstellung(ZEICHEN_NAME, ""));
/* EIN SATZ, DEN ES NICHT GIBT, WIRD ABGELEHNT -- und „eigen"
ohne hochgeladenes Bild gibt es nicht. Sonst stuende neben
jeder Zahl ein Bild, das 404 antwortet. */
if (!geht) return res.status(400).json({ fehler: "satz_unbekannt" });
einstellungSetzen(SATZ_NAME, satz, req.person);
/* ==== UND ALLE ERFAHREN ES ================================
Die KARTEN tragen ihren Satz selbst mit und waren immer
richtig. Die Muenzen an den Spendenknoepfen und beim eigenen
Stand aber nicht: Die holt sich eine Seite nur bei einer
Spende neu, und bis dahin stuende beim Zuschauer noch der
alte Satz -- und in einem zweiten Regiefenster auch.
Eine Einstellung, die nur dort ankommt, wo sie gemacht
wurde, ist keine Einstellung des Hauses. */
stromAn(empfaenger(), "spende", { was: "zeichen" });
buehneMelden("spende", { was: "zeichen" });
protokolliere("dogen_satz", {
personId: req.person.id, detail: satz, ip: echteIp(req),
});
res.json({ ok: true, zeichen: zeichenSatz(), saetze: alleSaetze() });
} catch (fehler) {
console.error("[spenden] Satz:", fehler?.message);
res.status(503).json({ fehler: "nicht_verfuegbar" });
}
});
spendenRouter.post("/workspace/api/spenden/zeichen", nurGeld,
express.raw({ type: "*/*", limit: BILD_MAX_BYTES }), zuGross, (req, res) => {
try {
@@ -855,6 +974,11 @@ spendenRouter.post("/workspace/api/spenden/zeichen", nurGeld,
const alt = einstellung(ZEICHEN_NAME, "");
einstellungSetzen(ZEICHEN_NAME, name, req.person);
/* WER EIN ZEICHEN HOCHLAEDT, WILL ES AUCH SEHEN. Ohne diese
Zeile laege es in den Einstellungen und neben den Zahlen
stuende weiter die Muenze -- und Filipe suchte den Fehler
beim Hochladen. */
einstellungSetzen(SATZ_NAME, "eigen", req.person);
/* Das alte wegraeumen -- sonst bleibt bei jedem Wechsel eine
Datei liegen, die niemand mehr findet. */
if (alt && alt !== name) {
@@ -865,7 +989,7 @@ spendenRouter.post("/workspace/api/spenden/zeichen", nurGeld,
detail: `${Math.round(req.body.length / 1024)} KB`,
ip: echteIp(req),
});
res.json({ ok: true, zeichen: zeichenAdresse() });
res.json({ ok: true, zeichen: zeichenSatz(), saetze: alleSaetze() });
} catch (fehler) {
console.error("[spenden] Zeichen:", fehler?.message);
res.status(503).json({ fehler: "nicht_verfuegbar" });
@@ -876,8 +1000,13 @@ spendenRouter.delete("/workspace/api/spenden/zeichen", nurGeld, (req, res) => {
try {
const alt = einstellung(ZEICHEN_NAME, "");
einstellungSetzen(ZEICHEN_NAME, "", req.person);
/* UND ZURUECK AUF EINEN SATZ, DEN ES GIBT. Bliebe „eigen"
stehen, zeigte jede Zahl ein Bild, das es nicht mehr gibt. */
if (einstellung(SATZ_NAME, "") === "eigen") {
einstellungSetzen(SATZ_NAME, DOGEN_SAETZE[0].schluessel, req.person);
}
if (alt) { try { unlinkSync(join(BILDER, alt)); } catch { /* war weg */ } }
res.json({ ok: true, zeichen: "" });
res.json({ ok: true, zeichen: zeichenSatz(), saetze: alleSaetze() });
} catch (fehler) {
console.error("[spenden] Zeichen loeschen:", fehler?.message);
res.status(503).json({ fehler: "nicht_verfuegbar" });
@@ -923,7 +1052,7 @@ spendenRouter.post("/workspace/api/spenden/probe", nurGeld,
const karte = {
id: 0,
dogen_mille: centInMille(cent),
zeichen: zeichenAdresse(),
zeichen: zeichenSatz(),
/* KENNTLICH ALS PROBE. Stuende hier ein Name, waere auf dem
Bildschirmfoto nicht mehr zu unterscheiden, ob jemand
gespendet hat. */
+5 -5
View File
@@ -16,8 +16,8 @@
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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
<!-- 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,
@@ -33,7 +33,7 @@
schreibt jede Seite app.webmanifest -- auch die hier. -->
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<style>
/* Bewusst in der Seite und nicht in einer eigenen Datei: Diese Seite
soll auch dann noch etwas anzeigen, wenn genau das schiefgeht,
@@ -135,7 +135,7 @@
<script src="assets/js/anruf-probe.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/anruf-probe.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
</body>
</html>
+4 -4
View File
@@ -23,25 +23,25 @@
},
"icons": [
{
"src": "/assets/img/app-symbole/workspace-192.png?v=202609281853",
"src": "/assets/img/app-symbole/workspace-192.png?v=202609281932",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/workspace-512.png?v=202609281853",
"src": "/assets/img/app-symbole/workspace-512.png?v=202609281932",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609281853",
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609281932",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609281853",
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609281932",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
+59 -17
View File
@@ -952,6 +952,10 @@
.geben__kopf svg { width: 17px; height: 17px; fill: currentColor; flex: none; }
.geben__betraege { display: flex; gap: 6px; flex-wrap: wrap; }
/* Auf dem Knopf darf die Muenze deutlich groesser sein als in einer
Textzeile: Hier ist sie das Erkennungszeichen und nicht die
Einheit hinter einer Zahl. */
.geben__betrag .dogen__zeichen { width: 1.6em; height: 1.6em; }
.geben__betrag {
/* Breiter als vorher: Auf dem Knopf steht jetzt ein Zeichen neben
der Zahl, und „0,2" mit Muenze braucht mehr Platz als „2 €".
@@ -1854,26 +1858,64 @@
.stufe-tun--weg:hover { color: var(--an-hell); background: rgba(216, 64, 74, .12); }
.stufe-tun--aus { opacity: .45; cursor: default; }
/* ==== DAS DOGEN-ZEICHEN ============================================
Filipe: „die symbole schick ich dir spaeter."
/* ==== DIE DREI MUENZSAETZE =========================================
Gezeigt wird es MIT EINER ZAHL DANEBEN und nicht allein. Ein
Symbol auf leerer Flaeche sagt nichts darueber, wie es neben einer
Ziffer wirkt -- und genau dort steht es spaeter. */
.zeichenwahl {
display: flex; flex-wrap: wrap; align-items: center;
gap: 12px 16px;
}
.zeichenwahl__schau {
display: flex; align-items: center;
min-height: 44px; padding: 6px 14px;
border-radius: 12px;
Filipe: „alle drei varianten will ich drauf so dass ich sie
aussuchen kann wie ich will."
Jeder Satz zeigt seine DREI Muenzen nebeneinander, von links nach
rechts aufsteigend -- der Unterschied zwischen niedrig und hoch
ist hier die eigentliche Aussage, und den sieht man nur im
Vergleich.
AUGENSCHONEND: Der gewaehlte Satz wird nicht heller, sondern
bekommt einen ruhigen Rahmen und einen leichten Grund. Ein
leuchtender Rahmen neben neun glaenzenden Muenzen waere zu viel
auf einmal. */
.muenzwahl { display: grid; gap: 8px; }
.muenzsatz {
appearance: none; cursor: pointer; text-align: left;
display: flex; align-items: center; gap: 14px;
padding: 8px 12px;
border-radius: 13px;
border: 1px solid var(--rand);
background: rgba(0, 0, 0, .3);
font-size: 1.3rem; font-weight: 900;
color: #9ff0c2;
background: rgba(255, 255, 255, .03);
color: var(--schrift-leise);
}
.zeichenwahl__tun { display: flex; flex-wrap: wrap; gap: 8px; }
.muenzsatz[aria-pressed="true"] {
border-color: rgba(154, 183, 255, .45);
background: rgba(154, 183, 255, .11);
color: var(--schrift);
}
.muenzsatz__reihe { display: flex; gap: 6px; flex: none; }
.muenzsatz__bild {
/* GROSS GENUG, UM ZU ENTSCHEIDEN. Bei 40 px sahen „Amethyst" und
„Neon" auf dem Bildschirmfoto praktisch gleich aus -- und genau
sie auseinanderzuhalten ist der Zweck dieser Liste. Eine
Auswahl, in der man den Unterschied nicht sieht, ist keine. */
width: 56px; height: 56px;
object-fit: contain;
filter: drop-shadow(0 2px 6px rgba(0, 0, 0, .5));
}
/* Die mittlere und die hohe stehen etwas groesser -- so sieht man
die Rangfolge, noch bevor man die Bilder erkannt hat. */
.muenzsatz__bild:nth-child(2) { width: 64px; height: 64px; }
.muenzsatz__bild:nth-child(3) { width: 72px; height: 72px; }
.muenzsatz__text { display: grid; gap: 2px; min-width: 0; }
.muenzsatz__name { font-size: .86rem; font-weight: 800; }
/* NICHT NUR DIE FARBE SAGT, WAS GEWAEHLT IST. Neben neun glaenzenden
Muenzen geht ein ruhiger Rahmen unter, und wer Farben schlecht
unterscheidet, sieht ihn gar nicht. Ein Wort kann man nicht
uebersehen. Fuer Hilfsmittel steht daneben `aria-pressed`. */
.muenzsatz[aria-pressed="true"] .muenzsatz__name::after {
content: " · gewählt";
color: #9ab7ff; font-weight: 700;
}
.muenzsatz__wort {
font-size: .72rem; color: var(--schrift-leise);
overflow: hidden; text-overflow: ellipsis;
}
.zeichenwahl__tun { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
/* „Noch nicht übernommen" in Gold: Es ist keine Störung, sondern
eine Erinnerung -- Rot gehört in diesem Haus dem Senden. */
+16 -1
View File
@@ -114,7 +114,13 @@
white-space: nowrap;
}
.dogen__zeichen {
width: .92em; height: .92em;
/* 1,05em und nicht 0,92: Seit dem 28.09. ist das Zeichen eine
GEZEICHNETE MUENZE mit Pfote, Schriftzug und Steinen -- kein
flaches Symbol mehr. Bei 0,92em neben einer kleinen Zahl war
davon ein Fleck uebrig. Gemessen am Bildschirmfoto: 13,5 px an
den Spendenknoepfen. Ein Zeichen, das man nicht erkennt, ist
keins. */
width: 1.05em; height: 1.05em;
flex: none;
/* Selbst ausrichten, weil `baseline` ein Bild an seine Unterkante
setzt und es damit zu tief haengt. */
@@ -146,6 +152,15 @@
einmal je Knopf. Das ist kein Zusatz mehr, sondern Rauschen. */
.dogen--nurzahl .dogen__wort { display: none; }
/* ==== DIESELBE MUENZE NICHT ZWEIMAL AUF EINER KARTE ================
Traegt die Karte die Muenze schon gross (das ist ab dem 28.09. die
Vorgabe der drei Stufen), dann steht neben der Zahl keine zweite
in klein. Dieselbe Muenze in zwei Groessen nebeneinander sieht aus
wie ein Versehen -- und die grosse gewinnt ohnehin.
Laedt das Bild nicht, nimmt das Programm die Markierung zurueck,
und die kleine ist wieder da. */
.spendenkarte[data-muenze="ja"] .dogen__zeichen { display: none; }
.spendenkarte__stufe {
font-size: .72em; font-weight: 800;
letter-spacing: .12em; text-transform: uppercase;
Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

+3
View File
@@ -212,6 +212,9 @@
'Es sind schon zwei Gäste dabei. Nimm erst jemanden heraus.',
layout_unbekannt:
'Diese Anordnung gibt es nicht.',
satz_unbekannt:
'Diesen Münzsatz gibt es nicht. Wähl einen aus der Liste — '
+ '„Eigenes Zeichen" geht erst, wenn du eines hochgeladen hast.',
person_unbekannt:
'Diese Person gibt es hier nicht. Wähl jemanden aus der Liste '
+ 'oder lass das Feld leer.',
+59 -14
View File
@@ -2786,6 +2786,9 @@
if (lage && lage.ich.host) spendenHolen();
}
if (d.was === 'offen') spendenHolen();
/* Ein gewechselter Muenzsatz gilt fuer alle -- auch fuer
die, die gerade keine Spende sehen. */
if (d.was === 'zeichen') spendenHolen();
} catch { /* eine kaputte Meldung darf den Strom nicht reissen */ }
});
@@ -3102,23 +3105,65 @@
if (!a.ok) melde(await a.json().catch(() => null), 'Das ging nicht.');
}
/* ==== DAS DOGEN-ZEICHEN ==========================================
/* ==== DIE DREI MÜNZSÄTZE =========================================
Filipe: „die symbole schick ich dir später. bereite jetzt alles
vor."
Filipe: „alle drei varianten will ich drauf so dass ich sie
aussuchen kann wie ich will."
Gezeigt wird immer dasselbe Stück wie überall sonst — mit einer
Zahl daneben, damit man sieht, wie es neben einer Ziffer
aussieht. Ein Symbol allein auf weißem Grund sagt darüber
nichts. */
Jeder Satz steht mit seinen DREI Münzen da, von links nach
rechts aufsteigend. Ein Satz, der nur mit einer Münze
vorgestellt wird, sagt nichts über den Unterschied zwischen
niedrig und hoch — und genau der ist hier die Aussage. */
function zeichenZeichnen() {
const schau = $('zeichen-schau');
if (!schau || !spendenLage) return;
schau.textContent = '';
schau.append(window.Spendenkarte.dogenStueck(2500, spendenLage.zeichen));
$('zeichen-weg').hidden = !spendenLage.zeichen;
$('zeichen-hoch').firstChild.textContent = spendenLage.zeichen
? 'Anderes Zeichen ' : 'Zeichen hochladen ';
const kasten = $('muenzwahl');
if (!kasten || !spendenLage) return;
const jetzt = spendenLage.zeichen?.satz || '';
kasten.textContent = '';
for (const satz of (spendenLage.saetze || [])) {
const k = el('button', 'muenzsatz');
k.type = 'button';
k.dataset.satz = satz.schluessel;
k.setAttribute('aria-pressed', String(satz.schluessel === jetzt));
const reihe = el('div', 'muenzsatz__reihe');
for (const stufe of ['niedrig', 'mittel', 'hoch']) {
const b = document.createElement('img');
b.className = 'muenzsatz__bild';
b.src = satz.bilder?.[stufe] || '';
b.alt = '';
/* Erst laden, wenn das Register „Gestaltung" offen ist. Neun
Münzen beim Seitenaufbau wären knapp ein halbes Megabyte
für etwas, das die meisten nie ansehen. */
b.loading = 'lazy';
reihe.append(b);
}
k.append(reihe);
const text = el('div', 'muenzsatz__text');
text.append(el('strong', 'muenzsatz__name', satz.name));
text.append(el('span', 'muenzsatz__wort', satz.wort));
k.append(text);
k.addEventListener('click', () => satzSetzen(satz.schluessel));
kasten.append(k);
}
$('zeichen-weg').hidden = !spendenLage.zeichen?.eigen;
$('zeichen-hoch').firstChild.textContent = spendenLage.zeichen?.eigen
? 'Anderes eigenes Zeichen ' : 'Eigenes Zeichen hochladen ';
}
async function satzSetzen(satz) {
const a = await hole('/workspace/api/spenden/zeichen/satz', {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ satz }),
});
if (!a.ok) { melde(await a.json().catch(() => null), 'Das ging nicht.'); return; }
/* FRISCH HOLEN. Die Münze steht an sechs Stellen gleichzeitig --
auf den Karten, in beiden Listen, an den Knöpfen, beim eigenen
Stand und in dieser Auswahl. Sie einzeln nachzuziehen wäre die
Gelegenheit, eine zu vergessen. */
spendenHolen();
}
async function zeichenHoch(feld) {
+60 -12
View File
@@ -110,14 +110,38 @@
return Math.abs(Math.round(Number(mille) || 0)) === 1000 ? 'Doge' : 'Dogen';
}
/** Welche Münze zu dieser Zahl gehört.
*
* ==== DIE GRENZEN KOMMEN VOM SERVER, NICHT VON HIER
*
* Filipe: „drei varianten für niedrige spenden. mittlere und hohe
* spenden." Wo „niedrig" aufhört, steht in der Stufenleiter — und
* die kann er ändern. Zwei Zahlen in dieser Datei wären eine
* zweite Antwort darauf, und sie wäre nach der ersten Änderung
* falsch, ohne dass jemand etwas merkt.
*
* Ein fehlender Satz gibt leer zurück, und dann tritt die
* gezeichnete Münze ein. Ein kaputtes Bild neben einer Zahl sieht
* aus wie ein Fehler IN der Zahl. */
function muenzeFuer(satz, mille) {
if (!satz || typeof satz !== 'object') return '';
const g = Array.isArray(satz.grenzen) && satz.grenzen.length === 2
? satz.grenzen : [0, Number.MAX_SAFE_INTEGER];
const m = Math.round(Number(mille) || 0);
if (m < g[0]) return satz.niedrig || '';
if (m < g[1]) return satz.mittel || '';
return satz.hoch || '';
}
/** Zeichen + Zahl + Wort als ein Stück.
*
* AN EINER STELLE GEBAUT. Die Zahl steht auf der Karte, in zwei
* Listen im Pult, an den Spendenknöpfen und beim eigenen Stand.
* Fünfmal zusammengesetzt hieße: Beim nächsten Mal sieht eine
* davon anders aus, und gemerkt wird es im Livestream. */
function dogenStueck(mille, quelle, klasse) {
function dogenStueck(mille, satz, klasse) {
const k = el('span', 'dogen' + (klasse ? ' ' + klasse : ''));
const quelle = muenzeFuer(satz, mille);
if (quelle) {
const b = document.createElement('img');
b.className = 'dogen__zeichen';
@@ -196,19 +220,41 @@
tafel.dataset.stufe = karte.stufe?.name || '';
tafel.setAttribute('role', 'status');
/* ==== WAS GROSS AUF DER KARTE STEHT ==========================
Drei Möglichkeiten, in dieser Reihenfolge:
1. Ein hochgeladenes Bild der Stufe. Wer eines hochlädt,
meint es.
2. Die DOGEN-MÜNZE in der Stufe, die zur Zahl passt —
Filipes drei Varianten. Das ist ab dem 28.09. die
Vorgabe der drei Werksstufen.
3. Eine der gezeichneten Vorlagen (Herz, Welle, Krone …).
Und jede Stufe fällt auf die nächste zurück, wenn sie nicht
lädt. Ein leerer Kasten wäre das Schlimmste von allen. */
const bild = el('div', 'spendenkarte__bild');
if (karte.stufe?.bild) {
/* Ein eigenes Bild schlaegt die Vorlage -- und wenn es nicht
laedt, tritt die Vorlage wieder ein. Ein leerer Kasten waere
das Schlimmste von beidem. */
const muenze = karte.stufe?.vorlage === 'dogen'
? muenzeFuer(karte.zeichen, karte.dogen_mille) : '';
const alsBild = (quelle, ersatz) => {
const b = document.createElement('img');
b.src = karte.stufe.bild;
b.src = quelle;
b.alt = '';
b.addEventListener('error', () => {
b.remove();
bild.append(zeichenBauen(karte.stufe?.vorlage, farbe));
});
b.addEventListener('error', () => { b.remove(); ersatz(); });
bild.append(b);
};
if (karte.stufe?.bild) {
alsBild(karte.stufe.bild, () => bild.append(zeichenBauen(karte.stufe?.vorlage, farbe)));
} else if (muenze) {
/* DIE MÜNZE STEHT DANN SCHON GROSS DA. Neben der Zahl ein
zweites Mal wäre sie einmal zu viel -- dieselbe Münze in
zwei Größen auf derselben Karte sieht aus wie ein
Versehen. Das Stilblatt nimmt die kleine daraufhin weg. */
tafel.dataset.muenze = 'ja';
alsBild(muenze, () => {
delete tafel.dataset.muenze;
bild.append(zeichenBauen('herz', farbe));
});
} else {
bild.append(zeichenBauen(karte.stufe?.vorlage, farbe));
}
@@ -242,7 +288,9 @@
}
window.Spendenkarte = {
zeigen, alsDogen, dogenWort, dogenStueck,
VORLAGEN: Object.keys(VORLAGEN),
zeigen, alsDogen, dogenWort, dogenStueck, muenzeFuer,
/* „dogen" ist keine Zeichnung, aber eine gueltige Vorlage --
deshalb steht sie hier dabei und nicht in `VORLAGEN`. */
VORLAGEN: ['dogen', ...Object.keys(VORLAGEN)],
};
})();
+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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</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=202609281853"></script>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/hochladen.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/textform.js?v=202609281932"></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/hochladen.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/zuteilung.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/zuteilung.js?v=202609281932" 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=202609281853" defer></script>
<script src="assets/js/aufgaben.js?v=202609281853" defer></script>
<script src="assets/js/vorlagenbrett.js?v=202609281932" defer></script>
<script src="assets/js/aufgaben.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -168,15 +168,15 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/automation.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/automation.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -197,16 +197,16 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/holen.js?v=202609281853" defer></script>
<script src="assets/js/befinden.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/holen.js?v=202609281932" defer></script>
<script src="assets/js/befinden.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</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=202609281853"></script>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/textform.js?v=202609281932"></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/checkliste.js?v=202609281853" defer></script>
<script src="assets/js/ampel.js?v=202609281853" defer></script>
<script src="assets/js/schulung.js?v=202609281853" defer></script>
<script src="assets/js/holen.js?v=202609281853" defer></script>
<script src="assets/js/bereich.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/checkliste.js?v=202609281932" defer></script>
<script src="assets/js/ampel.js?v=202609281932" defer></script>
<script src="assets/js/schulung.js?v=202609281932" defer></script>
<script src="assets/js/holen.js?v=202609281932" defer></script>
<script src="assets/js/bereich.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</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=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/auskunft.js?v=202609281853" defer></script>
<script src="assets/js/bewerben.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/auskunft.js?v=202609281932" defer></script>
<script src="assets/js/bewerben.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -80,16 +80,16 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/auskunft.js?v=202609281853" defer></script>
<script src="assets/js/bewerbungen.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/auskunft.js?v=202609281932" defer></script>
<script src="assets/js/bewerbungen.js?v=202609281932" defer></script>
</body>
</html>
+1 -1
View File
@@ -59,6 +59,6 @@
</head>
<body>
<div id="platz"></div>
<script src="assets/js/buehne.js?v=202609281853" defer></script>
<script src="assets/js/buehne.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -89,15 +89,15 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/ki.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/calls.js?v=202609281853" defer></script>
<script src="assets/js/ki.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/calls.js?v=202609281932" defer></script>
</body>
</html>
+20 -20
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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -739,24 +739,24 @@
</form>
</dialog>
<script src="assets/js/bereiche.js?v=202609281853"></script>
<script src="assets/js/bereiche.js?v=202609281932"></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=202609281853"></script>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/hochladen.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853"></script>
<script src="assets/js/glocke.js?v=202609281853"></script>
<script src="assets/js/textform.js?v=202609281932"></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/hochladen.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932"></script>
<script src="assets/js/glocke.js?v=202609281932"></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=202609281853"></script>
<script src="assets/js/anruf.js?v=202609281932"></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
@@ -767,8 +767,8 @@
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=202609281853"></script>
<script src="assets/js/chat.js?v=202609281853"></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/bildschau.js?v=202609281932"></script>
<script src="assets/js/chat.js?v=202609281932"></script>
<script src="assets/js/installieren.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/content.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/content.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -179,15 +179,15 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/checkliste.js?v=202609281853" defer></script>
<script src="assets/js/content.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/checkliste.js?v=202609281932" defer></script>
<script src="assets/js/content.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609281932" />
</head>
<body class="gate gate--crew">
@@ -459,7 +459,7 @@
<script src="assets/js/gate.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/gate.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
</body>
</html>
+4 -4
View File
@@ -23,25 +23,25 @@
},
"icons": [
{
"src": "/assets/img/app-symbole/crew-192.png?v=202609281853",
"src": "/assets/img/app-symbole/crew-192.png?v=202609281932",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/crew-512.png?v=202609281853",
"src": "/assets/img/app-symbole/crew-512.png?v=202609281932",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609281853",
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609281932",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609281853",
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609281932",
"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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -108,15 +108,15 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/hochladen.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/hochladen.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/dateien.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/dateien.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -297,20 +297,20 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/holen.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/holen.js?v=202609281932" 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=202609281853" defer></script>
<script src="assets/js/entwicklung.js?v=202609281853" defer></script>
<script src="assets/js/vorlagenbrett.js?v=202609281932" defer></script>
<script src="assets/js/entwicklung.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -146,14 +146,14 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/hilfe.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/hilfe.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
</head>
<body class="gate">
@@ -427,7 +427,7 @@
<script src="assets/js/gate.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/gate.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -383,15 +383,15 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/kalender.js?v=202609281853" defer></script>
<script src="assets/js/kalender-abo.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/kalender.js?v=202609281932" defer></script>
<script src="assets/js/kalender-abo.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -444,13 +444,13 @@
</form>
</dialog>
<script src="assets/js/meldung.js?v=202609281853"></script>
<script src="assets/js/nachfrage.js?v=202609281853"></script>
<script src="assets/js/wahl.js?v=202609281853"></script>
<script src="assets/js/bereiche.js?v=202609281853"></script>
<script src="assets/js/kopf.js?v=202609281853"></script>
<script src="assets/js/glocke.js?v=202609281853"></script>
<script src="assets/js/leistung.js?v=202609281853"></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932"></script>
<script src="assets/js/nachfrage.js?v=202609281932"></script>
<script src="assets/js/wahl.js?v=202609281932"></script>
<script src="assets/js/bereiche.js?v=202609281932"></script>
<script src="assets/js/kopf.js?v=202609281932"></script>
<script src="assets/js/glocke.js?v=202609281932"></script>
<script src="assets/js/leistung.js?v=202609281932"></script>
<script src="assets/js/installieren.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/material.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/material.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</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=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/hochladen.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/material.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/hochladen.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/material.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/notizen.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/notizen.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start" data-ton="46">
@@ -181,12 +181,12 @@
<!-- bereiche.js VOR kopf.js: Dort steht `window.Bereiche`, und kopf.js
liest daraus die Leitungsrollen. -->
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/notizen.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/notizen.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -453,14 +453,14 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/personen.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/personen.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -214,16 +214,16 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/hochladen.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/hochladen.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/steckbrief.js?v=202609281853" defer></script>
<script src="assets/js/profil.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/steckbrief.js?v=202609281932" defer></script>
<script src="assets/js/profil.js?v=202609281932" defer></script>
</body>
</html>
+34 -30
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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/reaktion.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/spendenkarte.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/reaktion.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/spendenkarte.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start reaktion-seite" data-stand="laedt">
@@ -567,27 +567,31 @@
<!-- ==== Gestaltung ==================================== -->
<section class="pult-tafel" data-tafel="gestaltung" role="tabpanel" hidden
id="tafel-gestaltung" aria-labelledby="reiter-gestaltung">
<!-- ==== DAS DOGEN-ZEICHEN ==============================
Filipe: „die dogen auch mit dem symbol, die symbole
schick ich dir später."
<!-- ==== DIE DOGEN-MÜNZEN ===============================
Filipe: „ich werde die drei varianten schicken für
niedrige spenden. mittlere und hohe spenden. alle drei
varianten will ich drauf so dass ich sie aussuchen kann
wie ich will."
Bis dahin steht eine gezeichnete Münze da. Hochgeladen
wird es hier — ohne Deploy, ohne mich. -->
<h3 class="pult__ueber">Das Dogen-Zeichen</h3>
<div class="zeichenwahl">
<div class="zeichenwahl__schau" id="zeichen-schau"></div>
Drei Sätze zu je drei Münzen. Welche gilt, entscheidet
die Stufe, in die eine Spende fällt — links die
niedrige, rechts die hohe. -->
<h3 class="pult__ueber">Die Dogen-Münzen</h3>
<div class="muenzwahl" id="muenzwahl" role="group"
aria-label="Münzsatz auswählen"></div>
<div class="zeichenwahl__tun">
<label class="stufe-tun" id="zeichen-hoch">Zeichen hochladen
<label class="stufe-tun" id="zeichen-hoch">Eigenes Zeichen hochladen
<input type="file" id="zeichen-datei" hidden
accept="image/jpeg,image/png,image/webp" />
</label>
<button type="button" class="stufe-tun stufe-tun--weg"
id="zeichen-weg" hidden>Zeichen weg</button>
</div>
id="zeichen-weg" hidden>Eigenes Zeichen weg</button>
</div>
<p class="pult__klein">
Es steht neben jeder Zahl — auf der Karte, in den Listen und
im Stream. Ohne eigenes Zeichen wird eine Münze gezeichnet.
Die Münze steht neben jeder Zahl und groß auf der Karte —
im Saal wie im Stream. Welche von den dreien, entscheidet
die Höhe der Spende: die Stufenleiter darunter wird dafür
in Drittel geteilt.
</p>
<h3 class="pult__ueber">Wie eine Spende aussieht</h3>
@@ -670,14 +674,14 @@
<!-- bereiche.js VOR kopf.js: Dort steht `window.Bereiche`, und kopf.js
liest daraus die Leitungsrollen. -->
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/spendenkarte.js?v=202609281853" defer></script>
<script src="assets/js/reaktion.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/spendenkarte.js?v=202609281932" defer></script>
<script src="assets/js/reaktion.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</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=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/holen.js?v=202609281853" defer></script>
<script src="assets/js/rechte.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/holen.js?v=202609281932" defer></script>
<script src="assets/js/rechte.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/report.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/report.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -106,17 +106,17 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/ki.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/holen.js?v=202609281853" defer></script>
<script src="assets/js/report.js?v=202609281853" defer></script>
<script src="assets/js/ki.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/holen.js?v=202609281932" defer></script>
<script src="assets/js/report.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -173,14 +173,14 @@
</div>
</div>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/scouting.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/scouting.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/heim.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -732,16 +732,16 @@
</p>
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/live.js?v=202609281853" defer></script>
<script src="assets/js/start.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/live.js?v=202609281932" defer></script>
<script src="assets/js/start.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -85,16 +85,16 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/ki.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/startcheck.js?v=202609281853" defer></script>
<script src="assets/js/ki.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/startcheck.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -150,16 +150,16 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/hochladen.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/hochladen.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/auskunft.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/steckbrief.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/auskunft.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/steckbrief.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/support.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/support.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -128,16 +128,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=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" 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=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/support.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/support.js?v=202609281932" defer></script>
</body>
</html>
+3 -3
View File
@@ -23,7 +23,7 @@
„Eigenes CSS" leer lassen (der Grund ist schon
durchsichtig).
====================================================================== -->
<link rel="stylesheet" href="assets/css/spendenkarte.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/spendenkarte.css?v=202609281932" />
<style>
/* DURCHSICHTIG BIS AUF DIE KARTEN. OBS legt die Quelle über das
Bild; jede Fläche, die hier steht, deckt dort etwas zu. */
@@ -80,7 +80,7 @@
<body>
<div class="obs-tafel spendentafel" id="tafel" aria-live="polite"></div>
<script src="assets/js/spendenkarte.js?v=202609281853" defer></script>
<script src="assets/js/tafel.js?v=202609281853" defer></script>
<script src="assets/js/spendenkarte.js?v=202609281932" defer></script>
<script src="assets/js/tafel.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -111,15 +111,15 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/holen.js?v=202609281853" defer></script>
<script src="assets/js/talente.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/holen.js?v=202609281932" defer></script>
<script src="assets/js/talente.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/team.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/team.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -110,15 +110,15 @@
</main>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/holen.js?v=202609281853" defer></script>
<script src="assets/js/team.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/holen.js?v=202609281932" defer></script>
<script src="assets/js/team.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/team.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/team.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</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=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/holen.js?v=202609281853" defer></script>
<script src="assets/js/teamlage.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/holen.js?v=202609281932" defer></script>
<script src="assets/js/teamlage.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -112,15 +112,15 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/teilen.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/teilen.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -126,14 +126,14 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/treff-moderation.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/treff-moderation.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</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=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/auskunft.js?v=202609281853" defer></script>
<script src="assets/js/treff-regeln.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/auskunft.js?v=202609281932" defer></script>
<script src="assets/js/treff-regeln.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
Dialog "Creator anlegen". -->
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -149,16 +149,16 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/uebersicht.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/uebersicht.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -335,14 +335,14 @@
</main>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/live.js?v=202609281853" defer></script>
<script src="assets/js/unsere-seiten.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/live.js?v=202609281932" defer></script>
<script src="assets/js/unsere-seiten.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/unterstuetzen.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/unterstuetzen.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</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=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/holen.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/holen.js?v=202609281932" 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=202609281853" defer></script>
<script src="assets/js/unterstuetzen.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/unterstuetzen.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -144,14 +144,14 @@
</main>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/werdegang.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/werdegang.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</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=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/willkommen.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/willkommen.js?v=202609281932" 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=202609281853" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281853" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609281853" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281853" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609281932" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609281932" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/start.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609281932" />
<link rel="stylesheet" href="assets/css/module.css?v=202609281932" />
<!-- 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=202609281853" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609281932" />
</head>
<body class="start">
@@ -190,15 +190,15 @@
</main>
<script src="assets/js/meldung.js?v=202609281853" defer></script>
<script src="assets/js/hochladen.js?v=202609281853" defer></script>
<script src="assets/js/nachfrage.js?v=202609281853" defer></script>
<script src="assets/js/meldung.js?v=202609281932" defer></script>
<script src="assets/js/hochladen.js?v=202609281932" defer></script>
<script src="assets/js/nachfrage.js?v=202609281932" defer></script>
<script src="assets/js/wahl.js?v=202609281853" defer></script>
<script src="assets/js/bereiche.js?v=202609281853" defer></script>
<script src="assets/js/installieren.js?v=202609281853" defer></script>
<script src="assets/js/kopf.js?v=202609281853" defer></script>
<script src="assets/js/glocke.js?v=202609281853" defer></script>
<script src="assets/js/wissen.js?v=202609281853" defer></script>
<script src="assets/js/wahl.js?v=202609281932" defer></script>
<script src="assets/js/bereiche.js?v=202609281932" defer></script>
<script src="assets/js/installieren.js?v=202609281932" defer></script>
<script src="assets/js/kopf.js?v=202609281932" defer></script>
<script src="assets/js/glocke.js?v=202609281932" defer></script>
<script src="assets/js/wissen.js?v=202609281932" defer></script>
</body>
</html>