Files
dogfather-universe/workspace/leistung.html
T
DogFatherGitandClaude Opus 5 af40b79a8c screen30 + screen32: Der leere Zustand wird ein Siegel, die Kennung ein Ausweis
--- Und ein Fund unterwegs: Cigdems Kennung war kaputt ---

`--rollen-ton` faerbt Kennung und Rollenplakette in der Kopfleiste.
Die Liste dahinter kannte admin, manager, scout und creator -- SPICY
MEDIA nicht. Die Rolle kam am 07.09. dazu, diese Liste ist nicht
mitgegangen.

Was dabei passiert, ist schlimmer als eine falsche Farbe: Die Variable
war GAR NICHT gesetzt, und `color-mix(in srgb, var(--rollen-ton) 62%,
transparent)` ist mit einer leeren Variablen ungueltig -- der Browser
wirft die ganze Deklaration weg. Nachgemessen im Browser: Hintergrund
`none`, Rand `rgb(234,243,255)` (also currentColor, weil auch die
Randfarbe fiel), Plakette grau statt rot. Cigdems Kennung war ein
weisser Kasten in einer roten Leiste.

DESHALB STEHT JETZT EINE VORGABE DAVOR, und die ist wichtiger als der
nachgetragene Eintrag: Wer die naechste Rolle anlegt und diese Liste
wieder vergisst, bekommt eine Kennung in der Hausfarbe -- nicht mehr
eine kaputte. Ein fehlender Eintrag darf zu etwas Schlichterem
fuehren, nie zu etwas Ungueltigem.

--- screen30: der leere Zustand ---

"das muss auch viel spezieller sein und auch nicht wie alle anderen
kacheln da sondern wirklich krasser und geiler aber so dass es vom
aussehen trotzdem noch zu seite passt."

Das Gruen lief als Verlauf nach 60 Prozent ins Nichts, dahinter das
Hintergrundbild -- auf Filipes Bild scheint ein Chili mitten durch die
gute Nachricht. Eine Fassung, die nur auf der linken Haelfte
existiert, ist keine.

"Nicht wie alle anderen Kacheln" ist inhaltlich richtig: Alles andere
auf dieser Seite ist eine AUFGABE, etwas, das man noch tun muss. Das
hier ist die Quittung, dass nichts mehr offen ist. Es waere falsch,
wenn es wie eine weitere Aufgabe aussaehe. Also die Form eines
SIEGELS: die Fase sitzt rechts unten statt links oben --
spiegelverkehrt zur Kachelsprache --, links eine breite gruene
Lichtschiene wie ein Stempelrand, und der Haken ist eine gepraegte
Muenze statt eines Kreises mit einem Strich darin. Die Flaeche ist
deckend; eine gute Nachricht, durch die man das Hintergrundbild sieht,
liest sich wie ein Platzhalter.

Leise bleibt es trotzdem: gedecktes Gruen, hoechstens 14 Prozent
Flaeche, nichts pulsiert. Wer nichts offen hat, braucht kein
Feuerwerk. Kontrast gemessen: 14,47:1 (fett) und 7,39:1 (still).

--- screen32: die Kennung in der Kopfleiste ---

"das sieht schon richtig gut aus aber ich will dass es noch krasser
und spezieller aussieht."

Sie sass als flaches, abgerundetes Quadrat zwischen vier Knoepfen und
sah damit aus wie ein fuenfter Knopf, der sich nicht druecken laesst.
Sie ist aber etwas anderes: Sie sagt, WER hier ist, nicht, was man tun
kann. Jetzt die Fase des Hauses statt der Rundung (sie gehoert zur
Seite, nicht zur Knopfreihe), ein gepraegter Ring statt eines
gezeichneten Randes (Lichtkante oben, Schattenkante unten) und ein
sehr leiser Schein in der Rollenfarbe.

KEINE GROESSENAENDERUNG -- 28x28 bleibt. Die Kopfleiste ist am
06.09.2026 schon einmal an einem zusaetzlichen Element zerbrochen;
was hier waechst, drueckt dort etwas heraus.

Geprueft: pruef-workspace-seiten (18 Seiten, Ueberstand ueberall 0 px),
pruef-handy, pruef-start-ansicht, pruef-css-klassen -- alle in Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 00:34:13 +02:00

