Teilen gibt einen fertigen Discord-Beitrag -- und die zwei Seiten bekommen ein Gesicht

Filipe: "beim teilen wird auch nur der link geteilt, und ich will dass
wenn ich es teile im discord der agentur, dass ein banner und ein
kompletter fertiger text fuer die creator entsteht und nicht einfach
der link kopiert wird damit die leute drauf gehen. das ist kake."
Und: "perfektionier die zwei events kategorien. ich will es noch viel
krasser und spezieller."

EIN LINK IN EINEM DISCORD-KANAL IST EINE AUFFORDERUNG. Wer ihn nicht
anklickt -- und das sind die meisten -- weiss nicht, dass es die
Kampagne gibt. Was in Discord steht, muss die Kampagne SEIN. Der
Teilen-Knopf legt deshalb einen fertigen Beitrag in die Zwischenablage:
Titel als Ueberschrift, Zeitraum, Einleitung, die Aufgaben als Liste,
die Geschenke mit Coinpreis, "Gut zu wissen" aus Rangliste, Zeitplan
und Teilnahme. Er steht zusaetzlich sichtbar unter der Kachel, mit
Zeichenzaehler und zweitem Kopierknopf -- was man nicht gesehen hat,
fuegt man blind ein.

ZWEI DINGE SIND DABEI NICHT BELIEBIG:
  - Der Link steht GANZ AM ENDE. Discord setzt die Bannervorschau
    UNTER die Nachricht; steht er oben, schiebt das Banner den Text
    aus dem Blick.
  - Der Link steht NACKT da. Spitze Klammern unterdruecken die
    Vorschau -- und damit genau das Banner, um das es geht.

2000 ZEICHEN, UND NICHT EINS MEHR. Gekuerzt wird auf dem Server, in
fester Reihenfolge und an Abschnittsgrenzen: erst "Gut zu wissen",
dann die Einleitung auf zwei Saetze, dann die Geschenke. Titel,
Zeitraum, Aufgaben und Link bleiben IMMER. Gemessen gegen sieben
Laengen und einen 1500-Zeichen-Titel als Haertefall.

Gebaut wird der Beitrag aus `teilenDaten()` -- derselben Funktion, aus
der auch die offene Seite entsteht. Zwei Aufbauten fuer dasselbe Event
wuerden irgendwann Verschiedenes sagen, und niemand koennte entscheiden,
welcher recht hat.

DIE ZWEI SEITEN: ein gezeichnetes Wappen in der Farbe der Spalte, ein
Kopf mit Lichtkante und Verlauf, der beim Scrollen oben stehen bleibt,
und eine Lagezeile ("2 laufen - 1 kommt - 3 vorbei"). Gezaehlt mit
derselben Regel, die die Gruppen darunter bildet; was null ist,
erscheint nicht. Augenschonend bleibt es ueber Form und Tiefe, nicht
ueber Leuchtkraft.

NEBENBEFUND, BEHOBEN: Der Einlesekasten war durch Seitenwahl und
Bildweg auf 521 px gewachsen -- auf 412 px mehr als ein halber
Telefonbildschirm, bevor man die erste Kachel sieht. Er klappt jetzt zu
(82 px) und merkt sich die Wahl; ein Druck, und er bleibt offen.

BERICHTIGT, WEIL GEMESSEN:
  - Der Bindestrich wurde entwertet: "4\-woechige", "Ahorn\-Welt". In
    Discord ist "-" nur am Zeilenanfang eine Aufzaehlung.
  - Das Klappschild hatte nur eine Handy-Regel und sonst kein
    Aussehen -- auf 1400 px ein nackter Knopf mit 27 px statt 48.
  - bild-kampagne mass elementFromPoint ausserhalb des
    Sichtfensters und meldete "etwas liegt auf dem Knopf", wo nichts
    lag; und r(null) liess den ganzen Lauf abstuerzen, statt die
    Zusicherung rot zu machen.
  - EINE GEGENPROBE WAR BLIND: DISCORD_MAX von 2000 auf 99999 zu
    setzen liess die Pruefung gruen -- der Testbeitrag ist 1230
    Zeichen lang, die Grenze wurde also nie geprueft. Jetzt mit einem
    Beitrag, der ohne Kuerzung sicher zu lang waere.

