Files
dogfather-universe/workspace/personen.html
T
DogFatherGitandClaude Opus 5 cad3c4c4df screen21: Universum hinter der Zentrale, Fassung neu gewichtet
Wunsch Filipe: "ich will dass du im hintergrund dieser kachel das logo
von spicy media machst ... es soll sogar paar mal zu sehen sein, es
soll sich bewegen, schweben ... der ganze hintergrund soll wie ein
universum aussehen. und der rand wie gesagt soll rot schwarz silber und
babyblau sein, rot und babyblau soll man am meisten sehen."

DER RAND HATTE ALLE VIER FARBEN -- IN DER FALSCHEN GEWICHTUNG.
Jeden Stopp mit der Haelfte des Abstands zu seinen Nachbarn gewichtet:
Schwarz 37,5 %, Babyblau 27,5 %, Silber 22 %, ROT 13 %. Die beiden
Farben, die man am meisten sehen sollte, kamen zusammen auf 40,5 % --
Silber allein hatte mehr Platz als Rot. Im Quelltext faellt das nicht
auf: Man sieht neun silberne Stopps und denkt an Spitzlichter, nicht an
ein Fuenftel der Flaeche. Jetzt Babyblau 41,5 %, Rot 33 %, Schwarz
21,5 %, Silber 4 % -- zusammen 74,5 %, und die beiden nur 8,5 Punkte
auseinander. Silber ist auf den Treffpunkt in der Mitte zurueckgenommen,
dieselbe Stelle, an der sich im Schriftzug Chili und Husky treffen.

DAS UNIVERSUM: drei Nebel (rot unten links, babyblau oben rechts, ein
Hauch Lila als Uebergang), ein Sternenfeld aus acht gekachelten
Verlaufsebenen und fuenf schwebende Chilis. Sechs Elemente insgesamt --
Sterne als Elemente waeren neunzig Knoten fuer eine Zierde. Bewegt
werden nur `transform` und `opacity`; ein animiertes
`background-position` zwingt den Browser bei jedem Bild zum Neuzeichnen
einer Kachel mit vierzehn Hintergrundebenen.

DIE ORTE SIND GEMESSEN, NICHT GESTREUT -- und das war die eigentliche
Arbeit. Im ersten Anlauf lagen die Chilis quer ueber der Mittelspalte:
einer deckte 34,5 % der Unterzeile und 45,9 % des Lagesatzes ab, der
Kontrast fiel von 6,36:1 auf 5,87:1. Das war noch zulaessig, zwang die
Deckkraft aber auf sechs Prozent -- und damit sah man die Chilis nicht
mehr, was ausdruecklich gewuenscht war. Die bequeme Antwort waere
gewesen, sie blasser zu machen. Richtig war, sie aus dem Text
herauszunehmen: Sie stehen jetzt in den Zonen ohne Text, tragen 12 bis
17 statt 6 bis 10 Prozent und decken nachgemessen NULL Text ab. Der
verbleibende Verlust von 0,49 kommt allein vom Nebel.

AUGENSCHONEND HEISST HIER VOR ALLEM LANGSAM: Die Bahnen dauern 71 bis
118 Sekunden, die Sternendrift 240. Bei einer Kachel, die stundenlang
im Bild steht, ist eine Bewegung, die man BEMERKT, eine, die stoert.
Nichts blinkt, nichts pulsiert. Bei `prefers-reduced-motion` bleibt das
Bild stehen statt zu verschwinden -- die Einstellung heisst "weniger
Bewegung", nicht "weniger Gestaltung". Unter 700 px gehen die beiden
groessten Chilis: Bei 380 px Breite naehme der grosse ein Drittel der
Kachel ein und staende hinter dem Titel.

Nebenbei zusammengelegt: Die Innenform der Kachel (das Fasen-Polygon)
stand zweimal gleich da und steht jetzt einmal in `--k-innenform`.
Genau diese Sorte Doppelung hat mich in dieser Datei heute schon
zweimal Zeit gekostet.

Geprueft: pruef-start-ansicht (alles in Ordnung), pruef-css-klassen
(alles in Ordnung), Ueberdeckung und Kontrast im Browser nachgemessen
(Foto zurueck in eine Leinwand, WCAG-Helligkeit), Bildschirmfoto bei
doppelter Aufloesung. pruef-barrierefrei-workspace bewusst NICHT
gestartet: Der Kontrast ist hier direkt gemessen (5,87:1 gegen 4,5
gefordert), der Lauf haette 190 Sekunden gebraucht, um dasselbe zu
sagen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 23:41:01 +02:00

