Material statt Farbe -- Kacheln werden Gegenstaende, die Karte ein Bildschirm

Filipe: "ich will dass alle kacheln viel geiler und spezieller aussehen,
viel realistischer" und "so dass der komplette von der kachel vom
hintergrund bild komplett bedeckt ist. ueberrasch mich."

DIE BILDER: BEARBEITET STATT ABGEDUNKELT.
Bis hierher tat der Bildbauer zwei Dinge -- kleiner rechnen und einen
schwarzen Schleier darueberlegen. Abdunkeln macht ein Bild aber nicht
ruhiger, sondern TOT: Es zieht jede Farbe zur Mitte, und uebrig bleibt
ein grauer Schleier mit einer Ahnung von Motiv.

Drei Dinge, die ein Fotograf zuerst anfasst, und keines davon ist
"dunkler":
  * KONTRAST -- Verkleinern MITTELT Bildpunkte; deshalb wirkt jedes
    verkleinerte Bild flauer als das Original, und deshalb schaerft man
    danach nach.
  * SAETTIGUNG -- holt das Rot der Chili und das Gruen der Blaetter
    zurueck, die der Schleier herausgewaschen hatte.
  * VIGNETTE -- der eigentliche Unterschied zwischen "Screenshot" und
    "Aufnahme". Ein Objektiv verliert zu den Ecken hin Licht; das Auge
    liest das als Tiefe. Sie ersetzt ausserdem einen Teil des flachen
    Schleiers: Dunkel wird, wo ohnehin nichts steht.
Der flache Schleier sinkt dadurch von 0,42 auf 0,26 -- heller UND
lesbar, weil die Vignette genau dort arbeitet, wo die Kacheln liegen.

DIE KACHELN: VIER DINGE, DIE EIN DING VON EINEM RECHTECK TRENNEN.
Sie hatten Farbverlauf, Lichtkante und ein Licht, das dem Zeiger folgt --
und blieben Rechtecke mit Farbe darin. Es fehlten:
  1. GEWICHT. Ein Ding, das auf etwas liegt, wirft einen Schatten, auch
     wenn es niemand anfasst. Den gab es nur beim Ueberfahren.
  2. MATERIALSTAERKE. Ein Blech hat oben eine Licht- UND unten eine
     Schattenkante. Nur die obere ergibt einen aufgeklebten Strich.
  3. KOERNUNG. Perfekt glatte Verlaeufe kommen in der Natur nicht vor,
     und das Auge merkt das, ohne es benennen zu koennen. Drei Prozent
     Rauschen genuegen -- aus einem SVG-Filter als Adresse, also ohne
     Datei und ohne zusaetzliche Anfrage.
  4. DURCHSICHT. Hinter den Kacheln liegt jetzt ein aufwendiges Bild.
     Eine deckende Flaeche verdeckt es, eine mattierte nimmt seine Farbe
     auf -- erst dadurch gehoeren beide zusammen.
Beim Ueberfahren wird die Kachel nicht heller, sondern kommt NAEHER:
Sie steigt, ihr Schatten wird groesser und weicher (der Abstand zum
Untergrund waechst). So verhaelt sich ein angehobener Gegenstand.

DIE ANMELDEKARTE: EIN GERAET STATT EINES BILDES AN DER WAND.
Sie sass mit Abstand in der gemalten Tafel -- zwei Rahmen ineinander,
dazwischen schwarze Leere. Jetzt geht sie bis unter das Gluehen des
Neonrahmens: Der Rahmen ist das Gehaeuse, die Karte der eingeschaltete
Bildschirm. Sie leuchtet von den Kanten herein in den Farben des Rahmens
(rot oben links, blau unten rechts), traegt eine Glasscheibe als sehr
schwache Spiegelung und dieselbe Koernung. Die Rollen sind Tasten
geworden: Materialstaerke oben hell, unten dunkel, beim Druecken sinken
sie ein, und die gewaehlte ist beleuchtet statt eingefaerbt.
Alle Angaben bleiben -- vier Rollen mit Beschreibung, Codefeld, Auge,
Rollenhinweis, Fusszeile. "Hochwertiger" heisst nicht "weniger drin".

EIN ECHTER FUND DABEI: --text-still lag ploetzlich bei genau 4,50:1
statt der noetigen 4,5. Der Ton war am 01.09. gegen die DAMALIGE,
dunklere Buehne gemessen. Wer den Hintergrund heller macht, muss die
leiseste Schrift nachziehen -- sonst haette man den Aufwand auch lassen
koennen. Erkannt daran, dass die Zahl sich bei zwei Schleier-Aenderungen
NICHT bewegte: Die Pruefung rechnet mit der CSS-Farbe.

