Teilen -> Workspace: aus fuenf Schritten wird ein Tipp

SCHRITT 4 AUS DEM VIDEO-PLAN
Filipe postet ein Video auf dem Handy. Bisher: Link kopieren, App
oeffnen, Bereich suchen, Feld finden, einfuegen. Fuenf Schritte, von
denen jeder einzelne der Grund sein kann, es "spaeter" zu machen -- und
spaeter heisst nie.

Jetzt: in TikTok auf "Teilen", DogFather waehlen, uebernehmen. Die neue
Seite workspace/teilen.html ist das Ziel dieses Tipps, eingetragen als
share_target in beiden Manifesten.

DER STOLPERSTEIN, DEN JEDE ANLEITUNG VERSCHWEIGT
Das Teilen-Ziel kennt drei Felder: title, text, url. Man baut es, testet
mit "?url=https://…" und ist fertig.

IM ECHTEN LEBEN KOMMT DER LINK IN `text`. Android-Apps -- TikTok
eingeschlossen -- teilen als reinen Text: "Sieh dir das an!
https://vm.tiktok.com/xyz/" steht dann in `text`, und `url` ist leer.
Wer nur `url` liest, hat eine Seite gebaut, die im Test funktioniert und
auf dem Handy eine leere Maske zeigt. Gesucht wird deshalb in allen drei
Feldern nach einem MUSTER, nicht nach einem Feldnamen -- und ein
Satzzeichen am Ende gehoert nicht zur Adresse.

SIE TRAEGT NICHT VON SELBST EIN. Die Seite kann nicht wissen, ob der
Griff in die Tasche gemeint war. Ein Video, das ungefragt in den
Highlights landet, muss jemand wieder loeschen -- das ist mehr Arbeit
als ein Tipp auf "Uebernehmen". Und wohin ist eine Frage, keine
Annahme: Highlights sind vorausgewaehlt, Treff und Anschlagbrett
stehen daneben.

GET UND NICHT POST. POST braeuchte einen Service Worker, der die
Anfrage abfaengt -- eine Stelle mehr, die kaputtgehen kann, und zwar
genau die unsichtbare: Man tippt auf Teilen und landet auf einer leeren
Seite. Hier wird nur ein Link geteilt, keine Datei.

GESEHEN, NICHT NUR GEZAEHLT
Das Bildschirmfoto auf 390 px zeigte einen Mangel, den keine Zahl
gemeldet haette: Das gewaehlte Ziel hob sich nur ueber Helligkeit ab.
Bei einer echten Wahl ist das zu wenig, und wer Farben schlecht
unterscheidet, sieht gar nichts. Jetzt: farbiger Streifen links,
deutlicherer Grund -- und ein HAKEN, der ohne jede Farbwahrnehmung
funktioniert.

EIN SICHERHEITSFUND NEBENBEI -- UND ER IST DER WICHTIGERE
pruef-alle-wege meldete: Von 126 schreibenden Wegen hatte genau EINER
keine Herkunftspruefung.

    POST /workspace/api/aufbewahrung/jetzt  ->  200

Eine beliebige fremde Seite kann im Browser eines angemeldeten
DogFather ein Formular dorthin abschicken; der Browser gibt das
Sitzungsplaetzchen mit, der Server fuehrt aus. Und ausgerechnet dieser
Weg: aufbewahrungLauf() LOESCHT abgelaufene Daten. Ein Aufruf zur
falschen Zeit loescht wirklich etwas, und im Protokoll sieht es aus,
als haette DogFather es selbst angestossen.

Die anderen 125 Wege hatten den Riegel -- dieser eine wurde beim
Hinzufuegen uebersehen. Genau dafuer geht die Pruefung ALLE Wege durch,
statt einer Liste zu glauben. Behoben, danach: "kein schreibender Weg
nimmt eine fremde Herkunft an".

DIE PRUEFUNG (server/pruef-teilen.mjs, 27 Pruefungen)
Auf 390 px gemessen -- diese Seite wird fast nur dort geoeffnet, eine
Messung auf 1400 px misst etwas, das niemand sieht. Geprueft wird der
Satz mit Link darin, das Satzzeichen am Ende, der Fall ohne Link
(Feld zum Einfuegen statt Fehlermeldung), das Eintragen, die Dublette,
das zweite Brett -- und dass share_target in BEIDEN Manifesten steht.
Ohne den Eintrag erscheint der Workspace gar nicht erst im Teilen-Menue,
und die ganze Seite waere unerreichbar, ohne dass eine der anderen
26 Pruefungen es merkt.

GEGENPROBE: nur `url` lesen statt aller drei Felder -- also genau die
naheliegende Fassung, die im Test funktioniert und auf dem Handy
versagt -> 8 Pruefungen rot.