GEPRUEFT: 190 (Route und Teilen, +8), 183 (Kachel, +13), 69 Messungen
(Bild, +2), 67 (Agentur), 43 (Bildleser), struktur, css-klassen,
zeichen, deutsche-texte, tippziele. Sechs Gegenproben: Link nur noch
Link, Link oben statt unten, Grenze weg, Lagezeile weg, Kopf klebt
nicht, Kasten wieder offen -- alle sechs werden bemerkt, alle Dateien
byte-gleich wiederhergestellt.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-10-08 11:20:51 +02:00
co-authored by Claude Opus 5
parent 807d7d4a1c
commit fdadd5d573
54 changed files with 1752 additions and 729 deletions
+94 -3
View File
@@ -155,6 +155,30 @@ const browser = await pw.chromium.launch();
const fehlerAufSeite = [];
/** Den Einlesekasten aufmachen, falls er zu ist.
*
* Seit dem 08.10.2026 steht er von sich aus zu -- er war auf
* 412 px auf 521 px gewachsen, mehr als ein halber
* Telefonbildschirm vor der ersten Kachel. Jede Stelle, die
* seinen INHALT braucht, muss ihn also erst oeffnen.
*
* AN EINER STELLE, NICHT DREIMAL ABGESCHRIEBEN: Beim ersten
* Versuch stand das Oeffnen nur oben bei der Messung, und die
* zwei `fill()` weiter unten liefen in eine 30-Sekunden-Frist --
* mit einer Meldung ueber ein Textfeld, das es laut Fehlertext
* sehr wohl gab. Das ist die unangenehme Sorte Fehlschlag: Er
* sagt die Wahrheit und fuehrt trotzdem in die Irre. */
const kastenAufmachen = async (seite) => {
const schild = await seite.$("#kampagne-schild");
if (!schild) return false;
const zu = await seite.evaluate(() =>
document.getElementById("kampagne-form")?.hidden === true);
if (!zu) return true;
await schild.click();
await seite.waitForTimeout(250);
return true;
};
const anmelden = async (seite, rolle, code) => {
await seite.goto(BASIS + "/workspace/", { waitUntil: "networkidle" });
await seite.click(`.rolle[data-rolle="${rolle}"]`);
@@ -214,16 +238,47 @@ async function messen(breite, hoehe, name) {
return { rolle: j.rolle, darf: j.darf_kampagne_einlesen, wirt: location.host };
});
console.log(" /api/ich: " + JSON.stringify(ichSagt));
/* ERST AUFKLAPPEN (08.10.2026).
Der Kasten steht seit heute zu -- er war auf 412 px auf 521 px
gewachsen, mehr als ein halber Telefonbildschirm vor der ersten
Kachel. Gemessen werden soll trotzdem der INHALT: Textfeld,
Knopf, Kontrast, Tippziele. Zugeklappt haben die alle die Hoehe
null, und die Messung meldete einen Schaden, wo keiner ist.
DASS ER ZUGEHT, MISST pruef-eventkarte (Abschnitt 4c) -- dort
gehoert es hin, zusammen mit dem Rest der Bedienung. Hier geht
es um das Aussehen des offenen Kastens. */
await kastenAufmachen(seite);
const mass = await seite.evaluate(() => {
const k = document.getElementById("kampagneholen");
if (!k || k.hidden) return { da: false };
const r = (e) => { const b = e.getBoundingClientRect();
/* EIN FEHLENDES ELEMENT GIBT NULLEN, KEINEN ABSTURZ
(berichtigt 08.10.2026). Vorher warf `r(null)` mitten in der
Messung, und der ganze Lauf endete mit „unbehandelter
Fehler" -- ohne zu sagen, WELCHES Element fehlte. Nullen
machen die Zusicherung darunter rot und nennen dabei den
Namen. Ein Fehlschlag ist rot und steht da; ein Absturz
sieht aus wie ein kaputtes Werkzeug. */
const r = (e) => {
if (!e) return { x: 0, y: 0, b: 0, h: 0, fehlt: true };
const b = e.getBoundingClientRect();
return { x: Math.round(b.x), y: Math.round(b.y),
b: Math.round(b.width), h: Math.round(b.height) }; };
b: Math.round(b.width), h: Math.round(b.height) };
};
const feld = document.getElementById("kampagne-text");
const knopf = document.getElementById("kampagne-holen");
const sagt = document.getElementById("kampagne-sagt");
const titel = k.querySelector(".kampagneholen__titel");
/* DIE UEBERSCHRIFT IST SEIT DEM 08.10.2026 DAS KLAPPSCHILD.
`.kampagneholen__titel` gibt es nicht mehr -- der `<h2>` ist
ein `<button>` geworden, weil man ihn jetzt druecken kann.
Die Messung sucht deshalb das Schild; faellt auch das weg,
gibt `r()` keinen Fehler mehr, sondern Nullen, und die
Zusicherungen unten werden rot statt den Lauf abzubrechen. */
const titel = k.querySelector(".kampagneholen__schildwort")
|| k.querySelector(".kampagneholen__schild");
const st = getComputedStyle(sagt);
return {
da: true,
@@ -237,6 +292,19 @@ async function messen(breite, hoehe, name) {
/* Ueberdeckt etwas den Knopf? Nicht gerechnet, sondern gefragt:
Was liegt an seinem Mittelpunkt wirklich obenauf? */
obenAufKnopf: (() => {
/* ERST IN DEN BLICK HOLEN (berichtigt 08.10.2026).
`elementFromPoint` fragt das SICHTFENSTER, nicht die
Seite: Was darunter liegt, gibt `null`. Seit der Kasten
die Seitenwahl und den Bildweg traegt, ist er auf 412 px
hoeher als das Fenster -- und die Pruefung meldete
„nichts liegt auf dem Knopf“ als Schaden, obwohl der
Knopf nur weiter unten stand.
Die Frage bleibt dieselbe und bleibt wichtig: Am
06.09.2026 lag der Sicht-Umschalter quer ueber dem
Chat-Knopf. Nur muss man dafuer hinsehen, wo er ist. */
knopf.scrollIntoView({ block: "center" });
const b = knopf.getBoundingClientRect();
const e = document.elementFromPoint(b.x + b.width / 2, b.y + b.height / 2);
return e ? (e.id || e.className || e.tagName) : null;
@@ -259,6 +327,27 @@ async function messen(breite, hoehe, name) {
diesem Haus bei 40 und wurden genau deshalb gezogen. */
ok(mass.knopf.h >= 44, `der Knopf ist ${mass.knopf.h} px hoch (mindestens 44)`);
ok(mass.feld.b > 120, `das Textfeld ist ${mass.feld.b} px breit -- kein Schlitz`);
/* WIE VIEL PLATZ FRISST DER KASTEN? (08.10.2026)
Er ist seit dem 07.10. um die Seitenwahl und seit dem 08.10.
um den Bildweg gewachsen -- auf 412 px gemessen 539 px, also
mehr als ein halber Telefonbildschirm, bevor man die erste
Kachel sieht. Die Grenze steht hier, damit das naechste
Stueck nicht unbemerkt dazukommt: Eine feste Zahl, die
mitwaechst, ist keine Grenze (CLAUDE.md, 06.09.2026). */
/* WIE VIEL PLATZ FRISST DER OFFENE KASTEN?
Er ist seit dem 07.10. um die Seitenwahl und seit dem 08.10. um
den Bildweg gewachsen -- auf 412 px gemessen 521 px. Seitdem
steht er zu (siehe oben); AUFGEKLAPPT darf er trotzdem nicht
beliebig wachsen, sonst ist das Aufklappen ein Sprung ins
Nichts. Die Grenze steht hier, damit das naechste Stueck nicht
unbemerkt dazukommt: Eine feste Zahl, die mitwaechst, ist keine
Grenze (CLAUDE.md, 06.09.2026). */
const grenze = breite <= 560 ? 560 : 420;
ok(mass.kasten.h <= grenze,
`der offene Kasten bleibt bei ${mass.kasten.h} px `
+ `(hoechstens ${grenze} auf ${breite} px)`);
ok(mass.feld.h >= 72, `und ${mass.feld.h} px hoch, also mehrzeilig`);
/* NICHTS LIEGT AUF DEM KNOPF. Am 06.09.2026 lag der Sicht-Umschalter
@@ -348,6 +437,7 @@ await messen(412, 915, "Auf dem Handy, haeufigste Android-Breite");
await seite.goto(BASIS + "/workspace/bereich.html?b=agentur", { waitUntil: "networkidle" });
await seite.waitForTimeout(1400);
await kastenAufmachen(seite);
await seite.fill("#kampagne-text",
"Dein Creator Network lädt dich ein: https://www.tiktok.com/t/ZSbqPsFa8/");
await seite.$eval("#kampagne-holen", (b) => b.click());
@@ -395,6 +485,7 @@ await messen(412, 915, "Auf dem Handy, haeufigste Android-Breite");
}), { status: 502, headers: { "Content-Type": "application/json" } });
};
});
await kastenAufmachen(seite);
await seite.fill("#kampagne-text", "https://www.tiktok.com/t/ZSbqPsFa8/");
await seite.$eval("#kampagne-holen", (b) => b.click());
await seite.waitForFunction(
+121
View File
@@ -1423,6 +1423,127 @@ melde("\n=== 4c. Die Seitenwahl ===");
ok(links.includes("Oktober Event") && links.includes("Glow Up Struktur"),
`ohne Wahl entscheidet weiterhin die Herkunft (links: ${JSON.stringify(links)})`);
/* ---- DIE ZWEI SEITEN, KRASSER (08.10.2026) ----------------
Filipe: „perfektionier die zwei events kategorien. ich will es
noch viel krasser und spezieller.“
Gemessen wird, was dabei herauskommen SOLL, und zwar so, dass ein
leerer Kasten nicht durchrutscht: Jede Zusicherung trägt die Zahl
der untersuchten Dinge in ihrer Bedingung. */
const seiten = await seite.evaluate(() => {
const lies = (w) => {
const s = getComputedStyle(w);
return {
breite: Math.round(w.getBoundingClientRect().width),
hoehe: Math.round(w.getBoundingClientRect().height),
rand: s.borderTopWidth,
grund: s.backgroundImage.slice(0, 40),
klebt: s.position,
};
};
return [...document.querySelectorAll(".kv-seite")].map((s) => {
const w = s.querySelector(".kv-seite__wappen");
const k = s.querySelector(".kv-seite__kopf");
return {
seite: s.dataset.seite,
ton: getComputedStyle(s).getPropertyValue("--kv-ton").trim(),
wappen: w ? lies(w) : null,
kopf: k ? lies(k) : null,
lage: [...s.querySelectorAll(".kv-seite__lageteil")].map((x) => ({
stand: x.dataset.stand || null,
wort: x.textContent.trim(),
farbe: getComputedStyle(x).color,
})),
};
});
});
melde(" -- Seiten: " + JSON.stringify(seiten));
ok(seiten.length === 2, `zwei Seiten (${seiten.length})`);
/* ---- Das Wappen ------------------------------------------- */
const wappen = seiten.map((s) => s.wappen).filter(Boolean);
ok(wappen.length === 2, `jede Seite trägt ein Wappen (${wappen.length})`);
/* ES WIRD WIRKLICH GEZEICHNET. Ein Element mit 0 px ist kein
Abzeichen, und ein Verlauf, der nicht ankommt, auch
nicht — genau dieser Fehlgriff (Merkmal gesetzt, nichts zu sehen)
hat am 07.10.2026 einen Farbpunkt 10 statt 22 px breit gemacht. */
ok(wappen.every((w) => w.breite >= 24 && w.hoehe >= 24),
`und es ist groß genug: ${JSON.stringify(wappen.map((w) => `${w.breite}x${w.hoehe}`))}`);
ok(wappen.every((w) => /gradient/.test(w.grund)),
"und wirklich gezeichnet, nicht nur vorhanden");
/* ---- Der Kopf klebt ---------------------------------------- */
/* Bei fünf Gruppen und einem Dutzend Kacheln je Spalte ist „auf
welcher Seite bin ich gerade“ eine echte Frage. */
ok(seiten.every((s) => s.kopf && s.kopf.klebt === "sticky"),
`der Spaltenkopf bleibt beim Scrollen oben (${
JSON.stringify(seiten.map((s) => s.kopf?.klebt))})`);
/* ---- Die Lage der Seite ------------------------------------ */
const alleTeile = seiten.flatMap((s) => s.lage);
ok(alleTeile.length >= 2,
`die Spalten sagen, was los ist (${alleTeile.length} Angaben: ${
JSON.stringify(alleTeile.map((x) => x.wort))})`);
/* KEINE NULL. „0 laufen“ ist keine Auskunft, sondern Füllmaterial —
und drei Nullen lassen eine leere Spalte voll aussehen. */
ok(!alleTeile.some((x) => /^0 /.test(x.wort)),
"und nennen nie eine Null");
/* DIE ZAHLEN STIMMEN MIT DEN GRUPPEN DARUNTER ÜBEREIN. Eine zweite
Zählung könnte etwas anderes sagen als die Überschriften zwei
Zentimeter weiter unten. */
const summeLage = alleTeile
.map((x) => Number((x.wort.match(/^(\d+)/) || [])[1] || 0))
.reduce((a, b) => a + b, 0);
ok(summeLage === 5,
`und zählen alle 5 Events (Summe ${summeLage})`);
/* Verschiedene Zustände, verschiedene Töne — sonst wäre die
Einfärbung Zierde ohne Aussage. */
const toene = new Set(alleTeile.filter((x) => x.stand).map((x) => x.farbe));
ok(toene.size >= 2,
`und verschiedene Zustände sehen verschieden aus (${toene.size} Töne)`);
/* ---- DER KASTEN STEHT ZU, UND DAS IST DER ZWECK (08.10.2026) --
Gemessen auf 412 px war er auf 521 px gewachsen -- mehr als ein
halber Telefonbildschirm, bevor man die erste Kachel sieht. Er
ist ein Werkzeug, nicht der Inhalt der Seite.
ZUERST WIRD GEMESSEN, DASS ER ZU IST, dann wird er
aufgemacht. Ohne den ersten Teil waere „er laesst sich
aufklappen" auch bei einem Kasten gruen, der nie zugeht. */
const zuerstZu = await seite.evaluate(() => {
const form = document.getElementById("kampagne-form");
const schild = document.getElementById("kampagne-schild");
return {
formVerborgen: form?.hidden === true,
gedrueckt: schild?.getAttribute("aria-expanded"),
schildHoehe: schild ? Math.round(schild.getBoundingClientRect().height) : null,
kastenHoehe: Math.round(
document.getElementById("kampagneholen")?.getBoundingClientRect().height ?? 0),
wort: schild?.querySelector(".kampagneholen__schildwort")?.textContent.trim() || null,
};
});
melde(" -- Kasten zu: " + JSON.stringify(zuerstZu));
ok(zuerstZu.formVerborgen === true && zuerstZu.gedrueckt === "false",
`der Einlesekasten steht von sich aus zu (hidden=${zuerstZu.formVerborgen}, `
+ `aria-expanded=${zuerstZu.gedrueckt})`);
/* UND ER BRAUCHT DANN FAST KEINEN PLATZ. Die Zahl steht in der
Bedingung, nicht nur im Meldetext: Ein zugeklappter Kasten, der
trotzdem 500 px hoch ist, waere kein zugeklappter Kasten. */
ok(zuerstZu.kastenHoehe <= 110,
`und nimmt zugeklappt nur ${zuerstZu.kastenHoehe} px (hoechstens 110)`);
/* 44 px Tippziel -- dieselbe Vorgabe wie ueberall im Haus. */
ok(zuerstZu.schildHoehe >= 44,
`sein Schild ist ${zuerstZu.schildHoehe} px hoch (mindestens 44)`);
ok(/Kampagne aus einer Einladung/.test(zuerstZu.wort || ""),
`und sagt, was dahinter steckt: ${JSON.stringify(zuerstZu.wort)}`);
/* EIN DRUCK MACHT IHN AUF. */
await seite.click("#kampagne-schild");
await seite.waitForTimeout(250);
/* ---- Die Auswahl im Kasten -------------------------------- */
const wahl = await seite.evaluate(() => {
const f = document.querySelector(".kampagneholen__wahl");
+130
View File
@@ -1115,6 +1115,131 @@ melde("=== 12b. Ein Event nach draußen teilen ===");
ok(t1.code === 200 && /\/e\/[A-Za-z0-9_-]{20,}$/.test(j1.weg || ""),
`der Link entsteht: ${String(j1.weg).replace(/^https?:\/\/[^/]+/, "…")}`);
/* ==== UND EIN FERTIGER BEITRAG FÜR DISCORD (08.10.2026) ======
Filipe: „beim teilen wird auch nur der link geteilt, und ich
will dass wenn ich es teile im discord der agentur, dass ein
banner und ein kompletter fertiger text für die creator
entsteht und nicht einfach der link kopiert wird damit die
leute drauf gehen. das ist kake.“
Gemessen wird nicht „es kommt ein Text“, sondern dass der Text
die vier Dinge trägt, wegen denen man ihn schreibt: Titel,
Zeitraum, Aufgaben, Link — und dass Discord ihn annimmt. */
const beitrag = String(j1.text || "");
ok(beitrag.length > 200,
`der fertige Beitrag kommt mit (${beitrag.length} Zeichen)`);
/* DISCORD NIMMT 2000 ZEICHEN JE NACHRICHT. Eine längere wird
beim Einfügen abgeschnitten — mitten im Wort, und niemand
merkt es, bis ein Creator nachfragt. */
ok(beitrag.length <= 2000,
`und bleibt unter der Discord-Grenze (${beitrag.length} von 2000)`);
ok(beitrag.includes("Gipfelstürmer"), "der Titel steht drin");
ok(/04\.10\.2026/.test(beitrag), "der Zeitraum steht drin");
ok(beitrag.includes("1 Diamant = 1 Punkt"),
"die Aufgaben stehen drin — genau das, was beim Link fehlte");
ok(/Ahorn-Welt/.test(beitrag) && /12\.000 Coins/.test(beitrag),
"die Geschenke mit Coinpreis ebenso");
/* DER LINK STEHT GANZ AM ENDE UND NACKT.
Am Ende, weil Discord die Vorschau UNTER die Nachricht setzt --
steht er oben, schiebt das Banner den Text aus dem Blick.
Nackt, weil spitze Klammern die Vorschau unterdrücken: dann
gäbe es genau das Banner nicht, um das es geht. */
ok(beitrag.trimEnd().endsWith(j1.weg),
`der Link steht ganz am Ende (…${beitrag.trimEnd().slice(-34)})`);
ok(!beitrag.includes(`<${j1.weg}>`),
" und nackt, nicht in spitzen Klammern — sonst kein Banner");
/* DISCORD-AUSZEICHNUNG: Überschriften und Aufzählungen, damit es
in Discord wie ein Aushang aussieht und nicht wie eine
Textwand. */
ok(/^# /m.test(beitrag) && /^## /m.test(beitrag),
"Überschriften sind gesetzt (# und ##)");
ok(/^- /m.test(beitrag), "und die Aufgaben als Aufzählung");
/* EIN BINDESTRICH MITTEN IM WORT WIRD NICHT ENTWERTET. Beim
ersten Blick auf den Beitrag stand dort „Ahorn\\-Welt“ und
„4\\-wöchige“ — die Rückstriche sichtbar im Text. In Discord
ist `-` nur am Zeilenanfang eine Aufzählung. */
ok(!/\w\\-\w/.test(beitrag),
"kein Rückstrich mitten im Wort");
/* ---- DIE GRENZE WIRD AN EINEM LANGEN BEITRAG GEMESSEN -------
GEFUNDEN DURCH DIE GEGENPROBE (08.10.2026): Als Sabotage wurde
`DISCORD_MAX` von 2000 auf 99999 gesetzt -- und die Pruefung
blieb GRUEN. Der Beitrag von „Gipfelstuermer" ist 1230 Zeichen
lang; ob die Grenze bei 2000 oder bei 99999 steht, aendert daran
nichts. `beitrag.length <= 2000` hat also nie die GRENZE
geprueft, sondern nur diesen einen Beitrag.
Genau die Sorte gruener Haken, die nichts misst (CLAUDE.md,
01.09.2026). Geprueft wird deshalb mit einem Beitrag, der ohne
Kuerzung sicher zu lang WAERE -- und daneben, dass das
Wesentliche trotzdem stehen bleibt. Ein Beitrag, der die Grenze
einhaelt, indem er alles wegwirft, waere auch keine Loesung. */
{
const { discordText } = await import("./workspace-teilen.js");
const satz = "Gipfelstürmer ist eine TikTok LIVE Kampagne, in welcher "
+ "Creator*innen Punkte sammeln können, wenn sie Diamanten sammeln. ";
const lang = {
titel: "Ein sehr langer Kampagnentitel zum Messen",
zeitraum: "04.10.2026 – 07.10.2026",
text: satz.repeat(40),
basis: "https://beispiel.de/e/abc",
vonTikTok: true,
aufgaben: Array.from({ length: 12 }, (x, i) =>
`Aufgabe ${i + 1} mit einem recht ausführlichen Text dahinter`),
gaben: Array.from({ length: 8 }, (x, i) =>
({ text: `Geschenk ${i + 1}`, coins: (i + 1) * 999, zusatz: null })),
abschnitte: [{ art: "rangliste", titel: "RANGLISTE", zeilen: [
{ art: "punkt", text: "Gewertet wird vom 04.10. bis zum 07.10." }] }],
};
/* ERST BELEGEN, DASS DER FALL UEBERHAUPT EINTRITT. Ohne diese
Zeile misst die naechste wieder nichts. */
const ungekuerzt = satz.repeat(40).length;
ok(ungekuerzt > 2000,
`der Probetext allein ist ${ungekuerzt} Zeichen lang -- er MUSS gekürzt werden`);
const kurz = discordText(lang);
ok(kurz.length <= 2000,
`und der Beitrag bleibt bei ${kurz.length} Zeichen`);
ok(kurz.length < ungekuerzt,
" es wurde also wirklich gekürzt, nicht nur gemessen");
/* WAS IMMER STEHEN BLEIBT: Titel, Zeitraum, Aufgaben, Link.
Das sind die vier Dinge, wegen denen man den Beitrag
schreibt. */
ok(kurz.includes("Ein sehr langer Kampagnentitel"), " der Titel bleibt");
ok(/04\.10\.2026/.test(kurz), " der Zeitraum bleibt");
ok(/^- Aufgabe 1 /m.test(kurz), " die Aufgaben bleiben");
ok(kurz.trimEnd().endsWith("https://beispiel.de/e/abc"),
" und der Link steht am Ende");
/* DER AEUSSERSTE FALL: ein Titel, der allein fast die Grenze
sprengt. Auch dann muss der Link dastehen -- ohne ihn ist der
Beitrag eine Sackgasse. */
const riesig = discordText({ ...lang, titel: "A".repeat(1500) });
ok(riesig.length <= 2000 && riesig.trimEnd().endsWith("https://beispiel.de/e/abc"),
`selbst bei einem 1500-Zeichen-Titel: ${riesig.length} Zeichen, Link am Ende`);
}
/* UND NICHTS ÜBER UNS. Dieselbe Grenze wie auf der offenen
Seite: Was die Kampagne sagt, geht hinaus — wer wir sind,
nicht. Der Beitrag landet in einem Kanal, den auch Fremde
lesen können. */
const verbotenImBeitrag = [
["ein Name", "Dogfather"], ["eine Rolle", "admin"],
["die Kampagnennummer", ID_GIPFEL],
["ein Hinweis an DogFather", "bitte nachtragen"],
["ein Feldname", "erstellt_von"],
].filter(([, w]) => beitrag.includes(w));
ok(verbotenImBeitrag.length === 0,
"nichts Internes im Beitrag"
+ (verbotenImBeitrag.length
? `: ${verbotenImBeitrag.map((x) => x[0]).join(", ")}` : ""));
/* DERSELBE SCHLUESSEL BEIM ZWEITEN DRUCK. Ein neuer wuerde den
Link still ins Leere laufen lassen, den jemand schon gepostet
hat. */
@@ -1123,6 +1248,11 @@ melde("=== 12b. Ein Event nach draußen teilen ===");
const j2 = JSON.parse(t2.text || "{}");
ok(j2.weg === j1.weg && j2.schon === true,
"der zweite Druck gibt denselben Link, keinen neuen");
/* UND DEN BEITRAG GLEICH MIT. Wer ihn ein zweites Mal in einen
anderen Kanal stellen will, soll nicht erst zurückziehen und
neu teilen müssen. */
ok(String(j2.text || "") === beitrag,
`und denselben Beitrag (${String(j2.text || "").length} Zeichen)`);
const schluessel = String(j1.weg).split("/e/")[1];
+256 -16
View File
@@ -157,7 +157,33 @@ teilenRouter.post("/workspace/api/eintrag/:id(\\d+)/teilen", (req, res) => {
detail: `Eintrag ${e.id} "${String(e.titel).slice(0, 60)}"`,
});
}
return res.json({ weg: `${TEILEN_BASIS}/e/${schluessel}`, schon: !!e.teilen_token });
/* ---- DER FERTIGE BEITRAG KOMMT MIT (08.10.2026) ----------
Filipe: „beim teilen wird auch nur der link geteilt ... das
ist kake.“ Er hat recht: Ein Link ist eine Aufforderung,
und wer ihn nicht anklickt, weiß nicht, dass es die
Kampagne gibt.
GEBAUT WIRD HIER, NICHT IM BROWSER. Der Beitrag enthält
Aufgaben, Geschenke und Regeln -- dieselben Daten, die die
offene Seite zeigt, aus derselben Funktion
(`teilenDaten`). Im Browser gebaut wäre es die zweite
Fassung derselben Sache, und die läuft auseinander.
FÄLLT ER AUS, BLEIBT DER LINK. Ein Teilen, das wegen eines
Textbaufehlers gar nicht geht, wäre schlimmer als eines
ohne Text -- deshalb steht der Bau in einem eigenen
`try`. */
const basis = `${TEILEN_BASIS}/e/${schluessel}`;
let beitrag = null;
try {
const voll = eventMitNummer(e.id);
if (voll) beitrag = discordText(teilenDaten(voll, basis));
} catch (f) {
console.error("[teilen] Beitrag:", f?.message);
beitrag = null;
}
return res.json({ weg: basis, text: beitrag, schon: !!e.teilen_token });
} catch (fehler) {
console.error("[teilen] anlegen:", fehler?.message);
return res.status(503).json({ fehler: "Das Teilen hat gerade nicht geklappt." });
@@ -196,6 +222,31 @@ function tagText(iso) {
return m ? `${m[3]}.${m[2]}.${m[1]}` : null;
}
/* DIE SPALTEN STEHEN EINMAL DA (08.10.2026).
Seit es zwei Abfragen gibt -- eine ueber den Schluessel (die
offene Seite) und eine ueber die Nummer (der Discord-Text beim
Teilen) -- waere eine zweite Liste die Sorte Abschrift, die in
diesem Haus schon einmal drei Spalten gekostet hat. Wer hier
etwas ergaenzt, ergaenzt es fuer beide.
`erstellt_von` und `haus` stehen ABSICHTLICH nicht dabei: Was
die Kampagne sagt, geht hinaus -- wer wir sind, nicht. */
const TEILEN_SPALTEN = `id, titel, text, datum, event_ende, kampagne_id,
teilen_seit, teilen_token, event_aufgaben, event_regeln,
kampagne_daten`;
/** Das Event zu einer Nummer -- fuer den Weg ueber den Teilen-Knopf. */
function eventMitNummer(id) {
try {
return db().prepare(
`SELECT ${TEILEN_SPALTEN}
FROM eintraege
WHERE id = ? AND bereich = 'agentur' AND art = 'kampagne'`)
.get(Number(id)) || null;
} catch { return null; }
}
/** Das Event zu einem Schlüssel -- oder null. */
function eventZu(token) {
if (!/^[A-Za-z0-9_-]{10,64}$/.test(String(token || ""))) return null;
@@ -207,8 +258,7 @@ function eventZu(token) {
hinaus; was ueber UNS etwas sagt, nicht. Deshalb steht
`erstellt_von` hier weiterhin nicht, und `haus` auch
nicht. */
`SELECT id, titel, text, datum, event_ende, kampagne_id, teilen_seit,
event_aufgaben, event_regeln, kampagne_daten
`SELECT ${TEILEN_SPALTEN}
FROM eintraege
WHERE teilen_token = ? AND bereich = 'agentur' AND art = 'kampagne'`)
.get(String(token)) || null;
@@ -242,15 +292,21 @@ teilenRouter.get("/e/:token/bild", (req, res) => {
return liefereDatei(req, res, pfad);
});
teilenRouter.get("/e/:token", (req, res) => {
nichtIndizieren(res);
const e = eventZu(req.params.token);
if (!e) {
/* ZURUECKGEZOGEN SIEHT AUS WIE NIE DAGEWESEN. Ein eigener Satz
(„war mal da") würde bestätigen, dass es diesen Schlüssel gab --
und damit Durchprobieren belohnen. */
return res.status(404).type("text/html; charset=utf-8").send(seiteLeer());
}
/* =====================================================================
WAS VON EINEM EVENT NACH DRAUSSEN GEHT -- AN EINER STELLE
(08.10.2026)
Gerufen von ZWEI Wegen: der offenen Seite (`GET /e/:token`) und
dem Discord-Text (`POST .../teilen`). Beide zeigen dasselbe
Event; haetten sie je einen eigenen Aufbau, wuerde die Seite
irgendwann etwas anderes sagen als der Beitrag daneben -- und
niemand koennte sagen, welcher von beiden recht hat.
Die Grenze ist dieselbe wie vorher: Was die KAMPAGNE sagt, geht
hinaus; keine Hinweiszeile an DogFather, kein Steckbrief, kein
Name, keine Rolle, kein Haus.
===================================================================== */
export function teilenDaten(e, basis) {
const von = tagText(e.datum);
const bis = tagText(e.event_ende);
const zeitraum = von && bis && bis !== von ? `${von} – ${bis}` : (von || "");
@@ -326,15 +382,13 @@ teilenRouter.get("/e/:token", (req, res) => {
const aufgabenKurz = aufgaben.slice(0, 3).join(" · ");
const beschreibung = [zeitraum, kurz || aufgabenKurz]
.filter(Boolean).join(" · ");
const basis = `${TEILEN_BASIS}/e/${encodeURIComponent(req.params.token)}`;
const hatBild = (() => {
try {
return !!db().prepare("SELECT 1 FROM dateien WHERE eintrag_id = ? LIMIT 1").get(e.id);
} catch { return false; }
})();
res.type("text/html; charset=utf-8");
return res.send(seitePlakat({
return {
titel: String(e.titel || "Event"),
zeitraum,
text: kurz,
@@ -347,7 +401,193 @@ teilenRouter.get("/e/:token", (req, res) => {
gabenTitel: gabenAb?.titel || null,
gabenUnter: gabenAb?.unter || null,
abschnitte: rest,
}));
};
}
/* =====================================================================
EIN FERTIGER BEITRAG FÜR DISCORD (08.10.2026)
Filipe: „beim teilen wird auch nur der link geteilt, und ich will
dass wenn ich es teile im discord der agentur, dass ein banner und
ein kompletter fertiger text für die creator entsteht und nicht
einfach der link kopiert wird damit die leute drauf gehen. das ist
kake."
Er hat recht, und zwar aus einem Grund, den man im Workspace nicht
sieht: Ein Link in einem Discord-Kanal ist eine AUFFORDERUNG. Wer
ihn nicht anklickt — und das sind die meisten — weiß nicht, dass es
die Kampagne gibt. Was in Discord steht, muss die Kampagne SEIN.
---------------------------------------------------------------------
DER BANNER KOMMT VON SELBST, UND ZWAR ÜBER DEN LINK
Discord baut aus den Open-Graph-Angaben der offenen Seite eine
Vorschau mit großem Bild. Die steht UNTER der Nachricht. Deshalb:
- Der Link steht GANZ AM ENDE. Steht er oben, schiebt die Vorschau
den Text nach unten aus dem Blick.
- Der Link steht NACKT da, nicht in spitzen Klammern. `<…>`
unterdrückt die Vorschau — und damit genau das Banner, um das es
geht.
---------------------------------------------------------------------
2000 ZEICHEN, UND NICHT EINS MEHR
Discord nimmt pro Nachricht 2000 Zeichen. Eine Nachricht, die beim
Einfügen abgeschnitten wird, endet mitten im Wort — und niemand
merkt es, bis ein Creator nachfragt. Gekürzt wird deshalb HIER, in
fester Reihenfolge und an Abschnittsgrenzen:
1. „Gut zu wissen" fällt weg (steht vollständig auf der Seite)
2. die Einleitung wird kürzer (steht vollständig auf der Seite)
3. die Geschenke fallen weg (stehen vollständig auf der Seite)
Titel, Zeitraum, Aufgaben und der Link bleiben IMMER. Das sind die
vier Dinge, wegen denen man den Beitrag überhaupt schreibt.
---------------------------------------------------------------------
KEINE NAMEN, KEINE ROLLEN
Derselbe Satz wie bei der offenen Seite: Was die Kampagne sagt, geht
hinaus. Wer sie eingelesen hat, steht nirgends — der Beitrag kommt
vom Team, nicht von einer Person.
===================================================================== */
const DISCORD_MAX = 2000;
/** Discord-Auszeichnung in fremdem Text entwerten.
*
* EIN TITEL MIT EINEM STERN DARIN würde sonst die halbe Nachricht
* kursiv setzen. Entwertet wird nur dort, wo FREMDER Text steht
* (Titel, Aufgaben, Geschenke) -- nicht in den Überschriften, die wir
* selbst schreiben.
*
* ZWEI SORTEN ZEICHEN, UND SIE BRAUCHEN ZWEI REGELN (berichtigt
* 08.10.2026, beim ersten Blick auf den fertigen Beitrag):
*
* ÜBERALL \ * _ ~ ` | die wirken mitten im Wort
* NUR AM ANFANG # - > die wirken nur am Zeilenanfang
*
* Zuerst stand der Bindestrich in der ersten Gruppe. Heraus kam
* „4\-wöchige Wachstum Challenge" und „Ahorn\-Welt" -- die
* Rückstriche standen sichtbar im Beitrag. Ein Bindestrich mitten im
* Wort ist in Discord keine Aufzählung; ihn zu entwerten macht den
* Text kaputt, statt ihn zu retten. Dasselbe gilt für `#` und `>`.
*
* Der Rückstrich ist in Discord das Entwertungszeichen, genau wie in
* Markdown -- und steht deshalb selbst mit in der ersten Gruppe. */
function discordRoh(s) {
return String(s ?? "")
.replace(/([\\*_~`|])/g, "\\$1")
.replace(/^([#\->])/, "\\$1");
}
/** Ein fertiger Beitrag für den Agentur-Kanal.
*
* @param {object} d was `teilenDaten()` geliefert hat
* @returns {string} höchstens 2000 Zeichen, Link am Ende
*/
export function discordText(d) {
const kopf = [];
kopf.push(`# ${discordRoh(d.titel)}`);
const zeile2 = [];
if (d.zeitraum) zeile2.push(`**${discordRoh(d.zeitraum)}**`);
zeile2.push(d.vonTikTok ? "TikTok-Kampagne" : "Event der Agentur");
kopf.push(zeile2.join(" · "));
/* Die Einleitung. Sie darf lang sein -- gekürzt wird sie erst, wenn
es wirklich eng wird (siehe unten). */
const einleitung = d.text ? [``, discordRoh(d.text)] : [];
const aufgaben = (d.aufgaben || []).length
? [``, `## 🎯 ${d.aufgaben.length === 1 ? "Deine Aufgabe" : "Deine Aufgaben"}`,
...d.aufgaben.map((a) => `- ${discordRoh(a)}`)]
: [];
const gaben = (d.gaben || []).length
? [``, "## 🎁 Diese Geschenke zählen",
...d.gaben.map((g) => {
const c = coinText(g.coins);
const zusatz = c || g.zusatz;
return `- **${discordRoh(g.text)}**${zusatz ? ` · ${discordRoh(zusatz)}` : ""}`;
})]
: [];
/* „Gut zu wissen": die Punkte aus Rangliste, Zeitplan und Teilnahme
-- aber nur die kurzen. Ein ganzer Teilnahmebedingungs-Absatz in
einem Discord-Beitrag liest niemand; dafür gibt es die Seite. */
const merken = [];
for (const a of d.abschnitte || []) {
if (!/rangliste|zeitplan|teilnahme/i.test(a.art || "")) continue;
for (const z of a.zeilen || []) {
if (z.art !== "punkt" && z.art !== "text") continue;
if (z.text.length > 120) continue;
merken.push(`- ${discordRoh(z.text)}`);
if (merken.length >= 5) break;
}
if (merken.length >= 5) break;
}
const wissen = merken.length ? [``, "## ℹ️ Gut zu wissen", ...merken] : [];
/* DER LINK ZULETZT UND NACKT -- Begründung oben. */
const fuss = [``, "-# Alle Regeln, Preise und Ligen im Detail:", d.basis];
/* ZUSAMMENSETZEN UND NOTFALLS KÜRZEN. Gebaut wird von der
vollständigen Fassung abwärts, nicht von der kurzen aufwärts: So
steht immer die beste Fassung da, die noch passt. */
const bauen = (teile) => teile.flat().join("\n").replace(/\n{3,}/g, "\n\n").trim();
let aus = bauen([kopf, einleitung, aufgaben, gaben, wissen, fuss]);
if (aus.length <= DISCORD_MAX) return aus;
aus = bauen([kopf, einleitung, aufgaben, gaben, fuss]);
if (aus.length <= DISCORD_MAX) return aus;
/* Die Einleitung auf zwei Sätze. An einer Satzgrenze, nicht mitten
im Wort -- ein abgeschnittenes Wort sieht nach einem Fehler aus. */
if (d.text) {
const saetze = String(d.text).split(/(?<=[.!?])\s+/);
const kurz = saetze.slice(0, 2).join(" ");
aus = bauen([kopf, [``, discordRoh(kurz)], aufgaben, gaben, fuss]);
if (aus.length <= DISCORD_MAX) return aus;
}
aus = bauen([kopf, aufgaben, gaben, fuss]);
if (aus.length <= DISCORD_MAX) return aus;
aus = bauen([kopf, aufgaben, fuss]);
if (aus.length <= DISCORD_MAX) return aus;
/* Selbst Titel, Aufgaben und Link passen nicht -- dann werden die
Aufgaben beschnitten. Der Link bleibt in jedem Fall: Ohne ihn ist
der Beitrag eine Sackgasse. */
const ohneAufgaben = bauen([kopf, fuss]);
const platz = DISCORD_MAX - ohneAufgaben.length - 40;
const gekuerzt = [];
let laenge = 0;
for (const a of aufgaben.slice(2)) {
if (laenge + a.length + 1 > platz) break;
gekuerzt.push(a);
laenge += a.length + 1;
}
return bauen([kopf,
gekuerzt.length ? [``, aufgaben[1], ...gekuerzt, "- …"] : [],
fuss]);
}
teilenRouter.get("/e/:token", (req, res) => {
nichtIndizieren(res);
const e = eventZu(req.params.token);
if (!e) {
/* ZURUECKGEZOGEN SIEHT AUS WIE NIE DAGEWESEN. Ein eigener Satz
(„war mal da") würde bestätigen, dass es diesen Schlüssel gab --
und damit Durchprobieren belohnen. */
return res.status(404).type("text/html; charset=utf-8").send(seiteLeer());
}
const basis = `${TEILEN_BASIS}/e/${encodeURIComponent(req.params.token)}`;
res.type("text/html; charset=utf-8");
return res.send(seitePlakat(teilenDaten(e, basis)));
});
/* ---------- Die beiden Seiten ----------------------------------------- */
+14 -14
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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/anleitung.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/anleitung.css?v=202610081119" />
<!-- module.css an VORLETZTER, haus.css an LETZTER Stelle. Die
Reihenfolge ist keine Geschmacksfrage: haus.css setzt nur
Variablen, und bei Variablen entscheidet allein, wer zuletzt
kommt. pruef-css-klassen.mjs misst genau dieses Paar nach. -->
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="halle">
@@ -289,16 +289,16 @@
Und anleitung.js braucht es doppelt: Symbol, Farbe, Name und
Adresse jeder Karte kommen von dort, nicht vom Server. -->
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<!-- wahl.js gehört zu kopf.js: Der Sicht-Umschalter baut daraus seine
Liste. pruef-css-klassen setzt das durch, und zwar auch die
Reihenfolge -- kopf.js fragt beim Aufbau nach dem fertigen
Bedienelement. -->
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/anleitung.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/anleitung.js?v=202610081119" defer></script>
</body>
</html>
+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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<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=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/anruf-probe.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
</body>
</html>
+4 -4
View File
@@ -23,25 +23,25 @@
},
"icons": [
{
"src": "/assets/img/app-symbole/workspace-192.png?v=202610081102",
"src": "/assets/img/app-symbole/workspace-192.png?v=202610081119",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/workspace-512.png?v=202610081102",
"src": "/assets/img/app-symbole/workspace-512.png?v=202610081119",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202610081102",
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202610081119",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202610081102",
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202610081119",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
+257
View File
@@ -4295,3 +4295,260 @@ body[data-ton] .kopf-zeile::before {
@media (prefers-reduced-motion: reduce) {
.kampagneholen__waehlen { transition: none; }
}
/* =====================================================================
DAS SCHILD DES EINLESEKASTENS (08.10.2026)
Zuerst stand hier NUR eine Handy-Regel (`min-height: 44px` unter
560 px) und sonst nichts -- ein Knopf ohne Grundaussehen. Gemessen
kam auf 1400 px eine Höhe von 27 px heraus: ein nackter `button`,
mit Systemschrift, ohne Fläche, ohne Tippziel. pruef-eventkarte hat
es gefunden, bevor Filipe es gesehen hat.
Die Lehre ist dieselbe wie bei den Direktkind-Selektoren: Eine
Regel, die nur in einem `@media`-Block steht, gilt auch nur dort.
Was überall gelten soll, steht draußen.
ES SIEHT AUS WIE EIN SCHILD, NICHT WIE EIN KNOPF. Der Kasten
darunter ist die Handlung; dies hier ist seine Beschriftung. Ein
zweiter kräftiger Knopf neben „Kampagne holen“ wäre eine zweite
Haupthandlung, und dann ist keine mehr die Haupthandlung.
===================================================================== */
.kampagneholen__schild {
display: flex; align-items: center; flex-wrap: wrap;
gap: 2px 12px;
width: 100%; min-height: 48px;
margin: 0; padding: 11px 14px;
font: inherit;
color: var(--text);
text-align: left; cursor: pointer;
background: linear-gradient(180deg,
color-mix(in srgb, var(--akzent, #3fbdf5) 8%, transparent), transparent 70%);
border: 1px solid color-mix(in srgb, var(--akzent, #3fbdf5) 22%, var(--rand));
border-radius: var(--radius-klein);
}
.kampagneholen__schild:hover,
.kampagneholen__schild:focus-visible {
border-color: color-mix(in srgb, var(--akzent, #3fbdf5) 50%, transparent);
}
.kampagneholen__schildwort {
flex: 0 0 auto;
font-size: .95rem; font-weight: 700;
}
/* Was dahinter steckt -- damit man nicht erst aufklappen muss, um es
zu erfahren. Ein zugeklappter Kasten ohne Auskunft sieht aus, als
sei er leer. */
.kampagneholen__schildwie {
flex: 1 1 auto; min-width: 0;
font-size: .8rem; color: var(--text-still);
}
.kampagneholen__schild .klapp-pfeil { flex: none; }
/* Aufgeklappt braucht das Formular Luft zum Schild. */
.kampagneholen__schild[data-zu="nein"] { margin-bottom: 12px; }
/* =====================================================================
DER FERTIGE DISCORD-BEITRAG (08.10.2026)
Filipe: „beim teilen wird auch nur der link geteilt ... ich will dass
ein banner und ein kompletter fertiger text für die creator entsteht
... das ist kake.“
Der Beitrag liegt nach dem Druck in der Zwischenablage. Er steht
trotzdem sichtbar da: Was man nicht gesehen hat, fügt man blind ein.
===================================================================== */
.ev-beitrag {
margin: 14px 0 0;
padding: 13px 15px 15px;
border: 1px solid color-mix(in srgb, var(--akzent, #3fbdf5) 28%, var(--rand));
border-radius: var(--radius-klein);
background:
linear-gradient(180deg,
color-mix(in srgb, var(--akzent, #3fbdf5) 7%, transparent),
transparent 60%),
rgba(255, 255, 255, .022);
}
.ev-beitrag__kopf {
display: flex; align-items: baseline; flex-wrap: wrap;
gap: 4px 10px; margin-bottom: 9px;
}
.ev-beitrag__schild {
margin: 0;
font-size: .75rem; font-weight: 700;
letter-spacing: .09em; text-transform: uppercase;
color: var(--text-leise);
}
.ev-beitrag__lage { font-size: .78rem; color: var(--text-still); }
.ev-beitrag__lage::before { content: "·"; margin-right: 7px; opacity: .7; }
/* DAS FELD IST LESBAR, NICHT NUR VORHANDEN. Eine feste Schrifthöhe
und `pre-wrap`, damit der Beitrag genau so aussieht wie später in
Discord -- Zeilenumbrüche inbegriffen. */
.ev-beitrag__text {
display: block; width: 100%;
min-height: 140px; resize: vertical;
padding: 10px 12px;
border: 1px solid var(--rand);
border-radius: var(--radius-klein);
background: rgba(0, 0, 0, .22);
color: var(--text);
font: .83rem/1.55 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
white-space: pre-wrap; overflow-wrap: anywhere;
}
.ev-beitrag__text:focus-visible {
outline: 2px solid var(--akzent, #3fbdf5); outline-offset: 1px;
}
.ev-beitrag__reihe {
display: flex; flex-wrap: wrap; align-items: center;
gap: 8px 12px; margin-top: 10px;
}
.ev-beitrag__zahl {
font-size: .76rem; color: var(--text-still);
font-variant-numeric: tabular-nums;
}
.ev-beitrag__hinweis {
margin: 9px 0 0;
font-size: .78rem; line-height: 1.5; color: var(--text-still);
}
.ev-beitrag__hinweis a { color: var(--akzent, #3fbdf5); }
/* =====================================================================
DIE ZWEI SEITEN -- KRASSER UND SPEZIELLER (08.10.2026)
Filipe: „perfektionier die zwei events kategorien. ich will es noch
viel krasser und spezieller.“
AUGENSCHONEND BLEIBT ES TROTZDEM (CLAUDE.md, 12.08.2026). Was den
Kopf besonders macht, sind Form und Tiefe, nicht Leuchtkraft: ein
gezeichnetes Wappen, ein Lichtstreifen entlang der Oberkante, ein
gedeckter Verlauf. Keine zweite Signalfarbe, kein Blinken.
===================================================================== */
/* DAS WAPPEN. Ein Ring mit einem vollen Kern -- derselbe Gedanke wie
beim Farbpunkt des Herkunftsschildes, nur größer und mit einem
zweiten Ring außen. Gezeichnet, nicht gebildet: Es färbt sich mit
`--kv-ton` mit und bleibt bei starkem Kontrast sichtbar. */
.kv-seite__wappen {
flex: none;
position: relative;
width: 30px; height: 30px;
margin-top: 1px;
border-radius: 50%;
border: 2px solid color-mix(in srgb, var(--kv-ton) 55%, transparent);
background:
radial-gradient(circle at 50% 50%,
color-mix(in srgb, var(--kv-ton) 85%, transparent) 0 22%,
transparent 23%),
radial-gradient(circle at 50% 50%,
color-mix(in srgb, var(--kv-ton) 22%, transparent) 0 70%,
transparent 71%);
}
/* Der äußere Hauch — er macht aus dem Ring ein Abzeichen. */
.kv-seite__wappen::after {
content: "";
position: absolute; inset: -5px;
border-radius: 50%;
background: radial-gradient(circle,
color-mix(in srgb, var(--kv-ton) 16%, transparent) 0, transparent 68%);
pointer-events: none;
}
/* DER KOPF BEKOMMT EINE EIGENE FLÄCHE und bleibt beim Scrollen oben
stehen. Bei fünf Gruppen und zwölf Kacheln je Spalte ist „auf
welcher Seite bin ich gerade“ sonst eine echte Frage.
`top: 0` reicht: Die Kopfleiste der Seite scrollt mit weg, es gibt
darüber nichts, was im Weg stünde. */
.kv-seite__kopf {
position: sticky; top: 0; z-index: 3;
align-items: center;
gap: 12px;
margin: 0 0 2px;
padding: 11px 13px 11px 11px;
border: 1px solid color-mix(in srgb, var(--kv-ton) 24%, var(--rand));
border-bottom: 2px solid color-mix(in srgb, var(--kv-ton) 55%, transparent);
border-radius: var(--radius-klein) var(--radius-klein) 0 0;
background:
linear-gradient(180deg,
color-mix(in srgb, var(--kv-ton) 13%, transparent),
color-mix(in srgb, var(--kv-ton) 3%, transparent) 70%),
color-mix(in srgb, var(--tinte) 92%, #000000 8%);
/* Der Lichtstreifen entlang der Oberkante -- eine Kante, kein
Leuchten. */
box-shadow: inset 0 1px 0 color-mix(in srgb, var(--kv-ton) 40%, transparent);
backdrop-filter: blur(6px);
}
/* DIE LAGE DER SEITE: „2 laufen · 1 kommt · 3 vorbei“.
Eine Zahl sagt, wie viel da ist; das hier sagt, was los ist. */
.kv-seite__lage {
display: flex; flex-wrap: wrap; align-items: center;
gap: 5px 7px;
margin: 0 0 10px;
padding: 0 2px;
}
.kv-seite__lageteil {
display: inline-flex; align-items: center; gap: 6px;
padding: 2px 9px 2px 8px;
border-radius: 999px;
border: 1px solid color-mix(in srgb, var(--rand) 75%, transparent);
font-size: .74rem; font-weight: 600;
font-variant-numeric: tabular-nums;
color: var(--text-still);
}
.kv-seite__lageteil::before {
content: "";
width: 7px; height: 7px; border-radius: 50%;
background: currentColor;
}
/* DIESELBEN DREI TÖNE WIE AN DEN KACHELN (laeuft/kommt/vorbei). Ein
vierter Satz Farben für dieselbe Aussage wäre eine zweite Sprache
auf einer Seite. */
.kv-seite__lageteil[data-stand="laeuft"] {
color: color-mix(in srgb, #cace02 70%, var(--text));
border-color: color-mix(in srgb, #cace02 35%, transparent);
background: color-mix(in srgb, #cace02 10%, transparent);
}
.kv-seite__lageteil[data-stand="kommt"] {
color: color-mix(in srgb, #5b8fd4 78%, var(--text));
border-color: color-mix(in srgb, #5b8fd4 35%, transparent);
}
.kv-seite__lageteil[data-stand="vorbei"] { opacity: .72; }
@media (max-width: 560px) {
/* Auf dem Handy stehen die Spalten untereinander — ein klebender
Kopf je Spalte würde sich beim Scrollen gegenseitig überlagern.
Also nur am Rechner. */
.kv-seite__kopf { position: static; }
.kv-seite__wappen { width: 26px; height: 26px; }
/* ---- DER EINLESEKASTEN BLEIBT HANDLICH (08.10.2026) -------
Gemessen auf 412 px: Mit Seitenwahl und Bildweg war er auf
539 px gewachsen — mehr als ein halber Telefonbildschirm,
bevor man die erste Kachel sieht. Er ist ein Werkzeug, nicht
der Inhalt der Seite.
GEKÜRZT WIRD, WO NICHTS VERLOREN GEHT: Das Textfeld bleibt
mehrzeilig, nur eben zwei statt drei Zeilen (einen Link sieht
man auch so ganz), und die Abstände werden enger. Es
verschwindet nichts — man muss nichts aufklappen, um etwas
zu finden. */
.kampagneholen__form > textarea { min-height: 62px; }
.kampagneholen__schild { min-height: 44px; }
.kampagneholen__wahl { margin-top: 9px; gap: 6px 10px; }
.kampagneholen__wahl > .feld-schild { margin-bottom: 5px; }
.kampagneholen__bild { margin-top: 9px; gap: 6px 10px; }
.kampagneholen__zeile { margin-top: 9px; }
}
@media (prefers-reduced-motion: reduce) {
.kv-seite__kopf { backdrop-filter: none; }
}
@media (forced-colors: active) {
.kv-seite__wappen { border: 2px solid CanvasText; background: none; }
.kv-seite__kopf { border: 1px solid CanvasText; background: Canvas; }
.kv-seite__lageteil { border: 1px solid CanvasText; }
.ev-beitrag { border: 1px solid CanvasText; }
.ev-beitrag__text { border: 1px solid CanvasText; }
}
+165 -3
View File
@@ -1197,6 +1197,86 @@
return block;
}
/* =====================================================================
DER FERTIGE DISCORD-BEITRAG, SICHTBAR (08.10.2026)
Er liegt nach dem Druck in der Zwischenablage. Das allein
reicht nicht: Wer ihn nicht gesehen hat, fügt ihn blind ein.
Deshalb steht er zusätzlich unter der Kachel -- mit einem
zweiten Kopierknopf, falls die Zwischenablage nicht ging
(ältere Browser, kein https) oder er inzwischen etwas anderes
kopiert hat.
NUR EINER JE KACHEL. Beim zweiten Druck wird der alte
ersetzt, nicht ein zweiter angehängt -- sonst stapeln sie
sich.
`readOnly` STATT `disabled`: Ein abgeschaltetes Textfeld
lässt sich nicht markieren, und genau das will man hier
notfalls tun. */
function beitragZeigen(karteEl, text, kopiert, weg) {
if (!karteEl) return;
karteEl.querySelector('.ev-beitrag')?.remove();
const kasten = el('section', 'ev-beitrag');
const kopf = el('div', 'ev-beitrag__kopf');
kopf.append(el('h4', 'ev-beitrag__schild', 'Beitrag für Discord'));
kopf.append(el('span', 'ev-beitrag__lage',
kopiert ? 'liegt in der Zwischenablage' : 'bitte von Hand kopieren'));
kasten.append(kopf);
const feld = el('textarea', 'ev-beitrag__text');
feld.value = text;
feld.readOnly = true;
feld.rows = 10;
feld.spellcheck = false;
kasten.append(feld);
const reihe = el('div', 'ev-beitrag__reihe');
const nochmal = el('button', 'knopf knopf--klein');
nochmal.type = 'button';
nochmal.textContent = 'Beitrag kopieren';
nochmal.addEventListener('click', async () => {
try {
await navigator.clipboard.writeText(text);
nochmal.textContent = 'Kopiert ✓';
setTimeout(() => { nochmal.textContent = 'Beitrag kopieren'; }, 2000);
} catch (f) {
void f;
/* Geht die Zwischenablage nicht, wird markiert -- dann
reicht Strg+C. Besser als eine Meldung, die sagt, dass
es nicht geht. */
feld.select();
}
});
reihe.append(nochmal);
const zu = el('button', 'knopf knopf--klein');
zu.type = 'button';
zu.textContent = 'schließen';
zu.addEventListener('click', () => kasten.remove());
reihe.append(zu);
/* DIE ZEICHENZAHL STEHT DABEI. Discord nimmt 2000 je
Nachricht; der Server hält das ein, aber man soll es sehen
können, statt es glauben zu müssen. */
reihe.append(el('span', 'ev-beitrag__zahl',
`${text.length} von 2000 Zeichen`));
kasten.append(reihe);
const hinweis = el('p', 'ev-beitrag__hinweis');
hinweis.append(document.createTextNode(
'Der Link am Ende bleibt stehen — daraus baut Discord das Banner. '));
const a = el('a', '', 'Seite ansehen');
a.href = weg;
a.target = '_blank';
a.rel = 'noopener noreferrer';
hinweis.append(a);
kasten.append(hinweis);
karteEl.append(kasten);
feld.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
}
function karte(e) {
const k = el('article', 'eintrag-karte');
k.dataset.dringlich = e.dringlichkeit;
@@ -2245,12 +2325,32 @@
`Der Server hat abgelehnt (${a.status}), ohne den Grund mitzuschicken.`));
return;
}
/* DER FERTIGE BEITRAG, NICHT DER LINK (08.10.2026).
Filipe: „ich will dass wenn ich es teile im discord der
agentur, dass ein banner und ein kompletter fertiger
text für die creator entsteht und nicht einfach der
link kopiert wird damit die leute drauf gehen.“
Der Beitrag kommt vom Server (`r.text`) und endet mit
dem Link -- daraus baut Discord die Vorschau mit dem
Banner. Bleibt der Text aus (alte Serverfassung,
Baufehler), wird der Link kopiert wie bisher: Ein
Teilen, das gar nicht geht, wäre schlimmer als eines
ohne Text. */
const inhalt = r.text || r.weg;
let kopiert = false;
try { await navigator.clipboard.writeText(r.weg); kopiert = true; }
try { await navigator.clipboard.writeText(inhalt); kopiert = true; }
catch (f) { void f; }
/* UND ER WIRD GEZEIGT. Ein Text in der Zwischenablage,
den man nicht gesehen hat, fügt man blind ein -- und
merkt erst in Discord, wenn etwas fehlt. */
beitragZeigen(k, inhalt, kopiert, r.weg);
melde(kopiert
? `Link kopiert — in Discord einfügen: ${r.weg}`
: `Link zum Kopieren: ${r.weg}`);
? (r.text
? 'Fertiger Beitrag kopiert — in Discord einfügen.'
: `Link kopiert — in Discord einfügen: ${r.weg}`)
: 'Der Beitrag steht unten zum Kopieren.');
await laden();
}, 'schritt--teilen'));
/* ---- UND WOHIN GEHÖRT ES? (07.10.2026) --------------------
@@ -2855,6 +2955,23 @@
ablehnt, laesst den Menschen davor sich selbst fuer den Fehler
halten. */
ziel.hidden = !(bereich === 'agentur' && ich && ich.darf_kampagne_einlesen === true);
/* ZUGEKLAPPT, BIS MAN IHN BRAUCHT (08.10.2026). Begründung im
HTML. Derselbe Mechanismus wie überall; er merkt sich die
Wahl, also ist „zu“ nur die Vorgabe beim ersten Mal.
ERST WENN DER KASTEN SICHTBAR IST: Bei einem Creator steht
`hidden` am ganzen Abschnitt, und ein Klapper an etwas
Unsichtbarem merkt sich einen Zustand, den niemand
gewählt hat. */
if (!ziel.hidden) {
const schild = $('kampagne-schild');
const form = $('kampagne-form');
if (schild && form && window.klappPfeil && !schild.querySelector('.klapp-pfeil')) {
schild.append(window.klappPfeil());
}
window.abschnittKlappbar?.(schild, form, 'agentur:kampagnekasten', true);
}
}
function kampagneFeldBedienen() {
@@ -3850,11 +3967,56 @@
const spalte = el('section', 'kv-seite');
spalte.dataset.seite = seite;
const kopf = el('header', 'kv-seite__kopf');
/* ---- DAS WAPPEN DER SEITE (08.10.2026) --------------
Filipe: „perfektionier die zwei events kategorien. ich
will es noch viel krasser und spezieller.“
Ein gezeichnetes Zeichen, kein Bild: Es faerbt sich mit
`--kv-ton` mit, braucht keinen zweiten Abruf und bleibt
bei starkem Kontrast sichtbar. Die Form entsteht im CSS
(`.kv-seite__wappen`), hier steht nur, DASS es eines
gibt -- so wie ueberall im Haus. */
kopf.append(el('span', 'kv-seite__wappen'));
const wort = el('div', 'kv-seite__titel', titel);
wort.append(el('span', 'kv-seite__unter', unter));
kopf.append(wort);
kopf.append(el('span', 'kv-seite__zahl', String(drin.length)));
spalte.append(kopf);
/* ---- WIE ES UM DIE SEITE STEHT ----------------------
Eine Zahl allein („3“) sagt, wie viel da ist. Sie sagt
nicht, ob davon heute etwas laeuft -- und genau das ist
die Frage, mit der man auf dieses Brett schaut.
GEZAEHLT WIRD MIT DERSELBEN REGEL, die die Gruppen
darunter bildet (`evGruppeVon`). Eine zweite Zaehlung
koennte etwas anderes sagen als die Ueberschriften
zwei Zentimeter weiter unten.
WAS NULL IST, ERSCHEINT NICHT. „0 laufen“ ist keine
Auskunft, sondern Fuellmaterial -- und drei Nullen
nebeneinander lassen eine leere Spalte voll aussehen. */
const lage = el('div', 'kv-seite__lage');
for (const [schluessel, wortform] of [
['laeuft', 'laufen'], ['kommt', 'kommen'], ['vorbei', 'vorbei'],
]) {
const n = drin.filter((x) => (schluessel === 'vorbei'
? evGruppeVon(x).startsWith('vorbei')
: evGruppeVon(x) === schluessel)).length;
if (!n) continue;
const teil = el('span', 'kv-seite__lageteil', `${n} ${wortform}`);
teil.dataset.stand = schluessel;
lage.append(teil);
}
/* Eine leere Spalte sagt es mit Worten, nicht mit nichts. */
if (!lage.childElementCount) {
lage.append(el('span', 'kv-seite__lageteil', 'noch nichts'));
}
spalte.append(lage);
if (!drin.length) {
spalte.append(el('p', 'kv-seite__leer', seite === 'tiktok'
? 'Noch keine Einladung eingelesen.'
+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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="garage">
@@ -430,22 +430,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=202610081102"></script>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/hochladen.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/textform.js?v=202610081119"></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/hochladen.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/zuteilung.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/zuteilung.js?v=202610081119" 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=202610081102" defer></script>
<script src="assets/js/aufgaben.js?v=202610081102" defer></script>
<script src="assets/js/vorlagenbrett.js?v=202610081119" defer></script>
<script src="assets/js/aufgaben.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/automation.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/automation.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="garage">
@@ -168,15 +168,15 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/automation.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/automation.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -197,16 +197,16 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/holen.js?v=202610081102" defer></script>
<script src="assets/js/befinden.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/holen.js?v=202610081119" defer></script>
<script src="assets/js/befinden.js?v=202610081119" defer></script>
</body>
</html>
+48 -26
View File
@@ -12,29 +12,29 @@
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=202610080131" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610080131" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610080131" />
<link rel="stylesheet" href="assets/css/start.css?v=202610080131" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610080131" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202610081000" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202610081119" />
<!-- 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=202610080131" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202610081119" />
<!-- Die Bildschau: ein Banner wird darin mittig gezeigt statt als nackte
Datei in einem neuen Tab. Sie ist seit dem 07.10.2026 eine eigene
Datei und keine Kopie aus chat.css -- dieselbe Schau im Chat und
hier, ein Stil. -->
<link rel="stylesheet" href="assets/css/bildschau.css?v=202610080131" />
<link rel="stylesheet" href="assets/css/module.css?v=202610080131" />
<link rel="stylesheet" href="assets/css/bildschau.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610080131" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -361,9 +361,27 @@
einem Dialog, der weggeklickt wird. Sie nennt den Grund im
Klartext -- "Dieser Link fuehrt zu beispiel.de, nicht zu
TikTok" --, nicht "Fehler 502". -->
<!-- ZUGEKLAPPT, BIS MAN IHN BRAUCHT (08.10.2026)
Gemessen auf 412 px: Der Kasten war auf 521 px gewachsen —
mehr als ein halber Telefonbildschirm, bevor man die erste
Kachel sieht. Er ist ein Werkzeug und nicht der Inhalt der
Seite: Auf das Brett schaut man täglich, eine Kampagne legt
man alle paar Tage an.
EIN DRUCK, UND ER BLEIBT OFFEN. `abschnittKlappbar` merkt
sich die Wahl (localStorage) — wer ihn offen haben will, hat
ihn ab dann offen. Zuklappen heißt also nicht wegnehmen.
KEIN ZWEITER KLAPPMECHANISMUS: derselbe wie bei den
Eventkacheln, den Zeitgruppen und den Spaltengruppen. Ein
eigener wäre einer, der sich anders verhält. -->
<section id="kampagneholen" class="kampagneholen" hidden>
<button type="button" id="kampagne-schild" class="kampagneholen__schild">
<span class="kampagneholen__schildwort">Kampagne aus einer Einladung anlegen</span>
<span class="kampagneholen__schildwie">Link einfügen oder Bildschirmfoto</span>
</button>
<form id="kampagne-form" class="kampagneholen__form">
<h2 class="kampagneholen__titel">Kampagne aus einer Einladung anlegen</h2>
<label class="feld-schild" for="kampagne-text">Einladung einfügen</label>
<textarea id="kampagne-text" rows="3" spellcheck="false"
placeholder="Einladung hier einfügen – der ganze Text reicht."></textarea>
@@ -419,7 +437,11 @@
<span class="feld-hinweis">… oder hier einfügen (Strg+V) oder hereinziehen.</span>
</div>
<div class="kampagneholen__zeile">
<p class="feld-hinweis" id="kampagne-sagt" role="status" aria-live="polite">Aus dem Link kommen Titel, Zeitraum, Banner, Aufgaben und Preise von selbst — aus einem Bildschirmfoto Titel, Zeitraum und Ziele.</p>
<!-- KURZ GEHALTEN (08.10.2026): Auf 412 px nahm der lange
Satz drei Zeilen und schob den Knopf nach unten. Was
genau gelesen wird, steht ohnehin auf der Kachel, die
danach entsteht. -->
<p class="feld-hinweis" id="kampagne-sagt" role="status" aria-live="polite">Titel, Zeitraum und Aufgaben kommen von selbst.</p>
<button type="submit" class="knopf knopf--klein" id="kampagne-holen">Kampagne holen</button>
</div>
</form>
@@ -432,20 +454,20 @@
<!-- 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=202610080131"></script>
<script src="assets/js/meldung.js?v=202610080131" defer></script>
<script src="assets/js/nachfrage.js?v=202610080131" defer></script>
<script src="assets/js/textform.js?v=202610081119"></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610080131" defer></script>
<script src="assets/js/bereiche.js?v=202610080131" defer></script>
<script src="assets/js/installieren.js?v=202610080131" defer></script>
<script src="assets/js/kopf.js?v=202610080131" defer></script>
<script src="assets/js/glocke.js?v=202610080131" defer></script>
<script src="assets/js/checkliste.js?v=202610080131" defer></script>
<script src="assets/js/ampel.js?v=202610080131" defer></script>
<script src="assets/js/schulung.js?v=202610080131" defer></script>
<script src="assets/js/holen.js?v=202610080131" defer></script>
<script src="assets/js/bildschau.js?v=202610080131"></script>
<script src="assets/js/bereich.js?v=202610081000" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/checkliste.js?v=202610081119" defer></script>
<script src="assets/js/ampel.js?v=202610081119" defer></script>
<script src="assets/js/schulung.js?v=202610081119" defer></script>
<script src="assets/js/holen.js?v=202610081119" defer></script>
<script src="assets/js/bildschau.js?v=202610081119"></script>
<script src="assets/js/bereich.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/treff.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/treff.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</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=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/auskunft.js?v=202610081102" defer></script>
<script src="assets/js/bewerben.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/auskunft.js?v=202610081119" defer></script>
<script src="assets/js/bewerben.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -80,16 +80,16 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/auskunft.js?v=202610081102" defer></script>
<script src="assets/js/bewerbungen.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/auskunft.js?v=202610081119" defer></script>
<script src="assets/js/bewerbungen.js?v=202610081119" defer></script>
</body>
</html>
+3 -3
View File
@@ -59,11 +59,11 @@
<!-- DIE WERBEEINBLENDUNG. Dieselbe Datei wie in der Reaction-Seite:
Zwei Fassungen altern unterschiedlich, und dann sieht der Stream
anders aus als das, worueber geredet wird. -->
<link rel="stylesheet" href="assets/css/werbung.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/werbung.css?v=202610081119" />
</head>
<body class="obs-buehne">
<div id="platz"></div>
<script src="assets/js/werbung.js?v=202610081102" defer></script>
<script src="assets/js/buehne.js?v=202610081102" defer></script>
<script src="assets/js/werbung.js?v=202610081119" defer></script>
<script src="assets/js/buehne.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/calls.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/calls.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="lounge">
@@ -89,15 +89,15 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/ki.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/calls.js?v=202610081102" defer></script>
<script src="assets/js/ki.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/calls.js?v=202610081119" defer></script>
</body>
</html>
+21 -21
View File
@@ -12,31 +12,31 @@
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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/chat.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/chat.css?v=202610081119" />
<!-- Die Bildschau stand bis zum 07.10.2026 in chat.css. Sie wird jetzt
auch vom Event-Banner benutzt (bereich.html) und hat deshalb eine
eigene Datei. Sie steht GENAU HIER -- direkt hinter chat.css, also
an derselben Stelle im Ladeweg wie der Block vorher. -->
<link rel="stylesheet" href="assets/css/bildschau.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/bildschau.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="lounge">
@@ -744,24 +744,24 @@
</form>
</dialog>
<script src="assets/js/bereiche.js?v=202610081102"></script>
<script src="assets/js/bereiche.js?v=202610081119"></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=202610081102"></script>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/hochladen.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102"></script>
<script src="assets/js/glocke.js?v=202610081102"></script>
<script src="assets/js/textform.js?v=202610081119"></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/hochladen.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119"></script>
<script src="assets/js/glocke.js?v=202610081119"></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=202610081102"></script>
<script src="assets/js/anruf.js?v=202610081119"></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
@@ -772,8 +772,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=202610081102"></script>
<script src="assets/js/chat.js?v=202610081102"></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/bildschau.js?v=202610081119"></script>
<script src="assets/js/chat.js?v=202610081119"></script>
<script src="assets/js/installieren.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/content.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/content.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="portal">
@@ -179,15 +179,15 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/checkliste.js?v=202610081102" defer></script>
<script src="assets/js/content.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/checkliste.js?v=202610081119" defer></script>
<script src="assets/js/content.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202610081119" />
</head>
<body class="gate gate--crew">
@@ -459,7 +459,7 @@
<script src="assets/js/gate.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/gate.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
</body>
</html>
+4 -4
View File
@@ -23,25 +23,25 @@
},
"icons": [
{
"src": "/assets/img/app-symbole/crew-192.png?v=202610081102",
"src": "/assets/img/app-symbole/crew-192.png?v=202610081119",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/crew-512.png?v=202610081102",
"src": "/assets/img/app-symbole/crew-512.png?v=202610081119",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202610081102",
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202610081119",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202610081102",
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202610081119",
"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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="arena">
@@ -108,15 +108,15 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/hochladen.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/hochladen.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/dateien.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/dateien.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -306,20 +306,20 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/holen.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/holen.js?v=202610081119" 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=202610081102" defer></script>
<script src="assets/js/entwicklung.js?v=202610081102" defer></script>
<script src="assets/js/vorlagenbrett.js?v=202610081119" defer></script>
<script src="assets/js/entwicklung.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/hilfe.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/hilfe.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -146,14 +146,14 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/hilfe.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/hilfe.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
</head>
<body class="gate">
@@ -427,7 +427,7 @@
<script src="assets/js/gate.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/gate.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="skyline">
@@ -383,15 +383,15 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/kalender.js?v=202610081102" defer></script>
<script src="assets/js/kalender-abo.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/kalender.js?v=202610081119" defer></script>
<script src="assets/js/kalender-abo.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="arena">
@@ -444,13 +444,13 @@
</form>
</dialog>
<script src="assets/js/meldung.js?v=202610081102"></script>
<script src="assets/js/nachfrage.js?v=202610081102"></script>
<script src="assets/js/wahl.js?v=202610081102"></script>
<script src="assets/js/bereiche.js?v=202610081102"></script>
<script src="assets/js/kopf.js?v=202610081102"></script>
<script src="assets/js/glocke.js?v=202610081102"></script>
<script src="assets/js/leistung.js?v=202610081102"></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119"></script>
<script src="assets/js/nachfrage.js?v=202610081119"></script>
<script src="assets/js/wahl.js?v=202610081119"></script>
<script src="assets/js/bereiche.js?v=202610081119"></script>
<script src="assets/js/kopf.js?v=202610081119"></script>
<script src="assets/js/glocke.js?v=202610081119"></script>
<script src="assets/js/leistung.js?v=202610081119"></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
</body>
</html>
+14 -14
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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/manager-ziele.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/manager-ziele.css?v=202610081119" />
<!-- module.css an VORLETZTER, haus.css an LETZTER Stelle. Die
Reihenfolge ist keine Geschmacksfrage: haus.css setzt nur
Variablen, und bei Variablen entscheidet allein, wer zuletzt
kommt. pruef-css-klassen.mjs misst genau dieses Paar nach. -->
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="arena">
@@ -230,16 +230,16 @@
kopf.js liest daraus die Leitungsrollen. Ohne sie stürzt jede
Seite ab, und zwar nur in der Browserkonsole -- die Kopfleiste
kommt trotzdem. -->
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<!-- wahl.js gehört zu kopf.js: Der Sicht-Umschalter baut daraus seine
Liste. pruef-css-klassen setzt das durch, und zwar auch die
Reihenfolge -- kopf.js fragt beim Aufbau nach dem fertigen
Bedienelement. -->
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/manager-ziele.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/manager-ziele.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/material.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/material.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</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=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/hochladen.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/material.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/hochladen.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/material.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/notizen.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/notizen.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</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=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/notizen.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/notizen.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/personen.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/personen.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="halle">
@@ -453,14 +453,14 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/personen.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/personen.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/profil.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/profil.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="halle">
@@ -214,16 +214,16 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/hochladen.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/hochladen.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/steckbrief.js?v=202610081102" defer></script>
<script src="assets/js/profil.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/steckbrief.js?v=202610081119" defer></script>
<script src="assets/js/profil.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/foyer.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/foyer.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -194,13 +194,13 @@
<!-- bereiche.js VOR kopf.js: Dort steht `window.Bereiche`, und kopf.js
liest daraus die Leitungsrollen. -->
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/reaktion-foyer.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/reaktion-foyer.js?v=202610081119" defer></script>
</body>
</html>
+19 -19
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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/reaktion.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/spendenkarte.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/werbung.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/reaktion.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/spendenkarte.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/werbung.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start reaktion-seite" data-stand="laedt">
@@ -1132,15 +1132,15 @@
<!-- bereiche.js VOR kopf.js: Dort steht `window.Bereiche`, und kopf.js
liest daraus die Leitungsrollen. -->
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/spendenkarte.js?v=202610081102" defer></script>
<script src="assets/js/werbung.js?v=202610081102" defer></script>
<script src="assets/js/reaktion.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/spendenkarte.js?v=202610081119" defer></script>
<script src="assets/js/werbung.js?v=202610081119" defer></script>
<script src="assets/js/reaktion.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/treff.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/treff.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</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=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/holen.js?v=202610081102" defer></script>
<script src="assets/js/rechte.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/holen.js?v=202610081119" defer></script>
<script src="assets/js/rechte.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/report.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/report.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="showbuehne">
@@ -106,17 +106,17 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/ki.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/holen.js?v=202610081102" defer></script>
<script src="assets/js/report.js?v=202610081102" defer></script>
<script src="assets/js/ki.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/holen.js?v=202610081119" defer></script>
<script src="assets/js/report.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="wald">
@@ -194,14 +194,14 @@
</div>
</div>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/scouting.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/scouting.js?v=202610081119" defer></script>
</body>
</html>
+19 -19
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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/heim.css?v=202610081119" />
<!-- Die Einweisung bringt ihr Aussehen mit. Sie steht in
anleitung.css, weil sie dorthin gehoert -- und nicht in
start.css, wo sie zwischen 48 Kachelfarben verschwinden
wuerde. -->
<link rel="stylesheet" href="assets/css/anleitung.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/anleitung.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -768,22 +768,22 @@
</p>
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/live.js?v=202610081102" defer></script>
<script src="assets/js/start.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/live.js?v=202610081119" defer></script>
<script src="assets/js/start.js?v=202610081119" defer></script>
<!-- Die Begruessung und der Rundgang beim ersten Anmelden.
EIGENE DATEI und nicht ein Stueck start.js: Sie laeuft auf der
meistbenutzten Seite des Hauses, und wenn hier etwas schiefgeht,
darf davon nichts anderes betroffen sein. -->
<script src="assets/js/rundgang.js?v=202610081102" defer></script>
<script src="assets/js/aufstieg.js?v=202610081102" defer></script>
<script src="assets/js/rundgang.js?v=202610081119" defer></script>
<script src="assets/js/aufstieg.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="wald">
@@ -85,16 +85,16 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/ki.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/startcheck.js?v=202610081102" defer></script>
<script src="assets/js/ki.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/startcheck.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/profil.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/profil.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="halle">
@@ -150,16 +150,16 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/hochladen.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/hochladen.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/auskunft.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/steckbrief.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/auskunft.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/steckbrief.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/support.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/support.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="studio">
@@ -154,16 +154,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=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" 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=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/support.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/support.js?v=202610081119" 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=202610081102" />
<link rel="stylesheet" href="assets/css/spendenkarte.css?v=202610081119" />
<style>
/* DURCHSICHTIG BIS AUF DIE KARTEN. OBS legt die Quelle über das
Bild; jede Fläche, die hier steht, deckt dort etwas zu. */
@@ -109,7 +109,7 @@
<body>
<div class="obs-tafel spendentafel" id="tafel" aria-live="polite"></div>
<script src="assets/js/spendenkarte.js?v=202610081102" defer></script>
<script src="assets/js/tafel.js?v=202610081102" defer></script>
<script src="assets/js/spendenkarte.js?v=202610081119" defer></script>
<script src="assets/js/tafel.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -111,15 +111,15 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/holen.js?v=202610081102" defer></script>
<script src="assets/js/talente.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/holen.js?v=202610081119" defer></script>
<script src="assets/js/talente.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/team.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/team.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="halle">
@@ -110,15 +110,15 @@
</main>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/holen.js?v=202610081102" defer></script>
<script src="assets/js/team.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/holen.js?v=202610081119" defer></script>
<script src="assets/js/team.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/team.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/team.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</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=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/holen.js?v=202610081102" defer></script>
<script src="assets/js/teamlage.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/holen.js?v=202610081119" defer></script>
<script src="assets/js/teamlage.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -112,15 +112,15 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/teilen.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/teilen.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/treff.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/treff.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -126,14 +126,14 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/treff-moderation.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/treff-moderation.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/treff.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/treff.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</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=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/auskunft.js?v=202610081102" defer></script>
<script src="assets/js/treff-regeln.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/auskunft.js?v=202610081119" defer></script>
<script src="assets/js/treff-regeln.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
Dialog "Creator anlegen". -->
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="showbuehne">
@@ -149,16 +149,16 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/uebersicht.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/uebersicht.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -335,14 +335,14 @@
</main>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/live.js?v=202610081102" defer></script>
<script src="assets/js/unsere-seiten.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/live.js?v=202610081119" defer></script>
<script src="assets/js/unsere-seiten.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/unterstuetzen.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/unterstuetzen.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</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=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/holen.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/holen.js?v=202610081119" 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=202610081102" defer></script>
<script src="assets/js/unterstuetzen.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/unterstuetzen.js?v=202610081119" 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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/werdegang.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/werdegang.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start">
@@ -144,14 +144,14 @@
</main>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/werdegang.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/werdegang.js?v=202610081119" defer></script>
</body>
</html>
+1 -1
View File
@@ -56,7 +56,7 @@
veraltet beim naechsten Umbau. -->
<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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<style>
/* Bewusst ohne eigenes Stilblatt: Die Seite ist in aller Regel nur
+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=202610081102" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081102" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202610081102" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081102" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<!-- 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=202610081102" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-buehne="arena">
@@ -190,15 +190,15 @@
</main>
<script src="assets/js/meldung.js?v=202610081102" defer></script>
<script src="assets/js/hochladen.js?v=202610081102" defer></script>
<script src="assets/js/nachfrage.js?v=202610081102" defer></script>
<script src="assets/js/meldung.js?v=202610081119" defer></script>
<script src="assets/js/hochladen.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081102" defer></script>
<script src="assets/js/bereiche.js?v=202610081102" defer></script>
<script src="assets/js/installieren.js?v=202610081102" defer></script>
<script src="assets/js/kopf.js?v=202610081102" defer></script>
<script src="assets/js/glocke.js?v=202610081102" defer></script>
<script src="assets/js/wissen.js?v=202610081102" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/wissen.js?v=202610081119" defer></script>
</body>
</html>