Filipe, mit Bildschirmfoto: "perfektionnir das in einer kachel in der
farbe von der kategorie bitte. und die kacheln unten in der seite auch
perfektionnieren und geil machen bitte."
--- DER KOPF ---
Er war eine freistehende Ueberschrift auf dem Buehnenbild. Jetzt ist er
eine Kachel wie jede andere im Haus: gefraeste Fase, Kantenlicht,
Eckwinkel, Raster -- alles aus der Modulliste in module.css, wo
`.t-kachel` seit diesem Commit steht.
DIE FARBE IST NICHT ABGESCHRIEBEN. Die Kachel traegt `data-ton="22"`,
und die Regel dazu steht in start.css -- dieselbe, aus der die Kachel
auf der Startseite ihre Farbe zieht (#ffd166). Es gibt weiterhin genau
EINE Stelle, an der die Farbe dieser Kategorie steht; wer sie dort
aendert, aendert beides. Eine zweite Hexzahl in team.css waere die
naechste gewesen, die auseinanderlaeuft.
Der Grenzsatz ("Termine, Chats und Dateien kommen hier nicht vor")
wechselt von Gruen in denselben Ton: In einer Kachel, die schon eine
Farbe hat, ist eine zweite Farbe daneben eine zweite Aussage.
--- DIE KARTEN UNTEN ---
`.tperson` und `.tl` stehen ebenfalls in der Modulliste. Ein
Manager-Kasten leuchtet damit lila, ein Scout-Kasten gruen, ein
Lueckenkasten rot -- ueber `--ton`, ohne dass eine einzige Farbe hier
ausgeschrieben stehen muss.
DER STREIFEN LINKS IST DAFUER WEG, und das ist kein Verlust: module.css
belegt ::before und ::after selbst (Kantenlicht und Eckwinkel) und
laedt NACH team.css -- ein eigenes ::after waere ohnehin wirkungslos
gewesen. Das Kantenlicht traegt die Rollenfarbe jetzt rund um die ganze
Karte statt auf drei Pixeln links.
DIE KENNZAHLEN BLEIBEN SCHLICHT, und das ist eine Entscheidung: Sie
stehen zu acht in einer Karte. Jede davon mit Fase, Kantenlicht und
Eckwinkel waere ein Schaufenster voller Rahmen und keine Auskunft mehr
-- eine Kachel in der Kachel in der Kachel liest niemand. Sie bekommen
nur die abgeschnittene Ecke aus derselben Formel, damit sie erkennbar
zur Familie gehoeren.
--- EIN FEHLER, DEN NUR DAS HANDY GEZEIGT HAT ---
Der Grenzsatz-Kasten hat `flex: 1 1 300px`. Am Rechner ist das richtig:
Dort ist die Hauptachse waagerecht, und er teilt sich die Breite mit
dem Titel. Am Handy dreht die Reihe auf eine SPALTE -- und derselbe
Wert liess ihn in die HOEHE wachsen. Auf dem Bildschirmfoto stand
danach die halbe Kachel leer.
Ein Flexwert gilt fuer eine Richtung, nicht fuer ein Element. Wer die
Richtung dreht, muss ihn mitdrehen.
--- Pruefung ---
pruef-css-klassen: die Modulliste steht weiterhin siebenmal und
Zeichen fuer Zeichen gleich (jetzt 48 Klassen).
pruef-team, 51 Pruefungen: darunter acht Kontrastmessungen an der
WIRKLICHEN Flaeche -- die Hintergruende haben sich durch den Umbau
geaendert, und eine Kachel mit Raster und Verlauf ist etwas anderes als
ein flacher Kasten. Gemessen jetzt 6,71 bis 15,12:1.
Ausserdem gruen: pruef-handy, pruef-lesbarkeit, pruef-buehne.
Co-Authored-By: Claude Opus 5 <[email protected]>
319 lines
12 KiB
CSS
319 lines
12 KiB
CSS
/* =====================================================================
|
|
team.css — die Arbeitslage von Managern und Scouts.
|
|
|
|
Wunsch Filipe, 09.09.2026: "so eine kategorie wie über die creator
|
|
will ich dass nur für die spicy und dogfather rolle auch über manager
|
|
und scouts gibt ... ich will dass es so ultra krass gut ist."
|
|
|
|
DIE GESTALTUNG FOLGT EINER ENTSCHEIDUNG, NICHT EINEM GESCHMACK:
|
|
Diese Seite zeigt Zahlen über Kollegen. Sie darf deshalb NICHT
|
|
aussehen wie ein Cockpit mit Warnleuchten. Rot gibt es genau dort,
|
|
wo etwas liegengeblieben ist -- und sonst nirgends. Alles andere ist
|
|
ruhig, damit die wenigen roten Stellen auch etwas heißen.
|
|
===================================================================== */
|
|
|
|
/* =====================================================================
|
|
DER KOPF IST EINE KACHEL, IM TON DER KATEGORIE (09.09.2026)
|
|
|
|
Filipe: "perfektionnir das in einer kachel in der farbe von der
|
|
kategorie bitte."
|
|
|
|
`.t-kachel` steht in der Modulliste von module.css und bekommt damit
|
|
die Form des Hauses: gefraeste Fase, Kantenlicht, Eckwinkel, Raster.
|
|
Sie braucht hier nur noch zweierlei -- eine FLAECHE (die Modulliste
|
|
gibt nur die Fassung, den Grund bringt jedes Bauteil selbst mit) und
|
|
den TON.
|
|
|
|
DER TON IST NICHT ABGESCHRIEBEN. Die Kachel traegt `data-ton="22"`,
|
|
und die Regel dazu steht in start.css -- dieselbe, aus der die
|
|
Kachel auf der Startseite ihre Farbe zieht. Es gibt damit weiterhin
|
|
genau EINE Stelle, an der die Farbe dieser Kategorie steht; wer sie
|
|
dort aendert, aendert beides. Eine zweite Hexzahl hier waere die
|
|
naechste, die auseinanderlaeuft.
|
|
===================================================================== */
|
|
.t-kachel {
|
|
margin: 0 0 18px;
|
|
padding: 20px 22px;
|
|
background:
|
|
var(--raster),
|
|
linear-gradient(150deg,
|
|
color-mix(in srgb, var(--ton) 13%, transparent),
|
|
transparent 46%),
|
|
linear-gradient(178deg, rgba(9, 13, 20, .955), rgba(4, 7, 12, .985));
|
|
}
|
|
|
|
/* ---------- Der Kopf --------------------------------------------------- */
|
|
.t-kopf {
|
|
display: flex; align-items: flex-start; justify-content: space-between;
|
|
gap: 20px; flex-wrap: wrap;
|
|
}
|
|
.t-kopf__titel {
|
|
margin: 4px 0 6px;
|
|
font-size: clamp(1.5rem, 3.4vw, 2.1rem); font-weight: 700;
|
|
color: var(--text);
|
|
letter-spacing: -.01em;
|
|
}
|
|
.t-kopf__unter { margin: 0; font-size: .96rem; color: var(--text-leise); }
|
|
/* Der Satz über die Grenzen steht in einem eigenen Kasten und nicht als
|
|
Fußnote. Er ist die wichtigste Zeile der Seite: Ohne ihn wird eine
|
|
Arbeitslage als Überwachung gelesen -- und dann arbeitet niemand mehr
|
|
offen damit. */
|
|
.t-kopf__grenze {
|
|
flex: 1 1 300px; max-width: 44ch;
|
|
margin: 0; padding: 12px 15px;
|
|
/* Im Ton der Kategorie und nicht mehr in Gruen: In einer Kachel, die
|
|
schon eine Farbe hat, ist eine zweite Farbe daneben eine zweite
|
|
Aussage -- und dieser Kasten sagt dasselbe wie die Kachel, nur
|
|
genauer. */
|
|
border-left: 3px solid color-mix(in srgb, var(--ton) 60%, transparent);
|
|
border-radius: 0 10px 10px 0;
|
|
background:
|
|
linear-gradient(color-mix(in srgb, var(--ton) 9%, transparent),
|
|
color-mix(in srgb, var(--ton) 9%, transparent)),
|
|
rgba(7, 10, 17, .8);
|
|
font-size: .87rem; line-height: 1.55; color: var(--text-leise);
|
|
}
|
|
.t-kopf__grenze strong { color: var(--text); }
|
|
|
|
/* ---------- Die Lücken ------------------------------------------------- */
|
|
.t-luecken {
|
|
display: grid; gap: 12px;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
|
|
margin: 0 0 18px;
|
|
}
|
|
/* EINE UNDURCHSICHTIGE FLAECHE, KEIN SCHLEIER.
|
|
|
|
Die Lektion vom Vorlagenbrett heute Mittag, hier gleich mitgenommen:
|
|
Eine Karte mit 7 Prozent Farbe auf transparentem Grund laesst das
|
|
Buehnenfoto durchscheinen -- und dann haengt die Lesbarkeit davon ab,
|
|
ob hinter dem Text gerade eine helle oder eine dunkle Stelle liegt.
|
|
Dort hat es 3,61:1 ergeben, wo 4,5 noetig sind.
|
|
|
|
Deshalb hier von vornherein ein eigener, deckender Grund. Der rote
|
|
Ton liegt darauf, nicht darin. */
|
|
.tl {
|
|
/* Auch eine Kachel -- mit dem Warnton als --ton, damit Kantenlicht
|
|
und Eckwinkel rot leuchten. Der Grund bleibt DECKEND: Die Lektion
|
|
vom Vorlagenbrett gilt weiter, eine Karte mit sieben Prozent Farbe
|
|
auf durchsichtigem Grund laesst das Buehnenfoto durch. */
|
|
--ton: #ff9aa2;
|
|
padding: 16px 18px;
|
|
background:
|
|
var(--raster),
|
|
linear-gradient(150deg, rgba(255, 154, 162, .11), transparent 50%),
|
|
rgba(7, 10, 17, .95);
|
|
}
|
|
.tl__titel {
|
|
margin: 0 0 4px; font-size: .98rem; font-weight: 700;
|
|
color: color-mix(in srgb, var(--warn, #ff9aa2) 78%, #ffffff);
|
|
}
|
|
.tl__satz { margin: 0 0 8px; font-size: .84rem; color: var(--text-leise); line-height: 1.5; }
|
|
.tl__namen {
|
|
margin: 0; font-size: .86rem; color: var(--text); line-height: 1.6;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
/* Keine Lücke ist auch eine Auskunft -- und dann grün statt rot. */
|
|
.tl[data-gut="ja"] {
|
|
--ton: var(--scout-haupt);
|
|
background:
|
|
var(--raster),
|
|
linear-gradient(150deg, rgba(95, 201, 154, .11), transparent 50%),
|
|
rgba(7, 10, 17, .95);
|
|
}
|
|
.tl[data-gut="ja"] .tl__titel { color: var(--scout-haupt); }
|
|
|
|
/* ---------- Die Lage in Zahlen ----------------------------------------- */
|
|
.t-lage {
|
|
display: grid; gap: 10px;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr));
|
|
margin: 0 0 22px;
|
|
}
|
|
|
|
/* ---------- Eine Kennzahl ---------------------------------------------- */
|
|
/* Die Kennzahlen bleiben SCHLICHT -- und das ist eine Entscheidung.
|
|
Sie stehen zu acht in einer Karte; jede davon mit Fase, Kantenlicht
|
|
und Eckwinkel waere ein Schaufenster voller Rahmen und keine
|
|
Auskunft mehr. Eine Kachel in der Kachel in der Kachel liest
|
|
niemand.
|
|
|
|
Was sie bekommen: eine abgeschnittene Ecke aus derselben Formel wie
|
|
die Kacheln (clip-path mit --fase), damit sie erkennbar zur selben
|
|
Familie gehoeren -- nur eben als Beschlagteil, nicht als Kachel. */
|
|
.tz {
|
|
display: grid; gap: 2px; align-content: start;
|
|
padding: 11px 13px;
|
|
border: 1px solid var(--rand);
|
|
border-radius: 0;
|
|
clip-path: polygon(9px 0, 100% 0, 100% 100%, 0 100%, 0 9px);
|
|
/* Deckend -- eine Kennzahl auf einem Foto ist keine Kennzahl,
|
|
sondern ein Ratespiel. */
|
|
background:
|
|
linear-gradient(rgba(255, 255, 255, .034), rgba(255, 255, 255, .034)),
|
|
rgba(9, 12, 19, .92);
|
|
}
|
|
.tz__wert {
|
|
font-size: 1.28rem; font-weight: 700; color: var(--text);
|
|
font-variant-numeric: tabular-nums; line-height: 1.15;
|
|
}
|
|
.tz__schild {
|
|
font-size: .74rem; color: var(--text-leise); line-height: 1.35;
|
|
}
|
|
/* Rot NUR, wo etwas liegengeblieben ist. */
|
|
.tz[data-art="warn"] {
|
|
border-color: color-mix(in srgb, var(--warn, #ff9aa2) 45%, transparent);
|
|
/* Auch hier deckend. Diese Zeile stand zuerst mit einem einzelnen
|
|
rgba-Wert da und hat damit den undurchsichtigen Grund von oben
|
|
wieder aufgehoben -- ausgerechnet an den Karten, auf die es
|
|
ankommt. Zwei Regeln fuer denselben Grund, und die spaetere
|
|
gewinnt: derselbe Fehler wie so oft in diesem Haus. */
|
|
background:
|
|
linear-gradient(rgba(255, 154, 162, .09), rgba(255, 154, 162, .09)),
|
|
rgba(7, 10, 17, .9);
|
|
}
|
|
.tz[data-art="warn"] .tz__wert { color: color-mix(in srgb, var(--warn, #ff9aa2) 72%, #ffffff); }
|
|
/* Und grün, wenn eine Null eine gute Nachricht ist -- eine Null ohne
|
|
Farbe liest sich wie ein fehlender Wert. */
|
|
.tz[data-art="gut"] { border-color: color-mix(in srgb, var(--scout-haupt) 30%, transparent); }
|
|
.tz[data-art="gut"] .tz__wert { color: var(--scout-haupt); }
|
|
|
|
/* ---------- Die Leute --------------------------------------------------- */
|
|
.t-gruppe { margin: 0 0 26px; }
|
|
.t-gruppe .feldschild { margin: 0 0 10px; }
|
|
.t-liste {
|
|
display: grid; gap: 14px;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(420px, 100%), 1fr));
|
|
}
|
|
|
|
/* =====================================================================
|
|
DIE KARTEN UNTEN SIND JETZT AUCH KACHELN (09.09.2026)
|
|
|
|
Filipe: "und die kacheln unten in der seite auch perfektionnieren und
|
|
geil machen bitte."
|
|
|
|
Sie waren abgerundete Rechtecke mit einem Streifen links -- richtig,
|
|
aber eben nicht die Sprache dieses Hauses. `.tperson` und `.tl`
|
|
stehen jetzt in der Modulliste und bekommen damit Fase, Kantenlicht,
|
|
Eckwinkel und Raster wie jede andere Kachel.
|
|
|
|
DIE FARBE KOMMT AUS DER ROLLE, und zwar ueber `--ton`. Das ist die
|
|
Variable, aus der module.css das Kantenlicht und die Eckwinkel
|
|
zieht. Ein Manager-Kasten leuchtet damit lila, ein Scout-Kasten
|
|
gruen -- ohne dass hier eine einzige Farbe ausgeschrieben stehen
|
|
muss.
|
|
|
|
DER STREIFEN IST WEG, und das ist kein Verlust: module.css belegt
|
|
::before und ::after selbst (Kantenlicht und Eckwinkel) und laedt
|
|
NACH dieser Datei -- ein eigenes ::after waere wirkungslos gewesen.
|
|
Das Kantenlicht traegt die Rollenfarbe jetzt ohnehin, und zwar rund
|
|
um die ganze Karte statt auf drei Pixeln links. */
|
|
.tperson {
|
|
--r: var(--text-still);
|
|
--ton: var(--r);
|
|
position: relative;
|
|
padding: 17px 19px 19px;
|
|
background:
|
|
var(--raster),
|
|
linear-gradient(155deg,
|
|
color-mix(in srgb, var(--r) 11%, transparent),
|
|
transparent 52%),
|
|
linear-gradient(178deg, rgba(10, 14, 22, .95), rgba(5, 8, 14, .98));
|
|
}
|
|
.tperson[data-rolle="manager"] { --r: var(--manager-haupt); }
|
|
.tperson[data-rolle="scout"] { --r: var(--scout-haupt); }
|
|
.tperson[data-gesperrt="ja"] { opacity: .6; }
|
|
|
|
.tperson__kopf {
|
|
display: flex; align-items: center; gap: 12px;
|
|
margin-bottom: 14px; flex-wrap: wrap;
|
|
}
|
|
.tperson__bild {
|
|
width: 44px; height: 44px; border-radius: 50%; object-fit: cover;
|
|
border: 1px solid color-mix(in srgb, var(--r) 40%, transparent);
|
|
flex: none;
|
|
}
|
|
.tperson__zeichen {
|
|
width: 44px; height: 44px; border-radius: 50%;
|
|
display: grid; place-items: center; flex: none;
|
|
font-size: 1.05rem; font-weight: 700;
|
|
color: color-mix(in srgb, var(--r) 75%, #ffffff);
|
|
background: color-mix(in srgb, var(--r) 16%, #070a11);
|
|
border: 1px solid color-mix(in srgb, var(--r) 34%, transparent);
|
|
}
|
|
.tperson__text { flex: 1; min-width: 0; }
|
|
/* LANGE NAMEN BRECHEN UM, statt abgeschnitten zu werden.
|
|
"Patrick-Maximilian" braucht 90 px, bei 320 px Bildschirm stehen 56
|
|
zur Verfuegung -- gemeldet von pruef-handy. Ein Name, den man nicht
|
|
lesen kann, ist auf einer Seite ueber Personen der schlechteste
|
|
Platz zum Sparen. */
|
|
.tperson__name {
|
|
margin: 0; font-size: 1.06rem; font-weight: 650; color: var(--text);
|
|
overflow-wrap: anywhere; hyphens: auto;
|
|
}
|
|
.tperson__unter {
|
|
margin: 2px 0 0; font-size: .82rem; color: var(--text-leise); line-height: 1.45;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.tperson__zuletzt {
|
|
flex: none;
|
|
padding: 4px 10px; border-radius: 999px;
|
|
font-size: .74rem; font-weight: 600;
|
|
color: var(--text-leise);
|
|
background: rgba(255, 255, 255, .05);
|
|
border: 1px solid var(--rand);
|
|
}
|
|
.tperson__zuletzt[data-warn="ja"] {
|
|
color: color-mix(in srgb, var(--warn, #ff9aa2) 72%, #ffffff);
|
|
border-color: color-mix(in srgb, var(--warn, #ff9aa2) 40%, transparent);
|
|
background: rgba(255, 154, 162, .1);
|
|
}
|
|
|
|
.tperson__zahlen {
|
|
display: grid; gap: 8px;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(130px, 100%), 1fr));
|
|
}
|
|
|
|
/* ---------- Die Pipeline ------------------------------------------------ */
|
|
.tpipe {
|
|
margin-top: 14px; padding-top: 13px;
|
|
border-top: 1px solid var(--rand);
|
|
}
|
|
.tpipe__schild {
|
|
margin: 0 0 8px;
|
|
font-size: .72rem; font-weight: 700; letter-spacing: .1em;
|
|
text-transform: uppercase; color: var(--text-still);
|
|
}
|
|
.tpipe__reihe {
|
|
display: grid; gap: 8px;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(120px, 100%), 1fr));
|
|
}
|
|
|
|
/* ---------- Wen genau --------------------------------------------------- */
|
|
.tperson__wer { margin-top: 12px; }
|
|
.tperson__wer summary {
|
|
cursor: pointer; font-size: .82rem; color: var(--text-leise);
|
|
padding: 4px 0;
|
|
}
|
|
.tperson__wer summary:hover { color: var(--text); }
|
|
.tperson__wer summary:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
|
|
.tperson__namen {
|
|
margin: 6px 0 0; font-size: .84rem; color: var(--text-leise); line-height: 1.65;
|
|
}
|
|
|
|
@media (max-width: 620px) {
|
|
.t-kopf { flex-direction: column; gap: 14px; }
|
|
/* `flex: 1 1 300px` ist am Rechner richtig -- dort ist die Hauptachse
|
|
WAAGERECHT und der Kasten teilt sich die Breite mit dem Titel.
|
|
In einer Spalte ist die Hauptachse aber SENKRECHT, und derselbe
|
|
Wert laesst ihn in die HOEHE wachsen: Auf dem Bildschirmfoto stand
|
|
danach die halbe Kachel leer.
|
|
|
|
Ein Flexwert gilt fuer eine Richtung, nicht fuer ein Element. Wer
|
|
die Richtung dreht, muss ihn mitdrehen. */
|
|
.t-kopf__grenze { flex: 0 0 auto; max-width: none; }
|
|
.tperson { padding: 14px 15px 16px; }
|
|
}
|
|
@media (forced-colors: active) {
|
|
.tz, .tl, .tperson { border: 1px solid CanvasText; }
|
|
.tperson::after { background: CanvasText; }
|
|
}
|