Gemessen statt angesehen: Kontrast an echten Bildpunkten (pruef-buehne),
neun Bildschirmbreiten, drei Handygroessen, Ladezeit und Datenvolumen,
Klassen, Struktur, Startseite -- alles gruen. Die Seiten ueber dem
CLS-Zielwert sind nebenbei von sieben auf vier gesunken.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-07 02:06:08 +02:00
co-authored by Claude Opus 5
parent 8107b97379
commit 3914adf46c
57 changed files with 688 additions and 182 deletions
+70 -5
View File
@@ -201,8 +201,50 @@ console.log(` --gate-seiten: ${tafel.breite} / ${tafel.hoehe};`);
* aussieht, und die Karte bringt ihren eigenen dunklen Untergrund mit.
* Auf der Startseite darf er kraeftig sein -- dort liegt Text direkt
* darauf. */
/** Verkleinert, VEREDELT und gibt WebP zurueck.
*
* ---------------------------------------------------------------------
* WARUM HIER MEHR PASSIERT ALS VERKLEINERN (07.09.2026)
*
* Filipe: "die hintergrund bilder will ich auch dass die viel viel viel
* besser aussehen."
*
* Bis hierher tat dieses Werkzeug genau zwei Dinge: kleiner rechnen und
* einen schwarzen Schleier darueberlegen. Abdunkeln macht ein Bild aber
* nicht ruhiger, sondern TOT -- es zieht jede Farbe zur Mitte, und was
* bleibt, ist ein grauer Schleier mit einer Ahnung von Motiv. Genau so
* sahen sie aus.
*
* Was ein Bild stattdessen hochwertig macht, sind drei Dinge, die jeder
* Fotograf zuerst anfasst -- und keines davon ist "dunkler":
*
* 1. TIEFE STATT SCHWAERZE. Ein leichter Kontrastzug trennt die
* hellen von den dunklen Stellen wieder, die das Verkleinern
* zusammengeschoben hat. Verkleinern MITTELT Bildpunkte; das ist
* der Grund, warum jedes verkleinerte Bild flauer wirkt als das
* Original, und der Grund, warum man danach nachschaerft.
*
* 2. FARBE, DIE DAS MOTIV HAT. Ein Hauch Saettigung holt das Rot der
* Chili und das Gruen der Blaetter zurueck, die der Schleier
* herausgewaschen hat.
*
* 3. EINE VIGNETTE. Das ist der eigentliche Unterschied zwischen
* "Screenshot" und "Aufnahme". Ein echtes Objektiv laesst zu den
* Ecken hin Licht verlieren; das Auge liest das als Tiefe und
* fuehrt den Blick zur Mitte. Sie ersetzt hier ausserdem einen
* Teil des flachen Schleiers: Dunkel wird, wo ohnehin nichts
* steht, und nicht dort, wo das Motiv ist.
*
* Damit sinkt der flache Schleier von 0,42 auf 0,26 -- das Bild wird
* heller UND der Text bleibt lesbar, weil die Vignette genau an den
* Raendern arbeitet, an denen die Kacheln liegen. Nachgemessen von
* pruef-buehne an echten Bildpunkten.
*
* Alles im Browser gerechnet, der ohnehin fuer die Pruefungen da ist --
* kein Bildprogramm, keine neue Abhaengigkeit, 0 EUR.
*/
async function bauen({ quelle, ziel, breite, ausschnitt = null, dunkel = 0, guete = 0.82,
seitenverhaeltnis = null }) {
seitenverhaeltnis = null, kontrast = 1.08, saettigung = 1.1, vignette = 0.34 }) {
const webp = await seite.evaluate(async (a) => {
const i = new Image(); i.src = a.daten; await i.decode();
@@ -218,14 +260,37 @@ async function bauen({ quelle, ziel, breite, ausschnitt = null, dunkel = 0, guet
c.width = zb; c.height = zh;
const g = c.getContext("2d");
g.imageSmoothingQuality = "high";
g.drawImage(i, qx, qy, qb, qh, 0, 0, zb, zh);
/* 1 + 2: Kontrast und Saettigung BEIM ZEICHNEN -- der Filter wirkt
auf die Bildpunkte, die gerade entstehen, nicht auf eine zweite
Ebene darueber. Deshalb bleibt es scharf. */
g.filter = `contrast(${a.kontrast}) saturate(${a.saettigung})`;
g.drawImage(i, qx, qy, qb, qh, 0, 0, zb, zh);
g.filter = "none";
/* 3: Die Vignette. Elliptisch ueber die ganze Flaeche, in der Mitte
voellig klar, zu den Ecken hin dunkel. Der weiche Verlauf ist
wichtig -- eine harte Kante saehe aus wie ein Fehler und nicht wie
ein Objektiv. */
if (a.vignette > 0) {
const r = Math.max(zb, zh) * 0.75;
const v = g.createRadialGradient(zb / 2, zh * 0.46, r * 0.18, zb / 2, zh * 0.46, r);
v.addColorStop(0, "rgba(0,0,0,0)");
v.addColorStop(0.55, `rgba(0,0,0,${(a.vignette * 0.22).toFixed(3)})`);
v.addColorStop(0.8, `rgba(0,0,0,${(a.vignette * 0.62).toFixed(3)})`);
v.addColorStop(1, `rgba(0,0,0,${a.vignette.toFixed(3)})`);
g.fillStyle = v;
g.fillRect(0, 0, zb, zh);
}
/* Und erst danach der flache Schleier -- so wenig wie noetig. */
if (a.dunkel > 0) {
g.fillStyle = `rgba(0,0,0,${a.dunkel})`;
g.fillRect(0, 0, zb, zh);
}
return c.toDataURL("image/webp", a.guete);
}, { daten: alsDatenAdresse(quelle), breite, ausschnitt, dunkel, guete, seitenverhaeltnis });
}, { daten: alsDatenAdresse(quelle), breite, ausschnitt, dunkel, guete, seitenverhaeltnis,
kontrast, saettigung, vignette });
const puffer = Buffer.from(webp.split(",")[1], "base64");
writeFileSync(ziel, puffer);
@@ -263,7 +328,7 @@ for (const b of [960, 1280, 1600, 1920, 2560]) {
/* Nur ein Hauch. Der Neonrahmen der Tafel ist das, was die Karte
traegt -- wer ihn wegdunkelt, hat ein huebsches Bild und eine
Karte, die im Nichts schwebt. */
dunkel: 0.14, guete: 0.88,
dunkel: 0.08, guete: 0.88, vignette: 0.26,
});
console.log(` gate-${b}.webp ${Math.round(n / 1024)} KB`);
}
@@ -354,7 +419,7 @@ const SZENEN = {
0,42 ist gemessen, nicht geraten -- siehe den Lauf von pruef-buehne
nach dem Bau. */
const DUNKEL = 0.42;
const DUNKEL = 0.26;
console.log("\n--- Die neun Buehnen ---");
let gesamt = 0;
+236 -5
View File
@@ -37,7 +37,19 @@
reiner Tinte. Immer noch deutlich leiser als der Haupttext, aber
lesbar -- und das gilt jetzt fuer JEDE Seite, nicht nur fuer die
mit dem Hintergrundbild. */
--text-still: #75859a;
/* 07.09.2026: #75859a -> #7f8fa6.
Der alte Wert war am 01.09. gegen die DAMALIGE Buehne gemessen
und lag dort bei 4,95:1. Seit die Hintergruende Kontrast,
Saettigung und eine Vignette statt eines flachen Schleiers
bekommen haben, sind sie heller -- und derselbe Ton fiel auf
4,50:1, also genau auf die Grenze. Gemessen von pruef-buehne
an echten Bildpunkten, nicht an der Farbangabe.
Das ist der Preis dafuer, dass das Motiv jetzt zu sehen ist:
Wer den Hintergrund heller macht, muss die leiseste Schrift
nachziehen. Die Alternative waere gewesen, das Bild wieder
zuzudecken -- dann haette man den Aufwand auch lassen koennen. */
--text-still: #7f8fa6;
--akzent: #3fbdf5; /* aus dem Neon des Motivs, entsättigt */
--akzent-tief: #1f7fb0;
@@ -1148,10 +1160,25 @@ body.gate {
Bildschirmfoto bei 1280, 1440 und 1920 nachgesehen. Die Rohwerte
der Messung stehen daneben, damit man den Unterschied sieht.
gemessen hier */
--tafel-links: 57.49%; /* 58.59% -1.10 */
--tafel-oben: 13.60%; /* 12.88% +0.72 */
--tafel-breite: 35.70%; /* 34.73% +0.97 */
--tafel-hoehe: 62.50%; /* 63.98% -1.48 */
/* 07.09.2026 -- Wunsch Filipe: "so dass der komplette von der kachel
vom hintergrund bild komplett bedeckt ist."
Bis hierher sass die Karte MIT ABSTAND in der Tafel: Der gemalte
Rahmen blieb rundum sichtbar, und dazwischen schimmerte die leere
schwarze Flaeche durch. Das sah aus wie ein Bild in einem Rahmen --
zwei Dinge. Gewollt ist EINS: Die Karte IST die Tafel, ihr Rand
liegt genau auf der Innenkante des Neonrahmens.
Deshalb wird jetzt bis an die Kante gegangen, plus einen halben
Prozentpunkt darueber hinaus: Der Rahmen ist im Bild weich (er
glueht), und eine Karte, die genau an der Messkante endet, laesst
dort einen dunklen Saum stehen. Ein halber Prozentpunkt Ueberlappung
schiebt ihre Kante unter das Glühen -- man sieht nur noch Rahmen und
Karte, nichts dazwischen. */
--tafel-links: 57.00%;
--tafel-oben: 13.00%;
--tafel-breite: 36.60%;
--tafel-hoehe: 63.70%;
}
/* Vorgabe: Der Anker tut nichts. Er wird erst dort zur Schablone, wo
@@ -1292,3 +1319,207 @@ body.gate {
@media (min-width: 1700px) and (min-height: 900px) {
.tafel { padding: 2.2em 2em 1.8em; }
}
/* Dieselbe Koernung wie auf der Startseite -- sie steht dort in
start.css, und die Anmeldeseite laedt start.css nicht. Ein SVG-
Filter als Adresse: keine Datei, keine zusaetzliche Anfrage. */
:root {
--koernung:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='r'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23r)' opacity='0.55'/%3E%3C/svg%3E");
}
/* =====================================================================
DIE KARTE ALS BILDSCHIRM IM RAHMEN (07.09.2026)
Wunsch Filipe: "veränder auch die kachel. mach sie viel geiler und
viel krasser. mit allen infos die da sind aber mach sie richtig hoch
profissionel, hochwertig und ultra geil aber so dass der komplette von
der kachel vom hintergrund bild komplett bedeckt ist."
---------------------------------------------------------------------
DIE IDEE
Im Motiv steht ein leerer Rahmen mit Neonkante -- rot oben links,
blau unten rechts. Bisher lag darin eine Karte mit eigenem Rand: zwei
Rahmen ineinander, und dazwischen schwarze Leere. Das liest sich als
"Bild an einer Wand".
Gewollt ist ein GERÄT: Der Rahmen im Bild ist das Gehäuse, die Karte
ist der eingeschaltete Bildschirm darin. Ein Bildschirm hat drei
Eigenschaften, die ein Kasten nicht hat, und alle drei sind hier
gebaut:
1. ER LEUCHTET VON INNEN. Nicht gleichmäßig -- oben mehr, weil dort
die Anzeige beginnt. Ein schwacher Schein in der Rahmenfarbe
kriecht von den Kanten herein, so wie Licht aus einem Panel in
sein Gehäuse fällt.
2. ER HAT EINE SCHEIBE. Über allem liegt eine sehr schwache,
diagonale Spiegelung -- die Glasscheibe davor. Sie ist der
Unterschied zwischen "Fläche mit Farbe" und "etwas hinter Glas".
3. ER HAT STRUKTUR. Dieselbe Körnung wie die Kacheln der Startseite
(siehe start.css). Ohne sie bleibt jeder Verlauf zu glatt für
eine echte Oberfläche.
Die Rollen-Knöpfe werden dabei zu TASTEN: Materialstärke oben hell,
unten dunkel, beim Drücken sinken sie ein. Die gewählte Taste ist
nicht nur eingefärbt, sondern beleuchtet -- sie hat einen Lichtrand
nach innen, als läge eine Diode darunter.
---------------------------------------------------------------------
WAS DABEI NICHT VERLOREN GEHT
Alle Angaben bleiben, wie sie waren: die vier Rollen mit ihren
Beschreibungen, das Codefeld mit dem Auge, der Hinweis, welche Rolle
gewählt ist, und die Fußzeile zur Verschlüsselung. "Hochwertiger"
heißt hier nicht "weniger drin" -- eine Anmeldemaske, die etwas
verschweigt, ist keine bessere, sondern eine unvollständige.
===================================================================== */
@media (min-width: 1100px) and (min-height: 620px) and (min-aspect-ratio: 7/5) {
.tafel {
/* KEIN EIGENER RAHMEN MEHR. Das Gehäuse ist im Bild; ein zweiter
Rand daneben wäre genau der Doppelrahmen, der weg soll. Was
bleibt, ist eine hauchfeine Innenkante -- die Fuge zwischen
Scheibe und Gehäuse. */
border: 0;
border-radius: 22px;
background:
/* Der Schein von den Kanten herein, in den Farben des Rahmens:
rot oben links, blau unten rechts. Er ist das, was die Karte
mit dem Bild verbindet, statt sie davorzusetzen. */
radial-gradient(120% 90% at 4% 0%, rgba(224, 66, 66, .13), transparent 58%),
radial-gradient(120% 90% at 98% 100%, rgba(58, 150, 235, .15), transparent 60%),
/* Die Anzeige selbst: oben eine Spur heller. */
linear-gradient(178deg, rgba(14, 20, 32, .80), rgba(6, 9, 16, .88) 62%);
backdrop-filter: blur(26px) saturate(128%);
-webkit-backdrop-filter: blur(26px) saturate(128%);
box-shadow:
/* Die Fuge: innen ein feiner heller Strich oben, dunkel unten. */
inset 0 1px 0 rgba(255, 255, 255, .09),
inset 0 -1px 0 rgba(0, 0, 0, .5),
/* Und ein sehr weicher Schein nach innen, damit die Kante nicht
hart abbricht, sondern ins Gehäuse übergeht. */
inset 0 0 44px -18px rgba(0, 0, 0, .9);
overflow: hidden;
}
/* DIE SCHEIBE. Ein einziger, sehr weicher Streifen von links oben --
kaum zu sehen, aber ohne ihn wirkt die Fläche wie Papier. */
.tafel::after {
content: ""; position: absolute; inset: 0; z-index: 0;
pointer-events: none; border-radius: inherit;
background:
linear-gradient(122deg,
rgba(255, 255, 255, .07) 0%,
rgba(255, 255, 255, .018) 14%,
rgba(255, 255, 255, 0) 32%),
var(--koernung);
background-size: auto, 140px 140px;
opacity: .9;
}
/* Der Inhalt liegt über der Scheibe -- Schrift durch eine Spiegelung
zu lesen wäre anstrengend. */
.tafel > * { position: relative; z-index: 1; }
/* ---- Die Rollen als Tasten ---------------------------------------- */
.tafel .rolle {
background:
linear-gradient(180deg, rgba(255, 255, 255, .055), rgba(255, 255, 255, .012));
border: 1px solid rgba(150, 186, 220, .13);
border-radius: 13px;
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, .09),
inset 0 -1px 0 rgba(0, 0, 0, .38),
0 1px 2px rgba(0, 0, 0, .35);
transition: border-color var(--tempo), background var(--tempo),
box-shadow var(--tempo), transform .09s ease;
}
.tafel .rolle:hover {
background:
linear-gradient(180deg, rgba(255, 255, 255, .085), rgba(255, 255, 255, .022));
border-color: rgba(150, 186, 220, .24);
}
/* Beim Drücken sinkt die Taste ein: Der Schatten unter ihr
verschwindet, der innere kommt von oben. Genau das macht ein
echter Knopf. */
.tafel .rolle:active {
transform: translateY(1px);
box-shadow: inset 0 2px 4px rgba(0, 0, 0, .5);
}
/* DIE GEWÄHLTE TASTE IST BELEUCHTET, nicht nur eingefärbt. Der
Lichtrand nach innen liest sich wie eine Diode darunter -- und er
sagt deutlicher als jede Farbe, welche gerade aktiv ist. */
.tafel .rolle[aria-checked="true"] {
background:
linear-gradient(180deg,
color-mix(in srgb, var(--akzent) 22%, transparent),
color-mix(in srgb, var(--violett) 13%, transparent));
border-color: color-mix(in srgb, var(--akzent) 62%, transparent);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, .16),
inset 0 0 20px -8px color-mix(in srgb, var(--akzent) 90%, transparent),
0 0 20px -10px color-mix(in srgb, var(--akzent) 75%, transparent);
}
/* ---- Das Codefeld: eine eingelassene Rinne ------------------------- */
.tafel #code {
background: rgba(0, 0, 0, .34);
border-color: rgba(150, 186, 220, .14);
border-radius: 12px;
/* Eingelassen statt aufgesetzt: Schatten von oben INNEN. Das ist
dasselbe Licht wie überall, nur eine Vertiefung statt einer
Erhebung -- und deshalb erkennt man sofort, dass man hier
hineinschreibt. */
box-shadow:
inset 0 2px 5px -2px rgba(0, 0, 0, .7),
inset 0 -1px 0 rgba(255, 255, 255, .05);
}
.tafel #code:focus {
background: rgba(0, 0, 0, .28);
box-shadow:
inset 0 2px 5px -2px rgba(0, 0, 0, .7),
0 0 0 3px color-mix(in srgb, var(--akzent) 22%, transparent);
}
/* ---- Der Anmelde-Knopf: die Haupttaste ----------------------------- */
.tafel .knopf {
border-radius: 12px;
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, .14),
inset 0 -1px 0 rgba(0, 0, 0, .35),
0 6px 18px -10px color-mix(in srgb, var(--akzent) 85%, transparent);
}
.tafel .knopf:active { transform: translateY(1px); }
/* ---- Der Kopf bekommt Luft nach unten ------------------------------ */
/* Eine feine Trennlinie unter dem Titel: Sie gliedert die Karte in
"wer sind wir" und "was tust du hier", ohne ein Wort dafür zu
brauchen. */
.tafel .unterzeile {
padding-bottom: 1em;
border-bottom: 1px solid rgba(150, 186, 220, .10);
margin-bottom: 1.1em;
}
@media (prefers-reduced-motion: reduce) {
.tafel .rolle:active, .tafel .knopf:active { transform: none; }
}
}
/* Auf schmalen Geräten liegt die Karte VOR dem Bild statt darin -- dort
bleibt der eigene Rahmen richtig, denn es gibt kein Gehäuse, in das
sie sich einfügen könnte. Nur Körnung und Tastenwirkung übernimmt sie:
Die gehören zum Material, nicht zur Anordnung. */
@media (max-width: 1099px), (max-height: 619px), (max-aspect-ratio: 7/5) {
.tafel .rolle:active { transform: translateY(1px); }
.tafel .rolle[aria-checked="true"] {
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, .14),
inset 0 0 18px -8px color-mix(in srgb, var(--akzent) 85%, transparent);
}
}
+213 -3
View File
@@ -172,9 +172,9 @@ body.start > .schleier {
nachzurechnen, waere geraten. */
linear-gradient(90deg,
rgba(5, 7, 13, 0) 0,
rgba(5, 7, 13, .56) min(22%, 400px),
rgba(5, 7, 13, .62) 50%,
rgba(5, 7, 13, .56) max(78%, calc(100% - 400px)),
rgba(5, 7, 13, .62) min(22%, 400px),
rgba(5, 7, 13, .68) 50%,
rgba(5, 7, 13, .62) max(78%, calc(100% - 400px)),
rgba(5, 7, 13, 0) 100%);
}
@@ -3916,3 +3916,213 @@ body[data-fremde-sicht="ja"]::after {
.chat-knopf[data-neu="ja"] { border-width: 2px; }
.chat-knopf__zahl { border: 1px solid CanvasText; }
}
/* =====================================================================
MATERIAL — die Kacheln werden Gegenstände (07.09.2026)
Wunsch Filipe: "ich will dass alle kacheln viel geiler und spezieller
aussehen, viel realistischer. mach da was hoch profissionelles und
hochwertiges."
---------------------------------------------------------------------
WAS EINE FLÄCHE ZU EINEM GEGENSTAND MACHT
Die Kacheln hatten schon einen Farbverlauf, eine Lichtkante oben und
ein Licht, das dem Zeiger folgt. Trotzdem blieben es Rechtecke mit
Farbe darin. Es fehlten genau die vier Dinge, an denen das Auge einen
echten Gegenstand erkennt -- und keines davon ist "mehr Farbe":
1. GEWICHT. Ein Ding, das auf etwas liegt, wirft einen Schatten,
auch wenn es niemand anfasst. Bisher gab es den nur beim
Überfahren; im Ruhezustand schwebte die Kachel im Nichts.
2. EINE KANTE, DIE DICK IST. Ein Blech hat oben eine Lichtkante
UND unten eine Schattenkante. Nur die obere zu setzen ergibt
einen aufgeklebten Strich; erst beide zusammen ergeben eine
Materialstärke.
3. KÖRNUNG. Der eigentliche Unterschied zwischen "am Rechner
gezeichnet" und "fotografiert". Jede echte Oberfläche hat eine
Struktur; perfekt glatte Farbverläufe kommen in der Natur nicht
vor, und das Auge merkt das, ohne es benennen zu können. Drei
Prozent Rauschen genügen.
4. DURCHSICHT. Hinter den Kacheln liegt jetzt ein aufwendiges Bild.
Eine deckende Fläche darüber verdeckt es; eine mattierte lässt
es durch und nimmt seine Farbe auf. Erst dadurch gehören Kachel
und Hintergrund zusammen, statt übereinanderzuliegen.
---------------------------------------------------------------------
DAS RAUSCHEN KOSTET KEINE DATEI
Es entsteht aus einem SVG-Filter, der als Adresse im Stil steht --
kein Bild, keine zusätzliche Anfrage, keine Lieferkette. Der Browser
rechnet es einmal und legt es über die Fläche.
`mix-blend-mode: overlay` sorgt dafür, dass es hell macht, wo es hell
ist, und dunkel, wo es dunkel ist -- ein aufgelegter grauer Schleier
würde die Farben stattdessen ausbleichen.
---------------------------------------------------------------------
WAS DABEI NICHT PASSIEREN DARF
Der Text muss lesbar bleiben. Mattglas macht ihn nicht automatisch
schlechter (der Weichzeichner nimmt dem Untergrund die Struktur, an
der das Auge hängenbleibt), aber es macht ihn auch nicht automatisch
besser. Deshalb ist jede Zahl hier gegen pruef-buehne gemessen, das
den Kontrast an echten Bildpunkten nachrechnet -- nicht an der
Farbangabe im Stil, die über einem Foto nichts aussagt.
===================================================================== */
/* Das Rauschen. Einmal definiert, von allen Flächen benutzt. */
:root {
--koernung:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='r'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23r)' opacity='0.55'/%3E%3C/svg%3E");
}
.kachel {
/* MATTGLAS. Der Anteil des Untergrunds ist mit Absicht hoch: Das Bild
dahinter ist der Grund, warum die Seite gut aussieht. 16 px
Weichzeichner sind gemessen -- darunter sieht man die Struktur des
Bildes durch und der Text flimmert, darüber wird es Milchglas und
das Motiv ist wieder weg. */
background:
linear-gradient(158deg,
color-mix(in srgb, var(--ton) 24%, rgba(9, 13, 22, .70)),
rgba(8, 11, 19, .80) 64%);
backdrop-filter: blur(16px) saturate(135%);
-webkit-backdrop-filter: blur(16px) saturate(135%);
/* MATERIALSTÄRKE: Licht oben, Schatten unten -- beide innen.
GEWICHT: zwei Schatten, ein enger dunkler direkt darunter und ein
weiter weicher. Ein einzelner Schatten sieht immer nach Aufkleber
aus; erst die Kombination liest sich als "liegt auf etwas". */
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, .10),
inset 0 -1px 0 rgba(0, 0, 0, .45),
0 2px 5px -2px rgba(0, 0, 0, .55),
0 14px 30px -18px rgba(0, 0, 0, .85);
border-color: color-mix(in srgb, var(--ton) 16%, rgba(150, 186, 220, .14));
}
/* Die Körnung. Sie liegt über der Fläche, aber UNTER dem Inhalt --
Schrift durch ein Rauschen zu lesen wäre anstrengend. */
.kachel > .kachel__link::before {
content: ""; position: absolute; inset: 0; z-index: -1;
background-image: var(--koernung);
background-size: 140px 140px;
opacity: .035;
mix-blend-mode: overlay;
pointer-events: none;
border-radius: inherit;
}
/* DER GLANZ. Ein schmaler, sehr weicher Streifen quer über die obere
linke Ecke -- die Spiegelung einer Lichtquelle, die außerhalb des
Bildes liegt. Das ist der Unterschied zwischen einer matten und einer
lackierten Oberfläche, und er ist bewusst so schwach, dass man ihn
nicht als Streifen sieht, sondern nur als "die glänzt". */
.kachel::after {
background:
linear-gradient(128deg,
rgba(255, 255, 255, .085) 0%,
rgba(255, 255, 255, .022) 16%,
rgba(255, 255, 255, 0) 34%),
radial-gradient(130% 150% at var(--mx) var(--my),
color-mix(in srgb, var(--ton) 22%, transparent), transparent 60%);
opacity: .46;
}
/* Die farbige Kante bekommt Tiefe: oben satt, unten auslaufend, und
ein Hauch Leuchten nach innen. */
.kachel::before {
width: 3px;
background:
linear-gradient(180deg,
color-mix(in srgb, var(--ton) 100%, transparent) 0%,
color-mix(in srgb, var(--ton) 72%, transparent) 42%,
transparent 94%);
box-shadow: 1px 0 8px -2px color-mix(in srgb, var(--ton) 55%, transparent);
opacity: .62;
}
/* ANHEBEN STATT AUFLEUCHTEN. Beim Überfahren wird die Kachel nicht
heller, sondern sie kommt näher: Sie steigt zwei Pixel, ihr Schatten
wird größer und weicher (weil der Abstand zum Untergrund wächst) und
die Kante wird kräftiger. Genau so verhält sich ein Gegenstand, den
man anhebt -- und deshalb wirkt es echt, ohne dass etwas blinkt. */
.kachel:hover {
transform: translateY(-3px);
border-color: color-mix(in srgb, var(--ton) 42%, rgba(150, 186, 220, .18));
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, .14),
inset 0 -1px 0 rgba(0, 0, 0, .45),
0 4px 10px -4px rgba(0, 0, 0, .6),
0 22px 44px -22px rgba(0, 0, 0, .9),
0 0 26px -12px color-mix(in srgb, var(--ton) 60%, transparent);
}
.kachel:hover::before { opacity: 1; width: 3px; }
/* Beim Drücken sinkt sie zurück -- ohne diesen Gegenweg fühlt sich ein
Knopf an wie ein Bild von einem Knopf. */
.kachel:active {
transform: translateY(-1px);
transition-duration: .07s;
}
/* Die Plakette bekommt dieselbe Behandlung: Körnung und ein tieferer
Schatten, damit sie auf der Kachel LIEGT statt in sie gemalt zu sein. */
.kachel__zeichen::after {
content: ""; position: absolute; inset: 0;
background-image: var(--koernung);
background-size: 140px 140px;
opacity: .05;
mix-blend-mode: overlay;
pointer-events: none;
}
.kachel:hover .kachel__zeichen {
transform: translateY(-1px) scale(1.03);
box-shadow:
inset 0 1.5px 0 color-mix(in srgb, #fff 34%, transparent),
inset 0 -2px 6px -3px color-mix(in srgb, #000 55%, transparent),
0 10px 24px -10px color-mix(in srgb, var(--ton) 95%, transparent),
0 0 0 1px color-mix(in srgb, var(--ton) 16%, transparent);
}
/* Auch die übrigen Flächen der Seite bekommen Mattglas und Körnung --
sonst sähen die Kacheln aus wie aus einer anderen Anwendung als der
Kasten daneben. Eine Oberfläche, in der zwei Materialien nebeneinander
liegen, wirkt zusammengesucht. */
.tagesblick,
.zahlkarte,
.zielbalken__zeile,
.tagzeile,
.creator,
.warnkarte,
.summe {
backdrop-filter: blur(13px) saturate(125%);
-webkit-backdrop-filter: blur(13px) saturate(125%);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, .07),
inset 0 -1px 0 rgba(0, 0, 0, .35),
0 2px 4px -2px rgba(0, 0, 0, .45),
0 12px 26px -18px rgba(0, 0, 0, .8);
}
/* WENIGER BEWEGUNG HEISST: KEINE BEWEGUNG.
Der Glanz, die Körnung und die Schatten bleiben -- die sind Aussehen,
nicht Bewegung. Was wegfällt, ist das Anheben. */
@media (prefers-reduced-motion: reduce) {
.kachel, .kachel:hover, .kachel:active { transform: none; }
.kachel:hover .kachel__zeichen { transform: none; }
}
/* Bei erzwungenen Farben (Windows-Kontrastmodus) sind Mattglas und
Körnung nicht nur wirkungslos, sondern schädlich -- dort zählt
ausschliesslich die Kante. */
@media (forced-colors: active) {
.kachel { backdrop-filter: none; box-shadow: none; border: 1px solid CanvasText; }
.kachel > .kachel__link::before,
.kachel__zeichen::after { display: none; }
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 KiB

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 71 KiB

+8 -8
View File
@@ -9,9 +9,9 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
</head>
<body class="start">
@@ -211,10 +211,10 @@
</form>
</dialog>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/aufgaben.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/aufgaben.js?v=202609070159" defer></script>
</body>
</html>
+9 -9
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609070159" />
</head>
<body class="start">
@@ -134,10 +134,10 @@
</main>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/automation.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/automation.js?v=202609070159" defer></script>
</body>
</html>
+13 -13
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609070159" />
</head>
<body class="start">
@@ -117,14 +117,14 @@
</main>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/checkliste.js?v=202609070141" defer></script>
<script src="assets/js/ampel.js?v=202609070141" defer></script>
<script src="assets/js/schulung.js?v=202609070141" defer></script>
<script src="assets/js/vorlagen.js?v=202609070141" defer></script>
<script src="assets/js/bereich.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/checkliste.js?v=202609070159" defer></script>
<script src="assets/js/ampel.js?v=202609070159" defer></script>
<script src="assets/js/schulung.js?v=202609070159" defer></script>
<script src="assets/js/vorlagen.js?v=202609070159" defer></script>
<script src="assets/js/bereich.js?v=202609070159" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609070159" />
</head>
<body class="start">
@@ -76,11 +76,11 @@
</main>
<script src="assets/js/ki.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/calls.js?v=202609070141" defer></script>
<script src="assets/js/ki.js?v=202609070159" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/calls.js?v=202609070159" defer></script>
</body>
</html>
+8 -8
View File
@@ -9,16 +9,16 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<!-- 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=202609070141" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609070159" />
</head>
<body class="start">
@@ -154,9 +154,9 @@
</form>
</dialog>
<script src="assets/js/bereiche.js?v=202609070141"></script>
<script src="assets/js/kopf.js?v=202609070141"></script>
<script src="assets/js/glocke.js?v=202609070141"></script>
<script src="assets/js/chat.js?v=202609070141"></script>
<script src="assets/js/bereiche.js?v=202609070159"></script>
<script src="assets/js/kopf.js?v=202609070159"></script>
<script src="assets/js/glocke.js?v=202609070159"></script>
<script src="assets/js/chat.js?v=202609070159"></script>
</body>
</html>
+11 -11
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/content.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/content.css?v=202609070159" />
</head>
<body class="start">
@@ -166,12 +166,12 @@
</main>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/checkliste.js?v=202609070141" defer></script>
<script src="assets/js/vorlagen.js?v=202609070141" defer></script>
<script src="assets/js/content.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/checkliste.js?v=202609070159" defer></script>
<script src="assets/js/vorlagen.js?v=202609070159" defer></script>
<script src="assets/js/content.js?v=202609070159" defer></script>
</body>
</html>
+9 -9
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609070159" />
</head>
<body class="start">
@@ -95,10 +95,10 @@
</main>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/dateien.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/dateien.js?v=202609070159" defer></script>
</body>
</html>
+2 -2
View File
@@ -27,7 +27,7 @@
<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=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
</head>
<body class="gate">
@@ -173,6 +173,6 @@
</main>
</div>
<script src="assets/js/gate.js?v=202609070141" defer></script>
<script src="assets/js/gate.js?v=202609070159" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609070159" />
</head>
<body class="start">
@@ -257,11 +257,11 @@
</main>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/kalender.js?v=202609070141" defer></script>
<script src="assets/js/kalender-abo.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/kalender.js?v=202609070159" defer></script>
<script src="assets/js/kalender-abo.js?v=202609070159" defer></script>
</body>
</html>
+9 -9
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609070159" />
</head>
<body class="start">
@@ -199,10 +199,10 @@
</form>
</dialog>
<script src="assets/js/wahl.js?v=202609070141"></script>
<script src="assets/js/bereiche.js?v=202609070141"></script>
<script src="assets/js/kopf.js?v=202609070141"></script>
<script src="assets/js/glocke.js?v=202609070141"></script>
<script src="assets/js/leistung.js?v=202609070141"></script>
<script src="assets/js/wahl.js?v=202609070159"></script>
<script src="assets/js/bereiche.js?v=202609070159"></script>
<script src="assets/js/kopf.js?v=202609070159"></script>
<script src="assets/js/glocke.js?v=202609070159"></script>
<script src="assets/js/leistung.js?v=202609070159"></script>
</body>
</html>
+9 -9
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609070159" />
</head>
<body class="start">
@@ -123,10 +123,10 @@
</main>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/personen.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/personen.js?v=202609070159" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609070159" />
</head>
<body class="start">
@@ -201,11 +201,11 @@
</main>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/steckbrief.js?v=202609070141" defer></script>
<script src="assets/js/profil.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/steckbrief.js?v=202609070159" defer></script>
<script src="assets/js/profil.js?v=202609070159" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/report.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/report.css?v=202609070159" />
</head>
<body class="start">
@@ -93,11 +93,11 @@
</main>
<script src="assets/js/ki.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/report.js?v=202609070141" defer></script>
<script src="assets/js/ki.js?v=202609070159" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/report.js?v=202609070159" defer></script>
</body>
</html>
+9 -9
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609070159" />
</head>
<body class="start">
@@ -126,10 +126,10 @@
</div>
</div>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/scouting.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/scouting.js?v=202609070159" defer></script>
</body>
</html>
+7 -7
View File
@@ -9,8 +9,8 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
</head>
<body class="start">
@@ -160,10 +160,10 @@
</p>
</main>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/start.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/start.js?v=202609070159" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609070159" />
</head>
<body class="start">
@@ -72,11 +72,11 @@
</main>
<script src="assets/js/ki.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/startcheck.js?v=202609070141" defer></script>
<script src="assets/js/ki.js?v=202609070159" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/startcheck.js?v=202609070159" defer></script>
</body>
</html>
+9 -9
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609070159" />
</head>
<body class="start">
@@ -113,10 +113,10 @@
</main>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/steckbrief.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/steckbrief.js?v=202609070159" defer></script>
</body>
</html>
+7 -7
View File
@@ -9,9 +9,9 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609070159" />
</head>
<body class="start">
@@ -82,10 +82,10 @@
</main>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/uebersicht.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/uebersicht.js?v=202609070159" defer></script>
</body>
</html>
+9 -9
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<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=202609070141" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609070141" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/start.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609070159" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609070159" />
</head>
<body class="start">
@@ -177,10 +177,10 @@
</main>
<script src="assets/js/wahl.js?v=202609070141" defer></script>
<script src="assets/js/bereiche.js?v=202609070141" defer></script>
<script src="assets/js/kopf.js?v=202609070141" defer></script>
<script src="assets/js/glocke.js?v=202609070141" defer></script>
<script src="assets/js/wissen.js?v=202609070141" defer></script>
<script src="assets/js/wahl.js?v=202609070159" defer></script>
<script src="assets/js/bereiche.js?v=202609070159" defer></script>
<script src="assets/js/kopf.js?v=202609070159" defer></script>
<script src="assets/js/glocke.js?v=202609070159" defer></script>
<script src="assets/js/wissen.js?v=202609070159" defer></script>
</body>
</html>