315 lines
16 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>Personen &amp; Zugänge · 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=202609082341" />
<link rel="stylesheet" href="assets/css/start.css?v=202609082341" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609082341" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609082341" />
<link rel="stylesheet" href="assets/css/module.css?v=202609082341" />
</head>
<body class="start">
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
Pseudo-Elements -- body hat nur ::before und ::after. -->
<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> · Personen</span></p>
<div class="kopfleiste__rechts">
<span class="wer" id="wer">…</span>
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
</div>
</header>
<!-- ====================================================================
DIE FÜNF ROLLENZEICHEN, plastisch (08.09.2026)
Filipe: "die symbole sollen auch noch viel viel viel realistischer
und geiler sein", mit genauen Vorgaben je Rolle:
peperoni rot und grün
husky silber und blaue Augen
manager gelber Stern, der glitzert
scout grünes Schild mit einer roten Peperoni darin
creator lila und silber, "was richtig geiles"
WAS SICH GRUNDSÄTZLICH ÄNDERT: Vorher trug jedes Zeichen genau EINE
Farbe (`currentColor` über `.fuell`/`.linie`). Damit lässt sich
"rot UND grün" nicht darstellen. Jedes Zeichen bekommt deshalb
eigene Verläufe — dieselbe Technik, mit der auch die Kacheln
plastisch wirken: ein heller Rand oben, die Sättigung in der Mitte,
Abdunklung unten. Das ergibt Volumen statt einer flachen Fläche.
WARUM VERLÄUFE UND KEIN DETAIL: Diese Zeichen stehen bei 22 px.
Mehr Linien werden dort zu Matsch — das stand schon beim Husky hier,
und es gilt weiter. "Realistischer" heißt bei dieser Größe also
nicht "mehr Striche", sondern LICHT: eine Form, auf die Licht fällt,
wirkt körperlich; dieselbe Form flach gefüllt wirkt wie ein
Aufkleber. Alle Verläufe laufen deshalb von oben nach unten, als
stünde das Licht über der Seite — so wie bei allem anderen hier auch.
Die Verlaufs-IDs sind mit `rs-` vorangestellt (RollenSymbol), damit
sie mit nichts kollidieren, was später dazukommt.
==================================================================== -->
<!-- NICHT `display:none` VERSTECKEN -- das war ein echter Fehler, und man
sieht ihn erst im Bild (08.09.2026).
Solange die Zeichen einfarbig waren (`currentColor` ueber CSS), war
`display:none` harmlos. Sobald sie ihre Farbe aus einem <linearGradient>
im selben <defs> holen, ist es das nicht mehr: Ein Verlauf in einem
Teilbaum, der `display:none` traegt, wird nicht ausgewertet, und ein
`<use>` darauf bekommt schlicht KEINE Fuellung. Im Bildschirmfoto
standen daraufhin fuenf Bruchstuecke -- nur die Strichlinien, keine
Flaechen. Die Zahlen sagten dazu nichts, das Sprite war ja da.
Richtig ist ein Kasten ohne Groesse: Er wird gerendert (Verlaeufe
werden also aufgeloest), nimmt aber keinen Platz ein. -->
<svg width="0" height="0" style="position:absolute;overflow:hidden" aria-hidden="true"><defs>
<linearGradient id="rs-chili-rot" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#ff8a6b"/>
<stop offset=".55" stop-color="#ef4136"/>
<stop offset="1" stop-color="#a8221c"/>
</linearGradient>
<linearGradient id="rs-chili-gruen" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#8fd66a"/>
<stop offset="1" stop-color="#3f7d33"/>
</linearGradient>
<linearGradient id="rs-silber" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#ffffff"/>
<stop offset=".42" stop-color="#cfd8e3"/>
<stop offset=".72" stop-color="#93a1b3"/>
<stop offset="1" stop-color="#5d6b7d"/>
</linearGradient>
<!-- DER STERN WIRD LILA (08.09.2026, zweite Ansage von Filipe).
Zuerst hiess es "manager: gelber stern der glitzert", dann nach
dem Bildschirmfoto: "die hauptfarbe von denen ist lila, der stern
soll so bleiben aber was gelb ist soll lila werden."
Die FORM bleibt also, nur die Farbe wechselt -- und das ist auch
stimmiger: Der Manager traegt Lila als Rollenfarbe, ein goldener
Stern daneben waere die einzige Stelle gewesen, an der Zeichen und
Rolle auseinandergehen. Die Wechsel hell/dunkel bleiben, sie sind
es, die aus einer Flaeche einen Koerper machen.
Der Name der Kennung bleibt `rs-gold`: Sie wird an mehreren
Stellen benutzt, und ein Umbenennen waere eine zweite Gelegenheit,
eine davon zu vergessen. -->
<linearGradient id="rs-gold" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#e6d6ff"/>
<stop offset=".45" stop-color="#a78bfa"/>
<stop offset="1" stop-color="#5b3fa8"/>
</linearGradient>
<linearGradient id="rs-schild" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#7fe0ae"/>
<stop offset=".5" stop-color="#3faa78"/>
<stop offset="1" stop-color="#1c5e42"/>
</linearGradient>
<linearGradient id="rs-lila" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#d9c9ff"/>
<stop offset=".38" stop-color="#a78bfa"/>
<stop offset="1" stop-color="#5b3fa8"/>
</linearGradient>
<linearGradient id="rs-lila-silber" x1="0" y1="1" x2="1" y2="0">
<stop offset="0" stop-color="#6d4fc4"/>
<stop offset=".5" stop-color="#cbd5e1"/>
<stop offset="1" stop-color="#a78bfa"/>
</linearGradient>
<radialGradient id="rs-auge" cx=".38" cy=".32" r=".85">
<stop offset="0" stop-color="#bfe9ff"/>
<stop offset=".45" stop-color="#3fa9f5"/>
<stop offset="1" stop-color="#0f4c75"/>
</radialGradient>
<!-- SPICY MEDIA — die Peperoni, rot mit grünem Stiel.
Der Stiel liegt ÜBER der Frucht und ist eine eigene Form: Als
Teil desselben Pfades hätte er die Farbe der Frucht erben müssen,
und genau das wollte Filipe nicht. -->
<g id="r-chili">
<path fill="url(#rs-chili-rot)" d="M13.4 4.6c-.6 1.4-.3 2.6.6 3.4 3 .3 5 2.6 5 5.4 0 3.4-3 6-6.8 6-4.6 0-8.2-2.9-9.7-6.7 3.7.9 6.6-.4 8-3.1.6-1.2.4-2.4-.4-3.1"/>
<path fill="none" stroke="rgba(255,255,255,.5)" stroke-width=".9" stroke-linecap="round" d="M6.2 13.9c2.4 1.9 5 2.6 7.4 2"/>
<path fill="none" stroke="url(#rs-chili-gruen)" stroke-width="1.9" stroke-linecap="round" d="M13.4 4.6c1.5-.6 2.8.1 3 1.4"/>
<path fill="none" stroke="url(#rs-chili-gruen)" stroke-width="1.7" stroke-linecap="round" d="M13.4 4.6c-.5 1.2-.3 2.3.5 3.2"/>
</g>
<!-- DOGFATHER — der Husky in Silber, mit blauen Augen.
Silhouette unverändert (sie war richtig): spitze Ohren, breiter
Kopf, schmal zulaufend. Neu ist das Licht darauf und die Augen,
die jetzt aus einem eigenen Radialverlauf kommen — ein blauer
Punkt allein sähe aus wie ein Loch, mit Lichtpunkt wirkt er nass. -->
<g id="r-husky">
<path fill="url(#rs-silber)" d="M6.3 4.2 9.6 8.9h4.8l3.3-4.7 1.1 6.2c.5 2.6-.4 5.1-2.4 6.8L12 21.2l-4.4-4c-2-1.7-2.9-4.2-2.4-6.8z"/>
<!-- DIE OHREN, dunkel ausgelegt -- daran erkennt man einen Husky
zuerst. Vorher war nur das linke angedeutet und beide gingen in
der silbernen Flaeche unter; Filipe: "der husky soll viel besser
aussehen und zu sehen sein". -->
<path fill="#2a3644" d="M6.3 4.2 9.6 8.9H7.5z"/>
<path fill="#2a3644" d="M17.7 4.2 14.4 8.9h2.1z"/>
<path fill="rgba(255,255,255,.5)" d="M7.35 5.6 9.1 8.1H8z"/>
<path fill="rgba(255,255,255,.5)" d="M16.65 5.6 14.9 8.1H16z"/>
<!-- Die Gesichtsmaske: heller Keil zwischen den Augen bis zur
Schnauze. Sie macht aus dem Umriss ein GESICHT -- ohne sie ist
es nur eine spitze Form mit zwei Punkten. -->
<path fill="rgba(255,255,255,.55)" d="M12 9.4c1.5 0 2.6 1.4 2.6 3.4S13.4 17 12 17s-2.6-2.2-2.6-4.2S10.5 9.4 12 9.4z"/>
<path fill="none" stroke="rgba(30,44,60,.75)" stroke-width="1" stroke-linecap="round" d="M9.6 8.9c-.9 1.4-1.4 2.6-1.5 4.1M14.4 8.9c.9 1.4 1.4 2.6 1.5 4.1"/>
<circle fill="url(#rs-auge)" cx="9.5" cy="13.1" r="1.15"/>
<circle fill="url(#rs-auge)" cx="14.5" cy="13.1" r="1.15"/>
<circle fill="#fff" opacity=".9" cx="9.15" cy="12.75" r=".33"/>
<circle fill="#fff" opacity=".9" cx="14.15" cy="12.75" r=".33"/>
<path fill="#2b3746" d="M12 15.4l1.5 1.1-1.5 1.4-1.5-1.4z"/>
</g>
<!-- MANAGER — der goldene Stern, der glitzert.
Das Funkeln ist ein schmaler heller Streifen, der einmal quer
über den Stern wandert. Es ist BEWUSST langsam (4,5 s) und
schwach: Ein schnelles Blinken wäre genau die aggressive Optik,
die hier nicht sein soll. Bei "weniger Bewegung" steht es still
(siehe personen.css) -- dann bleibt ein ruhiger goldener Stern. -->
<g id="r-stern">
<path fill="url(#rs-gold)" d="m12 3.4 2.6 5.6 6 .8-4.4 4.2 1.1 6-5.3-2.9-5.3 2.9 1.1-6L3.4 9.8l6-.8z"/>
<path fill="rgba(255,255,255,.45)" d="m12 3.4 2.6 5.6-2.6.7z"/>
<path class="rs-funkel" fill="rgba(255,255,255,.75)" d="m12 3.4 2.6 5.6 6 .8-4.4 4.2 1.1 6-5.3-2.9-5.3 2.9 1.1-6L3.4 9.8l6-.8z"/>
</g>
<!-- SCOUT — grünes Schild mit einer roten Peperoni darin.
Der Haken von früher ist weg: Filipe hat die Peperoni ausdrücklich
verlangt, und beides nebeneinander wäre bei 22 px Matsch. Die
Chili ist stark vereinfacht — bei dieser Größe zählt nur, dass
eine rote, gebogene Form mit grünem Stiel im Schild steht. -->
<g id="r-schutz">
<path fill="url(#rs-schild)" d="M12 3.4 5.8 5.9v5c0 3.5 2.5 6.7 6.2 8 3.7-1.3 6.2-4.5 6.2-8v-5z"/>
<path fill="rgba(255,255,255,.28)" d="M12 3.4 5.8 5.9v5c0 1.4.4 2.7 1.1 3.9L12 3.4z"/>
<path fill="url(#rs-chili-rot)" d="M13.6 8.1c-.4.9-.2 1.7.4 2.2 1.9.2 3.2 1.7 3.2 3.4 0 2.1-1.9 3.8-4.3 3.8-2.9 0-5.2-1.8-6.1-4.2 2.3.6 4.2-.3 5-2 .4-.8.3-1.5-.2-2z" transform="translate(-.6 -.9) scale(.92) translate(1 1)"/>
<path fill="none" stroke="#8fd66a" stroke-width="1.3" stroke-linecap="round" d="M12.9 7.6c.9-.4 1.7 0 1.8.8"/>
</g>
<!-- CREATOR — Lila und Silber.
Statt der alten Person-Silhouette (die aussah wie ein leeres
Benutzerbild und damit wie "niemand") jetzt ein geschliffener
Kristall: lila Kern, silberne Facetten. Er hat als einziges der
fünf Zeichen eine Innenzeichnung, und die trägt auch klein --
weil es gerade Kanten sind, keine Rundungen. -->
<g id="r-person">
<path fill="url(#rs-lila)" d="M12 2.6 20 9l-3 11.4H7L4 9z"/>
<path fill="url(#rs-lila-silber)" opacity=".85" d="M12 2.6 20 9h-5.6zM12 2.6 4 9h5.6z"/>
<path fill="rgba(255,255,255,.4)" d="M12 2.6 14.4 9H9.6z"/>
<path fill="none" stroke="rgba(216,222,233,.75)" stroke-width=".8" stroke-linejoin="round" d="M12 2.6 20 9l-3 11.4H7L4 9zM4 9h16M9.6 9 12 20.4 14.4 9"/>
</g>
</defs></svg>
<main class="inhalt inhalt--breit">
<section class="kopf-zeile">
<div>
<p class="marke">Zugänge</p>
<h1 class="titel">Personen &amp; Zugangscodes</h1>
<!-- Der Satz gilt nur für Manager und Spicy Media: Sie sehen hier
allein das Anlegen. personen.js blendet ihn dafür ein.
Er stand vorher nur im Skript (`$('unterzeile')`), und dieses
Element gab es nie -- der Aufruf war mit `&&` abgesichert und
tat deshalb schweigend nichts. Eine abgesicherte Zeile, die
ins Leere greift, sieht auf Dauer aus wie eine, die
funktioniert. -->
<p class="leise" id="unterzeile" hidden></p>
</div>
<div class="kopf-knoepfe">
<!-- Standardmäßig steht hier nur DogFather. Alle anderen kommen auf
Knopfdruck dazu – und der Knopf sagt immer, wie viele das sind,
damit niemand vergisst, dass da noch welche sind. -->
<button type="button" class="knopf-still" id="rest-schalter"
aria-expanded="false" aria-controls="liste" hidden>
<span id="rest-schalter-text">weitere 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="neu-oeffnen">Person anlegen</button>
</div>
</section>
<form class="neu" id="neu" hidden>
<div class="neu__raster">
<div>
<label class="feld-schild" for="f-name">Name</label>
<input id="f-name" name="name" maxlength="60" placeholder="z. B. Luna" required />
</div>
<div class="rollenwahl-block">
<span class="feld-schild">Rolle</span>
<!-- Kein Auswahlmenü: Bei vier Möglichkeiten ist eine sichtbare
Wahl schneller und zeigt gleich, was die Rolle bedeutet. Das
Systemmenü ließ sich ausserdem nicht gestalten. -->
<div class="rollenwahl" id="f-rolle" role="radiogroup" aria-label="Rolle"></div>
</div>
</div>
<p class="fehler" id="neu-fehler" role="alert" aria-live="polite"></p>
<div class="neu__knoepfe">
<button type="submit" class="knopf knopf--klein" id="neu-speichern">Anlegen</button>
<button type="button" class="abmelden" id="neu-abbrechen">Abbrechen</button>
</div>
</form>
<!-- Anzeige des frisch erzeugten Codes. Bewusst auffällig und mit klarem
Hinweis, dass er nur jetzt zu sehen ist. -->
<div class="code-kasten" id="code-kasten" hidden role="status" aria-live="polite">
<p class="code-kasten__schild">Zugangscode für <span id="code-name"></span></p>
<p class="code-kasten__code" id="code-wert"></p>
<p class="code-kasten__hinweis">
Dieser Code wird <strong>nur jetzt</strong> angezeigt und ist danach nicht mehr
abrufbar. Sicher weitergeben und in Bitwarden ablegen.
</p>
<div class="neu__knoepfe">
<button type="button" class="knopf knopf--klein" id="code-kopieren">Kopieren</button>
<button type="button" class="abmelden" id="code-schliessen">Verstanden, schließen</button>
</div>
</div>
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
<div id="liste" aria-busy="true"><p class="leise">Personen werden geladen …</p></div>
<!-- Das Protokoll ist Nachschlagewerk, nicht Startbild: Standardmäßig
stehen nur die letzten vier Zeilen da, alles Weitere auf Knopfdruck. -->
<section class="protokoll-block">
<div class="klapp-kopf">
<p class="feldschild">Letzte Ereignisse</p>
<button type="button" class="knopf-still" id="protokoll-schalter"
aria-expanded="false" aria-controls="protokoll" hidden>
<span id="protokoll-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>
</div>
<div id="protokoll" data-klapp="zu"><p class="leise">…</p></div>
</section>
</main>
<script src="assets/js/wahl.js?v=202609082341" defer></script>
<script src="assets/js/bereiche.js?v=202609082341" defer></script>
<script src="assets/js/kopf.js?v=202609082341" defer></script>
<script src="assets/js/glocke.js?v=202609082341" defer></script>
<script src="assets/js/personen.js?v=202609082341" defer></script>
</body>
</html>