227 lines
9.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Zahlen · Spicy & Dogi</title>
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
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" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609090034" />
<link rel="stylesheet" href="assets/css/start.css?v=202609090034" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609090034" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609090034" />
<link rel="stylesheet" href="assets/css/module.css?v=202609090034" />
</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">Creator&nbsp;Workspace</a> · Zahlen</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 inhalt--breit">
<section class="kopf-zeile">
<div>
<p class="marke">Zahlen</p>
<h1 class="titel">Was wirklich passiert ist.</h1>
</div>
<div class="leistung__wahl" id="creator-wahl" hidden>
<label class="feld-schild" for="creator">Creator</label>
<select id="creator"></select>
</div>
</section>
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
<!-- DIE WOCHE IN ZAHLEN.
Jede Karte trägt die drei Dinge, die eine Kennzahl braucht
(Recherche 31.08./06.09.2026): den WERT, den VERGLEICH zur
Vorwoche und den VERLAUF als kleine Linie. Eine Zahl ohne diese
drei ist eine Eitelkeitszahl -- sie sieht nach Auskunft aus, und
man kann nichts damit entscheiden. -->
<section class="leistung-woche" id="woche" hidden>
<div class="klapp-kopf">
<p class="feldschild">Diese Woche</p>
<p class="leistung__erfassung" id="erfassung"></p>
</div>
<div class="zahlkarten" id="zahlkarten"></div>
</section>
<!-- Die Ziele als Fortschritt, nicht als Satz. -->
<section class="leistung-ziele" id="ziele-block" hidden>
<div class="klapp-kopf">
<p class="feldschild">Ziele</p>
<button type="button" class="knopf-still" id="ziele-aendern" hidden>Ziele setzen</button>
</div>
<div class="zielbalken" id="zielbalken"></div>
</section>
<!-- Die Tageszeilen. Tastaturfreundlich: Eine Woche soll in unter
einer Minute eingetragen sein. -->
<section class="leistung-tage" id="tage-block" hidden>
<div class="klapp-kopf">
<p class="feldschild">Die letzten Tage</p>
<!-- Zwei Knöpfe rechts: erst der Schalter (er ordnet die Liste),
dann die Hauptaktion. Der Schalter trägt bewusst die stille
Ausführung -- er verändert nichts an den Daten. -->
<div class="klapp-kopf__knoepfe">
<button type="button" class="knopf-still" id="tage-schalter"
aria-expanded="false" aria-controls="tagetabelle" hidden>
<span id="tage-schalter-text">Alle zeigen</span>
<svg class="klapp-pfeil" viewBox="0 0 24 24" aria-hidden="true">
<path d="m6 9.5 6 6 6-6" />
</svg>
</button>
<button type="button" class="knopf knopf--klein" id="import-oeffnen">Aus Datei einlesen</button>
</div>
</div>
<div class="tagetabelle" id="tagetabelle"></div>
</section>
<p class="fuss">
Die Zahlen kommen aus dem offiziellen Export von TikTok LIVE Backstage –
entweder von Hand eingetragen oder als Datei eingelesen. Es wird nichts
automatisch abgerufen: Dafür gibt es keine offene Schnittstelle.
</p>
</main>
<!-- Einen Tag eintragen -->
<dialog class="dialog" id="tag-dialog">
<form method="dialog" id="tag-form" class="neu neu--blank">
<h2 class="dialog__titel" id="tag-titel">Tag eintragen</h2>
<p class="dialog__unter" id="tag-unter"></p>
<div class="neu__raster">
<div>
<label class="feld-schild" for="f-diamanten">Diamanten</label>
<input id="f-diamanten" type="number" min="0" inputmode="numeric" />
</div>
<div>
<label class="feld-schild" for="f-dauer">LIVE-Dauer <span class="leise">Minuten</span></label>
<input id="f-dauer" type="number" min="0" inputmode="numeric" />
</div>
<div>
<label class="feld-schild" for="f-verweildauer">Ø Verweildauer <span class="leise">Sekunden</span></label>
<input id="f-verweildauer" type="number" min="0" inputmode="numeric" />
</div>
<div>
<label class="feld-schild" for="f-zavg">Ø Zuschauer</label>
<input id="f-zavg" type="number" min="0" inputmode="numeric" />
</div>
<div>
<label class="feld-schild" for="f-zmax">Spitze</label>
<input id="f-zmax" type="number" min="0" inputmode="numeric" />
</div>
<div>
<label class="feld-schild" for="f-schenker">Schenker</label>
<input id="f-schenker" type="number" min="0" inputmode="numeric" />
</div>
<div>
<label class="feld-schild" for="f-follower">Neue Follower</label>
<input id="f-follower" type="number" min="0" inputmode="numeric" />
</div>
</div>
<!-- Der Kontext, ohne den Zahlen in die Irre führen. -->
<div class="neu__zeile">
<label class="feld-schild" for="f-notiz">
Was war an dem Tag besonders? <span class="leise">(optional)</span>
</label>
<input id="f-notiz" maxlength="500" placeholder="z. B. PK gegen Mia, krank, Technik ausgefallen" />
</div>
<p class="fehler" id="tag-fehler" role="alert" aria-live="polite"></p>
<div class="dialog__knoepfe">
<button type="submit" class="knopf knopf--klein" id="tag-speichern">Speichern</button>
<button type="button" class="abmelden" id="tag-zu">Abbrechen</button>
<button type="button" class="abmelden abmelden--warnung" id="tag-loeschen" hidden>Zeile löschen</button>
</div>
</form>
</dialog>
<!-- Ziele setzen -->
<dialog class="dialog" id="ziele-dialog">
<form method="dialog" id="ziele-form" class="neu neu--blank">
<h2 class="dialog__titel">Ziele je Woche</h2>
<p class="dialog__unter">
Aus „mehr Reichweite" wird eine prüfbare Größe. Leer lassen heißt: kein Ziel.
</p>
<div class="neu__raster">
<div>
<label class="feld-schild" for="z-diamanten">Diamanten pro Woche</label>
<input id="z-diamanten" type="number" min="0" inputmode="numeric" />
</div>
<div>
<label class="feld-schild" for="z-tage">LIVE-Tage pro Woche</label>
<input id="z-tage" type="number" min="0" max="7" inputmode="numeric" />
</div>
<div>
<label class="feld-schild" for="z-verweildauer">Ø Verweildauer <span class="leise">Sekunden</span></label>
<input id="z-verweildauer" type="number" min="0" inputmode="numeric" />
</div>
</div>
<p class="fehler" id="ziele-fehler" role="alert" aria-live="polite"></p>
<div class="dialog__knoepfe">
<button type="submit" class="knopf knopf--klein" id="ziele-speichern">Speichern</button>
<button type="button" class="abmelden" id="ziele-zu">Abbrechen</button>
</div>
</form>
</dialog>
<!-- Aus Datei einlesen. ERST VORSCHAU, DANN ÜBERNEHMEN -->
<dialog class="dialog dialog--breit" id="import-dialog">
<form method="dialog" id="import-form" class="neu neu--blank">
<h2 class="dialog__titel">Aus dem Export einlesen</h2>
<p class="dialog__unter">
Die CSV-Datei aus TikTok LIVE Backstage. Erst siehst du, was passieren
würde – geschrieben wird erst, wenn du bestätigst. Dieselbe Datei
zweimal einzulesen richtet keinen Schaden an.
</p>
<div class="neu__zeile">
<label class="feld-schild" for="datei">Datei wählen</label>
<input id="datei" type="file" accept=".csv,text/csv,text/plain" />
</div>
<div class="import-vorschau" id="vorschau" hidden></div>
<p class="fehler" id="import-fehler" role="alert" aria-live="polite"></p>
<div class="dialog__knoepfe">
<button type="submit" class="knopf knopf--klein" id="import-los" disabled>Übernehmen</button>
<button type="button" class="abmelden" id="import-zu">Abbrechen</button>
</div>
</form>
</dialog>
<script src="assets/js/wahl.js?v=202609090034"></script>
<script src="assets/js/bereiche.js?v=202609090034"></script>
<script src="assets/js/kopf.js?v=202609090034"></script>
<script src="assets/js/glocke.js?v=202609090034"></script>
<script src="assets/js/leistung.js?v=202609090034"></script>
</body>
</html>