Die Personenkachel wird eine Standkarte -- mit den Aufgaben darauf
Filipe: "mach das bitte viel krasser und viel geiler. die aufgaben die
wir verteilen sollen da auch zu sehen sein und so. viel
uebersichtlicher, viel moderner. nicht so banal und einfach."
VORHER: Name, Rolle, ein flacher Balken und drei Zahlenkaesten. Auf
seinem Bildschirmfoto standen in fuenf von sechs Kacheln exakt
dieselben drei Zahlen (0 / 68 / 0) -- achtzehn Kaesten fuer eine
einzige Auskunft. Und die Aufgaben, die er eine Handbreit darunter
verteilt, kamen auf der Kachel derselben Person gar nicht vor.
JETZT drei Zonen in der Reihenfolge, in der man fragt:
KOPF Ring mit dem Anteil in der Mitte, Name, Rolle.
AUFTRAG Wie viele offen, wie viele ueberfaellig, und die naechste
mit Namen und Frist ("seit gestern ueberfaellig").
FUSS "46 von 68 angesehen" -- und "verschieden gesehen" nur
dann, wenn es dort etwas gibt.
Der Ring rechnet mit stroke-dasharray auf einem Kreis vom Umfang 100:
der Anteil in Prozent ist damit buchstaeblich die Strichlaenge. Keine
Ampelfarbe -- was "genug" ist, haengt davon ab, wie lange jemand dabei
ist. Gewarnt wird nur an einem Massstab, der nicht geraten ist: einer
ueberschrittenen Frist.
Die Aufgabenzeile wird aus derselben Liste gerechnet wie das
Verteil-Band und der Katalog (alleAufgabenV) und in aufgabenHolen()
nachgezogen -- an EINER Stelle, damit es keine gibt, die es vergisst.
GITTER STATT FLIESSREIHE: Bei sieben Leuten stand die letzte Kachel
allein in ihrer Zeile und wuchs auf 1160 px neben 379 px der anderen.
Eine Person sah dreimal so wichtig aus, weil die Teamgroesse ungerade
ist.
Drei Funde nebenbei, alle durch die neuen Messungen:
- pruef-schritt verlangte seit dem 23.09. einen Sprung, der an dem
Tag ABSICHTLICH entfernt wurde. Sie war seither rot, ohne dass
etwas kaputt war. Neu gefasst auf den Sprung, den es noch gibt:
den Weg von aussen ueber "?zeigen=person-...".
- Und der war kaputt. Gesprungen wurde, waehrend in der Karte nur
"wird geladen ..." stand -- die Seite war zu kurz zum Scrollen,
der Browser klemmte bei 0 ab. Wer der Talentseite folgte, landete
oben auf der Liste. Gesprungen wird jetzt, wenn die Karte steht.
- Auf demselben Weg rief karte() das Vorlagenbrett, bevor es
eingerichtet war ("zeigen() vor einrichten()"). Das Einrichten ist
vorgezogen. Ueber "?zeigen=" ging vorher KEINE Pruefung.
Gemessen: pruef-entwicklung-kacheln 31 (vorher 16), pruef-schritt 68
(vorher 65), pruef-entwicklung 48, pruef-modi-katalog 133,
pruef-bewerbung-aufgaben 101, pruef-zuteilung, pruef-css-klassen --
alle gruen. Schriftgroessen unter 11,5 px: 40 statt 42.
Neu: server/mess-entwicklung-kacheln.mjs. Die Pruefung braucht einen
kargen Bestand und zeigt deshalb den Sonderfall (alles auf null); diese
Datei legt sieben Leute mit verschiedenen Staenden und Aufgaben an und
macht Bilder fuer 1280 und 390 px. Sie prueft nichts.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -80,6 +80,10 @@ pruef-*.png
|
||||
server/pruef-*.png
|
||||
abnahme-*.png
|
||||
server/abnahme-*.png
|
||||
# Dasselbe fuer die Messlaeufe (server/mess-*.mjs): Bilder eines
|
||||
# Laufs, kein Quelltext.
|
||||
mess-*.png
|
||||
server/mess-*.png
|
||||
|
||||
# Messlaeufe von tools/mess-rueckgabewerte.sh -- Ergebnis eines Laufs,
|
||||
# kein Quelltext. Gehoert nicht in die Geschichte.
|
||||
|
||||
@@ -0,0 +1,223 @@
|
||||
/* =====================================================================
|
||||
WIE SIEHT DIE NEUE PERSONENKACHEL AUS? (24.09.2026)
|
||||
|
||||
Filipe: "mach das bitte viel krasser und viel geiler. die aufgaben
|
||||
die wir verteilen sollen da auch zu sehen sein und so. viel
|
||||
uebersichtlicher, viel moderner."
|
||||
|
||||
---------------------------------------------------------------------
|
||||
WARUM ES DIESE DATEI GIBT, OBWOHL pruef-entwicklung-kacheln EXISTIERT
|
||||
|
||||
Die Pruefung nebenan misst, ob die Kachel STIMMT -- ob Ring, Ziffer,
|
||||
Zeile und Vorleseschild dieselbe Zahl sagen. Dafuer braucht sie
|
||||
einen kargen Bestand: zwei Leute, alles auf null.
|
||||
|
||||
Genau dadurch zeigt ihr Bildschirmfoto den Sonderfall, nicht den
|
||||
Alltag: zwei leere Ringe nebeneinander. Ob ein Ring bei 68 Prozent
|
||||
gut aussieht, ob eine Kachel mit drei ueberfaelligen Aufgaben noch
|
||||
ruhig wirkt, ob sechs Kacheln am Handy uebersichtlich bleiben --
|
||||
davon steht dort nichts.
|
||||
|
||||
Diese Datei legt deshalb einen Bestand an, der wie der echte
|
||||
aussieht: sechs Leute, jeder anders weit, jeder mit anderen
|
||||
Aufgaben. Sie prueft NICHTS und meldet keinen Fehlschlag. Sie macht
|
||||
Bilder, an denen man entscheiden kann.
|
||||
|
||||
Sie heisst deshalb `mess-` und nicht `pruef-`: Die Portvergabe
|
||||
leitet sich aus den `pruef-`-Namen ab, und eine Messdatei darf die
|
||||
Nummern der Pruefungen nicht verschieben.
|
||||
|
||||
Aufrufen mit: node server/mess-entwicklung-kacheln.mjs
|
||||
Bilder: server/mess-entwicklung-kacheln-breit.png
|
||||
server/mess-entwicklung-kacheln-handy.png
|
||||
===================================================================== */
|
||||
|
||||
import { mkdtempSync, rmSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
|
||||
const PORT = 5399;
|
||||
const ordner = mkdtempSync(join(tmpdir(), "ws-messkachel-"));
|
||||
process.env.WORKSPACE_DB = join(ordner, "workspace.db");
|
||||
process.env.PORT = String(PORT);
|
||||
process.env.SITE_ACCESS_SECRET = "lokaler-test";
|
||||
process.env.SITE_ACCESS_CODE_DOGI = "DOGI-TEST-1";
|
||||
process.env.SITE_PUBLIC_LAUNCH_AT = "2020-01-01T00:00:00+01:00";
|
||||
|
||||
const express = (await import("express")).default;
|
||||
const ec = express.response.cookie;
|
||||
express.response.cookie = function (n, w, o) {
|
||||
return ec.call(this, n, w, { ...(o || {}), secure: false });
|
||||
};
|
||||
import { notbremse } from "./helfer-notbremse.mjs";
|
||||
await import("./index.js");
|
||||
notbremse(180_000, "mess-entwicklung-kacheln");
|
||||
await new Promise((r) => setTimeout(r, 700));
|
||||
const BASIS = `http://127.0.0.1:${PORT}`;
|
||||
|
||||
process.on("uncaughtException", (f) => { console.error("ABSTURZ:", f); process.exit(7); });
|
||||
process.on("unhandledRejection", (f) => { console.error("ABSTURZ (Versprechen):", f); process.exit(7); });
|
||||
|
||||
const { DatabaseSync } = await import("node:sqlite");
|
||||
const { scryptSync, randomBytes, createHmac } = await import("node:crypto");
|
||||
const { ENTWICKLUNG_FREMD } = await import("./workspace-entwicklungs-punkte.js");
|
||||
|
||||
const d = new DatabaseSync(process.env.WORKSPACE_DB);
|
||||
const jetzt = new Date().toISOString();
|
||||
const schluessel = randomBytes(32).toString("hex");
|
||||
d.prepare("INSERT INTO einstellungen (schluessel, wert, geaendert, von)"
|
||||
+ " VALUES (?,?,?,NULL) ON CONFLICT(schluessel) DO NOTHING")
|
||||
.run("code_kennung_schluessel", schluessel, jetzt);
|
||||
|
||||
function anlegen(name, rolle, code) {
|
||||
const salt = randomBytes(16).toString("hex");
|
||||
const hash = scryptSync(code, salt, 64,
|
||||
{ N: 32768, r: 8, p: 1, maxmem: 96 * 1024 * 1024 }).toString("hex");
|
||||
d.prepare("INSERT INTO personen"
|
||||
+ " (name, rolle, code_hash, code_salt, code_n, code_kennung, aktiv, erstellt)"
|
||||
+ " VALUES (?,?,?,?,?,?,1,?)")
|
||||
.run(name, rolle, hash, salt, 32768,
|
||||
createHmac("sha256", schluessel).update(code).digest("hex"), jetzt);
|
||||
return d.prepare("SELECT last_insert_rowid() AS id").get().id;
|
||||
}
|
||||
|
||||
const ich = anlegen("Filipe", "admin", "CODE-DOGI-0001");
|
||||
const leute = [
|
||||
{ name: "VanVan", rolle: "hand", anteil: 1.00, aufgaben: 0, spaet: 0 },
|
||||
{ name: "Kessi", rolle: "linke", anteil: 0.68, aufgaben: 3, spaet: 1 },
|
||||
{ name: "Rieke", rolle: "modi", anteil: 0.22, aufgaben: 5, spaet: 2 },
|
||||
{ name: "Nala", rolle: "modi", anteil: 0.00, aufgaben: 1, spaet: 0 },
|
||||
{ name: "Juli", rolle: "modi", anteil: 0.47, aufgaben: 0, spaet: 0 },
|
||||
{ name: "Momo", rolle: "modi", anteil: 0.91, aufgaben: 2, spaet: 0 },
|
||||
];
|
||||
for (const p of leute) p.id = anlegen(p.name, p.rolle, `CODE-${p.name.toUpperCase()}-1`);
|
||||
|
||||
/* Eine zweite Stimme -- nur damit "verschieden gesehen" ueberhaupt
|
||||
entstehen kann. Sie braucht keine Kachel. */
|
||||
const zweite = anlegen("Mira", "linke", "CODE-MIRA-0001");
|
||||
|
||||
/* ---- Der Stand: wie weit ist Filipe bei wem? -----------------------
|
||||
|
||||
ERST ANMELDEN, DANN SCHREIBEN. `entwicklung_stand` entsteht nicht
|
||||
beim Start, sondern beim ersten Aufruf der Entwicklungsseite
|
||||
(tabellen() in workspace-entwicklung.js). Wer vorher hineinschreibt,
|
||||
bekommt "no such table" -- genau der Fehler, den die Pruefung dort
|
||||
schon einmal gefunden hat. */
|
||||
d.close();
|
||||
const vorlauf = await fetch(BASIS + "/workspace/api/anmelden", {
|
||||
method: "POST", headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ rolle: "admin", code: "CODE-DOGI-0001" }),
|
||||
});
|
||||
const vorKeks = (vorlauf.headers.getSetCookie?.() || [])
|
||||
.map((z) => z.split(";")[0]).join("; ");
|
||||
await fetch(BASIS + "/workspace/api/entwicklung/lage", { headers: { Cookie: vorKeks } });
|
||||
const d2 = new DatabaseSync(process.env.WORKSPACE_DB);
|
||||
|
||||
const setze = d2.prepare(
|
||||
"INSERT OR REPLACE INTO entwicklung_stand (person_id, schluessel, von_id, stufe, anlass, am)"
|
||||
+ " VALUES (?,?,?,?,NULL,?)");
|
||||
const alt = new Date(Date.now() - 90 * 86400000).toISOString();
|
||||
for (const p of leute) {
|
||||
const wie_viele = Math.round(ENTWICKLUNG_FREMD.length * p.anteil);
|
||||
ENTWICKLUNG_FREMD.slice(0, wie_viele).forEach((punkt, i) => {
|
||||
/* Ein paar alte Eintraege bei Kessi -- so steht auf ihrer Kachel
|
||||
auch die Zeile "x aelter als 60 Tage". */
|
||||
const wann = (p.name === "Kessi" && i < 4) ? alt : jetzt;
|
||||
setze.run(p.id, punkt.schluessel, ich, "laeuft", wann);
|
||||
});
|
||||
/* Zwei Punkte, die Mira anders sieht -- daraus wird "verschieden
|
||||
gesehen" auf Riekes Kachel. */
|
||||
if (p.name === "Rieke") {
|
||||
ENTWICKLUNG_FREMD.slice(0, 2).forEach((punkt) =>
|
||||
setze.run(p.id, punkt.schluessel, zweite, "hakt", jetzt));
|
||||
}
|
||||
}
|
||||
|
||||
/* ---- Die Aufgaben -------------------------------------------------- */
|
||||
const tagPlus = (n) => {
|
||||
const t = new Date(); t.setHours(12, 0, 0, 0); t.setDate(t.getDate() + n);
|
||||
return `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, "0")}`
|
||||
+ `-${String(t.getDate()).padStart(2, "0")}`;
|
||||
};
|
||||
const TITEL = [
|
||||
"Clips vom Samstag schneiden", "Plan für nächste Woche", "Ideen sammeln",
|
||||
"Rückmeldung an die Neue", "Termine für Oktober eintragen",
|
||||
];
|
||||
const neueAufgabe = d2.prepare(
|
||||
"INSERT INTO aufgaben (titel, status, prioritaet, creator_id, verantwortlich_id, frist,"
|
||||
+ " erstellt, erstellt_von) VALUES (?,?,'mittel',?,?,?,?,?)");
|
||||
for (const p of leute) {
|
||||
for (let i = 0; i < p.aufgaben; i++) {
|
||||
const frist = i < p.spaet ? tagPlus(-(i + 1)) : (i === p.spaet ? tagPlus(i + 1) : null);
|
||||
neueAufgabe.run(TITEL[i % TITEL.length], "offen", ich, p.id, frist, jetzt, ich);
|
||||
}
|
||||
/* Eine erledigte je Person -- sie darf nicht mitzaehlen. */
|
||||
neueAufgabe.run("Längst abgehakt", "erledigt", ich, p.id, tagPlus(-9), jetzt, ich);
|
||||
}
|
||||
d2.close();
|
||||
|
||||
const an = await fetch(BASIS + "/workspace/api/anmelden", {
|
||||
method: "POST", headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ rolle: "admin", code: "CODE-DOGI-0001" }),
|
||||
});
|
||||
const keks = (an.headers.getSetCookie?.() || []).map((z) => z.split(";")[0]).join("; ");
|
||||
|
||||
const { chromium } = await import(
|
||||
"file:///C:/Users/qciga/Documents/Obelix/Analyse/node_modules/playwright/index.mjs");
|
||||
const browser = await chromium.launch();
|
||||
try {
|
||||
for (const [wie, breite, hoehe] of [["breit", 1280, 1000], ["handy", 390, 1100]]) {
|
||||
const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } });
|
||||
await kontext.addCookies(keks.split("; ").map((k) => {
|
||||
const [name, ...rest] = k.split("=");
|
||||
return { name, value: rest.join("="), domain: "127.0.0.1", path: "/" };
|
||||
}));
|
||||
const seite = await kontext.newPage();
|
||||
const konsole = [];
|
||||
seite.on("console", (e) => { if (e.type() === "error") konsole.push(e.text()); });
|
||||
await seite.goto(`${BASIS}/workspace/entwicklung.html`, { waitUntil: "networkidle" });
|
||||
await seite.waitForSelector("#personen .e-person", { timeout: 15_000 });
|
||||
/* Warten, bis die Aufgabenzeilen nachgezogen sind -- sie kommen aus
|
||||
einem zweiten Abruf, der nach dem Zeichnen laeuft. */
|
||||
await seite.waitForFunction(() =>
|
||||
[...document.querySelectorAll(".e-person__auftrag")].some((z) => z.textContent.trim()),
|
||||
{ timeout: 15_000 });
|
||||
await seite.waitForTimeout(600);
|
||||
|
||||
const block = await seite.$("#personen-block");
|
||||
await block.screenshot({ path: `server/mess-entwicklung-kacheln-${wie}.png` });
|
||||
console.log(` -- Bild (${breite} px): server/mess-entwicklung-kacheln-${wie}.png`);
|
||||
|
||||
const zahlen = await seite.evaluate(() =>
|
||||
[...document.querySelectorAll("#personen .e-person")].map((k) => ({
|
||||
name: k.querySelector(".e-person__name")?.textContent,
|
||||
ring: k.querySelector(".e-ring__zahl")?.textContent,
|
||||
bogen: k.querySelector(".e-ring__bogen")?.getAttribute("stroke-dasharray"),
|
||||
auftrag: (k.querySelector(".e-person__auftrag")?.textContent || "").trim(),
|
||||
fuss: (k.querySelector(".e-person__fuss")?.textContent || "").trim(),
|
||||
hoch: Math.round(k.getBoundingClientRect().height),
|
||||
breit: Math.round(k.getBoundingClientRect().width),
|
||||
})));
|
||||
if (wie === "breit") {
|
||||
console.log("");
|
||||
for (const z of zahlen) {
|
||||
console.log(` ${z.name.padEnd(8)} ${String(z.ring + "%").padStart(5)} `
|
||||
+ `[${z.bogen}] ${z.breit}x${z.hoch}px`);
|
||||
console.log(` ${z.auftrag.replace(/\s+/g, " ")}`);
|
||||
console.log(` ${z.fuss.replace(/\s+/g, " ")}`);
|
||||
}
|
||||
console.log("");
|
||||
} else {
|
||||
const proZeile = {};
|
||||
for (const z of zahlen) proZeile[z.breit] = (proZeile[z.breit] || 0) + 1;
|
||||
console.log(` -- Handy: Kachelbreiten ${Object.keys(proZeile).join(", ")} px, `
|
||||
+ `Hoehen ${[...new Set(zahlen.map((z) => z.hoch))].join(", ")} px`);
|
||||
}
|
||||
if (konsole.length) console.log(" !! Konsole: " + konsole[0]);
|
||||
await kontext.close();
|
||||
}
|
||||
} finally {
|
||||
await browser.close();
|
||||
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ }
|
||||
process.exit(0);
|
||||
}
|
||||
@@ -86,9 +86,44 @@ function anlegen(name, rolle, code) {
|
||||
createHmac("sha256", schluessel).update(code).digest("hex"), jetzt);
|
||||
return d.prepare("SELECT last_insert_rowid() AS id").get().id;
|
||||
}
|
||||
anlegen("Filipe", "admin", "CODE-DOGI-0001");
|
||||
const idFilipe = anlegen("Filipe", "admin", "CODE-DOGI-0001");
|
||||
anlegen("VanVan", "hand", "CODE-HAND-0001");
|
||||
anlegen("Diene", "modi", "CODE-MODI-0001");
|
||||
const idDiene = anlegen("Diene", "modi", "CODE-MODI-0001");
|
||||
|
||||
/* =====================================================================
|
||||
AUFGABEN FUER DEN AUFTRAGSSTREIFEN (24.09.2026)
|
||||
=====================================================================
|
||||
|
||||
Seit dem 24.09. traegt jede Kachel, was bei der Person liegt --
|
||||
Filipe: "die aufgaben die wir verteilen sollen da auch zu sehen sein
|
||||
und so."
|
||||
|
||||
Das laesst sich nur messen, wenn es etwas zu zeigen gibt. Drei
|
||||
Aufgaben fuer Diene, KEINE offene fuer VanVan -- so wird beides
|
||||
geprueft: die Zahl UND der Fall "nichts offen", der auf der Kachel
|
||||
ausdruecklich stehenbleibt.
|
||||
|
||||
DIE ERLEDIGTE IST DIE GEGENPROBE. Zaehlte der Streifen sie mit,
|
||||
stuende bei VanVan "1 offene Aufgabe" ueber einer abgehakten -- und
|
||||
niemand wuerde es merken, weil die Zahl ja plausibel aussieht.
|
||||
|
||||
GERECHNET WIRD RELATIV ZU HEUTE, nie mit einem festen Datum: Eine
|
||||
Frist, die beim Schreiben in der Zukunft lag, holt der Kalender
|
||||
sonst ein, und die Pruefung wird rot, ohne dass etwas kaputt ist.
|
||||
Mittags gesetzt, damit die Zeitumstellung den Tag nicht kippt. */
|
||||
const tagPlus = (n) => {
|
||||
const t = new Date(); t.setHours(12, 0, 0, 0); t.setDate(t.getDate() + n);
|
||||
return `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, "0")}-${String(t.getDate()).padStart(2, "0")}`;
|
||||
};
|
||||
const GESTERN = tagPlus(-1), IN_DREI = tagPlus(3);
|
||||
const neueAufgabe = (titel, wer, frist, status) => d.prepare(
|
||||
"INSERT INTO aufgaben (titel, status, prioritaet, creator_id, verantwortlich_id, frist,"
|
||||
+ " erstellt, erstellt_von) VALUES (?,?,'mittel',?,?,?,?,?)")
|
||||
.run(titel, status, idFilipe, wer, frist, jetzt, idFilipe);
|
||||
neueAufgabe("Clips vom Samstag schneiden", idDiene, GESTERN, "offen");
|
||||
neueAufgabe("Plan für nächste Woche", idDiene, IN_DREI, "arbeit");
|
||||
neueAufgabe("Ideen sammeln", idDiene, null, "offen");
|
||||
neueAufgabe("Längst abgehakt", idDiene, GESTERN, "erledigt");
|
||||
d.close();
|
||||
|
||||
const an = await fetch(BASIS + "/workspace/api/anmelden", {
|
||||
@@ -126,64 +161,182 @@ try {
|
||||
schild: reihe.getAttribute("aria-label") || "",
|
||||
anzahl: kacheln.length,
|
||||
namen: kacheln.map((k) => k.querySelector(".e-person__name")?.textContent || ""),
|
||||
/* Der Hausbaustein, nicht ein Nachbau. */
|
||||
bilanzJe: kacheln.map((k) => k.querySelectorAll(".bilanz-zahl").length),
|
||||
eigeneKlassen: kacheln.map((k) => k.querySelectorAll(
|
||||
"[class*='e-person__bilanz'] > :not(.bilanz-zahl)").length),
|
||||
ringe: kacheln.map((k) => k.querySelectorAll(".e-ring").length),
|
||||
boegen: kacheln.map((k) => k.querySelectorAll(".e-ring__bogen").length),
|
||||
streifen: kacheln.map((k) => k.querySelectorAll(".e-person__auftrag").length),
|
||||
/* GEGENPROBE AUF DEN UMBAU: Die drei Bilanz-Kaesten sind am
|
||||
24.09.2026 gewichen. Blieben irgendwo Reste stehen, stuenden
|
||||
zwei Aufbauten nebeneinander -- genau das, was hier seit dem
|
||||
17.09. verhindert werden soll. */
|
||||
reste: kacheln.map((k) => k.querySelectorAll(
|
||||
".bilanz-zahl, .e-fortschritt, .e-person__bilanz").length),
|
||||
/* Die Kachel ist ein <button>. Ein <div> darin ist ungueltiges
|
||||
HTML -- es wird angezeigt und faellt trotzdem irgendwann auf. */
|
||||
divs: kacheln.map((k) => k.querySelectorAll("div").length),
|
||||
};
|
||||
});
|
||||
ok(b.schild === "Person wählen", `die Reihe sagt, was sie ist ("${b.schild}")`);
|
||||
ok(b.anzahl === 2, `zwei Kacheln (${b.namen.join(", ")})`);
|
||||
/* DREI KAESTEN JE KACHEL -- dieselben drei wie auf der Checkliste. */
|
||||
ok(b.bilanzJe.length > 0 && b.bilanzJe.every((n) => n === 3),
|
||||
`jede Kachel traegt drei Bilanz-Kaesten (${b.bilanzJe.join(", ")})`);
|
||||
/* UND NICHTS DANEBEN: Ein eigener Nachbau neben dem Hausbaustein
|
||||
waere genau die zweite Wahrheit, die hier vermieden wird. */
|
||||
ok(b.eigeneKlassen.every((n) => n === 0),
|
||||
"und nichts Selbstgebautes daneben");
|
||||
ok(b.ringe.length > 0 && b.ringe.every((n) => n === 1),
|
||||
`jede Kachel traegt genau einen Ring (${b.ringe.join(", ")})`);
|
||||
ok(b.boegen.every((n) => n === 1),
|
||||
`und in jedem Ring genau einen Bogen (${b.boegen.join(", ")})`);
|
||||
ok(b.streifen.length > 0 && b.streifen.every((n) => n === 1),
|
||||
`jede Kachel traegt ihren Auftragsstreifen (${b.streifen.join(", ")})`);
|
||||
ok(b.reste.every((n) => n === 0),
|
||||
`kein Rest der alten Kachel (Balken/Bilanz-Kaesten: ${b.reste.join(", ")})`);
|
||||
ok(b.divs.every((n) => n === 0),
|
||||
`nichts Ungueltiges im Knopf (divs: ${b.divs.join(", ")})`);
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
2. STIMMEN DIE ZAHLEN?
|
||||
===================================================================== */
|
||||
2. STIMMT DER RING MIT DEM, WAS DANEBEN STEHT?
|
||||
=====================================================================
|
||||
|
||||
Bis zum 24.09.2026 stand hier die Rechnung "angesehen + noch
|
||||
offen = alle Punkte". Die beiden Kaesten gibt es nicht mehr; die
|
||||
Frage dahinter bleibt aber dieselbe und ist jetzt sogar schaerfer
|
||||
zu stellen, weil DREI Darstellungen derselben Zahl nebeneinander
|
||||
liegen:
|
||||
|
||||
- der Bogen des Rings (stroke-dasharray, "68 100"),
|
||||
- die Ziffer in seiner Mitte,
|
||||
- die Zeile darunter ("46 von 68 angesehen"),
|
||||
- und das aria-label, das ein Vorleseprogramm vorliest.
|
||||
|
||||
Laufen die auseinander, sieht man es NICHT: Ein Ring, der zu drei
|
||||
Vierteln gefuellt ist, waehrend "12 %" darin steht, faellt auf --
|
||||
ein Ring, dessen aria-label etwas anderes sagt als das Bild, nie.
|
||||
Deshalb wird hier alles gegen dieselbe Quelle geprueft: die Zahlen
|
||||
aus /entwicklung/lage. */
|
||||
melde("");
|
||||
melde("=== 2. Die Zahlen ===");
|
||||
melde("=== 2. Der Ring und seine Zahlen ===");
|
||||
{
|
||||
const lage = await seite.evaluate(async () => {
|
||||
const a = await fetch("/workspace/api/entwicklung/lage", { credentials: "same-origin" });
|
||||
return a.ok ? await a.json() : null;
|
||||
});
|
||||
ok(lage && lage.gesamt_fremd > 0,
|
||||
`die Seite kennt ${lage?.gesamt_fremd ?? "?"} Punkte insgesamt`);
|
||||
|
||||
const z = await seite.evaluate(() => [...document.querySelectorAll("#personen .e-person")]
|
||||
.map((k) => {
|
||||
const werte = [...k.querySelectorAll(".bilanz-zahl")].map((b) => ({
|
||||
n: Number(b.querySelector(".bilanz-zahl__n")?.textContent || "x"),
|
||||
text: b.querySelector(".bilanz-zahl__text")?.textContent || "",
|
||||
stufe: b.dataset.stufe || "",
|
||||
}));
|
||||
return { name: k.querySelector(".e-person__name")?.textContent || "", werte };
|
||||
const ring = k.querySelector(".e-ring");
|
||||
return {
|
||||
name: k.querySelector(".e-person__name")?.textContent || "",
|
||||
nr: Number(k.dataset.person),
|
||||
ringZahl: k.querySelector(".e-ring__zahl")?.textContent || "",
|
||||
bogen: k.querySelector(".e-ring__bogen")?.getAttribute("stroke-dasharray") || "",
|
||||
schild: ring?.getAttribute("aria-label") || "",
|
||||
rolle: ring?.getAttribute("role") || "",
|
||||
standZahl: k.querySelector(".e-person__stand-zahl")?.textContent || "",
|
||||
standRest: k.querySelector(".e-person__stand-rest")?.textContent || "",
|
||||
abw: k.querySelector(".e-person__abw")?.textContent || "",
|
||||
};
|
||||
}));
|
||||
|
||||
ok(z.every((k) => k.werte.every((w) => Number.isFinite(w.n))),
|
||||
"jede Ziffer ist eine Zahl");
|
||||
ok(z.every((k) => k.werte[0].text === "angesehen"
|
||||
&& k.werte[1].text === "noch offen"
|
||||
&& k.werte[2].text === "verschieden gesehen"),
|
||||
`die drei heissen ueberall gleich (${z[0]?.werte.map((w) => w.text).join(" · ")})`);
|
||||
const gesamt = lage?.gesamt_fremd || 0;
|
||||
const sollAnteil = (p) => (gesamt > 0
|
||||
? Math.round((Number(p?.gesetzt) || 0) / gesamt * 100) : 0);
|
||||
const nachNr = new Map((lage?.personen || []).map((p) => [Number(p.id), p]));
|
||||
|
||||
/* DIE ENTSCHEIDENDE RECHNUNG: Die ersten beiden teilen dasselbe
|
||||
Ganze. Gehen sie nicht auf, stehen zwei Zahlen nebeneinander, die
|
||||
einander widersprechen -- genau das, was auf der Startseite
|
||||
repariert wurde. Die Gesamtzahl kommt aus der Auskunft selbst,
|
||||
nicht aus einer festen Zahl hier. */
|
||||
const gesamt = await seite.evaluate(async () => {
|
||||
const a = await fetch("/workspace/api/entwicklung/lage", { credentials: "same-origin" });
|
||||
return a.ok ? (await a.json()).gesamt_fremd : -1;
|
||||
ok(z.length > 0 && z.every((k) => nachNr.has(k.nr)),
|
||||
`jede Kachel gehoert zu einer Person aus der Auskunft (${z.map((k) => k.nr).join(", ")})`);
|
||||
|
||||
const ringOk = z.every((k) => k.ringZahl === String(sollAnteil(nachNr.get(k.nr))));
|
||||
ok(ringOk, `die Ziffer im Ring ist der gerechnete Anteil `
|
||||
+ `(${z.map((k) => `${k.name}: ${k.ringZahl}%`).join(", ")})`);
|
||||
|
||||
/* Der BOGEN ist das, was man sieht. Umfang 100 -- die erste Zahl
|
||||
im stroke-dasharray ist damit buchstaeblich der Prozentwert. */
|
||||
const bogenOk = z.every((k) =>
|
||||
Number(String(k.bogen).split(" ")[0]) === sollAnteil(nachNr.get(k.nr))
|
||||
&& String(k.bogen).split(" ")[1] === "100");
|
||||
ok(bogenOk, `und der Bogen zeigt denselben Anteil (${z.map((k) => k.bogen).join(" | ")})`);
|
||||
|
||||
/* DIE ZEILE DARUNTER nennt beide Zahlen, aus denen der Anteil
|
||||
entsteht -- ohne sie waere "68 %" eine Behauptung ohne Beleg. */
|
||||
const standOk = z.every((k) => {
|
||||
const p = nachNr.get(k.nr);
|
||||
return k.standZahl === String(Number(p?.gesetzt) || 0)
|
||||
&& k.standRest === ` von ${gesamt} angesehen`;
|
||||
});
|
||||
ok(gesamt > 0, `die Seite kennt ${gesamt} Punkte insgesamt`);
|
||||
const summenOk = z.every((k) => k.werte[0].n + k.werte[1].n === gesamt);
|
||||
ok(summenOk,
|
||||
`angesehen + noch offen = ${gesamt} bei jeder Kachel `
|
||||
+ `(${z.map((k) => `${k.name}: ${k.werte[0].n}+${k.werte[1].n}`).join(", ")})`);
|
||||
ok(standOk, `"x von ${gesamt} angesehen" stimmt bei jeder Kachel `
|
||||
+ `(${z.map((k) => k.standZahl + k.standRest).join(", ")})`);
|
||||
|
||||
/* Der Ton gehoert zur Aussage: fertig ist gruen, halb ist es nicht. */
|
||||
ok(z.every((k) => k.werte[0].stufe === (k.werte[1].n === 0 ? "gut" : "offen")),
|
||||
"fertig Angesehenes ist gruen, Halbes nicht");
|
||||
/* UND DAS VORLESEPROGRAMM HOERT DASSELBE. Ein Ring ist ein Bild;
|
||||
ohne Schild ist er fuer ein Vorleseprogramm gar nicht da. */
|
||||
ok(z.every((k) => k.rolle === "img"), "der Ring gibt sich als Bild zu erkennen");
|
||||
const schildOk = z.every((k) => {
|
||||
const p = nachNr.get(k.nr);
|
||||
const soll = `${Number(p?.gesetzt) || 0} von ${gesamt} angesehen `
|
||||
+ `(${sollAnteil(p)} Prozent)`;
|
||||
return k.schild === soll;
|
||||
});
|
||||
ok(schildOk, `und sagt dasselbe wie das Bild ("${z[0]?.schild}")`);
|
||||
|
||||
/* EINE NULL IST KEINE WARNUNG: "verschieden gesehen" steht nur da,
|
||||
wenn es etwas gibt. Im Testbestand hat niemand etwas anders
|
||||
gesehen -- also darf die Angabe auf KEINER Kachel stehen. */
|
||||
ok(z.every((k) => k.abw === ""),
|
||||
"ohne Abweichung steht dort auch nichts");
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
2b. WAS LIEGT BEI DER PERSON? -- der Auftragsstreifen
|
||||
=====================================================================
|
||||
|
||||
Filipe, 24.09.2026: "die aufgaben die wir verteilen sollen da auch
|
||||
zu sehen sein und so."
|
||||
|
||||
Angelegt sind (siehe oben): fuer Diene drei offene -- eine
|
||||
ueberfaellig, eine in drei Tagen, eine ohne Frist -- und eine
|
||||
erledigte. Fuer VanVan nichts.
|
||||
|
||||
GEPRUEFT WIRD BEIDES: die Zahl UND der Fall "nichts offen". Der
|
||||
zweite ist der, den man beim Bauen vergisst, und er ist auf dieser
|
||||
Seite der haeufigste: Wer verteilt, sucht genau danach. */
|
||||
melde("");
|
||||
melde("=== 2b. Der Auftragsstreifen ===");
|
||||
{
|
||||
const a = await seite.evaluate(() => Object.fromEntries(
|
||||
[...document.querySelectorAll("#personen .e-person")].map((k) => {
|
||||
const s2 = k.querySelector(".e-person__auftrag");
|
||||
return [k.querySelector(".e-person__name")?.textContent || "?", {
|
||||
sichtbar: !!s2 && !s2.hidden,
|
||||
leer: s2?.dataset.leer || "",
|
||||
spaet: s2?.dataset.spaet || "",
|
||||
zahl: k.querySelector(".e-person__auftrag-zahl")?.textContent || "",
|
||||
wort: k.querySelector(".e-person__auftrag-wort")?.textContent || "",
|
||||
marke: k.querySelector(".e-person__auftrag-spaet")?.textContent || "",
|
||||
titel: k.querySelector(".e-person__auftrag-titel")?.textContent || "",
|
||||
frist: k.querySelector(".e-person__auftrag-frist")?.textContent || "",
|
||||
fristSpaet: k.querySelector(".e-person__auftrag-frist")?.dataset.spaet || "",
|
||||
leerText: k.querySelector(".e-person__auftrag-leer")?.textContent || "",
|
||||
}];
|
||||
})));
|
||||
|
||||
const dn = a.Diene || {}, vv = a.VanVan || {};
|
||||
ok(dn.sichtbar === true && vv.sichtbar === true,
|
||||
"der Streifen steht auf beiden Kacheln");
|
||||
/* DREI, NICHT VIER: Die erledigte zaehlt nicht mit. Ohne diese
|
||||
Gegenprobe wuerde eine Zahl, die alles zaehlt, nie auffallen. */
|
||||
ok(dn.zahl === "3", `Diene hat drei offene Aufgaben (steht da: "${dn.zahl}")`);
|
||||
ok(dn.wort === "offene Aufgaben", `und das Wort steht im Plural ("${dn.wort}")`);
|
||||
ok(dn.marke === "1 überfällig", `eine davon ist ueberfaellig ("${dn.marke}")`);
|
||||
ok(dn.spaet === "ja", "und der Streifen zeigt es an seiner Kante");
|
||||
/* DIE NAECHSTE MIT NAMEN -- und zwar die ueberfaellige, nicht
|
||||
irgendeine. Sortiert wird nach Frist; ohne Frist steht hinten. */
|
||||
ok(dn.titel === "Clips vom Samstag schneiden",
|
||||
`die ueberfaellige steht mit Namen da ("${dn.titel}")`);
|
||||
ok(dn.frist === "seit gestern überfällig",
|
||||
`mit einem Satz statt einem Datum ("${dn.frist}")`);
|
||||
ok(dn.fristSpaet === "ja", "und sie ist als ueberfaellig ausgezeichnet");
|
||||
|
||||
ok(vv.leer === "ja" && vv.leerText === "keine offene Aufgabe",
|
||||
`bei VanVan steht "nichts offen" statt einer Null ("${vv.leerText}")`);
|
||||
ok(vv.zahl === "" && vv.marke === "",
|
||||
"und keine erfundene Zahl daneben");
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
|
||||
+89
-23
@@ -485,14 +485,25 @@ melde("=== 8. Im Browser ===");
|
||||
return {
|
||||
name,
|
||||
y: Math.round(window.scrollY),
|
||||
/* DIE KACHEL ZAEHLT SEIT DEM 17.09.2026 IN KAESTEN.
|
||||
/* WO DIE ZAHL AUF DER KACHEL STEHT -- zum dritten Mal woanders.
|
||||
|
||||
Vorher stand dort ein Satz ("2 von 68 angesehen"), und dieser
|
||||
Selektor las ihn. Seit die Kachel dieselben Bilanz-Kaesten
|
||||
traegt wie das Brett daneben, ist `.e-person__zahl` nur noch
|
||||
die Zeile fuer veraltete Einschaetzungen -- die Pruefung las
|
||||
seitdem einen leeren String, ohne dass etwas kaputt war. */
|
||||
kachel: kachel?.querySelector(".bilanz-zahl__n")?.textContent.trim() || "",
|
||||
Bis 17.09.2026 ein Satz ("2 von 68 angesehen"), danach ein
|
||||
Bilanz-Kasten, seit dem 24.09.2026 die Ziffer vor "von 68
|
||||
angesehen" plus der Ring darueber.
|
||||
|
||||
Das ist kein Zufall und kein Pech: Wer eine Kachel umbaut,
|
||||
verschiebt die Zahl. Die Pruefung muss es merken -- und sie
|
||||
merkt es nur, weil sie die Zahl VERGLEICHT statt sie bloss zu
|
||||
lesen. Beim Umbau am 17.09. las genau dieser Selektor
|
||||
monatelang einen leeren String, ohne dass etwas kaputt war.
|
||||
|
||||
DER RING WIRD MITGELESEN. Er ist seit dem 24.09. die groessere
|
||||
der beiden Darstellungen; bewegte sich nur die Ziffer, stuende
|
||||
ein Ring bei 3 % ueber einer 46 -- und das faellt niemandem
|
||||
auf, weil man das eine sieht und das andere liest. */
|
||||
kachel: kachel?.querySelector(".e-person__stand-zahl")?.textContent.trim() || "",
|
||||
bogen: kachel?.querySelector(".e-ring__bogen")
|
||||
?.getAttribute("stroke-dasharray") || "",
|
||||
kopfZahl: (document.querySelector("#karte .e-karte__stand")?.textContent
|
||||
.match(/(\d+) von/) || [])[1] || "",
|
||||
kopf: document.querySelector("#karte .e-karte__stand")?.textContent.trim() || "",
|
||||
@@ -522,14 +533,25 @@ melde("=== 8. Im Browser ===");
|
||||
.find((x) => x.querySelector(".e-person__name")?.textContent.trim() === name);
|
||||
return {
|
||||
y: Math.round(window.scrollY),
|
||||
/* DIE KACHEL ZAEHLT SEIT DEM 17.09.2026 IN KAESTEN.
|
||||
/* WO DIE ZAHL AUF DER KACHEL STEHT -- zum dritten Mal woanders.
|
||||
|
||||
Vorher stand dort ein Satz ("2 von 68 angesehen"), und dieser
|
||||
Selektor las ihn. Seit die Kachel dieselben Bilanz-Kaesten
|
||||
traegt wie das Brett daneben, ist `.e-person__zahl` nur noch
|
||||
die Zeile fuer veraltete Einschaetzungen -- die Pruefung las
|
||||
seitdem einen leeren String, ohne dass etwas kaputt war. */
|
||||
kachel: kachel?.querySelector(".bilanz-zahl__n")?.textContent.trim() || "",
|
||||
Bis 17.09.2026 ein Satz ("2 von 68 angesehen"), danach ein
|
||||
Bilanz-Kasten, seit dem 24.09.2026 die Ziffer vor "von 68
|
||||
angesehen" plus der Ring darueber.
|
||||
|
||||
Das ist kein Zufall und kein Pech: Wer eine Kachel umbaut,
|
||||
verschiebt die Zahl. Die Pruefung muss es merken -- und sie
|
||||
merkt es nur, weil sie die Zahl VERGLEICHT statt sie bloss zu
|
||||
lesen. Beim Umbau am 17.09. las genau dieser Selektor
|
||||
monatelang einen leeren String, ohne dass etwas kaputt war.
|
||||
|
||||
DER RING WIRD MITGELESEN. Er ist seit dem 24.09. die groessere
|
||||
der beiden Darstellungen; bewegte sich nur die Ziffer, stuende
|
||||
ein Ring bei 3 % ueber einer 46 -- und das faellt niemandem
|
||||
auf, weil man das eine sieht und das andere liest. */
|
||||
kachel: kachel?.querySelector(".e-person__stand-zahl")?.textContent.trim() || "",
|
||||
bogen: kachel?.querySelector(".e-ring__bogen")
|
||||
?.getAttribute("stroke-dasharray") || "",
|
||||
kopfZahl: (document.querySelector("#karte .e-karte__stand")?.textContent
|
||||
.match(/(\d+) von/) || [])[1] || "",
|
||||
kopf: document.querySelector("#karte .e-karte__stand")?.textContent.trim() || "",
|
||||
@@ -545,18 +567,62 @@ melde("=== 8. Im Browser ===");
|
||||
`die Kachel zählt sofort mit (${vorDemKlick.kachel} -> ${nachDemKlick.kachel})`);
|
||||
ok(nachDemKlick.kachel === nachDemKlick.kopfZahl,
|
||||
`und nennt dieselbe Zahl wie die Karte (${nachDemKlick.kachel} / ${nachDemKlick.kopfZahl})`);
|
||||
/* UND DER RING WANDERT MIT. Seine Laenge ist der Anteil in Prozent
|
||||
(Umfang 100) -- er muss also groesser werden, wenn die Ziffer es
|
||||
wird. Ein Ring, der stehenbleibt, waere dieselbe zweite Wahrheit
|
||||
wie die Zahl von vorhin, nur als Bild statt als Text. */
|
||||
const bogenAus = (x) => Number(String(x).split(" ")[0]);
|
||||
ok(bogenAus(nachDemKlick.bogen) > bogenAus(vorDemKlick.bogen),
|
||||
`und der Ring wird voller (${vorDemKlick.bogen} -> ${nachDemKlick.bogen})`);
|
||||
ok(zahlAus(nachDemKlick.kachel) > 0,
|
||||
"es ist eine echte Zahl, keine Null — sonst wäre die Gleichheit wertlos");
|
||||
|
||||
/* GEGENPROBE ZUM SPRUNG: Auf eine PERSON zu drücken DARF springen --
|
||||
dort will man zur Karte. Ohne diese Zeile hieße „springt nicht“
|
||||
vielleicht nur, dass gar nichts mehr scrollt. */
|
||||
await seite.evaluate(() => window.scrollTo({ top: 900, behavior: "instant" }));
|
||||
await seite.waitForTimeout(200);
|
||||
await seite.evaluate(() => document.querySelector(".e-person")?.click());
|
||||
await seite.waitForTimeout(1400);
|
||||
const beiPerson = await seite.evaluate(() => Math.round(window.scrollY));
|
||||
ok(beiPerson !== 900, `beim Öffnen einer Person springt sie sehr wohl (${beiPerson})`);
|
||||
/* =====================================================================
|
||||
GEGENPROBE ZUM SPRUNG -- neu gefasst am 24.09.2026
|
||||
=====================================================================
|
||||
|
||||
Sie muss es geben: Ohne sie hiesse "die Seite bleibt stehen"
|
||||
vielleicht nur, dass ueberhaupt nichts mehr scrollt, und die
|
||||
Pruefung darueber waere wertlos.
|
||||
|
||||
HIER STAND BIS HEUTE DER FALSCHE FALL. Sie klickte eine Kachel an
|
||||
und verlangte einen Sprung zur Karte -- richtig bis zum
|
||||
23.09.2026. An dem Tag wurde die Seite nach dem Arbeitsablauf
|
||||
umgeraeumt: Zwischen Kachel und Karte liegen seither das
|
||||
Verteil-Formular, der Katalog und die Aufgabenliste. Ein Sprung
|
||||
zur Karte wuerde also ueber genau die drei Dinge hinwegspringen,
|
||||
die man nach der Wahl zuerst braucht. Der Sprung wurde deshalb
|
||||
ABSICHTLICH entfernt (siehe entwicklung.js, "KEIN SPRUNG MEHR").
|
||||
|
||||
Die Gegenprobe blieb stehen und war ab da rot -- nicht, weil
|
||||
etwas kaputt war, sondern weil sie eine Zusage einforderte, die
|
||||
zurueckgenommen worden ist. Gefunden beim Kachelumbau am
|
||||
24.09.2026, also einen Tag spaeter; waere sie gruen gewesen,
|
||||
haette es niemand bemerkt.
|
||||
|
||||
DER SPRUNG, DEN ES NOCH GIBT, ist der von aussen: Wer der
|
||||
Talentseite folgt, kommt mit "?zeigen=person-<nr>" und will genau
|
||||
diese eine Karte sehen. Daran laesst sich beweisen, dass die Seite
|
||||
sehr wohl springen KANN -- und zwar an der einzigen Stelle, an der
|
||||
sie es noch soll. */
|
||||
const werDenn = await seite.evaluate(() =>
|
||||
document.querySelector("#personen .e-person")?.dataset.person || "");
|
||||
ok(werDenn !== "", `eine Kachel zum Anspringen gefunden (Nr. ${werDenn})`);
|
||||
await seite.goto(`http://127.0.0.1:${PORT}/workspace/entwicklung.html?zeigen=person-${werDenn}`,
|
||||
{ waitUntil: "networkidle" });
|
||||
await seite.waitForSelector("#personen .e-person", { timeout: 15_000 });
|
||||
await seite.waitForTimeout(1600);
|
||||
const vonAussen = await seite.evaluate(() => ({
|
||||
y: Math.round(window.scrollY),
|
||||
karteOffen: !document.getElementById("karte")?.hidden,
|
||||
wer: document.querySelector('#personen .e-person[aria-pressed="true"]')
|
||||
?.dataset.person || "",
|
||||
}));
|
||||
ok(vonAussen.y > 0,
|
||||
`von aussen verlinkt springt sie sehr wohl (scrollY ${vonAussen.y})`);
|
||||
ok(vonAussen.karteOffen && vonAussen.wer === werDenn,
|
||||
`und zwar zu genau dieser Karte (offen: ${vonAussen.karteOffen}, `
|
||||
+ `gewaehlt: ${vonAussen.wer})`);
|
||||
|
||||
ok(konsole.length === 0,
|
||||
konsole.length ? "Fehler im Browser: " + konsole[0].slice(0, 90) : "keine Fehler im Browser");
|
||||
|
||||
@@ -16,15 +16,15 @@
|
||||
verdeckt. Gefunden hat es pruef-struktur.
|
||||
|
||||
Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. -->
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
<!-- Ohne diese drei nimmt ein iPhone einen Bildschirmausschnitt als
|
||||
Symbol, Android zeichnet die Leiste weiss, und die Seite oeffnet
|
||||
ausserhalb der App -- auf einer Seite, die genau erklaeren soll,
|
||||
WARUM das Telefon nicht klingelt, ist das besonders unpassend. -->
|
||||
<link rel="manifest" href="/workspace/crew.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<style>
|
||||
/* Bewusst in der Seite und nicht in einer eigenen Datei: Diese Seite
|
||||
soll auch dann noch etwas anzeigen, wenn genau das schiefgeht,
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="assets/js/anruf-probe.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/anruf-probe.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -23,25 +23,25 @@
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609241301",
|
||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609241329",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609241301",
|
||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609241329",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609241301",
|
||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609241329",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609241301",
|
||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609241329",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
|
||||
@@ -61,60 +61,264 @@
|
||||
margin: 7px 0 0; font-size: .8rem; line-height: 1.55; color: var(--text-still);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
Die Personenreihe
|
||||
/* =====================================================================
|
||||
DIE PERSONENREIHE — DIE STANDKARTE (24.09.2026)
|
||||
=====================================================================
|
||||
|
||||
Filipe: „mach das bitte viel krasser und viel geiler. die aufgaben
|
||||
die wir verteilen sollen da auch zu sehen sein und so. viel
|
||||
übersichtlicher, viel moderner."
|
||||
|
||||
VORHER: Name, Rolle, ein flacher Balken und drei Zahlenkästen —
|
||||
bei sechs Leuten also achtzehn Kästen, und auf Filipes Bildschirm-
|
||||
foto stand in fünfen davon dasselbe (0 / 68 / 0). Viel Fläche für
|
||||
eine einzige Auskunft, und die Aufgaben, die eine Handbreit
|
||||
darunter verteilt werden, kamen gar nicht vor.
|
||||
|
||||
JETZT drei Zonen, von oben nach unten in der Reihenfolge, in der
|
||||
man fragt:
|
||||
|
||||
KOPF Ring + Name + Rolle. Der Ring trägt seinen Anteil in der
|
||||
Mitte — Form und Zahl an derselben Stelle. Sechs Ringe
|
||||
untereinander vergleicht man, ohne zu lesen.
|
||||
AUFTRAG Was bei der Person liegt: wie viele offen, wie viele
|
||||
überfällig, und die nächste mit Namen und Frist. Als
|
||||
abgesetzter Streifen mit farbiger Kante — das ist die
|
||||
Zone, die sich ändert, während man arbeitet.
|
||||
FUSS „46 von 68 angesehen", und nur wenn es etwas gibt:
|
||||
„3 verschieden gesehen".
|
||||
|
||||
AUGENSCHONEND (Hausregel): kein Leuchten, kein Farbverlauf, der
|
||||
blendet, keine Ampel auf dem Ring. Die einzige warme Farbe der
|
||||
Kachel steht an der Kante des Auftragsstreifens, und auch nur
|
||||
dann, wenn wirklich eine Frist überschritten ist — ein Maßstab,
|
||||
der nicht geraten ist. Bewegung gibt es allein beim Ring, und die
|
||||
fällt bei „prefers-reduced-motion" weg.
|
||||
|
||||
WARUM SPANS UND KEINE DIVS: Die Kachel ist ein <button>, und der
|
||||
darf laut HTML nur Fließtext enthalten. Ein <div> darin wird zwar
|
||||
angezeigt, ist aber ungültig — und ungültige Verschachtelung ist
|
||||
genau die Sorte Fehler, die erst irgendwann und dann in einem
|
||||
einzigen Browser auffällt. Die Spans stehen hier auf display:flex.
|
||||
------------------------------------------------------------------- */
|
||||
.e-personen { display: flex; flex-wrap: wrap; gap: 10px; }
|
||||
/* GITTER STATT FLIESSREIHE (gemessen am 24.09.2026).
|
||||
|
||||
Vorher standen die Kacheln in einer umbrechenden Reihe mit
|
||||
„flex: 1 1 340px“. Das sieht bei sechs Leuten gut aus und bei sieben
|
||||
falsch: Die letzte Kachel steht allein in ihrer Zeile und WÄCHST auf
|
||||
die volle Breite — gemessen 1160 px neben 379 px der anderen. Eine
|
||||
Person sah dadurch dreimal so wichtig aus wie die davor, und zwar
|
||||
aus dem einzigen Grund, dass die Teamgröße ungerade ist.
|
||||
|
||||
Ein Gitter mit „auto-fill“ legt feste Spalten an. Die letzte Kachel
|
||||
bleibt dann so breit wie jede andere, und die Zeile endet mit Luft
|
||||
statt mit einer aufgeblähten Person.
|
||||
|
||||
„minmax(320px, 1fr)“ statt einer Spaltenzahl: Wie viele hineinpassen,
|
||||
rechnet der Browser aus der Breite aus — eine feste Zahl wäre wieder
|
||||
eine Rechnung von gestern, und beim siebten Teammitglied falsch. */
|
||||
.e-personen {
|
||||
display: grid; gap: 12px;
|
||||
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
||||
}
|
||||
|
||||
.e-person {
|
||||
display: flex; flex-direction: column; gap: 3px;
|
||||
/* Seit die drei Bilanz-Kaesten darin stehen, braucht die Kachel
|
||||
mehr Grundbreite -- bei 210px wurde jeder Kasten einzeilig
|
||||
gequetscht und die Ziffer rutschte unter ihr Wort. */
|
||||
min-width: 260px; flex: 1 1 300px;
|
||||
padding: 13px 15px; text-align: left; cursor: pointer;
|
||||
display: flex; flex-direction: column; gap: 11px;
|
||||
/* Ohne das sprengt ein langer Aufgabentitel die Spalte, statt
|
||||
abgeschnitten zu werden: Ein Gitterfeld ist von Haus aus mindestens
|
||||
so breit wie sein Inhalt. */
|
||||
min-width: 0;
|
||||
padding: 14px 16px 13px; text-align: left; cursor: pointer;
|
||||
font: inherit;
|
||||
background: color-mix(in srgb, var(--tinte) 94%, #ffffff 6%);
|
||||
border: 1px solid var(--rand);
|
||||
transition: border-color .16s ease;
|
||||
border-radius: var(--radius-klein, 12px);
|
||||
transition: border-color .16s ease, background-color .16s ease;
|
||||
}
|
||||
.e-person:hover, .e-person:focus-visible {
|
||||
border-color: color-mix(in srgb, var(--akzent) 45%, transparent);
|
||||
}
|
||||
.e-person__name { font-size: .98rem; font-weight: 640; color: var(--text); }
|
||||
.e-person__rolle { font-size: .78rem; color: var(--text-still); }
|
||||
.e-person__zahlen { display: flex; flex-wrap: wrap; gap: 5px 10px; margin-top: 6px; }
|
||||
.e-person__zahl { font-size: .77rem; color: var(--text-leise); }
|
||||
/* Die Abweichung ist das Ergebnis dieser Seite — sie darf als Einzige
|
||||
auffallen. */
|
||||
.e-person__zahl--wichtig { color: var(--text); font-weight: 620; }
|
||||
.e-person__zahl--alt { color: var(--text-still); margin-top: 8px; }
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
DIE DREI ZAHLEN AUF DER KACHEL (17.09.2026)
|
||||
|
||||
Filipe, mit zwei Bildschirmfotos nebeneinander: „wieso ist diese seite
|
||||
noch nicht im stil und perfektioniert wie die auf screen2". Der
|
||||
Unterschied lag an den Zahlen: hier graue Textzeilen, drüben die
|
||||
abgesetzten Kästen mit großer Ziffer.
|
||||
|
||||
`.bilanz-zahl` kommt aus start.css und wird hier nur gesetzt — nicht
|
||||
nachgebaut. Ein zweites Aussehen für dieselbe Sache läuft auseinander,
|
||||
sobald jemand eins davon anfasst.
|
||||
|
||||
AUTO-FIT STATT DREI SPALTEN: Auf dem Handy ist eine Kachel schmal,
|
||||
am Rechner breit. `minmax` bricht genau dann um, wenn der Platz nicht
|
||||
reicht — eine feste Spaltenzahl wäre wieder eine Rechnung von gestern.
|
||||
------------------------------------------------------------------- */
|
||||
.e-person__bilanz {
|
||||
display: grid; gap: 8px; margin-top: 10px;
|
||||
grid-template-columns: repeat(auto-fit, minmax(104px, 1fr));
|
||||
/* ---- Kopf: Ring, Name, Rolle -------------------------------------- */
|
||||
.e-person__kopf { display: flex; align-items: center; gap: 12px; }
|
||||
.e-person__wer {
|
||||
display: flex; flex-direction: column; gap: 2px;
|
||||
/* Ohne das schiebt ein langer Name den Ring aus der Kachel. */
|
||||
min-width: 0;
|
||||
}
|
||||
.e-person__name {
|
||||
font-size: .99rem; font-weight: 640; color: var(--text);
|
||||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||||
}
|
||||
.e-person__rolle { font-size: .78rem; color: var(--text-still); }
|
||||
|
||||
/* DER RING.
|
||||
|
||||
Der Kreis im SVG hat den Umfang 100 (r = 15,9155) — deshalb ist
|
||||
stroke-dasharray: 68 100 buchstäblich „68 Prozent", ohne
|
||||
Umrechnung im Kopf und ohne eine Grafik je Stand.
|
||||
|
||||
Gedreht wird die ganze Zeichnung um eine Vierteldrehung nach
|
||||
links, damit der Bogen oben beginnt und im Uhrzeigersinn läuft.
|
||||
Ein Fortschritt, der auf drei Uhr anfängt, liest sich falsch.
|
||||
|
||||
KEINE AMPELFARBE. Was „genug" ist, hängt davon ab, wie lange
|
||||
jemand dabei ist; eine Schwelle wäre geraten und bei der nächsten
|
||||
Person falsch. Der Ring sagt WIE WEIT und urteilt nicht. */
|
||||
.e-ring {
|
||||
position: relative; flex: 0 0 auto;
|
||||
width: 54px; height: 54px;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
line-height: 1;
|
||||
}
|
||||
.e-ring__bild {
|
||||
position: absolute; inset: 0; width: 100%; height: 100%;
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
/* Die Spur muss man SEHEN — sonst ist ein Ring bei 0 % gar kein Ring,
|
||||
sondern eine leere Stelle neben dem Namen, und die Kachel sieht aus,
|
||||
als fehle dort etwas. Gemessen am ersten Bildschirmfoto: bei 70 %
|
||||
Rand war sie auf dem dunklen Grund praktisch weg. */
|
||||
.e-ring__spur {
|
||||
stroke: color-mix(in srgb, var(--rand-hell) 62%, transparent);
|
||||
stroke-width: 3;
|
||||
}
|
||||
.e-ring__bogen {
|
||||
stroke: color-mix(in srgb, var(--akzent) 72%, transparent);
|
||||
stroke-width: 3.2; stroke-linecap: round;
|
||||
transition: stroke-dasharray .38s ease;
|
||||
}
|
||||
/* Runde Enden zeichnen schon bei „0 100" einen Punkt auf zwölf Uhr —
|
||||
der sieht aus wie ein Fehler, nicht wie ein Anfang. */
|
||||
.e-ring[data-leer="ja"] .e-ring__bogen { stroke-linecap: butt; }
|
||||
/* Wer alles angesehen hat, bekommt einen ruhigen vollen Ring — kein
|
||||
Grün, keine Feier: Es ist der Normalzustand, nicht ein Preis. */
|
||||
.e-ring[data-voll="ja"] .e-ring__bogen {
|
||||
stroke: color-mix(in srgb, var(--akzent) 88%, transparent);
|
||||
}
|
||||
.e-ring__zahl {
|
||||
font-size: 1.04rem; font-weight: 660; color: var(--text);
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
/* NICHT UNTER 0,72 rem — das sind 11,52 px, die Untergrenze des
|
||||
Hauses (siehe pruef-css-klassen). Mein erster Entwurf hatte hier
|
||||
.62rem, weil das Prozentzeichen neben der Ziffer nur ein Beiwerk
|
||||
ist. Das stimmt gestalterisch und ist trotzdem falsch: Augenschonung
|
||||
ist Pflicht, nicht Geschmack, und „ist ja nur ein Zeichen" gilt
|
||||
nicht für den, der es nicht lesen kann. Klein genug bleibt es
|
||||
ohnehin — die Ziffer daneben ist 16,6 px. */
|
||||
.e-ring__prozent {
|
||||
margin-left: 1px; font-size: .72rem; color: var(--text-leise);
|
||||
align-self: center;
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.e-ring__bogen { transition: none; }
|
||||
}
|
||||
|
||||
/* ---- Der Auftragsstreifen ----------------------------------------- */
|
||||
/* DAS IST DER TEIL, DEN FILIPE VERMISST HAT. Er verteilt die Aufgaben
|
||||
eine Handbreit weiter unten; die Kachel darüber wusste nichts davon.
|
||||
|
||||
Abgesetzt, mit eigener Kante: Es ist die einzige Zone der Kachel,
|
||||
die sich ändert, während man arbeitet. Alles andere ist Stand. */
|
||||
.e-person__auftrag {
|
||||
display: flex; flex-direction: column; gap: 3px;
|
||||
padding: 9px 11px;
|
||||
border: 1px solid var(--rand);
|
||||
border-left: 3px solid color-mix(in srgb, var(--akzent) 52%, transparent);
|
||||
border-radius: 9px;
|
||||
background: color-mix(in srgb, #ffffff 3.5%, transparent);
|
||||
}
|
||||
/* „Nichts offen" ist auch eine Antwort — und zwar die, nach der man
|
||||
beim Verteilen sucht. Sie bleibt stehen, nur leise: Wäre der
|
||||
Streifen ganz weg, sähe die Kachel aus, als fehle dort etwas. */
|
||||
.e-person__auftrag[data-leer="ja"] {
|
||||
/* OHNE KASTEN, ABER MIT DERSELBEN KANTE.
|
||||
|
||||
Mit vollem Rahmen sah die Zeile auf dem ersten Bildschirmfoto aus
|
||||
wie ein leeres Eingabefeld — man greift hin und kann nichts
|
||||
eintippen. Ein Rahmen verspricht, dass man etwas tun kann.
|
||||
|
||||
Die linke Kante bleibt trotzdem stehen, nur gedämpft. Dadurch
|
||||
liegen alle Auftragsstreifen der Reihe auf derselben senkrechten
|
||||
Linie, und die KANTE wird zur eigentlichen Auskunft: gedämpft =
|
||||
nichts offen, blau = es liegt etwas an, warm = eine Frist ist
|
||||
vorbei. Das liest man, ohne eine Zeile zu lesen. */
|
||||
border: none; background: none;
|
||||
border-left: 3px solid color-mix(in srgb, var(--rand) 60%, transparent);
|
||||
border-radius: 0;
|
||||
padding: 2px 0 2px 11px;
|
||||
}
|
||||
.e-person__auftrag[data-spaet="ja"] {
|
||||
border-left-color: color-mix(in srgb, var(--warn) 58%, transparent);
|
||||
}
|
||||
.e-person__auftrag-kopf {
|
||||
display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 7px;
|
||||
}
|
||||
.e-person__auftrag-zahl {
|
||||
font-size: 1.16rem; font-weight: 680; color: var(--text);
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.e-person__auftrag-wort { font-size: .8rem; color: var(--text-still); }
|
||||
/* Das Einzige auf der Kachel, das warnt — und nur, wenn eine Frist
|
||||
wirklich vorbei ist. Ein Maßstab, der nicht geraten ist. */
|
||||
.e-person__auftrag-spaet {
|
||||
margin-left: auto;
|
||||
font-size: .72rem; font-weight: 620;
|
||||
padding: 2px 9px; border-radius: 999px;
|
||||
color: color-mix(in srgb, var(--warn) 50%, #ffffff);
|
||||
border: 1px solid color-mix(in srgb, var(--warn) 42%, transparent);
|
||||
background: color-mix(in srgb, var(--warn) 9%, transparent);
|
||||
}
|
||||
/* Untereinander, nicht nebeneinander: Ein langer Aufgabentitel würde
|
||||
die Frist sonst auf eine zweite Zeile drücken und dort allein
|
||||
stehen lassen — man liest sie dann als eigene Angabe. */
|
||||
.e-person__auftrag-naechste {
|
||||
display: flex; flex-direction: column; gap: 1px; min-width: 0;
|
||||
}
|
||||
.e-person__auftrag-titel {
|
||||
font-size: .82rem; color: var(--text);
|
||||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||||
}
|
||||
.e-person__auftrag-frist { font-size: .74rem; color: var(--text-leise); }
|
||||
.e-person__auftrag-frist[data-spaet="ja"] {
|
||||
color: color-mix(in srgb, var(--warn) 48%, #ffffff); font-weight: 600;
|
||||
}
|
||||
.e-person__auftrag-leer { font-size: .79rem; color: var(--text-leise); }
|
||||
|
||||
/* ---- Der Fuß ------------------------------------------------------- */
|
||||
.e-person__fuss {
|
||||
display: flex; flex-wrap: wrap; align-items: baseline; gap: 3px 12px;
|
||||
font-size: .76rem; color: var(--text-leise);
|
||||
/* NACH UNTEN GESCHOBEN. Kacheln in einer Reihe sind gleich hoch, die
|
||||
Inhalte verschieden lang — ohne das hing die feine Zeile bei der
|
||||
einen mittendrin und bei der anderen unten, und dazwischen stand
|
||||
ein Loch. Jetzt liegen sie auf einer Linie, und das Auge liest die
|
||||
Reihe quer statt jede Kachel einzeln. */
|
||||
margin-top: auto; padding-top: 2px;
|
||||
}
|
||||
.e-person__stand-zahl {
|
||||
color: var(--text-still); font-weight: 650;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.e-person__stand[data-voll="ja"] .e-person__stand-zahl {
|
||||
color: color-mix(in srgb, var(--gut, #79d1a2) 45%, #ffffff);
|
||||
}
|
||||
/* „verschieden gesehen" ist die einzige Zahl dieser Seite, die zu
|
||||
einer Handlung führt — dort lohnt das Gespräch. Steht dort eine
|
||||
Null, steht sie gar nicht erst da (siehe entwicklung.js). */
|
||||
.e-person__abw {
|
||||
font-weight: 620;
|
||||
color: color-mix(in srgb, #e0a33c 42%, #ffffff);
|
||||
}
|
||||
.e-person__alt { color: var(--text-still); }
|
||||
|
||||
/* WER BRAUCHT AUFMERKSAMKEIT? Liegt bei jemandem etwas Überfälliges,
|
||||
sieht man das an der ganzen Kachel, nicht erst am Streifen darin —
|
||||
gedämpft, kein Signalrot: Es ist ein Hinweis, kein Alarm. */
|
||||
.e-person:has(.e-person__auftrag[data-spaet="ja"]) {
|
||||
border-color: color-mix(in srgb, var(--warn) 32%, var(--rand));
|
||||
}
|
||||
/* Die Kästen sitzen in einem Knopf und dürfen ihn nicht abfangen —
|
||||
sonst trifft ein Tippen auf die Zahl die Kachel nicht. */
|
||||
.e-person__bilanz .bilanz-zahl { pointer-events: none; padding: 9px 11px; }
|
||||
.e-person__bilanz .bilanz-zahl__n { font-size: 1.35rem; }
|
||||
.e-person__bilanz .bilanz-zahl__text { font-size: .74rem; }
|
||||
|
||||
/* WEN HABE ICH GERADE OFFEN? Vorher sah die Kachel nach dem Klick aus
|
||||
wie vorher; wer scrollte, verlor den Faden. Gedämpft hell statt
|
||||
@@ -126,6 +330,9 @@
|
||||
linear-gradient(180deg, color-mix(in srgb, var(--akzent) 11%, transparent), transparent 62%),
|
||||
color-mix(in srgb, var(--tinte) 90%, #ffffff 10%);
|
||||
}
|
||||
.e-person[aria-pressed="true"] .e-ring__bogen {
|
||||
stroke: color-mix(in srgb, var(--akzent) 90%, transparent);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
Die Karte
|
||||
@@ -2273,123 +2480,86 @@
|
||||
|
||||
|
||||
/* =====================================================================
|
||||
DIE PERSONENWAHL AUF DEM HANDY (23.09.2026)
|
||||
DIE PERSONENWAHL AUF DEM HANDY (23.09.2026, neu gefasst 24.09.2026)
|
||||
=====================================================================
|
||||
|
||||
Filipe: "ich will dass du die so krass uebersichtlich machst."
|
||||
Filipe: „ich will dass du die so krass uebersichtlich machst."
|
||||
|
||||
Gemessen vorher: sechs Kacheln, 1176 px, alle untereinander. Das ist
|
||||
anderthalb Bildschirme nur fuer die Frage "wen nehme ich mir vor" --
|
||||
und danach faengt die eigentliche Arbeit erst an.
|
||||
Gemessen damals: sechs Kacheln, 1176 px, alle untereinander —
|
||||
anderthalb Bildschirme nur für die Frage „wen nehme ich mir vor".
|
||||
Antwort war und bleibt: zwei nebeneinander.
|
||||
|
||||
ZWEI NEBENEINANDER STATT EINE. Der Grund fuer die alte Mindestbreite
|
||||
von 260 px steht oben: Die drei Bilanz-Kaesten wurden sonst
|
||||
gequetscht, und die Ziffer rutschte unter ihr Wort. Das stimmt --
|
||||
solange die Kaesten NEBENEINANDER stehen. Am Handy stehen sie hier
|
||||
untereinander, jeder eine Zeile: Ziffer links, Wort rechts. So
|
||||
braucht keiner mehr Breite als eine Zeile Text, und die Kachel
|
||||
kommt mit der halben Bildschirmbreite aus.
|
||||
NEU GEFASST, WEIL DIE KACHEL EINE ANDERE IST. Hier stand bis
|
||||
heute eine Regel, die die drei Bilanz-Kästen am Handy
|
||||
untereinander legte. Die Kästen gibt es nicht mehr; die Regel
|
||||
hätte nichts mehr getroffen und beim nächsten Lesen erklärt,
|
||||
wie eine Kachel aussieht, die es nicht mehr gibt.
|
||||
|
||||
KEINE ZAHL FAELLT WEG. Wer verteilt, muss sehen, wer schon wie viel
|
||||
hat -- das ist der ganze Zweck dieser Kaesten (siehe
|
||||
entwicklung.js). Sie werden kleiner, nicht weniger. */
|
||||
WAS AM HANDY KLEINER WIRD: der Ring (54 → 44 px) und die
|
||||
Innenabstände. WAS NICHT WEGFÄLLT: der Auftragsstreifen. Er ist
|
||||
der Grund, warum diese Kachel neu gebaut wurde — wer am Handy
|
||||
verteilt, braucht ihn genauso. Die „überfällig"-Marke rutscht
|
||||
bei Platzmangel von selbst in die zweite Zeile (flex-wrap),
|
||||
statt den Text zu quetschen. */
|
||||
@media (max-width: 620px) {
|
||||
/* Zwei je Zeile — ausdrücklich, nicht über „auto-fill“: 390 px
|
||||
Handybreite liegen unter der 320-px-Spalte, der Browser würde also
|
||||
von selbst eine einzige Spalte legen. Genau das war der Zustand,
|
||||
über den Filipe sich beschwert hat („anderthalb Bildschirme nur für
|
||||
die Frage, wen ich mir vornehme"). */
|
||||
.e-personen { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||||
.e-person {
|
||||
/* Zwei je Zeile: die halbe Breite minus der Luecke dazwischen. */
|
||||
min-width: 0;
|
||||
flex: 1 1 calc(50% - 10px);
|
||||
padding: 11px 12px;
|
||||
padding: 11px 12px 10px; gap: 9px;
|
||||
}
|
||||
/* Ziffer und Wort in EINER Zeile statt uebereinander -- das spart
|
||||
die Haelfte der Hoehe je Kasten, und drei Kaesten sind drei
|
||||
Zeilen. */
|
||||
.e-person__bilanz {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 4px; margin-top: 8px;
|
||||
}
|
||||
.e-person__bilanz .bilanz-zahl {
|
||||
display: flex; align-items: baseline; gap: 7px;
|
||||
padding: 5px 9px;
|
||||
}
|
||||
.e-person__bilanz .bilanz-zahl__n {
|
||||
font-size: 1rem; min-width: 1.4em;
|
||||
}
|
||||
/* NICHT UNTER 11,5 px -- das ist die Grenze des Hauses, und sie
|
||||
steht dort aus einem Grund: Augenschonung ist Pflicht, nicht
|
||||
Geschmack. Mein erster Entwurf hatte .7rem (11,2 px) und wurde
|
||||
von pruef-css-klassen gefangen: "43 Stellen unter 11,5 px, eine
|
||||
mehr als die Grundlinie 42". Genau dafuer zaehlt sie mit. */
|
||||
.e-person__bilanz .bilanz-zahl__text {
|
||||
font-size: .75rem; line-height: 1.25;
|
||||
}
|
||||
.e-person__name { font-size: .95rem; }
|
||||
.e-person__kopf { gap: 9px; }
|
||||
.e-ring { width: 44px; height: 44px; }
|
||||
.e-ring__zahl { font-size: .9rem; }
|
||||
.e-person__name { font-size: .93rem; }
|
||||
.e-person__rolle { font-size: .72rem; }
|
||||
.e-person__auftrag { padding: 7px 9px; }
|
||||
.e-person__auftrag-zahl { font-size: 1.05rem; }
|
||||
/* NICHT UNTER 11,5 px — das ist die Grenze des Hauses, und sie
|
||||
steht dort aus einem Grund: Augenschonung ist Pflicht, nicht
|
||||
Geschmack. Ein früherer Entwurf hatte hier .7rem (11,2 px) und
|
||||
wurde von pruef-css-klassen gefangen. */
|
||||
.e-person__auftrag-wort,
|
||||
.e-person__auftrag-titel { font-size: .78rem; }
|
||||
.e-person__auftrag-frist,
|
||||
.e-person__auftrag-spaet,
|
||||
.e-person__fuss { font-size: .73rem; }
|
||||
}
|
||||
|
||||
/* Ganz schmal (320 px) wieder eine je Zeile: Zwei Kacheln haetten dort
|
||||
je 145 px, und "verschieden gesehen" braucht mehr. Eine Zahl, die
|
||||
man nicht lesen kann, ist keine. */
|
||||
@media (max-width: 380px) {
|
||||
.e-person { flex: 1 1 100%; }
|
||||
.e-personen { grid-template-columns: 1fr; }
|
||||
}
|
||||
|
||||
|
||||
/* =====================================================================
|
||||
DER FORTSCHRITT EINER PERSON (23.09.2026)
|
||||
=====================================================================
|
||||
/* DER FORTSCHRITTSBALKEN IST WEG (24.09.2026).
|
||||
|
||||
Filipe: "mal was krass modernes ... viel viel viel uebersichtlicher."
|
||||
Hier stand seit dem 23.09. eine schmale Spur unter dem Namen —
|
||||
der Vorgänger des Rings. Sie beantwortete dieselbe Frage (wer
|
||||
ist wie weit), brauchte dafür aber die ganze Kachelbreite und
|
||||
ließ offen, wovon der Anteil ist; die Zahl dazu stand in einem
|
||||
Kasten darunter.
|
||||
|
||||
Eine schmale Spur unter dem Namen. Sie beantwortet die Frage, die
|
||||
man an diese Liste stellt -- wer ist wie weit -- ohne dass man drei
|
||||
Zahlen lesen und im Kopf verrechnen muss.
|
||||
Der Ring weiter oben trägt beides an derselben Stelle und gibt
|
||||
die Breite für die Aufgaben frei, die Filipe hier sehen will.
|
||||
|
||||
KEINE AMPELFARBEN. Was "genug" ist, haengt davon ab, wie lange
|
||||
jemand dabei ist; eine Schwelle waere geraten und bei der naechsten
|
||||
Person falsch. Der Balken traegt die Akzentfarbe der Seite und sagt
|
||||
nur, WIE WEIT -- nicht, ob das gut ist.
|
||||
ENTFERNT STATT STEHENGELASSEN: Eine Regel, die nichts mehr
|
||||
trifft, liest man beim nächsten Mal als den Weg, wie ein
|
||||
Fortschritt auf dieser Seite aussieht — und baut ihn neben den
|
||||
Ring ein zweites Mal. */
|
||||
|
||||
VIER BILDPUNKTE HOCH. Hoeher waere ein Balken, der mit dem Namen um
|
||||
Aufmerksamkeit ringt; niedriger sieht man ihn nicht mehr. Die Spur
|
||||
darunter bleibt sichtbar, auch bei 0 % -- sonst sieht die Kachel
|
||||
aus, als fehle dort etwas.
|
||||
/* EINE NULL IST KEINE WARNUNG — und steht seit dem 24.09.2026 gar
|
||||
nicht mehr da.
|
||||
|
||||
AUGENSCHONEND (Hausregel): kein Leuchten, kein Verlauf, der
|
||||
blendet. Der Balken ist gedeckt und liegt auf einer dunklen Spur.
|
||||
Die Bewegung beim Neuzeichnen ist kurz und faellt bei
|
||||
"prefers-reduced-motion" ganz weg. */
|
||||
.e-fortschritt {
|
||||
position: relative;
|
||||
height: 4px; margin: 9px 0 2px;
|
||||
background: color-mix(in srgb, var(--rand) 55%, transparent);
|
||||
border-radius: 2px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.e-fortschritt__balken {
|
||||
height: 100%;
|
||||
background: color-mix(in srgb, var(--akzent) 72%, transparent);
|
||||
border-radius: inherit;
|
||||
transition: width .32s ease;
|
||||
}
|
||||
/* Wer alles angesehen hat, bekommt einen ruhigen vollen Balken --
|
||||
kein Gruen, keine Feier: Es ist der Normalzustand, nicht ein Preis. */
|
||||
.e-fortschritt[data-voll="ja"] .e-fortschritt__balken {
|
||||
background: color-mix(in srgb, var(--akzent) 88%, transparent);
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.e-fortschritt__balken { transition: none; }
|
||||
}
|
||||
Hier wurde der Kasten „verschieden gesehen" gedämpft, wenn eine
|
||||
Null darin stand: gleiche Größe, gleicher Platz, nur leiser. Das
|
||||
war der halbe Schritt. Der ganze steht jetzt in entwicklung.js —
|
||||
bei null erscheint die Angabe überhaupt nicht.
|
||||
|
||||
/* EINE NULL IST KEINE WARNUNG.
|
||||
|
||||
"verschieden gesehen" ist die einzige der drei Zahlen, die zu einer
|
||||
Handlung fuehrt. Steht dort eine Null -- und das ist der Normalfall
|
||||
--, tritt der Kasten zurueck: gleiche Groesse, gleicher Platz, nur
|
||||
leiser. Bei sechs Leuten waeren es sonst sechs gelbe Nullen, und
|
||||
die echte siebte faellt dann nicht mehr auf. */
|
||||
.e-person__bilanz .bilanz-zahl[data-still="ja"] {
|
||||
opacity: .5;
|
||||
}
|
||||
.e-person__bilanz .bilanz-zahl[data-still="ja"] .bilanz-zahl__n {
|
||||
font-weight: 500;
|
||||
}
|
||||
Der Grund ist derselbe geblieben: Bei sechs Leuten wären es sechs
|
||||
Nullen, die aussehen wie Warnungen, und die echte siebte fällt
|
||||
dann nicht mehr auf. */
|
||||
|
||||
+359
-104
@@ -139,12 +139,34 @@
|
||||
if (kopf) kopf.textContent = satz;
|
||||
const kachel = personZahlen.get(letzteKarte.id);
|
||||
if (kachel) {
|
||||
/* Zwei Ziffern statt eines Satzes -- und der Ton wechselt auf
|
||||
gruen, sobald nichts mehr offen ist. Ohne das bliebe eine
|
||||
fertig angesehene Person blaugrau wie eine halbe. */
|
||||
kachel.angesehen.textContent = String(gesetzt);
|
||||
kachel.offen.textContent = String(Math.max(0, r.gesamt - gesetzt));
|
||||
kachel.kasten.dataset.stufe = gesetzt >= r.gesamt ? 'gut' : 'offen';
|
||||
/* DER RING WANDERT MIT (24.09.2026).
|
||||
|
||||
Hier standen bis heute die zwei Ziffern der Bilanz-Kaesten.
|
||||
Die gibt es nicht mehr -- die Kachel traegt jetzt einen Ring
|
||||
und darunter "46 von 68 angesehen". Beides muss sich beim
|
||||
Durchklicken bewegen, sonst ist genau der Fehler wieder da,
|
||||
wegen dem diese Funktion ueberhaupt entstanden ist: Die Karte
|
||||
zeigt den neuen Stand, die Kachel darueber den von vorhin. */
|
||||
const anteilNeu = r.gesamt > 0 ? Math.round(gesetzt / r.gesamt * 100) : 0;
|
||||
kachel.bogen.setAttribute('stroke-dasharray',
|
||||
Math.max(0, Math.min(100, anteilNeu)) + ' 100');
|
||||
kachel.ringZahl.textContent = r.gesamt > 0 ? String(anteilNeu) : '–';
|
||||
kachel.ring.setAttribute('aria-label', r.gesamt > 0
|
||||
? `${gesetzt} von ${r.gesamt} angesehen (${anteilNeu} Prozent)`
|
||||
: 'noch nichts einzuschätzen');
|
||||
kachel.standZahl.textContent = String(gesetzt);
|
||||
/* Fertig ist ein ruhiger voller Ring -- kein Gruen, keine Feier:
|
||||
Es ist der Normalzustand, nicht ein Preis. */
|
||||
if (r.gesamt > 0 && gesetzt >= r.gesamt) {
|
||||
kachel.ring.dataset.voll = 'ja';
|
||||
kachel.stand.dataset.voll = 'ja';
|
||||
} else {
|
||||
delete kachel.ring.dataset.voll;
|
||||
delete kachel.stand.dataset.voll;
|
||||
}
|
||||
/* Und der Punkt bei null verschwindet, sobald der Erste sitzt. */
|
||||
if (anteilNeu <= 0) kachel.ring.dataset.leer = 'ja';
|
||||
else delete kachel.ring.dataset.leer;
|
||||
}
|
||||
|
||||
/* Und die Köpfe der Kategorien -- sonst steht zugeklappt „0 / 7“
|
||||
@@ -218,28 +240,145 @@
|
||||
}
|
||||
|
||||
/* ---- Die Personen --------------------------------------------------- */
|
||||
/* EIN BILANZ-KASTEN, wie ihn die Checkliste benutzt (17.09.2026).
|
||||
/* DER BILANZ-KASTEN IST HIER WEG (24.09.2026).
|
||||
|
||||
Filipe, mit zwei Bildschirmfotos nebeneinander: "wieso ist diese
|
||||
seite noch nicht im stil und perfektioniert wie die auf screen2".
|
||||
Er stand seit dem 17.09. da und war damals richtig: Die Zahlen
|
||||
auf der Kachel sahen anders aus als drueben auf der Checkliste,
|
||||
und `bilanz-zahl` aus start.css hat das eingeebnet.
|
||||
|
||||
Der Unterschied war nicht der Aufbau -- der stimmte -- sondern die
|
||||
Zahlen: Hier standen sie als graue Textzeilen, drueben als
|
||||
abgesetzte Kaesten mit grosser Ziffer und eigenem Ton. Zwei
|
||||
Bretter, die dasselbe tun und verschieden aussehen, wirken wie
|
||||
zwei verschiedene Sachen.
|
||||
Die Kachel traegt seit heute keine drei Zahlenkaesten mehr,
|
||||
sondern einen Ring, ihre offenen Aufgaben und eine feine Zeile
|
||||
(siehe personKarte weiter unten). Damit hatte diese Funktion
|
||||
keinen einzigen Aufrufer mehr.
|
||||
|
||||
`bilanz-zahl` steht in start.css und gehoert damit dem ganzen Haus,
|
||||
nicht der Checkliste. Nachbauen waere eine zweite Wahrheit ueber
|
||||
dasselbe Aussehen gewesen. */
|
||||
function bilanzZahl(n, text, stufe, hinweis) {
|
||||
const kasten = el('div', 'bilanz-zahl');
|
||||
kasten.dataset.stufe = stufe;
|
||||
if (hinweis) kasten.title = hinweis;
|
||||
const ziffer = el('span', 'bilanz-zahl__n', String(n));
|
||||
kasten.append(ziffer);
|
||||
kasten.append(el('span', 'bilanz-zahl__text', text));
|
||||
return { kasten, ziffer };
|
||||
STEHENGELASSEN HAETTE SIE GESCHADET: Wer sie beim naechsten Mal
|
||||
findet, haelt sie fuer den Weg, wie Zahlen auf dieser Seite
|
||||
aussehen -- und baut damit neben dem neuen Aufbau einen zweiten
|
||||
auf. `bilanz-zahl` selbst bleibt unangetastet; die Checkliste
|
||||
und die Startseite benutzen sie weiter. */
|
||||
|
||||
/* =====================================================================
|
||||
DIE AUFGABEN AUF DER KACHEL (24.09.2026)
|
||||
=====================================================================
|
||||
|
||||
Filipe: "die aufgaben die wir verteilen sollen da auch zu sehen
|
||||
sein und so."
|
||||
|
||||
Er verteilt sie eine Handbreit weiter unten -- und die Kacheln
|
||||
darueber wussten nichts davon. Wer wissen wollte, ob bei jemandem
|
||||
schon etwas liegt, musste ihn erst anklicken, und dann stand es
|
||||
unter der Karte. Sechs Leute hiessen sechs Klicks.
|
||||
|
||||
GERECHNET WIRD AUS `alleAufgabenV` -- derselben Liste, aus der
|
||||
auch die Liste unter der Karte und der Vorlagenkatalog ihre Zahlen
|
||||
nehmen. Ein zweiter Abruf waere eine zweite Wahrheit ueber
|
||||
dieselbe Sache, und die, die beim naechsten Verteilen nicht
|
||||
mitwandert.
|
||||
|
||||
WER "MEINE" AUFGABE IST, entscheidet dieselbe Regel wie unter der
|
||||
Karte: verantwortlich ODER zugeteilt und nicht abgelehnt. Eine
|
||||
eigene Regel an dieser Stelle waere zwei Antworten auf dieselbe
|
||||
Frage, eine Handbreit auseinander.
|
||||
===================================================================== */
|
||||
|
||||
/** Was liegt bei dieser Person? -- in die Zeile an ihrer Kachel.
|
||||
*
|
||||
* IST DIE LISTE NOCH NICHT DA, bleibt die Zeile weg, statt "0
|
||||
* offen" zu behaupten. Eine Null, die in Wahrheit "ich weiss es
|
||||
* noch nicht" heisst, ist schlimmer als gar nichts -- man glaubt
|
||||
* ihr ja. */
|
||||
function auftragZeichnen(zeile, personId) {
|
||||
if (!zeile) return;
|
||||
zeile.textContent = '';
|
||||
const nr = Number(personId);
|
||||
const alle = Array.isArray(alleAufgabenV) ? alleAufgabenV : [];
|
||||
if (!alle.length || !nr) { zeile.hidden = true; return; }
|
||||
|
||||
const heute = typeof window.heuteLokal === 'function'
|
||||
? window.heuteLokal() : new Date().toISOString().slice(0, 10);
|
||||
const meine = alle.filter((x) => x.status !== 'erledigt' && x.status !== 'abgebrochen')
|
||||
.filter((x) => Number(x.verantwortlich_id) === nr
|
||||
|| (x.zuteilung || []).some((z) => Number(z.person_id) === nr
|
||||
&& z.zustand !== 'abgelehnt'));
|
||||
|
||||
zeile.hidden = false;
|
||||
delete zeile.dataset.spaet;
|
||||
if (!meine.length) {
|
||||
/* AUCH "NICHTS" IST EINE ANTWORT -- und zwar die, nach der man
|
||||
beim Verteilen sucht. Die Zeile bleibt deshalb stehen, nur
|
||||
leise: Waere sie weg, saehe die Kachel aus, als fehle dort
|
||||
eine Auskunft. */
|
||||
zeile.dataset.leer = 'ja';
|
||||
zeile.append(el('span', 'e-person__auftrag-leer', 'keine offene Aufgabe'));
|
||||
return;
|
||||
}
|
||||
delete zeile.dataset.leer;
|
||||
|
||||
const spaet = meine.filter((x) => x.frist && x.frist < heute);
|
||||
if (spaet.length) zeile.dataset.spaet = 'ja';
|
||||
|
||||
const kopf = el('span', 'e-person__auftrag-kopf');
|
||||
kopf.append(el('span', 'e-person__auftrag-zahl', String(meine.length)));
|
||||
kopf.append(el('span', 'e-person__auftrag-wort',
|
||||
meine.length === 1 ? 'offene Aufgabe' : 'offene Aufgaben'));
|
||||
if (spaet.length) {
|
||||
kopf.append(el('span', 'e-person__auftrag-spaet',
|
||||
spaet.length === 1 ? '1 überfällig' : `${spaet.length} überfällig`));
|
||||
}
|
||||
zeile.append(kopf);
|
||||
|
||||
/* DIE NAECHSTE MIT NAMEN, nicht nur als Zahl. "3 offen" sagt, dass
|
||||
etwas da ist; "Clips vom Samstag schneiden, seit 2 Tagen
|
||||
ueberfaellig" sagt, worum es geht -- und genau danach fragt man,
|
||||
bevor man jemanden anspricht.
|
||||
|
||||
Ueberfaellige zuerst, dann nach Frist, und was keine Frist hat,
|
||||
steht hinten: Eine Aufgabe ohne Termin draengt nicht. Dieselbe
|
||||
Reihenfolge wie in der Liste unter der Karte. */
|
||||
const naechste = [...meine].sort((x, y) =>
|
||||
String(x.frist || '9999-99-99').localeCompare(String(y.frist || '9999-99-99')))[0];
|
||||
if (naechste) {
|
||||
const z = el('span', 'e-person__auftrag-naechste');
|
||||
z.append(el('span', 'e-person__auftrag-titel', naechste.titel || 'Ohne Titel'));
|
||||
if (naechste.frist) {
|
||||
const wann = el('span', 'e-person__auftrag-frist', fristWort(naechste.frist, heute));
|
||||
if (naechste.frist < heute) wann.dataset.spaet = 'ja';
|
||||
z.append(wann);
|
||||
}
|
||||
zeile.append(z);
|
||||
}
|
||||
}
|
||||
|
||||
/** "heute fällig", "in 2 Tagen", "seit 3 Tagen überfällig".
|
||||
*
|
||||
* EIN DATUM MUSS MAN GEGEN HEUTE RECHNEN, ein Satz nicht. "bis
|
||||
* 22. Sep. 2026" zwingt zum Nachdenken; "seit 2 Tagen überfällig"
|
||||
* nicht.
|
||||
*
|
||||
* Gerechnet wird in ganzen Tagen ueber die Ortszeit --
|
||||
* `window.heuteLokal()` ist die Stelle im Haus, die das richtig
|
||||
* macht (Mitternacht hier, nicht in Greenwich). */
|
||||
function fristWort(frist, heute) {
|
||||
const a = new Date(`${frist}T00:00:00`);
|
||||
const b = new Date(`${heute}T00:00:00`);
|
||||
if (Number.isNaN(a.getTime()) || Number.isNaN(b.getTime())) return datum(frist);
|
||||
const tage = Math.round((a - b) / 86400000);
|
||||
if (tage === 0) return 'heute fällig';
|
||||
if (tage === 1) return 'morgen fällig';
|
||||
if (tage === -1) return 'seit gestern überfällig';
|
||||
if (tage > 1) return `in ${tage} Tagen`;
|
||||
return `seit ${Math.abs(tage)} Tagen überfällig`;
|
||||
}
|
||||
|
||||
/** Alle Aufgabenzeilen der Kacheln auf den neuesten Stand bringen.
|
||||
*
|
||||
* Steht in `aufgabenHolen()` und nicht an den vier Aufrufstellen:
|
||||
* Wer die Liste neu holt, hat auch den neuen Stand -- und eine
|
||||
* Stelle, die das vergisst, gibt es dann nicht. */
|
||||
function auftraegeNachziehen() {
|
||||
for (const zeile of document.querySelectorAll('#personen .e-person__auftrag')) {
|
||||
auftragZeichnen(zeile, zeile.dataset.fuer);
|
||||
}
|
||||
}
|
||||
|
||||
function personKarte(p, lage) {
|
||||
@@ -253,81 +392,146 @@
|
||||
k.dataset.person = String(p.id);
|
||||
/* Der Name als Angabe, nicht nur als Text: Das Verteil-Band nennt
|
||||
ihn ("Aufgabe fuer Kessi"), und `textContent` der ganzen Kachel
|
||||
waere Name + Rolle + drei Zahlen. */
|
||||
waere Name + Rolle + alles, was sonst noch draufsteht. */
|
||||
k.dataset.name = p.name;
|
||||
k.append(el('span', 'e-person__name', p.name));
|
||||
k.append(el('span', 'e-person__rolle', p.rolle_name));
|
||||
|
||||
const gesamt = Number(lage.gesamt_fremd) || 0;
|
||||
const gesetzt = Number(p.gesetzt) || 0;
|
||||
|
||||
/* ==== DER FORTSCHRITT ALS BALKEN (23.09.2026) ==================
|
||||
|
||||
Filipe: "mal was krass modernes ... viel viel viel
|
||||
uebersichtlicher."
|
||||
|
||||
Auf seinem Bildschirmfoto standen sechs Kacheln mit je drei
|
||||
Zahlenkaesten -- und bei fuenf davon exakt dasselbe. Achtzehn
|
||||
Kaesten fuer eine Auskunft: hier ist noch nichts passiert.
|
||||
|
||||
Drei Zahlen nebeneinander muss man lesen und im Kopf
|
||||
vergleichen. Einen Balken sieht man im Vorbeigehen, und die
|
||||
Frage an diese Liste ist genau das: Wer ist wie weit?
|
||||
|
||||
DIE BREITE IST DIE ANTWORT, die Zahl daneben die Genauigkeit.
|
||||
Keine Farbskala, keine Ampel: Was "genug" ist, haengt davon ab,
|
||||
wie lange jemand dabei ist -- eine Schwelle waere geraten.
|
||||
Der Balken zeigt, WIE WEIT, und urteilt nicht. */
|
||||
const anteil = gesamt > 0 ? Math.round(gesetzt / gesamt * 100) : 0;
|
||||
const spur = el('div', 'e-fortschritt');
|
||||
spur.setAttribute('role', 'img');
|
||||
spur.setAttribute('aria-label',
|
||||
gesamt > 0
|
||||
? `${gesetzt} von ${gesamt} angesehen (${anteil} Prozent)`
|
||||
: 'noch nichts einzuschätzen');
|
||||
const balken = el('div', 'e-fortschritt__balken');
|
||||
balken.style.width = anteil + '%';
|
||||
if (anteil >= 100) spur.dataset.voll = 'ja';
|
||||
spur.append(balken);
|
||||
k.append(spur);
|
||||
|
||||
const zahlen = el('div', 'e-person__bilanz');
|
||||
/* DIESELBEN DREI WIE DRUEBEN, und die ersten beiden teilen dasselbe
|
||||
Ganze: angesehen + noch offen = alle Punkte. Die dritte ist das
|
||||
Ergebnis dieser Seite -- wo zwei Leute dasselbe sehen, gibt es
|
||||
nichts zu besprechen. */
|
||||
/* DIE DREI ZAHLEN BLEIBEN -- aber nicht mehr dreimal gleich laut.
|
||||
/* ==================================================================
|
||||
DIE STANDKARTE (24.09.2026)
|
||||
==================================================================
|
||||
|
||||
"angesehen" und "noch offen" sind zwei Seiten derselben Zahl
|
||||
(zusammen ergeben sie das Ganze). Der Balken darueber zeigt sie
|
||||
ohnehin schon; hier stehen sie als Beleg daneben.
|
||||
Filipe: "mach das bitte viel krasser und viel geiler. die
|
||||
aufgaben die wir verteilen sollen da auch zu sehen sein und so.
|
||||
viel uebersichtlicher, viel moderner."
|
||||
|
||||
"verschieden gesehen" ist die einzige, die zu einer HANDLUNG
|
||||
fuehrt -- dort lohnt das Gespraech. Deshalb faellt sie auf,
|
||||
sobald es etwas gibt. Steht dort eine Null, tritt sie zurueck:
|
||||
Eine Null, die aussieht wie eine Warnung, ist Laerm, und bei
|
||||
sechs Leuten sechsmal derselbe Laerm. */
|
||||
WAS VORHER DASTAND: sechs Kacheln mit je drei Zahlenkaesten --
|
||||
und bei fuenf davon exakt dieselben drei Zahlen: 0 angesehen,
|
||||
68 noch offen, 0 verschieden gesehen. Achtzehn Kaesten fuer eine
|
||||
einzige Auskunft, naemlich: hier ist noch nichts passiert. Und
|
||||
die Aufgaben, die Filipe eine Handbreit darunter verteilt,
|
||||
kamen auf der Kachel derselben Person gar nicht vor.
|
||||
|
||||
DIE FRAGE AN DIESE LISTE ist nicht "wie viele Punkte hat wer".
|
||||
Sie lautet: WEN NEHME ICH MIR JETZT VOR? Darauf antworten drei
|
||||
Dinge, und in dieser Reihenfolge stehen sie jetzt da:
|
||||
|
||||
1. WER -- Ring, Name, Rolle. Der Ring traegt den Anteil in
|
||||
seiner Mitte: Form und Zahl an derselben Stelle, statt
|
||||
eines Balkens ueber die Breite und dreier Kaesten darunter.
|
||||
2. WAS LIEGT AN -- offene Aufgaben, ueberfaellige, und die
|
||||
naechste mit Namen und Frist. Der Teil, den Filipe
|
||||
vermisst hat.
|
||||
3. WIE WEIT -- "46 von 68 angesehen" als feine Zeile, und
|
||||
"verschieden gesehen" nur dann, wenn es dort etwas gibt.
|
||||
|
||||
DIE DREI BILANZ-KAESTEN SIND WEG, nicht verschoben. Zwei davon
|
||||
("angesehen", "noch offen") waren zwei Seiten derselben Zahl --
|
||||
zusammen ergaben sie immer das Ganze. Der Ring zeigt dasselbe
|
||||
ohne Rechnung, und "46 von 68" nennt beide Zahlen in einer
|
||||
Zeile. Die dritte steht nur noch da, wenn sie etwas sagt.
|
||||
================================================================= */
|
||||
const kopf = el('span', 'e-person__kopf');
|
||||
|
||||
/* DER RING. Umfang 100 -- deshalb laesst sich der Anteil in Prozent
|
||||
unmittelbar als Strichlaenge setzen ("68 100"), ohne Umrechnung
|
||||
und ohne eine Grafik je Stand. r = 100 / (2 * PI) = 15,9155.
|
||||
|
||||
KEINE AMPELFARBE. Was "genug" ist, haengt davon ab, wie lange
|
||||
jemand dabei ist; eine Schwelle waere geraten und bei der
|
||||
naechsten Person falsch. Der Ring sagt WIE WEIT und urteilt
|
||||
nicht. Geurteilt wird nur dort, wo es einen Massstab gibt, der
|
||||
nicht geraten ist: bei einer ueberfaelligen Frist. */
|
||||
const ring = el('span', 'e-ring');
|
||||
ring.setAttribute('role', 'img');
|
||||
ring.setAttribute('aria-label', gesamt > 0
|
||||
? `${gesetzt} von ${gesamt} angesehen (${anteil} Prozent)`
|
||||
: 'noch nichts einzuschätzen');
|
||||
if (gesamt > 0 && gesetzt >= gesamt) ring.dataset.voll = 'ja';
|
||||
/* BEI NULL PROZENT DARF NICHTS ZU SEHEN SEIN (gemessen am
|
||||
Bildschirmfoto). Der Bogen hat runde Enden -- damit zeichnet
|
||||
schon "0 100" einen kleinen Punkt auf zwoelf Uhr. Der sieht aus
|
||||
wie ein Staubkorn auf dem Bildschirm oder wie ein Rest vom
|
||||
Zeichnen, nicht wie "hier ist noch nichts". Die Ecke wird
|
||||
deshalb stumpf, solange der Anteil null ist. */
|
||||
if (anteil <= 0) ring.dataset.leer = 'ja';
|
||||
const SVG_NS = 'http://www.w3.org/2000/svg';
|
||||
const bild = document.createElementNS(SVG_NS, 'svg');
|
||||
bild.setAttribute('viewBox', '0 0 36 36');
|
||||
bild.setAttribute('aria-hidden', 'true');
|
||||
bild.setAttribute('class', 'e-ring__bild');
|
||||
const spur = document.createElementNS(SVG_NS, 'circle');
|
||||
const bogen = document.createElementNS(SVG_NS, 'circle');
|
||||
for (const [kreis, klasse] of [[spur, 'e-ring__spur'], [bogen, 'e-ring__bogen']]) {
|
||||
kreis.setAttribute('class', klasse);
|
||||
kreis.setAttribute('cx', '18');
|
||||
kreis.setAttribute('cy', '18');
|
||||
kreis.setAttribute('r', '15.9155');
|
||||
kreis.setAttribute('fill', 'none');
|
||||
bild.append(kreis);
|
||||
}
|
||||
bogen.setAttribute('stroke-dasharray', Math.max(0, Math.min(100, anteil)) + ' 100');
|
||||
ring.append(bild);
|
||||
const ringZahl = el('span', 'e-ring__zahl', gesamt > 0 ? String(anteil) : '–');
|
||||
ring.append(ringZahl);
|
||||
if (gesamt > 0) ring.append(el('span', 'e-ring__prozent', '%'));
|
||||
kopf.append(ring);
|
||||
|
||||
const wer = el('span', 'e-person__wer');
|
||||
wer.append(el('span', 'e-person__name', p.name));
|
||||
wer.append(el('span', 'e-person__rolle', p.rolle_name));
|
||||
kopf.append(wer);
|
||||
k.append(kopf);
|
||||
|
||||
/* ==== WAS LIEGT BEI DIESER PERSON? ============================
|
||||
|
||||
Der Platz wird hier angelegt und erst gefuellt, wenn die
|
||||
Aufgabenliste da ist: Die Kacheln entstehen frueher als der
|
||||
Abruf. Stuende hier der Stand von jetzt, waere die Zeile beim
|
||||
ersten Aufbau immer leer -- und fuellte sich erst beim
|
||||
naechsten Klick. `aufgabenHolen()` zieht sie nach. */
|
||||
const auftrag = el('span', 'e-person__auftrag');
|
||||
auftrag.dataset.fuer = String(p.id);
|
||||
k.append(auftrag);
|
||||
auftragZeichnen(auftrag, p.id);
|
||||
|
||||
/* ==== DER FUSS: die feine Zeile ============================== */
|
||||
const fuss = el('span', 'e-person__fuss');
|
||||
const stand = el('span', 'e-person__stand');
|
||||
const standZahl = el('span', 'e-person__stand-zahl', String(gesetzt));
|
||||
stand.append(standZahl);
|
||||
stand.append(el('span', 'e-person__stand-rest', ` von ${gesamt} angesehen`));
|
||||
if (gesamt > 0 && gesetzt >= gesamt) stand.dataset.voll = 'ja';
|
||||
fuss.append(stand);
|
||||
|
||||
/* "verschieden gesehen" ist die einzige Zahl dieser Seite, die zu
|
||||
einer HANDLUNG fuehrt -- dort lohnt das Gespraech. Deshalb faellt
|
||||
sie auf, sobald es etwas gibt. Steht dort eine Null, steht sie
|
||||
gar nicht mehr da: Eine Null, die aussieht wie eine Warnung, ist
|
||||
Laerm -- und bei sechs Leuten sechsmal derselbe Laerm. */
|
||||
const abw = Number(p.abweichungen) || 0;
|
||||
const a = bilanzZahl(gesetzt, 'angesehen',
|
||||
gesamt && gesetzt >= gesamt ? 'gut' : 'offen');
|
||||
const o = bilanzZahl(Math.max(0, gesamt - gesetzt), 'noch offen', 'offen');
|
||||
const v = bilanzZahl(abw, 'verschieden gesehen',
|
||||
abw ? 'verbessern' : 'ruhig',
|
||||
abw
|
||||
? 'Hier lohnt das Gespräch – nicht dort, wo ihr einig seid.'
|
||||
: 'Ihr seht es bisher überall gleich.');
|
||||
if (!abw) v.kasten.dataset.still = 'ja';
|
||||
zahlen.append(a.kasten, o.kasten, v.kasten);
|
||||
/* Die Kachel merkt sich ihre Ziffern -- daran zieht
|
||||
zaehlerNachziehen() sie nach, ohne die Liste neu zu holen. */
|
||||
personZahlen.set(p.id, { angesehen: a.ziffer, offen: o.ziffer, kasten: a.kasten });
|
||||
k.append(zahlen);
|
||||
if (abw) {
|
||||
const marke = el('span', 'e-person__abw', `${abw} verschieden gesehen`);
|
||||
marke.title = 'Hier lohnt das Gespräch – nicht dort, wo ihr einig seid.';
|
||||
fuss.append(marke);
|
||||
}
|
||||
if (p.veraltet) {
|
||||
const z = el('span', 'e-person__zahl e-person__zahl--alt',
|
||||
const z = el('span', 'e-person__alt',
|
||||
`${p.veraltet} älter als ${lage.verblasst_nach} Tage`);
|
||||
z.title = 'Eine alte Einschätzung ist keine Einschätzung mehr.';
|
||||
k.append(z);
|
||||
fuss.append(z);
|
||||
}
|
||||
k.append(fuss);
|
||||
|
||||
/* Die Kachel merkt sich ihre beweglichen Teile -- daran zieht
|
||||
zaehlerNachziehen() sie nach, ohne die Liste neu zu holen. Ohne
|
||||
das stuende auf der Kachel weiter die Zahl von vorhin, waehrend
|
||||
die Karte darunter schon die neue zeigt: zwei Wahrheiten auf
|
||||
einem Bildschirm, und die falsche oben. */
|
||||
personZahlen.set(p.id, { ring, bogen, ringZahl, stand, standZahl });
|
||||
|
||||
/* KEIN SPRUNG MEHR (23.09.2026) -- die Seite ist umgeraeumt.
|
||||
|
||||
Hier stand "Wer eine Person anklickt, will zu ihrer Karte", und
|
||||
@@ -853,6 +1057,12 @@
|
||||
if (!a.ok) return null;
|
||||
const roh = await a.json();
|
||||
alleAufgabenV = Array.isArray(roh) ? roh : (roh?.aufgaben || []);
|
||||
/* UND DIE KACHELN ERFAHREN ES SOFORT (24.09.2026). Sie tragen
|
||||
seit heute die offenen Aufgaben ihrer Person; diese Zeile
|
||||
steht bewusst HIER und nicht an den vier Aufrufstellen -- wer
|
||||
die Liste neu holt, hat auch den neuen Stand, und eine Stelle,
|
||||
die das Nachziehen vergisst, gibt es dann nicht. */
|
||||
auftraegeNachziehen();
|
||||
return alleAufgabenV;
|
||||
} catch { return null; }
|
||||
}
|
||||
@@ -1092,7 +1302,25 @@
|
||||
ziel.hidden = false;
|
||||
ziel.textContent = '';
|
||||
ziel.append(el('p', 'leise', 'wird geladen …'));
|
||||
if (springen) ziel.scrollIntoView({ behavior: window.sanft?.() || 'auto', block: 'start' });
|
||||
/* HIER STAND DER SPRUNG -- und er kam zu frueh (24.09.2026).
|
||||
|
||||
In diesem Augenblick enthaelt die Karte einen einzigen Satz
|
||||
("wird geladen …"). Die Seite ist damit so kurz, dass der
|
||||
Browser ueberhaupt nicht scrollen KANN: Er klemmt bei 0 ab, und
|
||||
wenn der Inhalt Sekundenbruchteile spaeter ankommt, bewegt sich
|
||||
nichts mehr. Gemessen: scrollY 0, waehrend die Karte weit unten
|
||||
stand.
|
||||
|
||||
Wer von der Talentseite mit "?zeigen=person-…" kam, landete
|
||||
deshalb oben auf der Personenliste -- also genau dort, wo der
|
||||
Link ihn NICHT hinbringen sollte. Derselbe Fehler, vor dem
|
||||
oben an der Kachel gewarnt wird ("vorher haengt sie nicht im
|
||||
Dokument und hat keine Position"), nur eine Ebene tiefer.
|
||||
|
||||
Gesprungen wird jetzt am Ende dieser Funktion, wenn die Karte
|
||||
ihre Hoehe hat. Ein zweiter, frueher Sprung waere ausserdem eine
|
||||
zweite Bewegung fuer denselben Klick -- und Bewegung ist genau
|
||||
das, worueber Filipe sich beschwert hat. */
|
||||
|
||||
const a = await hole(`/workspace/api/entwicklung/person/${id}`);
|
||||
if (!a.ok) { melde('Die Karte ließ sich nicht laden.'); return; }
|
||||
@@ -1325,10 +1553,18 @@
|
||||
/* Die Zahl auf der Personenkachel mitziehen -- sie kommt aus einer
|
||||
Liste, die nur beim Laden der Seite geholt wird. */
|
||||
zaehlerNachziehen();
|
||||
/* UND DIE HÖHE HALTEN. Ohne diese Zeile springt die Seite auch ohne
|
||||
scrollIntoView: Der Neuaufbau ändert die Höhe der Karte, und der
|
||||
Browser behält nur die Pixelzahl, nicht die Stelle. */
|
||||
if (!springen) window.scrollTo({ top: vorherY, behavior: 'instant' });
|
||||
/* JETZT ERST SPRINGEN -- die Karte steht vollstaendig und hat eine
|
||||
Hoehe, der Browser kann also wirklich dorthin scrollen.
|
||||
|
||||
UND SONST DIE HÖHE HALTEN. Ohne diese Zeile springt die Seite
|
||||
auch ohne scrollIntoView: Der Neuaufbau ändert die Höhe der
|
||||
Karte, und der Browser behält nur die Pixelzahl, nicht die
|
||||
Stelle. */
|
||||
if (springen) {
|
||||
ziel.scrollIntoView({ behavior: window.sanft?.() || 'auto', block: 'start' });
|
||||
} else {
|
||||
window.scrollTo({ top: vorherY, behavior: 'instant' });
|
||||
}
|
||||
}
|
||||
|
||||
function punktZeile(personId, pt, erwartung) {
|
||||
@@ -1588,6 +1824,37 @@
|
||||
const lage = await a.json();
|
||||
stufen = lage.stufen;
|
||||
|
||||
/* DER KATALOG WIRD ZUERST EINGERICHTET (vorgezogen am 24.09.2026).
|
||||
|
||||
Er stand weiter unten, hinter dem ganzen Leitungsteil. Das ging
|
||||
gut, solange niemand vorher eine Karte oeffnete -- "karte()"
|
||||
ruft am Ende aber "Vorlagenbrett.zeigen()", und auf dem Weg
|
||||
ueber "?zeigen=person-…" passiert genau das, bevor der Katalog
|
||||
eingerichtet ist. In der Browserkonsole stand dann
|
||||
"Vorlagenbrett: zeigen() vor einrichten()", und der Katalog
|
||||
blieb beim ersten Zeichnen leer.
|
||||
|
||||
Gefunden am 24.09.2026, weil die Gegenprobe in pruef-schritt
|
||||
neu gefasst wurde und seither ueber diesen Weg geht. Vorher
|
||||
ging KEINE Pruefung ueber "?zeigen=" -- der Weg von der
|
||||
Talentseite war ungeprueft.
|
||||
|
||||
Einrichten legt nur die Rueckrufe an (alle "() => …", also
|
||||
traege); es hat mit der Leitungssicht nichts zu tun und darf
|
||||
deshalb fuer alle und als Erstes laufen. */
|
||||
/* DER VORLAGENKATALOG STEHT FUER BEIDE DA -- Leitung und Modi.
|
||||
|
||||
Er gehoert ausdruecklich NICHT in den Leitungszweig darueber.
|
||||
Filipe: "die modis sollen bei all diesen voschlaegen auch nur
|
||||
bewerben koennen." Genau dafuer muessen sie ihn sehen. Was
|
||||
jemand damit tun darf -- uebernehmen oder sich bewerben --,
|
||||
entscheidet der Server und nicht diese Zeile.
|
||||
|
||||
Vor der Personenwahl: Der Katalog steht trotzdem schon da und
|
||||
sagt, dass noch niemand gewaehlt ist. Ein Block, der erst nach
|
||||
einem Klick erscheint, wird uebersehen. */
|
||||
katalogAnschliessen();
|
||||
|
||||
if (lage.leitung) {
|
||||
/* DIE LEUTE FUER „NOCH JEMANDEN DAZUNEHMEN" kommen aus
|
||||
derselben Antwort wie die Kacheln. Ein eigener Abruf waere
|
||||
@@ -1644,18 +1911,6 @@
|
||||
+ 'Keine Noten, keine Punktzahl.';
|
||||
}
|
||||
|
||||
/* DER VORLAGENKATALOG STEHT FUER BEIDE DA -- Leitung und Modi.
|
||||
|
||||
Er gehoert ausdruecklich NICHT in den Leitungszweig darueber.
|
||||
Filipe: "die modis sollen bei all diesen voschlaegen auch nur
|
||||
bewerben koennen." Genau dafuer muessen sie ihn sehen. Was
|
||||
jemand damit tun darf -- uebernehmen oder sich bewerben --,
|
||||
entscheidet der Server und nicht diese Zeile.
|
||||
|
||||
Vor der Personenwahl: Der Katalog steht trotzdem schon da und
|
||||
sagt, dass noch niemand gewaehlt ist. Ein Block, der erst nach
|
||||
einem Klick erscheint, wird uebersehen. */
|
||||
katalogAnschliessen();
|
||||
/* ERST DIE AUFGABEN, DANN DER KATALOG. Er markiert daran, was
|
||||
schon uebernommen wurde -- ohne diesen Abruf stuende die
|
||||
Markierung beim ersten Zeichnen nicht da, und fuer einen Modi
|
||||
|
||||
+19
-19
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -391,22 +391,22 @@
|
||||
<!-- TEXTFORM ZUERST (21.09.2026): Die Seite fragt beim Zeichnen nach
|
||||
`window.Textform`. Kaeme sie spaeter, waere der erste Eintrag ohne
|
||||
Gestaltung. Kein `defer`, damit sie wirklich vorher dasteht. -->
|
||||
<script src="assets/js/textform.js?v=202609241301"></script>
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/textform.js?v=202609241329"></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/zuteilung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/zuteilung.js?v=202609241329" 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=202609241301" defer></script>
|
||||
<script src="assets/js/aufgaben.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/vorlagenbrett.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/aufgaben.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -168,15 +168,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/automation.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/automation.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -197,16 +197,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/befinden.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/befinden.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+22
-22
@@ -12,24 +12,24 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -304,19 +304,19 @@
|
||||
<!-- TEXTFORM ZUERST (21.09.2026): Die Seite fragt beim Zeichnen nach
|
||||
`window.Textform`. Kaeme sie spaeter, waere der erste Eintrag ohne
|
||||
Gestaltung. Kein `defer`, damit sie wirklich vorher dasteht. -->
|
||||
<script src="assets/js/textform.js?v=202609241301"></script>
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/textform.js?v=202609241329"></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/ampel.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/schulung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereich.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/ampel.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/schulung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereich.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+19
-19
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</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=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bewerben.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bewerben.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -80,16 +80,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bewerbungen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bewerbungen.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -89,15 +89,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/ki.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/calls.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/calls.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+19
-19
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -592,25 +592,25 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/bereiche.js?v=202609241301"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329"></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=202609241301"></script>
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301"></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301"></script>
|
||||
<script src="assets/js/textform.js?v=202609241329"></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329"></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329"></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=202609241301"></script>
|
||||
<script src="assets/js/chat.js?v=202609241301"></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/anruf.js?v=202609241329"></script>
|
||||
<script src="assets/js/chat.js?v=202609241329"></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/content.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/content.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -179,15 +179,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/content.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/content.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="gate gate--crew">
|
||||
@@ -459,7 +459,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="assets/js/gate.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/gate.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -23,25 +23,25 @@
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609241301",
|
||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609241329",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609241301",
|
||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609241329",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609241301",
|
||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609241329",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609241301",
|
||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609241329",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
|
||||
+17
-17
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -108,15 +108,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/dateien.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/dateien.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -297,20 +297,20 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241329" 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=202609241301" defer></script>
|
||||
<script src="assets/js/entwicklung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/vorlagenbrett.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/entwicklung.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-15
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -146,14 +146,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/hilfe.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/hilfe.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="gate">
|
||||
@@ -427,7 +427,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="assets/js/gate.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/gate.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -383,15 +383,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kalender.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kalender-abo.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kalender.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kalender-abo.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -444,13 +444,13 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301"></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301"></script>
|
||||
<script src="assets/js/wahl.js?v=202609241301"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301"></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301"></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301"></script>
|
||||
<script src="assets/js/leistung.js?v=202609241301"></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329"></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329"></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329"></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329"></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329"></script>
|
||||
<script src="assets/js/leistung.js?v=202609241329"></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/material.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/material.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</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=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/material.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/material.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -453,14 +453,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/personen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/personen.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -214,16 +214,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/profil.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/profil.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</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=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/rechte.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/rechte.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/report.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/report.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -106,17 +106,17 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/ki.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/report.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/report.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -173,14 +173,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/scouting.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/scouting.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -12,21 +12,21 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/heim.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -684,16 +684,16 @@
|
||||
</p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/live.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/start.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/live.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/start.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -85,16 +85,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/ki.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/startcheck.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/startcheck.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -150,16 +150,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-14
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/support.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/support.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -123,16 +123,16 @@
|
||||
(reading 'LEITUNG')" ab -- gemessen am 24.09.2026, als diese
|
||||
Zeile beim Anlegen der Seite fehlte. Die Kopfleiste kam
|
||||
trotzdem, deshalb sah man es nur in der Browserkonsole. -->
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" 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=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/support.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/support.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -111,15 +111,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/talente.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/talente.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -110,15 +110,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/team.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/team.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</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=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/teamlage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/teamlage.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-15
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -112,15 +112,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/teilen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/teilen.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -126,14 +126,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/treff-moderation.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/treff-moderation.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</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=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/treff-regeln.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/treff-regeln.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
|
||||
Dialog "Creator anlegen". -->
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -149,16 +149,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/uebersicht.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/uebersicht.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -335,14 +335,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/live.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/unsere-seiten.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/live.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/unsere-seiten.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -144,14 +144,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/werdegang.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/werdegang.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-15
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
<!-- KOERPERKLASSE "start", NICHT "gate" (berichtigt 21.09.2026).
|
||||
`body.gate` ist die Anmeldewand: `display:flex; align-items:center`,
|
||||
@@ -75,13 +75,13 @@
|
||||
<p class="fehler" id="fehler" hidden></p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/willkommen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/willkommen.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -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=202609241301" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241301" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609241329" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609241329" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609241329" />
|
||||
<!-- 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=202609241301" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609241329" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -190,15 +190,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609241329" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wissen.js?v=202609241301" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609241329" defer></script>
|
||||
<script src="assets/js/wissen.js?v=202609241329" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user