Stempel 202609171416.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-17 14:17:16 +02:00
co-authored by Claude Opus 5
parent d69eb34448
commit a0d9dc38e4
36 changed files with 1107 additions and 360 deletions
+283
View File
@@ -0,0 +1,283 @@
/* =====================================================================
AUS „TEILEN" WIRD EIN TIPP (17.09.2026) — Schritt 4 des Video-Plans
Filipe postet ein Video auf dem Handy. Bisher: Link kopieren, App
öffnen, Bereich suchen, Feld finden, einfügen. Fünf Schritte, von
denen jeder der Grund sein kann, es „später" zu machen.
---------------------------------------------------------------------
DER FALL, DER DIESE PRÜFUNG RECHTFERTIGT
Das Teilen-Ziel kennt drei Felder: `title`, `text`, `url`. Man baut
es und probiert es mit `?url=https://…` aus — das geht, und man ist
fertig.
IM ECHTEN LEBEN KOMMT DER LINK ABER IN `text`. Android-Apps,
TikTok eingeschlossen, teilen als reinen Text: „Sieh dir das an!
https://vm.tiktok.com/xyz/" steht dann in `text`, und `url` ist
leer. Wer nur `url` liest, hat eine Seite gebaut, die im Test
funktioniert und auf dem Handy eine leere Maske zeigt.
Abschnitt 2 prüft genau diesen Fall — und zwar mit einem Satz
drumherum, nicht mit einer nackten Adresse.
Aufrufen mit: node server/pruef-teilen.mjs
===================================================================== */
import { mkdtempSync, rmSync, readFileSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { createServer } from "node:http";
import { portMussFreiSein } from "./helfer-port.mjs";
const PORT = await portMussFreiSein(4494, "pruef-teilen");
const TIKTOK = await portMussFreiSein(4503, "nachgebautes TikTok");
const ordner = mkdtempSync(join(tmpdir(), "ws-teilen-"));
process.env.WORKSPACE_DB = join(ordner, "workspace.db");
process.env.PORT = String(PORT);
process.env.SITE_ACCESS_SECRET = "lokaler-test";
process.env.SITE_PUBLIC_LAUNCH_AT = "2020-01-01T00:00:00+01:00";
process.env.TIKTOK_OEMBED_BASIS = `http://127.0.0.1:${TIKTOK}/oembed`;
const PNG = Buffer.from(
"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==",
"base64");
const tiktok = createServer((q, a) => {
const u = new URL(q.url, `http://127.0.0.1:${TIKTOK}`);
if (u.pathname === "/oembed") {
const wer = ((u.searchParams.get("url") || "").match(/@([^/?]+)/) || [])[1] || "";
if (!wer) { a.writeHead(404); a.end("{}"); return; }
a.writeHead(200, { "content-type": "application/json" });
a.end(JSON.stringify({
version: "1.0", type: "video",
title: "Casper erwischt den Postboten",
author_url: `https://www.tiktok.com/@${wer}`,
thumbnail_url: `http://127.0.0.1:${TIKTOK}/cover.jpg`,
}));
return;
}
if (u.pathname === "/cover.jpg") {
a.writeHead(200, { "content-type": "image/jpeg" }); a.end(PNG); return;
}
a.writeHead(404); a.end("{}");
});
await new Promise((r) => tiktok.listen(TIKTOK, "127.0.0.1", r));
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(240_000, "pruef-teilen");
await new Promise((r) => setTimeout(r, 900));
const BASIS = `http://127.0.0.1:${PORT}`;
let fehler = 0, geprueft = 0;
const melde = (t) => console.log(t);
const ok = (b, t) => { geprueft++; console.log((b ? " ok " : " FEHL ") + t); if (!b) fehler++; };
const { DatabaseSync } = await import("node:sqlite");
const { scryptSync, randomBytes } = await import("node:crypto");
const d = new DatabaseSync(process.env.WORKSPACE_DB);
const j = new Date().toISOString();
const salt = randomBytes(16).toString("hex");
const hash = scryptSync("CODE-DOGI-0001", 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,aktiv,erstellt) VALUES (?,?,?,?,?,1,?)")
.run("Filipe", "admin", hash, salt, 32768, j);
d.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 pw = await import("file:///C:/Users/qciga/Documents/Obelix/Analyse/node_modules/playwright/index.mjs");
const browser = await pw.chromium.launch();
/* AUF HANDYGRÖSSE. Diese Seite wird fast ausschliesslich dort
geoeffnet -- eine Messung auf 1400 px misst etwas, das niemand
sieht. */
const ctx = await browser.newContext({
viewport: { width: 390, height: 844 }, deviceScaleFactor: 2, isMobile: true, hasTouch: true,
});
await ctx.addCookies(keks.split("; ").map((k) => {
const [name, ...rest] = k.split("=");
return { name, value: rest.join("="), domain: "127.0.0.1", path: "/" };
}));
const seite = await ctx.newPage();
const konsolenfehler = [];
seite.on("console", (m) => { if (m.type() === "error") konsolenfehler.push(m.text()); });
seite.on("pageerror", (f) => konsolenfehler.push(String(f)));
const VIDEO = `http://127.0.0.1:${TIKTOK}/@dogfather0804/video/4711`;
const oeffne = async (frage) => {
await seite.goto(`${BASIS}/workspace/teilen.html?${frage}`, { waitUntil: "networkidle" });
await seite.waitForTimeout(900);
};
const gezeigterLink = () => seite.$eval("#url-text", (n) => n.textContent.trim()).catch(() => "");
const zahlIm = async (bereich) => {
const a = await fetch(`${BASIS}/workspace/api/bereich/${bereich}`, { headers: { cookie: keks } });
const x = await a.json().catch(() => null);
return (x?.eintraege || []).length;
};
/* =======================================================================
1. DAS SAUBERE FELD
======================================================================= */
melde("");
melde("=== 1. Wenn der Link in „url“ steht ===");
{
await oeffne(`url=${encodeURIComponent(VIDEO)}`);
ok(await gezeigterLink() === VIDEO, "der Link wird erkannt und angezeigt");
ok(!(await seite.$("#haendisch:not([hidden])")),
"und das Feld zum Einfügen bleibt weg – es gibt ja nichts einzufügen");
const bretter = await seite.$$eval(".teilen__brett", (ns) => ns.map((n) => ({
name: n.querySelector(".teilen__brett-name")?.textContent,
gewaehlt: n.getAttribute("aria-pressed"),
})));
ok(bretter.length === 3, `drei Ziele zur Auswahl (${bretter.length})`);
ok(bretter[0]?.gewaehlt === "true" && /Highlights/.test(bretter[0]?.name || ""),
"Highlights ist vorausgewählt – dort gehören Videos hin");
await seite.screenshot({ path: "server/bild-teilen.png", fullPage: true });
}
/* =======================================================================
2. DER ECHTE FALL: ein Satz mit Link darin ← der eigentliche Punkt
======================================================================= */
melde("");
melde("=== 2. Wenn TikTok einen Satz teilt ===");
{
/* GENAU SO kommt es von einem Android-Handy an: alles in `text`,
`url` leer, und die Adresse steckt mitten im Satz. */
const satz = `Sieh dir das an! ${VIDEO} #fyp`;
await oeffne(`text=${encodeURIComponent(satz)}`);
ok(await gezeigterLink() === VIDEO,
`die Adresse wird aus dem Satz herausgeholt (${await gezeigterLink()})`);
/* UND MIT EINEM PUNKT DAHINTER. „…/4711." ist keine Adresse mit
Punkt, sondern ein Satzende. */
await oeffne(`text=${encodeURIComponent(`Schau mal: ${VIDEO}.`)}`);
ok(await gezeigterLink() === VIDEO,
`ein Satzzeichen am Ende gehört nicht zur Adresse (${await gezeigterLink()})`);
/* Und im Titel, falls eine App es dort ablegt. */
await oeffne(`title=${encodeURIComponent(VIDEO)}&text=`);
ok(await gezeigterLink() === VIDEO, "auch aus dem Titel");
}
/* =======================================================================
3. GAR KEIN LINK
======================================================================= */
melde("");
melde("=== 3. Wenn nichts dabei ist ===");
{
await oeffne("text=nur%20ein%20Text%20ohne%20Adresse");
ok(!!(await seite.$("#haendisch:not([hidden])")),
"dann erscheint ein Feld zum Einfügen – kein Fehler, ein Angebot");
ok(!(await seite.$("#fund:not([hidden])")),
"und es wird keine Adresse behauptet, die es nicht gibt");
}
/* =======================================================================
4. UND ES TRÄGT WIRKLICH EIN
======================================================================= */
melde("");
melde("=== 4. Der Tipp auf „Übernehmen“ ===");
{
const vorher = await zahlIm("highlight");
const satz = `Neues Video! ${VIDEO}`;
await oeffne(`text=${encodeURIComponent(satz)}`);
/* NICHT VON SELBST. Eine Seite, die beim Öffnen einträgt, kann nicht
wissen, ob der Griff in die Tasche gemeint war. */
ok(await zahlIm("highlight") === vorher,
`allein vom Öffnen passiert nichts (${vorher})`);
await seite.click("#uebernehmen");
await seite.waitForTimeout(2500);
const nachher = await zahlIm("highlight");
ok(nachher === vorher + 1, `nach dem Tipp liegt es da (${vorher} → ${nachher})`);
const fertig = await seite.$eval("#fertig-satz", (n) => n.textContent.trim()).catch(() => "");
ok(/Angekommen/.test(fertig), `und die Seite sagt es (\u201e${fertig.slice(0, 55)}\u201c)`);
ok(/Casper erwischt den Postboten/.test(fertig),
"mitsamt dem Titel, den TikTok geliefert hat");
/* DER WEG DORTHIN steht als Knopf da -- wer teilt, will meistens
gleich sehen, wie es aussieht. */
const hin = await seite.$eval("#hin", (n) => n.getAttribute("href")).catch(() => "");
ok(/b=highlight/.test(hin), `der Knopf führt zum richtigen Brett (${hin})`);
/* ---- Und derselbe Link ein zweites Mal ---------------------------- */
await oeffne(`text=${encodeURIComponent(satz)}`);
await seite.click("#uebernehmen");
await seite.waitForTimeout(2500);
ok(await zahlIm("highlight") === nachher,
`zweimal geteilt ergibt kein zweites Video (${await zahlIm("highlight")})`);
const zweiterSatz = await seite.$eval("#fertig-satz", (n) => n.textContent.trim()).catch(() => "");
ok(/lag schon/.test(zweiterSatz), `und es steht auch da (\u201e${zweiterSatz.slice(0, 45)}\u201c)`);
}
/* =======================================================================
5. AUF EIN ANDERES BRETT
======================================================================= */
melde("");
melde("=== 5. Wohin ist eine Frage ===");
{
const vorher = await zahlIm("treff");
await oeffne(`url=${encodeURIComponent(`http://127.0.0.1:${TIKTOK}/@hasidog00804/video/99`)}`);
await seite.click('.teilen__brett[data-brett="treff"]');
await seite.waitForTimeout(300);
const gewaehlt = await seite.$$eval(".teilen__brett",
(ns) => ns.filter((n) => n.getAttribute("aria-pressed") === "true").map((n) => n.dataset.brett));
ok(gewaehlt.length === 1 && gewaehlt[0] === "treff",
`genau ein Ziel ist gewählt (${gewaehlt.join(", ")})`);
await seite.click("#uebernehmen");
await seite.waitForTimeout(2500);
ok(await zahlIm("treff") === vorher + 1,
`und es landet dort und nicht bei den Highlights (${vorher} → ${await zahlIm("treff")})`);
}
/* =======================================================================
6. DAS TEILEN-ZIEL STEHT IM MANIFEST
======================================================================= */
melde("");
melde("=== 6. Damit das Handy es überhaupt anbietet ===");
{
/* OHNE DIESEN EINTRAG erscheint der Workspace gar nicht erst im
Teilen-Menü -- die ganze Seite wäre dann unerreichbar, und die
fünf Abschnitte darüber hätten es nicht gemerkt. */
for (const datei of ["crew.webmanifest", "app.webmanifest"]) {
const m = JSON.parse(readFileSync(new URL(`../workspace/${datei}`, import.meta.url), "utf8"));
const z = m.share_target;
ok(!!z && z.action === "/workspace/teilen.html",
`${datei}: Teilen-Ziel zeigt auf die Seite (${z?.action})`);
ok(z?.method === "GET",
`${datei}: per GET – POST bräuchte einen Service Worker dazwischen (${z?.method})`);
/* ALLE DREI FELDER. Fehlte `text`, wäre genau der Fall aus
Abschnitt 2 nicht abgedeckt -- und das ist der häufigste. */
ok(z?.params?.text === "text" && z?.params?.url === "url" && z?.params?.title === "title",
`${datei}: title, text UND url werden entgegengenommen`);
}
/* UND DIE SEITE IST IN DER RECHTETAFEL. Ohne Eintrag ist sie seit
dem 11.09. für jede Rolle zu -- ein fehlender Eintrag heißt nein. */
const { SEITEN } = await import("./rechte.js");
const rollen = SEITEN["/workspace/teilen.html"] || [];
ok(rollen.length > 0, `die Seite steht in der Rechtetafel (${rollen.join(", ")})`);
ok(!rollen.includes("gast"),
"und die Community kommt nicht hin – sie darf auch keine Videos eintragen");
}
melde("");
ok(konsolenfehler.length === 0,
konsolenfehler.length ? konsolenfehler.join(" | ") : "keine Fehler in der Browserkonsole");
melde("");
melde(`${geprueft} Prüfungen, ${fehler} Fehler`);
melde(fehler ? "NICHT IN ORDNUNG" : "ALLES IN ORDNUNG");
await browser.close();
await new Promise((r) => tiktok.close(r));
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* Aufraeumrest */ }
process.exit(fehler ? 1 : 0);
+10
View File
@@ -297,6 +297,16 @@ export const SEITEN = {
steht. Wer beobachtet wird, darf auch ueber sich selbst sprechen.
Die Agentur hat diese Seite nicht -- sie hat auch keine
Entwicklungskarte. */
/* DAS ZIEL DES TEILEN-MENÜS (17.09.2026).
DIESELBEN ROLLEN WIE DIE VIDEO-ROUTE, nicht mehr: Wer ein Video
nicht eintragen darf, soll auch nicht auf einer Seite landen, die
ihm einen Knopf dafür zeigt. Ein Knopf, der mit 403 antwortet, ist
schlimmer als kein Knopf.
Die Seite selbst legt nichts an -- das tut die Route, und die
prüft ihrerseits. Das hier ist der Riegel davor, nicht statt. */
"/workspace/teilen.html": ["admin", "hand", "modi"],
"/workspace/befinden.html": ["admin", "hand", "modi"],
"/workspace/entwicklung.html": ["admin", "hand", "modi"],
+27 -1
View File
@@ -246,6 +246,27 @@ export function aufbewahrungStarten() {
DIE TAFEL ZUM ANSEHEN
===================================================================== */
/** Kommt die Anfrage von unserer eigenen Seite?
*
* DERSELBE WORTLAUT WIE IN DEN ANDEREN MODULEN und bewusst keine
* eigene Erfindung: Eine zweite, leicht andere Fassung waere eine
* zweite Wahrheit, und beim naechsten Nachschaerfen wuerde genau die
* eine vergessen.
*
* KEIN `origin` HEISST DURCHLASSEN, und das ist Absicht: Browser
* schicken das Feld bei schreibenden Anfragen immer mit. Fehlt es,
* kommt die Anfrage aus einem Werkzeug (curl, eine Pruefung) -- und
* dort ist die Sitzung ohnehin nur da, wenn jemand sie absichtlich
* mitgibt. Der Angriff, um den es geht, braucht einen Browser. */
function gleicheHerkunft(req, res, next) {
const herkunft = req.get("origin");
if (!herkunft) return next();
let erlaubt;
try { erlaubt = new URL(herkunft).host === req.get("host"); } catch { erlaubt = false; }
if (!erlaubt) return res.status(403).json({ fehler: "fremde_herkunft" });
next();
}
function nurDogFather(req, res, next) {
const person = sitzungLesen(req);
if (!person) return res.status(401).json({ fehler: "nicht_angemeldet" });
@@ -288,7 +309,12 @@ aufbewahrungRouter.get("/workspace/api/aufbewahrung", nurDogFather, (req, res) =
*
* Damit es kein schwarzer Kasten ist: Wer sehen will, ob es wirkt,
* drueckt drauf und sieht die Zahlen fallen. */
aufbewahrungRouter.post("/workspace/api/aufbewahrung/jetzt", nurDogFather, (req, res) => {
/* DER RIEGEL STEHT VOR DER RECHTEPRUEFUNG.
Reihenfolge wie im ganzen Haus: erst "kommt das von uns?", dann
"darf der das?". Andersherum waere es nicht falsch, aber die
Abweichung faellt beim Lesen auf und kostet jedes Mal einen
Moment. */
aufbewahrungRouter.post("/workspace/api/aufbewahrung/jetzt", gleicheHerkunft, nurDogFather, (req, res) => {
try {
const ergebnis = aufbewahrungLauf();
protokolliere("aufbewahrung_von_hand", {
+13 -4
View File
@@ -11,27 +11,36 @@
"dir": "ltr",
"background_color": "#0a121e",
"theme_color": "#06090f",
"share_target": {
"action": "/workspace/teilen.html",
"method": "GET",
"params": {
"title": "title",
"text": "text",
"url": "url"
}
},
"icons": [
{
"src": "/assets/img/app-symbole/workspace-192.png?v=202609171407",
"src": "/assets/img/app-symbole/workspace-192.png?v=202609171416",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/workspace-512.png?v=202609171407",
"src": "/assets/img/app-symbole/workspace-512.png?v=202609171416",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609171407",
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609171416",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609171407",
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609171416",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
+110
View File
@@ -1217,3 +1217,113 @@
color: color-mix(in srgb, var(--v-ton) 82%, #ffffff);
background: color-mix(in srgb, var(--v-ton) 20%, transparent);
}
/* =====================================================================
DIE TEILEN-SEITE (17.09.2026) — Schritt 4 aus dem Video-Plan
Ziel des Teilen-Menüs auf dem Handy. Sie wird fast ausschließlich
mit einer Hand bedient, im Stehen, direkt nach dem Posten — deshalb
große Flächen, viel Abstand und nur eine Entscheidung je Bildschirm.
===================================================================== */
.teilen {
max-width: 44rem;
margin: 0 auto;
display: flex; flex-direction: column; gap: 22px;
}
.teilen__label {
margin: 0 0 8px;
font-size: .78rem; font-weight: 650; letter-spacing: .03em;
text-transform: uppercase;
color: var(--text-still);
}
/* WAS ANGEKOMMEN IST. Steht ganz oben und ist umbrechbar: Eine
TikTok-Adresse ist länger als ein Handybildschirm, und eine Adresse,
die rechts abgeschnitten ist, beantwortet die Frage „hab ich den
richtigen Link erwischt?" nicht. */
.teilen__fund {
padding: 16px 18px;
border: 1px solid var(--rand);
background: color-mix(in srgb, var(--tinte) 94%, #ffffff 6%);
}
.teilen__url {
margin: 0;
font-size: .86rem; line-height: 1.5;
color: var(--text-leise);
overflow-wrap: anywhere;
}
/* WOHIN. Untereinander und nicht nebeneinander: Drei Knöpfe in einer
Reihe sind auf 360 px drei schmale Streifen, und der Satz darunter
passt in keinen davon. */
.teilen__bretter {
display: flex; flex-direction: column; gap: 10px;
}
.teilen__brett {
display: flex; flex-direction: column; gap: 3px;
width: 100%;
padding: 14px 16px; text-align: start;
font: inherit; cursor: pointer;
border: 1px solid var(--rand);
border-radius: 10px;
background: color-mix(in srgb, var(--tinte) 96%, #ffffff 4%);
color: var(--text-leise);
transition: border-color .16s ease, background .16s ease;
}
.teilen__brett:hover { border-color: var(--rand-hell); }
.teilen__brett:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
/* GEWÄHLT — und das muss man SEHEN.
Im Bildschirmfoto auf 390 px war der Unterschied ein Hauch heller,
mehr nicht. Bei einer echten Wahl (wohin geht das Video?) ist das zu
wenig — und wer Farben schlecht unterscheidet, sieht gar nichts.
Deshalb drei Dinge zusammen statt eines allein: ein farbiger Streifen
links, ein deutlicherer Grund — und ein HAKEN. Der Haken ist der
Teil, der ohne jede Farbwahrnehmung funktioniert. */
.teilen__brett[aria-pressed="true"] {
border-color: color-mix(in srgb, var(--akzent) 45%, var(--rand-hell));
background: rgba(255, 255, 255, .08);
color: var(--text);
box-shadow: inset 3px 0 0 0 var(--akzent);
}
.teilen__brett[aria-pressed="true"] .teilen__brett-name::after {
content: " ✓";
color: var(--akzent);
font-weight: 700;
}
.teilen__brett-name { font-size: .95rem; font-weight: 700; }
.teilen__brett-satz { font-size: .8rem; color: var(--text-still); }
.teilen__knoepfe {
display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
}
.teilen__knoepfe .knopf { min-width: 11rem; }
/* DAS FELD ZUM EINFÜGEN. Es erscheint nur, wenn gar kein Link dabei
war -- als Angebot, nicht als Strafe. */
.teilen__haendisch input {
width: 100%; box-sizing: border-box;
padding: 13px 14px;
font: inherit; font-size: 1rem; /* 16 px: darunter zoomt iOS beim Tippen */
color: var(--text);
background: color-mix(in srgb, var(--tinte) 92%, #ffffff 8%);
border: 1px solid var(--rand-hell);
border-radius: 10px;
}
.teilen__haendisch input:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
.teilen__fertig {
padding: 18px;
border: 1px solid var(--rand-hell);
background: color-mix(in srgb, var(--tinte) 92%, #ffffff 8%);
display: flex; flex-direction: column; gap: 16px;
}
.teilen__fertig-satz {
margin: 0; font-size: .95rem; line-height: 1.6; color: var(--text);
}
@media (prefers-reduced-motion: reduce) {
.teilen__brett { transition: none; }
}
+180
View File
@@ -0,0 +1,180 @@
/* =====================================================================
AUS „TEILEN" WIRD EIN TIPP (17.09.2026) — Schritt 4 des Video-Plans
Filipe: „damit meine videos auch da auf der app rein kommen … sobald
ich ein video poste erscheint es sofort in der app."
Diese Seite ist das Ziel des Teilen-Menüs auf dem Handy. Sie liest,
was angekommen ist, zeigt es und trägt es auf Tipp ein.
---------------------------------------------------------------------
DER STOLPERSTEIN, DEN JEDE ANLEITUNG VERSCHWEIGT
Das Teilen-Ziel im Manifest kennt drei Felder: `title`, `text`,
`url`. Man erwartet, dass der Link in `url` steht.
TUT ER MEISTENS NICHT. Android-Apps – TikTok eingeschlossen – teilen
in aller Regel als reinen Text: `text` enthält dann einen Satz, in
dem die Adresse irgendwo drinsteht („Sieh dir das an!
https://vm.tiktok.com/xyz/"), und `url` ist leer. Wer nur `url`
liest, bekommt eine leere Seite und weiß nicht, warum.
Deshalb wird in ALLEN drei Feldern gesucht, und zwar nach einem
Muster, nicht nach einem Feldnamen.
---------------------------------------------------------------------
UND SIE TRÄGT NICHT VON SELBST EIN
Sie kann nicht wissen, ob der Griff in die Tasche gemeint war. Ein
Video, das ungefragt in den Highlights landet, muss jemand wieder
löschen — und das ist mehr Arbeit als ein Tipp auf „Übernehmen".
===================================================================== */
(() => {
'use strict';
const $ = (id) => document.getElementById(id);
const el = (art, klasse, text) => {
const n = document.createElement(art);
if (klasse) n.className = klasse;
if (text !== undefined) n.textContent = text;
return n;
};
const melde = (t) => { const f = $('fehler'); if (f) f.textContent = t || ''; };
/* WOHIN ES GEHEN KANN. Highlights zuerst und vorausgewählt – dort
gehören Videos hin. Die beiden anderen sind die Fälle, in denen
ein Clip etwas anderes ist: eine Antwort auf einen Wunsch oder
eine Ansage. */
const BRETTER = [
{ wert: 'highlight', name: 'Highlights', satz: 'Die Videos der Community.' },
{ wert: 'treff', name: 'Der Treff', satz: 'Wenn es eher ein Gesprächsanlass ist.' },
{ wert: 'anschlag', name: 'Anschlagbrett', satz: 'Wenn es eine Ansage ist.' },
];
let brett = 'highlight';
/* ---------------------------------------------------------------------
DEN LINK FINDEN
------------------------------------------------------------------- */
/** Die erste Adresse in einem Text. Ohne abschliessende Satzzeichen —
* „… https://vm.tiktok.com/xyz/." endet nicht auf einen Punkt. */
function adresseAus(text) {
const treffer = String(text || '').match(/https?:\/\/[^\s<>"']+/i);
if (!treffer) return '';
return treffer[0].replace(/[.,;:!?)\]]+$/, '');
}
/** Aus dem, was das Teilen-Menü geschickt hat. */
function geteilterLink() {
const p = new URLSearchParams(location.search);
/* IN DIESER REIHENFOLGE: `url` ist das saubere Feld, wenn es
gefüllt ist. `text` ist der Normalfall bei Android. `title`
enthält bei manchen Apps den Link, wenn sonst nichts da ist. */
for (const feld of ['url', 'text', 'title']) {
const a = adresseAus(p.get(feld));
if (a) return a;
}
return '';
}
/* ---------------------------------------------------------------------
DIE SEITE
------------------------------------------------------------------- */
function brettwahlBauen() {
const ziel = $('bretter');
ziel.textContent = '';
for (const b of BRETTER) {
const k = el('button', 'teilen__brett');
k.type = 'button';
k.dataset.brett = b.wert;
k.setAttribute('aria-pressed', String(brett === b.wert));
k.append(el('span', 'teilen__brett-name', b.name));
k.append(el('span', 'teilen__brett-satz', b.satz));
k.addEventListener('click', () => {
brett = b.wert;
for (const x of ziel.querySelectorAll('.teilen__brett')) {
x.setAttribute('aria-pressed', String(x.dataset.brett === brett));
}
});
ziel.append(k);
}
}
async function uebernehmen(url) {
const knopf = $('uebernehmen');
knopf.disabled = true;
const alterText = knopf.textContent;
knopf.textContent = 'wird geholt …';
melde('');
try {
const a = await fetch(`/workspace/api/bereich/${brett}/video`, {
method: 'POST',
credentials: 'same-origin',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ url }),
});
const daten = await a.json().catch(() => null);
if (!a.ok) {
melde(daten?.fehler || 'Das hat nicht geklappt.');
knopf.disabled = false;
knopf.textContent = alterText;
return;
}
/* FERTIG. Der Weg dorthin steht als Knopf da – wer teilt, will
meistens gleich sehen, wie es aussieht. */
$('fund').hidden = true;
$('wahl').hidden = true;
$('knoepfe').hidden = true;
$('haendisch').hidden = true;
const name = BRETTER.find((b) => b.wert === brett)?.name || brett;
$('fertig-satz').textContent = daten?.schon
? `Das Video lag schon bei „${name}“ – es wurde kein zweites angelegt.`
: `Angekommen bei „${name}“.`
+ (daten?.titel ? ` Titel: „${daten.titel}“` : '');
$('hin').href = `bereich.html?b=${encodeURIComponent(brett)}`;
$('fertig').hidden = false;
} catch {
melde('Keine Verbindung. Versuch es gleich noch einmal.');
knopf.disabled = false;
knopf.textContent = alterText;
}
}
function los() {
const teilen = $('teilen');
const link = geteilterLink();
$('ladezeile').hidden = true;
teilen.setAttribute('aria-busy', 'false');
brettwahlBauen();
$('wahl').hidden = false;
$('knoepfe').hidden = false;
if (link) {
$('url-text').textContent = link;
$('fund').hidden = false;
} else {
/* KEIN LINK DABEI. Das ist kein Fehler – manche Apps teilen nur
einen Text ohne Adresse, und manchmal kommt jemand einfach so
auf diese Seite. Ein Feld zum Einfügen ist die freundlichere
Antwort als eine Meldung. */
$('haendisch').hidden = false;
$('eingabe').focus();
}
$('uebernehmen').addEventListener('click', () => {
const url = link || $('eingabe')?.value?.trim();
if (!url) { melde('Da fehlt noch der Link zum Video.'); $('eingabe')?.focus(); return; }
uebernehmen(url);
});
/* Enter im Feld tut dasselbe wie der Knopf. Wer auf dem Handy
tippt, drückt die grüne Taste und nicht daneben. */
$('eingabe')?.addEventListener('keydown', (e) => {
if (e.key === 'Enter') { e.preventDefault(); $('uebernehmen').click(); }
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', los);
} else { los(); }
})();
+12 -12
View File
@@ -12,19 +12,19 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -291,10 +291,10 @@
</form>
</dialog>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/aufgaben.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/aufgaben.js?v=202609171416" defer></script>
</body>
</html>
+13 -13
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -168,10 +168,10 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/automation.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/automation.js?v=202609171416" defer></script>
</body>
</html>
+12 -12
View File
@@ -7,14 +7,14 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -105,9 +105,9 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/befinden.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/befinden.js?v=202609171416" defer></script>
</body>
</html>
+17 -17
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -224,14 +224,14 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/checkliste.js?v=202609171407" defer></script>
<script src="assets/js/ampel.js?v=202609171407" defer></script>
<script src="assets/js/schulung.js?v=202609171407" defer></script>
<script src="assets/js/vorlagen.js?v=202609171407" defer></script>
<script src="assets/js/bereich.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/checkliste.js?v=202609171416" defer></script>
<script src="assets/js/ampel.js?v=202609171416" defer></script>
<script src="assets/js/schulung.js?v=202609171416" defer></script>
<script src="assets/js/vorlagen.js?v=202609171416" defer></script>
<script src="assets/js/bereich.js?v=202609171416" defer></script>
</body>
</html>
+14 -14
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -89,11 +89,11 @@
</main>
<script src="assets/js/ki.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/calls.js?v=202609171407" defer></script>
<script src="assets/js/ki.js?v=202609171416" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/calls.js?v=202609171416" defer></script>
</body>
</html>
+13 -13
View File
@@ -12,26 +12,26 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -341,10 +341,10 @@
</form>
</dialog>
<script src="assets/js/bereiche.js?v=202609171407"></script>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407"></script>
<script src="assets/js/glocke.js?v=202609171407"></script>
<script src="assets/js/chat.js?v=202609171407"></script>
<script src="assets/js/bereiche.js?v=202609171416"></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416"></script>
<script src="assets/js/glocke.js?v=202609171416"></script>
<script src="assets/js/chat.js?v=202609171416"></script>
</body>
</html>
+15 -15
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/content.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/content.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -179,12 +179,12 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/checkliste.js?v=202609171407" defer></script>
<script src="assets/js/vorlagen.js?v=202609171407" defer></script>
<script src="assets/js/content.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/checkliste.js?v=202609171416" defer></script>
<script src="assets/js/vorlagen.js?v=202609171416" defer></script>
<script src="assets/js/content.js?v=202609171416" defer></script>
</body>
</html>
+5 -5
View File
@@ -36,15 +36,15 @@
<link rel="preload" as="image" href="assets/img/buehne/crew-gate-hoch-580.webp"
type="image/webp" media="(max-width: 899px)" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609171416" />
</head>
<body class="gate gate--crew">
@@ -339,6 +339,6 @@
</main>
</div>
<script src="assets/js/gate.js?v=202609171407" defer></script>
<script src="assets/js/gate.js?v=202609171416" defer></script>
</body>
</html>
+13 -4
View File
@@ -11,27 +11,36 @@
"dir": "ltr",
"background_color": "#0a121e",
"theme_color": "#06090f",
"share_target": {
"action": "/workspace/teilen.html",
"method": "GET",
"params": {
"title": "title",
"text": "text",
"url": "url"
}
},
"icons": [
{
"src": "/assets/img/app-symbole/crew-192.png?v=202609171407",
"src": "/assets/img/app-symbole/crew-192.png?v=202609171416",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/crew-512.png?v=202609171407",
"src": "/assets/img/app-symbole/crew-512.png?v=202609171416",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609171407",
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609171416",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609171407",
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609171416",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
+13 -13
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -108,10 +108,10 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/dateien.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/dateien.js?v=202609171416" defer></script>
</body>
</html>
+12 -12
View File
@@ -7,14 +7,14 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -102,9 +102,9 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/entwicklung.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/entwicklung.js?v=202609171416" defer></script>
</body>
</html>
+4 -4
View File
@@ -30,9 +30,9 @@
<link rel="preload" as="image" href="assets/img/buehne/gate-hoch-580.webp"
type="image/webp" media="(max-width: 899px)" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
</head>
<body class="gate">
@@ -401,6 +401,6 @@
</main>
</div>
<script src="assets/js/gate.js?v=202609171407" defer></script>
<script src="assets/js/gate.js?v=202609171416" defer></script>
</body>
</html>
+14 -14
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -377,11 +377,11 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/kalender.js?v=202609171407" defer></script>
<script src="assets/js/kalender-abo.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/kalender.js?v=202609171416" defer></script>
<script src="assets/js/kalender-abo.js?v=202609171416" defer></script>
</body>
</html>
+13 -13
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -444,10 +444,10 @@
</form>
</dialog>
<script src="assets/js/wahl.js?v=202609171407"></script>
<script src="assets/js/bereiche.js?v=202609171407"></script>
<script src="assets/js/kopf.js?v=202609171407"></script>
<script src="assets/js/glocke.js?v=202609171407"></script>
<script src="assets/js/leistung.js?v=202609171407"></script>
<script src="assets/js/wahl.js?v=202609171416"></script>
<script src="assets/js/bereiche.js?v=202609171416"></script>
<script src="assets/js/kopf.js?v=202609171416"></script>
<script src="assets/js/glocke.js?v=202609171416"></script>
<script src="assets/js/leistung.js?v=202609171416"></script>
</body>
</html>
+13 -13
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -423,10 +423,10 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/personen.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/personen.js?v=202609171416" defer></script>
</body>
</html>
+14 -14
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -214,11 +214,11 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/steckbrief.js?v=202609171407" defer></script>
<script src="assets/js/profil.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/steckbrief.js?v=202609171416" defer></script>
<script src="assets/js/profil.js?v=202609171416" defer></script>
</body>
</html>
+12 -12
View File
@@ -7,14 +7,14 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -134,9 +134,9 @@
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/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/rechte.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/rechte.js?v=202609171416" defer></script>
</body>
</html>
+14 -14
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/report.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/report.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -106,11 +106,11 @@
</main>
<script src="assets/js/ki.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/report.js?v=202609171407" defer></script>
<script src="assets/js/ki.js?v=202609171416" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/report.js?v=202609171416" defer></script>
</body>
</html>
+13 -13
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -173,10 +173,10 @@
</div>
</div>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/scouting.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/scouting.js?v=202609171416" defer></script>
</body>
</html>
+12 -12
View File
@@ -12,21 +12,21 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/heim.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -674,10 +674,10 @@
</p>
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/start.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/start.js?v=202609171416" defer></script>
</body>
</html>
+14 -14
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -85,11 +85,11 @@
</main>
<script src="assets/js/ki.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/startcheck.js?v=202609171407" defer></script>
<script src="assets/js/ki.js?v=202609171416" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/startcheck.js?v=202609171416" defer></script>
</body>
</html>
+14 -14
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -146,11 +146,11 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/auskunft.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/steckbrief.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/auskunft.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/steckbrief.js?v=202609171416" defer></script>
</body>
</html>
+12 -12
View File
@@ -7,14 +7,14 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -94,9 +94,9 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/talente.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/talente.js?v=202609171416" defer></script>
</body>
</html>
+13 -13
View File
@@ -7,20 +7,20 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/team.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/team.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -110,10 +110,10 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/team.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/team.js?v=202609171416" defer></script>
</body>
</html>
+12 -12
View File
@@ -7,20 +7,20 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/team.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/team.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<!-- `data-buehne` steht hier fest und nicht im Skript: Die Kachel zu
@@ -84,9 +84,9 @@
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/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/teamlage.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/teamlage.js?v=202609171416" defer></script>
</body>
</html>
+120
View File
@@ -0,0 +1,120 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Video übernehmen · Spicy &amp; Dogi</title>
<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=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
<div class="schleier" aria-hidden="true"></div>
<header class="kopfleiste">
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
<path d="M14.5 5.5 8 12l6.5 6.5" />
</svg>
<span class="zurueck-knopf__text">Zurück</span>
</button>
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Team&nbsp;Dogi</a> · Video übernehmen</span></p>
<div class="kopfleiste__rechts">
<span class="wer" id="wer">…</span>
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
</div>
</header>
<main class="inhalt">
<!-- ==================================================================
AUS „TEILEN" WIRD EIN TIPP (17.09.2026)
Schritt 4 aus dem Video-Plan.
Filipe postet ein Video auf dem Handy. Bisher hätte er den Link
kopieren, die App öffnen, den richtigen Bereich suchen und das
Feld finden müssen – fünf Schritte, von denen jeder einzelne der
Grund sein kann, es später zu machen. Und später heißt nie.
Jetzt: in TikTok auf „Teilen", „DogFather" wählen, fertig. Diese
Seite ist das Ziel dieses Tipps.
WARUM SIE NICHT SOFORT EINTRÄGT: Weil sie nicht wissen kann, ob
der Griff in die Tasche gemeint war. Ein Video, das ungefragt in
den Highlights landet, muss jemand wieder löschen – und das ist
mehr Arbeit als ein Tipp auf „Übernehmen". Sie zeigt also, was
sie verstanden hat, und wartet auf eine Bestätigung.
WOHIN, IST EINE FRAGE UND KEINE ANNAHME: Highlights sind
vorausgewählt, weil dort die Videos hingehören. Aber ein Clip
kann auch eine Antwort auf einen Wunsch sein.
============================================================== -->
<section class="kopf-zeile">
<div>
<p class="marke">Geteilt</p>
<h1 class="titel">Video übernehmen</h1>
<p class="unterzeile">
Titel und Coverbild werden von TikTok geholt – du musst nichts abtippen.
</p>
</div>
</section>
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
<section class="teilen" id="teilen" aria-busy="true">
<p class="leise" id="ladezeile">einen Moment …</p>
<!-- Was angekommen ist. Steht ganz oben, weil es die erste Frage
beantwortet: „hat er den richtigen Link erwischt?" -->
<div class="teilen__fund" id="fund" hidden>
<p class="teilen__label">Dieser Link ist angekommen:</p>
<p class="teilen__url" id="url-text"></p>
</div>
<!-- Wohin. -->
<div class="teilen__wahl" id="wahl" hidden>
<p class="teilen__label" id="wohin-label">Wohin soll es?</p>
<div class="teilen__bretter" role="group" aria-labelledby="wohin-label" id="bretter"></div>
</div>
<div class="teilen__knoepfe" id="knoepfe" hidden>
<button type="button" class="knopf" id="uebernehmen">Übernehmen</button>
<a class="schritt" href="start.html" id="abbrechen">Doch nicht</a>
</div>
<!-- Wenn gar kein Link dabei war. Kein Formular als Strafe, sondern
ein Feld zum Einfügen – man ist ja schon hier. -->
<div class="teilen__haendisch" id="haendisch" hidden>
<label class="teilen__label" for="eingabe">Link zum Video</label>
<input type="url" id="eingabe" inputmode="url" autocomplete="off"
placeholder="https://www.tiktok.com/@dogfather0804/video/…" />
</div>
<!-- Das Ergebnis. -->
<div class="teilen__fertig" id="fertig" hidden>
<p class="teilen__fertig-satz" id="fertig-satz"></p>
<div class="teilen__knoepfe">
<a class="knopf" id="hin" href="start.html">Ansehen</a>
<a class="schritt" href="start.html">Fertig</a>
</div>
</div>
</section>
</main>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/teilen.js?v=202609171416" defer></script>
</body>
</html>
+12 -12
View File
@@ -7,14 +7,14 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -126,9 +126,9 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/treff-moderation.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/treff-moderation.js?v=202609171416" defer></script>
</body>
</html>
+13 -13
View File
@@ -7,18 +7,18 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- haus.css MUSS die letzte Stilvorlage sein. Auf der Adresse des
Treffs 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -211,10 +211,10 @@
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/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/auskunft.js?v=202609171407" defer></script>
<script src="assets/js/treff-regeln.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/auskunft.js?v=202609171416" defer></script>
<script src="assets/js/treff-regeln.js?v=202609171416" defer></script>
</body>
</html>
+13 -13
View File
@@ -12,22 +12,22 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
Dialog "Creator anlegen". -->
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -149,11 +149,11 @@
</main>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/uebersicht.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/uebersicht.js?v=202609171416" defer></script>
</body>
</html>
+13 -13
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171407" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171407" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609171407" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171407" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609171416" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609171416" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/start.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609171416" />
<link rel="stylesheet" href="assets/css/module.css?v=202609171416" />
<!-- 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=202609171407" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609171416" />
</head>
<body class="start">
@@ -190,10 +190,10 @@
</main>
<script src="assets/js/wahl.js?v=202609171407" defer></script>
<script src="assets/js/bereiche.js?v=202609171407" defer></script>
<script src="assets/js/kopf.js?v=202609171407" defer></script>
<script src="assets/js/glocke.js?v=202609171407" defer></script>
<script src="assets/js/wissen.js?v=202609171407" defer></script>
<script src="assets/js/wahl.js?v=202609171416" defer></script>
<script src="assets/js/bereiche.js?v=202609171416" defer></script>
<script src="assets/js/kopf.js?v=202609171416" defer></script>
<script src="assets/js/glocke.js?v=202609171416" defer></script>
<script src="assets/js/wissen.js?v=202609171416" defer></script>
</body>
</html>