Drei Fächer, Gesichter, Zeichen an jedem Handgriff -- der Chat ist nicht wiederzuerkennen
Filipe: "ich will 3 kategorien haben. chats mit einzelnen personen, gruppen chats und kanäle." Und: "ich will dass du überhaupt die komplette kachel veränderst, ich will dass alles anderst aussieht und gestaltet ist, mach wirklich was verrücktes und übertrieben krank geiles ... dass die ganze community und team morgen total überrascht sind und den chat nicht wieder erkennen." DIE LISTE HAT DREI FÄCHER. Personen, Gruppen, Kanäle -- als Mulde mit drei Schaltern über dem Suchfeld, nicht als drei freie Knöpfe: Drei Dinge, die einander ausschließen, liest man nur als EINE Entscheidung, wenn sie in einer gemeinsamen Fassung sitzen. Das gewählte Fach liegt oben auf (Licht, Schatten, Akzentsaum), die anderen liegen darin -- man sieht die Wahl an der Tiefe, nicht nur an der Farbe. Die Wahl überlebt das Neuladen; beim Suchen gilt sie nicht, wer einen Namen tippt will ihn finden und nicht raten, in welchem Fach er liegt. WAS EIN GESCHLOSSENES FACH NICHT VERSCHLUCKEN DARF: die Ungelesenen und den Ruf. Beides steht deshalb AM Fach -- die Zahl in der Warnfarbe, das @ in der Akzentfarbe. Gefunden hat die Lücke nicht ein Blick, sondern pruef-erwaehnung: Die Erwähnung lag in einer Gruppe, offen war "Personen", und das @ war damit nirgends zu sehen. EIN LEERES FACH MERKT MAN SICH NICHT. Wer nur einen Kanal hat -- jeder Neue im Haus -- landete auf "Personen" und sah eine leere Liste neben einem vollen Kanal. Beim ersten Zeichnen wird deshalb ins erste Fach gewechselt, in dem etwas steht; Reihenfolge: gerufen, dann ungelesen, dann überhaupt vorhanden. Gespeichert wird das NICHT -- es ist geraten, nicht gewählt. Gefunden von pruef-gifs. EIN GESICHT IM KOPF DES GESPRÄCHS. Links in der Liste trägt jedes Gespräch sein Zeichen, und ausgerechnet beim Öffnen verschwand es. Es ist dasselbe Zeichen, nicht ein ähnliches: `zeichenFuellen()` füllt jetzt Liste und Kopf -- rund fünfzig Zeilen standen vorher mitten im Zeichnen und hätten sonst ein zweites Mal dagestanden. Am Handy bleibt es weg, nachgerechnet: mit ihm blieben dem Namen 126 px bei 128 Untergrenze, die Knopfreihe fiele eine Zeile tiefer. JEDER HANDGRIFF BEKOMMT SEIN ZEICHEN. Unter jeder Blase standen fünf Wörter in Versalien -- bei zwölf Nachrichten sechzig. Jetzt Pfeil, Gesicht, Papierkorb, Nadel und zwei Blätter, das Wort klein daneben. Die Wörter bleiben: "anheften" und "lösen" sehen als Nadel gleich aus, und "löschen (Notfall)" darf nie ein Rätsel sein. Breiter wird es trotzdem nicht -- gesperrte Versalien kosten rund ein Viertel mehr Breite, genau das, was die Zeichen brauchen. Die Zeichen sind Masken: sie folgen `currentColor` und damit jedem Zustand der Schrift daneben. AUS DER FUSSZEILE WIRD EINE MULDE, und der Grund wird dabei dunkler, nie heller -- das ist die Bedingung dafür, dass die Kontrastzusage gültig bleibt. Die Uhrzeit bekommt ein eigenes Schild: eine Angabe, keine Bedienung. AUS DEM FARBFLECK WIRD EIN RING. Der Knopf für die eigene Kachel war ein voller Kreis in der gewählten Farbe, direkt neben einer gleich großen Marke -- man las ihn als Meldung, und er meldet nichts. Farbe erscheint auf dieser Seite überall als Kontur; jetzt auch hier. AUS DEM TOTEN TRENNER WIRD LICHT. Die senkrechte Linie am Verlauf stammte aus der Zeit, als Liste und Verlauf EIN Kasten waren; seit dem Umbau auf zwei Tafeln klebte sie ohne Aufgabe an der Kante. An ihrer Stelle ein sehr weicher Schein oben rechts, unter vier Prozent Deckung -- Tiefe, kein Leuchten. DIE KONSOLE: Das Schreibfeld ist eine Rinne statt eines flachen Kastens, die vier Werkzeuge sprechen dieselbe Sprache, und der Absendeknopf ist als einziger gefüllt. Keine Maßzahl angefasst -- die Zeile ist seit dem 23.09. auf den Pixel voll. ZWEI PRÜFUNGEN WURDEN GENAUER, NICHT NACHSICHTIGER: pruef-chatkachel suchte ihre "freie Stelle" nicht, sie rechnete sie aus -- 6 px vom rechten Rand, halbe Höhe. Das lag mal auf dem Rollbalken, mal auf einer Blase, und meldete beides Mal "das Bühnenbild ist gar nicht da". Sie sucht die Stelle jetzt mit `elementFromPoint` und sagt es, wenn es keine gibt. pruef-erwaehnung prüft jetzt beides: dass das Fach den Ruf meldet, ohne geöffnet zu werden, UND dass die Zeile nach dem Wechsel dasteht -- mit der Gegenprobe, dass das Fach wirklich filtert. 126 -> 129. Nachgebessert: die Ungelesen-Marke am Fach stand auf 0,64 rem = 10,24 px, unter der Hausgrenze von 11,5. Gemeldet von pruef-css-klassen, bevor es jemand auf einem Telefon sehen musste -- der zweite Anlauf desselben Reflexes an einem Tag. Geprüft: pruef-chat-optik, pruef-chatkachel (40), pruef-chat (ALLES IN ORDNUNG), pruef-chat-neu (32), pruef-chat-ausbau (64), pruef-chat-kanaele (81), pruef-chat-aufloesen (126), pruef-chat-anhaenge (109), pruef-erwaehnung (129), pruef-css-klassen, pruef-tippziele (11), pruef-lesbarkeit. pruef-gifs hat weiterhin die zwei Fehler, die schon vor diesem Umbau da waren (an HEAD nachgemessen). Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
+560
-43
@@ -53,14 +53,42 @@
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
AUS EINEM KASTEN WERDEN ZWEI TAFELN (25.09.2026)
|
||||
=====================================================================
|
||||
|
||||
Filipe: „ich will wirklich dass du das ingesamte veränderst und so
|
||||
krass geil machst dass die ganze community und team morgen total
|
||||
überrascht sind und den chat nicht wieder erkennen."
|
||||
|
||||
WAS VORHER DA WAR: ein Rechteck mit einer Linie in der Mitte. Beide
|
||||
Haelften teilten sich einen Rahmen, einen Grund, eine Ebene -- die
|
||||
Seite war eine Tabelle mit zwei Spalten.
|
||||
|
||||
WAS JETZT DA IST: zwei getrennte Tafeln, die ueber der Buehne
|
||||
schweben, mit einer Fuge dazwischen. Links das Verzeichnis, rechts
|
||||
das Gespraech -- zwei Dinge, die man auch als zwei sieht. Das ist
|
||||
der eine Griff, der die Seite am staerksten veraendert, und er
|
||||
kostet keine einzige Zeile im Skript.
|
||||
|
||||
WARUM DAS MEHR IST ALS EIN ABSTAND: Zwischen den Tafeln scheint die
|
||||
Buehne durch. Damit bekommt die Seite eine Tiefe, die ein einzelner
|
||||
Kasten nie haben kann -- man sieht, dass etwas DAHINTER ist, und
|
||||
dass die Tafeln DARUEBER liegen.
|
||||
|
||||
DIE FUGE IST 14 px UND NICHT MEHR: Breiter, und die beiden Haelften
|
||||
verlieren den Zusammenhang; sie gehoeren ja zusammen. 14 px sind
|
||||
genug, um zwei Koerper zu sehen, und wenig genug, um sie als Paar
|
||||
zu lesen.
|
||||
===================================================================== */
|
||||
.chat {
|
||||
flex: 1;
|
||||
min-height: 0; /* sonst wächst das Raster über die Fläche */
|
||||
display: grid;
|
||||
grid-template-columns: minmax(240px, 320px) 1fr;
|
||||
gap: 0;
|
||||
border: 1px solid var(--rand);
|
||||
border-radius: var(--radius);
|
||||
grid-template-columns: minmax(250px, 340px) 1fr;
|
||||
gap: 14px;
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
/* ==== DAS BUEHNENBILD SCHEINT DURCH (20.09.2026) ==================
|
||||
|
||||
Filipe: „ich will auch ein krasses hintergrundbild fuer den treff
|
||||
@@ -123,42 +151,95 @@
|
||||
still falsch machen. Deshalb bekommt die Blase Tiefe ueber
|
||||
Kante und Schatten, nicht ueber den Untergrund.
|
||||
=================================================================== */
|
||||
/* Der Grund liegt jetzt an den Tafeln, nicht am Raster. */
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/* ---- DIE TAFEL: der Koerper, aus dem beide Haelften bestehen -------
|
||||
Eine Regel fuer beide statt zweier fast gleicher: Die Fase oben
|
||||
links ist dieselbe wie an jeder Kachel im Haus, der Rest ist das
|
||||
Licht-und-Tiefe-System dieser Seite. */
|
||||
.chat__spalte {
|
||||
position: relative;
|
||||
border: 1px solid rgba(255, 255, 255, .07);
|
||||
border-radius: 0;
|
||||
clip-path: polygon(var(--fase, 18px) 0, 100% 0, 100% 100%, 0 100%, 0 var(--fase, 18px));
|
||||
background:
|
||||
radial-gradient(140% 100% at 0% 0%, rgba(255, 255, 255, .045), transparent 52%),
|
||||
linear-gradient(168deg, rgba(17, 24, 36, .86) 0%, rgba(8, 12, 19, .9) 100%);
|
||||
backdrop-filter: blur(22px) saturate(118%);
|
||||
box-shadow:
|
||||
inset 0 1px 0 rgba(255, 255, 255, .085),
|
||||
inset 0 -1px 0 rgba(0, 0, 0, .5),
|
||||
0 34px 70px -34px rgba(0, 0, 0, .95),
|
||||
0 6px 18px -10px rgba(0, 0, 0, .7);
|
||||
inset 0 1px 0 rgba(255, 255, 255, .09),
|
||||
inset 0 -1px 0 rgba(0, 0, 0, .55),
|
||||
0 40px 80px -40px rgba(0, 0, 0, .96),
|
||||
0 8px 22px -14px rgba(0, 0, 0, .8);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Die Fuge zwischen den Spalten ist keine Linie, sondern eine Kante:
|
||||
links dunkel, rechts hell -- so, wie zwei Bleche aneinanderstossen.
|
||||
Eine Linie haette gesagt "hier ist eine Grenze"; die Kante sagt
|
||||
"hier liegt eine Platte auf einer anderen". */
|
||||
.chat__spalte--liste {
|
||||
position: relative;
|
||||
background: linear-gradient(180deg,
|
||||
rgba(255, 255, 255, .022) 0%, rgba(255, 255, 255, 0) 30%);
|
||||
}
|
||||
/* DIE FUGE VON GESTERN IST WEG (25.09.2026). Sie zeichnete eine
|
||||
Kante zwischen zwei Haelften EINES Kastens. Seit es zwei Tafeln
|
||||
gibt, liegt dort echter Abstand -- eine gemalte Kante daneben waere
|
||||
eine Linie zu viel. Die Leuchtschiene links an der Liste bleibt
|
||||
dagegen: Sie gehoert zur Tafel, nicht zur Fuge. */
|
||||
.chat__spalte--liste::after {
|
||||
content: ""; position: absolute; top: 0; bottom: 0; right: -1px; width: 2px;
|
||||
content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
|
||||
background: linear-gradient(180deg,
|
||||
color-mix(in srgb, var(--akzent) 26%, transparent) 0%,
|
||||
rgba(255, 255, 255, .05) 22%,
|
||||
rgba(0, 0, 0, .35) 100%);
|
||||
pointer-events: none;
|
||||
color-mix(in srgb, var(--akzent) 55%, #ffffff) 0%,
|
||||
color-mix(in srgb, var(--akzent) 75%, transparent) 30%,
|
||||
transparent 100%);
|
||||
box-shadow: 0 0 14px -2px color-mix(in srgb, var(--akzent) 55%, transparent);
|
||||
pointer-events: none; z-index: 3;
|
||||
}
|
||||
|
||||
.chat__spalte {
|
||||
display: flex; flex-direction: column;
|
||||
min-height: 0; min-width: 0;
|
||||
}
|
||||
/* Der Trenner zwischen Liste und Verlauf. Läuft oben und unten aus --
|
||||
eine durchgehende Linie zerschneidet die Kachel in zwei. */
|
||||
/* =====================================================================
|
||||
AUS DEM TRENNER WIRD LICHT (25.09.2026)
|
||||
|
||||
Hier stand eine senkrechte Linie am linken Rand des Verlaufs – der
|
||||
Trenner zwischen Liste und Verlauf, aus der Zeit, als beide noch
|
||||
EIN Kasten waren. Seit dem Umbau auf zwei Tafeln liegt dort echter
|
||||
Abstand; die Linie klebte seitdem ohne Aufgabe an der Kante der
|
||||
rechten Tafel. Eine Linie, die nichts mehr trennt, ist eine Linie
|
||||
zu viel.
|
||||
|
||||
An ihrer Stelle liegt jetzt ein sehr weicher Schein in der
|
||||
Akzentfarbe, oben rechts – so, als stünde das Licht der Bühne
|
||||
hinter der Tafel, und unten links ein Hauch Gegenlicht. Erst damit
|
||||
sieht die große leere Fläche rechts nach einem Raum aus statt nach
|
||||
einem leeren Kasten.
|
||||
|
||||
SCHWACH, UND ZWAR ABSICHTLICH: 13 % Akzent in einem Verlauf, der
|
||||
nach 62 % ausläuft – am hellsten Punkt keine vier Prozent Deckung.
|
||||
Er soll Tiefe machen, nicht leuchten. Ein Chat wird stundenlang
|
||||
angesehen; was beim ersten Mal auffällt, nervt beim zwanzigsten
|
||||
(Hausregel: augenschonend).
|
||||
|
||||
`z-index: -1` UND NICHT 0: `.chat__spalte` hat `backdrop-filter`
|
||||
und bildet damit einen eigenen Stapelzusammenhang. Ein negativer
|
||||
Wert legt den Schein darin über den Grund der Tafel, aber unter
|
||||
alles, was darin steht. Mit `0` läge er über den Nachrichten – ein
|
||||
Schleier über der Schrift, und genau das wäre der Fehler, den diese
|
||||
Datei an anderer Stelle schon zweimal notiert hat.
|
||||
===================================================================== */
|
||||
.chat__spalte--verlauf { position: relative; }
|
||||
.chat__spalte--verlauf::before {
|
||||
content: ""; position: absolute; left: 0; top: 12px; bottom: 12px; width: 1px;
|
||||
background: linear-gradient(180deg,
|
||||
transparent, var(--rand-hell) 15%, var(--rand-hell) 85%, transparent);
|
||||
content: ""; position: absolute; inset: 0;
|
||||
background:
|
||||
radial-gradient(72% 56% at 88% 0%,
|
||||
color-mix(in srgb, var(--akzent) 13%, transparent), transparent 62%),
|
||||
radial-gradient(60% 46% at 6% 100%,
|
||||
rgba(255, 255, 255, .032), transparent 58%);
|
||||
pointer-events: none;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.chat__kopf {
|
||||
@@ -211,6 +292,33 @@
|
||||
Rest. Wird er unterschritten, wandert die Knopfreihe eine Zeile
|
||||
tiefer -- das ist der Umbruch oben. */
|
||||
.chat__kopf-text { min-width: 0; flex: 1 1 8rem; }
|
||||
|
||||
/* ---- Das Gesicht im Kopf des Gesprächs (25.09.2026) -----------------
|
||||
|
||||
Es trägt die Klasse `.chat-raum__zeichen` und bekommt damit Farbe,
|
||||
Licht, Saum und Profilbild der Liste geschenkt. Hier steht nur, was
|
||||
am Kopf anders ist: eine Spur kleiner, damit es die Überschrift
|
||||
nicht überragt.
|
||||
|
||||
`[hidden]` MUSS hier stehen. `.chat-raum__zeichen` setzt
|
||||
`display: grid`, und eine Klassenregel schlägt das eingebaute
|
||||
`display: none` des Browsers – ohne diese Zeile stünde ein leerer
|
||||
Kreis da, solange kein Gespräch offen ist. Genau diese Falle hat
|
||||
dieses Haus bei `hidden` schon einmal erwischt.
|
||||
|
||||
AM HANDY BLEIBT ES WEG (siehe die schmale Fassung am Dateiende).
|
||||
Nachgerechnet bei 390 px: Zurück-Pfeil 44 + Zeichen 40 + drei
|
||||
Knöpfe 132 + vier Abstände 48 = 264. Für den Namen blieben 126 px,
|
||||
seine Untergrenze sind 128 (`flex: 1 1 8rem`) – die Knopfreihe
|
||||
fiele also eine Zeile tiefer, und der Kopf würde 44 px höher.
|
||||
Dafür ist es zu wenig wert: Am Handy kommt man aus der Liste, in
|
||||
der man das Gesicht gerade angetippt hat. */
|
||||
.chat__kopf-zeichen {
|
||||
width: 40px; height: 40px;
|
||||
font-size: .82rem;
|
||||
}
|
||||
.chat__kopf-zeichen[hidden] { display: none; }
|
||||
|
||||
/* DER TITEL WAR SO GROSS WIE DIE VORSCHAUZEILE DARUNTER (25.09.2026).
|
||||
|
||||
Im Bildschirmfoto stand „VanVan" in derselben Staerke wie „Du:
|
||||
@@ -296,7 +404,146 @@
|
||||
|
||||
PILLENFORM, weil darunter Zeilen mit 14px-Ecken stehen — ein
|
||||
scharfkantiger Kasten darüber wirkt wie von einer anderen Seite. */
|
||||
.chat__suche { padding: 12px 12px 8px; flex: none; }
|
||||
/* =====================================================================
|
||||
DIE DREI FAECHER (25.09.2026)
|
||||
|
||||
Filipe: „ich will 3 kategorien haben. chats mit einzelnen personen,
|
||||
gruppen chats und kanäle."
|
||||
|
||||
EINE MULDE MIT DREI SCHALTERN, nicht drei freie Knoepfe: Drei Dinge
|
||||
nebeneinander, die einander ausschliessen, liest man nur dann als
|
||||
EINE Entscheidung, wenn sie in einer gemeinsamen Fassung sitzen.
|
||||
Sonst sind es drei Sachen.
|
||||
|
||||
DAS GEWAEHLTE FACH LIEGT OBEN AUF -- heller Grund, Lichtkante,
|
||||
Schatten darunter. Die anderen liegen IN der Mulde. Man sieht die
|
||||
Wahl also an der Tiefe und nicht nur an der Farbe; das trennt auch
|
||||
dann, wenn jemand Farben schlecht unterscheidet.
|
||||
|
||||
DIE ZAHL DER UNGELESENEN STEHT AM FACH und nicht nur an der Zeile:
|
||||
Ein geschlossenes Fach waere sonst ein Ort, an dem Nachrichten
|
||||
liegen bleiben, ohne dass es jemand sieht.
|
||||
===================================================================== */
|
||||
.chat-arten {
|
||||
display: grid; grid-template-columns: repeat(3, 1fr);
|
||||
gap: 3px;
|
||||
margin: 12px 12px 0;
|
||||
padding: 3px;
|
||||
border-radius: 14px;
|
||||
border: 1px solid rgba(255, 255, 255, .06);
|
||||
background: linear-gradient(180deg, rgba(0, 0, 0, .4) 0%, rgba(255, 255, 255, .02) 100%);
|
||||
box-shadow:
|
||||
inset 0 2px 5px -2px rgba(0, 0, 0, .75),
|
||||
0 1px 0 rgba(255, 255, 255, .05);
|
||||
}
|
||||
.chat-art {
|
||||
position: relative;
|
||||
display: flex; align-items: center; justify-content: center; gap: 6px;
|
||||
min-height: 38px; padding: 6px 4px;
|
||||
border: 1px solid transparent; border-radius: 11px;
|
||||
background: none;
|
||||
font: inherit; font-size: .78rem; font-weight: 650;
|
||||
letter-spacing: .01em;
|
||||
color: var(--text-still); cursor: pointer;
|
||||
transition: color .16s ease, background-color .16s ease,
|
||||
border-color .16s ease, box-shadow .16s ease;
|
||||
}
|
||||
.chat-art:hover { color: var(--text); background: rgba(255, 255, 255, .04); }
|
||||
.chat-art:focus-visible { outline: 2px solid var(--akzent); outline-offset: 1px; }
|
||||
.chat-art[aria-selected="true"] {
|
||||
color: #f2f7fd;
|
||||
border-color: rgba(255, 255, 255, .1);
|
||||
background: linear-gradient(180deg,
|
||||
rgba(255, 255, 255, .1) 0%, rgba(255, 255, 255, .035) 100%);
|
||||
box-shadow:
|
||||
inset 0 1px 0 rgba(255, 255, 255, .16),
|
||||
0 6px 14px -10px rgba(0, 0, 0, .95);
|
||||
}
|
||||
/* Der Saum in der Akzentfarbe sagt, welches Fach offen ist -- er
|
||||
sitzt UNTEN am Schalter, wie ein Reiter an einer Mappe. */
|
||||
.chat-art[aria-selected="true"]::after {
|
||||
content: ""; position: absolute; left: 22%; right: 22%; bottom: -1px; height: 2px;
|
||||
border-radius: 2px 2px 0 0;
|
||||
background: var(--akzent);
|
||||
box-shadow: 0 0 10px -1px color-mix(in srgb, var(--akzent) 75%, transparent);
|
||||
}
|
||||
.chat-art__name { white-space: nowrap; }
|
||||
.chat-art__zahl {
|
||||
font-size: .72rem; font-weight: 700; opacity: .6;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.chat-art[aria-selected="true"] .chat-art__zahl { opacity: .85; }
|
||||
/* DAS @ AM FACH (25.09.2026).
|
||||
|
||||
Es sagt „hier ging es an dich" -- dieselbe Auskunft wie das @ an
|
||||
der Zeile, nur eine Ebene hoeher, damit ein geschlossenes Fach sie
|
||||
nicht verschluckt.
|
||||
|
||||
ES IST KEINE MARKE MIT FLAECHE. Neben der Ungelesen-Marke stuenden
|
||||
sonst zwei gleich laute Punkte nebeneinander, und man muesste
|
||||
lesen, um sie zu unterscheiden. So bleibt ein Zeichen in der
|
||||
Akzentfarbe -- gleiche Bedeutung, andere Gestalt.
|
||||
|
||||
`text-shadow` STATT `box-shadow`: Der Schein soll am Buchstaben
|
||||
haengen, nicht an einem Kasten darum. */
|
||||
.chat-art__at {
|
||||
flex: none;
|
||||
font-size: .82rem; font-weight: 800; line-height: 1;
|
||||
color: color-mix(in srgb, var(--akzent) 45%, #ffffff);
|
||||
text-shadow: 0 0 9px color-mix(in srgb, var(--akzent) 70%, transparent);
|
||||
}
|
||||
/* Die Ungelesenen: klein, in der Warnfarbe, oben rechts am Schalter --
|
||||
dort, wo man sie von jedem Programm her sucht. */
|
||||
/* ENTWEDER ODER, NICHT BEIDES (25.09.2026). Im ersten Anlauf stand
|
||||
die Ungelesen-Marke absolut oben rechts -- und lag damit genau auf
|
||||
der Gesamtzahl. Zwei Zahlen uebereinander sind schlimmer als eine
|
||||
zu wenig.
|
||||
|
||||
Was wartet, ist wichtiger als was da ist: Gibt es Ungelesene, tritt
|
||||
die Gesamtzahl zurueck. `:has()` entscheidet das im Stilblatt, damit
|
||||
beide Zahlen im Baum bleiben -- eine Vorlesehilfe liest so weiter
|
||||
"Personen, 3 Gespräche, 2 ungelesene Nachrichten". */
|
||||
.chat-art:has(.chat-art__neu) .chat-art__zahl { display: none; }
|
||||
/* 0,72 rem UND NICHT 0,64 (nachgebessert 25.09.2026).
|
||||
|
||||
pruef-css-klassen hat es gemeldet: „43 Stellen unter 11,5 px – das
|
||||
ist 1 MEHR als die Grundlinie 42." Die eine neue war genau diese
|
||||
Marke: 0,64 rem sind 10,24 px. Die Hausgrenze liegt bei 11,5, weil
|
||||
Schrift darunter auf einem Telefon zu flimmern anfängt – und eine
|
||||
Zahl, die man nicht lesen kann, ist keine Auskunft.
|
||||
|
||||
DAS IST DER ZWEITE ANLAUF AM SELBEN TAG. Heute früh stand die
|
||||
Fußzeile der Nachricht auf 0,66 rem und dieselbe Prüfung hat sie
|
||||
zurückgeholt. Zweimal derselbe Reflex: „klein wirkt leise". Leise
|
||||
macht in diesem Haus die Deckung und die Farbe, nicht die Größe.
|
||||
|
||||
DIE MARKE WÄCHST MIT: 18 px Höhe sind für 11,5-px-Schrift zu
|
||||
knapp – bei „99+" stieße die Schrift oben und unten an. 20 px
|
||||
lassen 4 px Luft, und die Marke bleibt kleiner als die 22 px des
|
||||
Zählers an der Zeile (sie ist die kleinere Auskunft von beiden). */
|
||||
.chat-art__neu {
|
||||
flex: none;
|
||||
min-width: 20px; height: 20px; padding: 0 5px;
|
||||
display: grid; place-items: center;
|
||||
border-radius: 999px;
|
||||
font-size: .72rem; font-weight: 750; line-height: 1;
|
||||
font-variant-numeric: tabular-nums;
|
||||
color: #16060a;
|
||||
background: linear-gradient(160deg,
|
||||
color-mix(in srgb, var(--warn) 88%, #ffffff), var(--warn));
|
||||
box-shadow:
|
||||
0 0 0 1px rgba(0, 0, 0, .5),
|
||||
0 3px 8px -3px color-mix(in srgb, var(--warn) 70%, transparent);
|
||||
}
|
||||
@media (max-width: 560px) {
|
||||
.chat-art { font-size: .74rem; }
|
||||
/* Die GESAMTZAHL faellt weg, nicht die Ungelesenen und nicht das @.
|
||||
Wie viele Gespraeche es gibt, sieht man in der Liste darunter;
|
||||
was darin auf einen wartet, nicht. */
|
||||
.chat-art__zahl { display: none; }
|
||||
}
|
||||
|
||||
.chat__suche { padding: 10px 12px 8px; flex: none; }
|
||||
/* EINGELASSEN STATT AUFGELEGT. Ein Eingabefeld ist eine Vertiefung --
|
||||
Licht faellt hinein, nicht darauf. Deshalb hier der Schatten INNEN
|
||||
und oben, genau andersherum als bei allem, was obenauf liegt. Das
|
||||
@@ -1140,18 +1387,47 @@
|
||||
.chat-nachricht__fuss {
|
||||
display: flex; align-items: center; flex-wrap: wrap;
|
||||
column-gap: 4px; row-gap: 2px;
|
||||
margin-top: 9px; padding-top: 7px;
|
||||
border-top: 1px solid color-mix(in srgb,
|
||||
var(--ton, var(--kachel-standard)) 18%, rgba(255, 255, 255, .06));
|
||||
/* AUS DER KANTE WIRD EINE MULDE (25.09.2026). Eine Linie trennt;
|
||||
eine Mulde sagt zusätzlich, dass die Handgriffe eine Ebene TIEFER
|
||||
liegen als das Gesagte – sie gehören zur Nachricht, sind aber
|
||||
nicht die Nachricht. Es ist dieselbe Form wie an der
|
||||
Registerleiste links: eingesenkt = zur Auswahl, aufliegend =
|
||||
gewählt. Eine Seite, eine Sprache.
|
||||
|
||||
DER GRUND WIRD DUNKLER, NIE HELLER. Das ist kein Geschmack,
|
||||
sondern die Bedingung dafür, dass die Messung gültig bleibt:
|
||||
pruef-chatkachel rechnet die leise Schrift gegen den HELLSTEN
|
||||
denkbaren Grund (Blase zu 92 % über weißem Foto). 26 % Schwarz
|
||||
darüber kann diesen Wert nur verbessern. Wer hier je etwas
|
||||
Helles einsetzt, hebt die Zusage auf und muss neu messen.
|
||||
|
||||
DIE NEGATIVEN RÄNDER holen die Mulde in die Polsterung der Blase
|
||||
hinein (12/17/9 px), damit sie nicht wie ein zweiter Kasten
|
||||
wirkt, sondern wie eine Vertiefung IN der Blase. */
|
||||
margin: 10px -9px -3px; padding: 6px 8px;
|
||||
border-radius: 14px;
|
||||
border-top: 0;
|
||||
background: rgba(0, 0, 0, .26);
|
||||
box-shadow:
|
||||
inset 0 1px 0 rgba(255, 255, 255, .045),
|
||||
inset 0 0 0 1px color-mix(in srgb,
|
||||
var(--ton, var(--kachel-standard)) 12%, transparent);
|
||||
/* 0,72 rem = 11,52 px -- KNAPP UEBER DER HAUSGRENZE (25.09.2026).
|
||||
Der erste Anlauf stand auf 0,66 rem (10,56 px). pruef-css-klassen
|
||||
hat es gemeldet: "45 Stellen unter 11,5 px -- das sind 3 MEHR als
|
||||
die Grundlinie 42." Die Grenze ist kein Geschmack; darunter faengt
|
||||
Schrift an, auf einem Telefon zu flimmern.
|
||||
|
||||
Die Zeile wirkt trotzdem leise -- das machen Versalien, Sperrung
|
||||
und die gedaempfte Deckung, nicht die Groesse. */
|
||||
font-size: .72rem; letter-spacing: .07em; text-transform: uppercase;
|
||||
Die Zeile wirkt trotzdem leise – das machen die Mulde, die
|
||||
gedämpfte Deckung und die Zeichen davor, nicht die Größe.
|
||||
|
||||
KEINE VERSALIEN MEHR (25.09.2026). Sie waren richtig, solange
|
||||
dort fünf nackte Wörter standen und sich als Beschriftung von
|
||||
einem Satz abheben mussten. Seit jedes Wort ein Zeichen vor sich
|
||||
hat, macht das Zeichen diese Arbeit – und gesperrte Versalien
|
||||
kosten rund ein Viertel mehr Breite, also genau den Platz, den
|
||||
die Zeichen brauchen. */
|
||||
font-size: .72rem; letter-spacing: .01em;
|
||||
opacity: .78;
|
||||
transition: opacity .18s ease;
|
||||
/* War var(--text-leise) (#94a5bb). Diese eine Farbe war die Bremse
|
||||
@@ -1166,10 +1442,17 @@
|
||||
.chat-nachricht__fuss { transition: none; }
|
||||
}
|
||||
|
||||
/* DIE ZEIT WIRD EIN SCHILD. In einer Reihe mit fünf Knöpfen war sie
|
||||
der einzige Text ohne Fläche – und sah dadurch aus wie ein
|
||||
vergessener Knopf. Jetzt trägt sie ein eigenes kleines Feld: eine
|
||||
Angabe, keine Bedienung. */
|
||||
.chat-nachricht__zeit {
|
||||
font-size: .72rem; color: inherit;
|
||||
font-variant-numeric: tabular-nums;
|
||||
letter-spacing: .07em;
|
||||
letter-spacing: .02em;
|
||||
padding: 2px 8px;
|
||||
border-radius: 999px;
|
||||
background: rgba(255, 255, 255, .05);
|
||||
/* Die Zeit bleibt links, die Handgriffe ruecken nach rechts: Das
|
||||
eine ist eine Angabe, das andere sind Knoepfe. Zusammen in einer
|
||||
Reihe sahen sie aus wie sechs gleichwertige Dinge. */
|
||||
@@ -1244,13 +1527,31 @@
|
||||
.chat-nachricht__weg-knopf[data-notfall="ja"] {
|
||||
display: inline-flex; align-items: center; gap: 5px;
|
||||
}
|
||||
/* AUS DEM PUNKT WIRD EIN PAPIERKORB (25.09.2026) -- die Überlegung
|
||||
darüber gilt unverändert, nur trägt jetzt ein Zeichen die Warnfarbe
|
||||
statt eines Flecks. Es ist dasselbe Zeichen wie am gewöhnlichen
|
||||
Löschen daneben, nur rot: Man sieht auf einen Blick, dass es
|
||||
dieselbe Handlung ist und dass sie hier anders wiegt.
|
||||
|
||||
DIE ALTE RECHNUNG IST ÜBERHOLT. Darüber steht „auf Babyblau
|
||||
1,91:1" – das galt, als die Blase die Kachelfarbe trug. Seit dem
|
||||
25.09.2026 ist sie für alle dunkles Glas (`--blasengrund`,
|
||||
#0b1019); Lachs darauf liegt weit über den 3:1, die für ein
|
||||
Zeichen gelten. Die Schrift daneben bleibt trotzdem `--blase-leise`
|
||||
und wird nicht eingefärbt – der Grund dafür war nie der Kontrast
|
||||
allein, sondern dass eine Schriftfarbe auf zwölf wählbaren Tönen
|
||||
nicht zu garantieren ist.
|
||||
|
||||
`mask-size` MUSS MIT: Die gemeinsame Regel oben setzt 13 px über
|
||||
die Kurzschreibweise `mask`. Wer hier nur Breite und Höhe ändert,
|
||||
bekommt ein 13-px-Bild in einem 14-px-Kasten – oben links klebend,
|
||||
nicht mittig. */
|
||||
.chat-nachricht__weg-knopf[data-notfall="ja"]::before {
|
||||
content: ""; flex: none;
|
||||
width: 6px; height: 6px; border-radius: 50%;
|
||||
width: 14px; height: 14px; border-radius: 0;
|
||||
background: var(--warn, #ff9aa2);
|
||||
/* Ein duenner dunkler Saum, damit der Punkt auch auf der hellen
|
||||
Kachel eine Kante hat -- sonst verschwimmt Lachs auf Babyblau. */
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, .35);
|
||||
box-shadow: none;
|
||||
-webkit-mask-size: 14px 14px;
|
||||
mask-size: 14px 14px;
|
||||
}
|
||||
.chat-nachricht__weg-knopf[data-notfall="ja"]:hover { color: var(--blase-text); }
|
||||
|
||||
@@ -1366,6 +1667,38 @@
|
||||
resize: none;
|
||||
min-height: 42px; max-height: 160px;
|
||||
line-height: 1.5;
|
||||
/* ==== AUS DEM FELD WIRD EINE RINNE (25.09.2026) ==================
|
||||
|
||||
Es war ein flacher dunkler Kasten in der Hausform -- dasselbe
|
||||
Feld wie in jedem Formular, an der Stelle, an der man auf dieser
|
||||
Seite am häufigsten steht. Jetzt liegt es sichtbar TIEFER als
|
||||
die Konsole ringsum: Lichtkante oben innen, Schatten darunter,
|
||||
runde Enden.
|
||||
|
||||
Das ist dieselbe Sprache wie an der Registerleiste links und an
|
||||
der Mulde unter jeder Nachricht: eingesenkt heißt „hier hinein",
|
||||
aufliegend heißt „hier drücken". Drei Stellen, eine Regel.
|
||||
|
||||
KEINE POLSTERUNG UND KEINE RAHMENSTÄRKE ANGEFASST. Die Zeile ist
|
||||
seit dem 23.09.2026 auf den Pixel voll -- zwei Pixel mehr am
|
||||
Absendeknopf haben ihn damals unter das Feld geschoben. Geändert
|
||||
wird hier nur, was nichts misst: Farbe, Rundung, Schatten. */
|
||||
border-radius: 15px;
|
||||
border-color: rgba(255, 255, 255, .07);
|
||||
background: rgba(0, 0, 0, .34);
|
||||
box-shadow:
|
||||
inset 0 2px 6px -3px rgba(0, 0, 0, .95),
|
||||
inset 0 1px 0 rgba(255, 255, 255, .04);
|
||||
}
|
||||
/* Beim Hineinschreiben hebt sich die Rinne nicht -- sie bekommt Licht.
|
||||
Ein Feld, das beim Tippen die Zeile verschiebt, ist ein Feld, das
|
||||
beim Tippen stört. */
|
||||
.chat__eingabe textarea:focus {
|
||||
background: rgba(0, 0, 0, .28);
|
||||
border-color: color-mix(in srgb, var(--akzent) 45%, transparent);
|
||||
box-shadow:
|
||||
inset 0 2px 6px -3px rgba(0, 0, 0, .95),
|
||||
0 0 0 3px color-mix(in srgb, var(--akzent) 13%, transparent);
|
||||
}
|
||||
/* Der eine Knopf, den man in diesem Fenster am haeufigsten drueckt --
|
||||
und er sah aus wie die Bueroklammer daneben. Jetzt ist er der
|
||||
@@ -1395,9 +1728,25 @@
|
||||
transition: background .16s ease, color .16s ease;
|
||||
}
|
||||
.chat__senden svg { width: 20px; height: 20px; fill: currentColor; }
|
||||
/* DER EINE KNOPF, DER GEDRÜCKT WERDEN SOLL (25.09.2026). Er sah aus
|
||||
wie die Werkzeuge daneben -- gleiche Größe, gleiche Ruhe. Jetzt
|
||||
trägt er als einziges Bedienelement der Konsole eine gefüllte
|
||||
Fläche in der Akzentfarbe und einen weichen Schein darunter; beim
|
||||
Überfahren wird die Fläche kräftiger und der Schein weiter.
|
||||
|
||||
KEINE BEWEGUNG, KEIN WACHSEN. Ein Knopf, der beim Überfahren
|
||||
springt, verschiebt in einer bis auf den Pixel vollen Zeile alles
|
||||
daneben -- und er wird hundertmal am Tag überfahren (Hausregel:
|
||||
augenschonend). */
|
||||
.chat__senden:hover {
|
||||
background: color-mix(in srgb, var(--akzent) 28%, transparent);
|
||||
background: linear-gradient(168deg,
|
||||
color-mix(in srgb, var(--akzent) 62%, transparent) 0%,
|
||||
color-mix(in srgb, var(--akzent) 38%, transparent) 100%);
|
||||
border-color: color-mix(in srgb, var(--akzent) 78%, transparent);
|
||||
color: #fff;
|
||||
box-shadow:
|
||||
inset 0 1px 0 rgba(255, 255, 255, .28),
|
||||
0 12px 26px -12px color-mix(in srgb, var(--akzent) 85%, transparent);
|
||||
}
|
||||
.chat__senden:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
|
||||
|
||||
@@ -1839,13 +2188,50 @@
|
||||
dann, wenn man sie meint. Die Flaeche waechst dabei auf ueber
|
||||
24x24 px; vorher war ein Wort nur so hoch wie seine Schrift.
|
||||
===================================================================== */
|
||||
/* =====================================================================
|
||||
DIE HANDGRIFFE BEKOMMEN ZEICHEN (25.09.2026)
|
||||
|
||||
Filipe: „ich will wirklich dass du das ingesamte veränderst und so
|
||||
krass geil machst dass die ganze community und team morgen total
|
||||
überrascht sind und den chat nicht wieder erkennen."
|
||||
|
||||
Unter jeder Blase standen fünf Wörter in Versalien. Sie waren leise
|
||||
und ordentlich – und trotzdem fünf Wörter, die man in jeder
|
||||
Nachricht wieder liest, ohne sie zu brauchen. Bei zwölf Nachrichten
|
||||
sind das sechzig.
|
||||
|
||||
JETZT: Zeichen voran, Wort daneben, in Kleinbuchstaben. Ein Pfeil,
|
||||
ein Gesicht, ein Papierkorb, eine Nadel, zwei Blätter – die kennt
|
||||
jeder aus jedem Messenger, und das Auge findet sie, ohne zu lesen.
|
||||
|
||||
WARUM DIE WÖRTER TROTZDEM BLEIBEN: Reine Zeichenknöpfe wären
|
||||
schöner und schlechter. „anheften" und „lösen" sehen als Nadel
|
||||
gleich aus – wer sie verwechselt, verschiebt eine Ankündigung im
|
||||
Kanal, ohne es zu merken. Und „löschen (Notfall)" darf nie ein
|
||||
Rätsel sein: Es entfernt fremde Worte.
|
||||
|
||||
BREITER WIRD ES DADURCH NICHT. Versalien mit .07em Sperrung sind
|
||||
rund ein Viertel breiter als dieselben Wörter klein gesetzt.
|
||||
Nachgerechnet an „antworten" bei 11,5 px: vorher rund 66 px, jetzt
|
||||
rund 50 px Schrift + 13 px Zeichen + 5 px Abstand = 68. Die Zeile
|
||||
bleibt also so lang wie vorher und sagt mehr.
|
||||
|
||||
DIE ZEICHEN SIND MASKEN, KEINE BILDER. `mask-image` färbt sie mit
|
||||
`currentColor`: Jedes Zeichen folgt damit der Schrift daneben – im
|
||||
Ruhezustand leise, beim Überfahren hell, beim Notfall-Löschen in
|
||||
der Warnfarbe. Ein <img> müsste man für jeden dieser Zustände neu
|
||||
einfärben, und einer davon wäre irgendwann vergessen. Fehlt
|
||||
`mask` (sehr alte Browser), bleibt schlicht das Wort stehen – kein
|
||||
Schaden, nur weniger Bild.
|
||||
===================================================================== */
|
||||
.chat-nachricht__antwort-knopf,
|
||||
.chat-nachricht__reag-knopf,
|
||||
.chat-nachricht__kopie-knopf,
|
||||
.chat-nachricht__weg-knopf {
|
||||
display: inline-flex; align-items: center; gap: 5px;
|
||||
border: 1px solid transparent;
|
||||
background: none;
|
||||
padding: 3px 8px;
|
||||
padding: 3px 9px 3px 7px;
|
||||
border-radius: 999px;
|
||||
font: inherit; font-size: .72rem; font-weight: 600;
|
||||
line-height: 1.5;
|
||||
@@ -1855,6 +2241,32 @@
|
||||
transition: opacity .16s ease, background-color .16s ease,
|
||||
border-color .16s ease, color .16s ease;
|
||||
}
|
||||
/* Eine Regel für alle fünf – die Familie steht an EINER Stelle
|
||||
beieinander, wie schon die Form darüber. Wer einen sechsten
|
||||
Handgriff baut, trägt ihn hier ein und bekommt sein Zeichen. */
|
||||
.chat-nachricht__antwort-knopf::before,
|
||||
.chat-nachricht__reag-knopf::before,
|
||||
.chat-nachricht__kopie-knopf::before,
|
||||
.chat-nachricht__pin-knopf::before,
|
||||
.chat-nachricht__weg-knopf::before {
|
||||
content: ""; flex: none;
|
||||
width: 13px; height: 13px;
|
||||
background: currentColor;
|
||||
-webkit-mask: var(--zeichen) center / 13px 13px no-repeat;
|
||||
mask: var(--zeichen) center / 13px 13px no-repeat;
|
||||
}
|
||||
.chat-nachricht__antwort-knopf {
|
||||
--zeichen: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M9.5 5.5 3.5 11.5l6 6'/><path d='M3.5 11.5h9.5a7 7 0 0 1 7 7v.6'/></svg>");
|
||||
}
|
||||
.chat-nachricht__reag-knopf {
|
||||
--zeichen: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><path d='M8.6 9.9h.01'/><path d='M15.4 9.9h.01'/><path d='M8.2 14.4a5 5 0 0 0 7.6 0'/></svg>");
|
||||
}
|
||||
.chat-nachricht__kopie-knopf {
|
||||
--zeichen: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='8.5' y='8.5' width='12' height='12' rx='3'/><path d='M15.5 8.5v-2a3 3 0 0 0-3-3h-6a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h2'/></svg>");
|
||||
}
|
||||
.chat-nachricht__weg-knopf {
|
||||
--zeichen: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M4.5 7h15'/><path d='M10 7V4.8h4V7'/><path d='M6.6 7l.9 12.2h9L17.4 7'/></svg>");
|
||||
}
|
||||
.chat-nachricht__antwort-knopf:hover,
|
||||
.chat-nachricht__reag-knopf:hover,
|
||||
.chat-nachricht__kopie-knopf:hover,
|
||||
@@ -1918,6 +2330,36 @@
|
||||
outline: 2px solid var(--akzent); outline-offset: 2px; border-radius: 4px;
|
||||
}
|
||||
|
||||
/* ==== DIE VIER WERKZEUGE SPRECHEN EINE SPRACHE (25.09.2026) =========
|
||||
|
||||
Büroklammer, Mikrofon, GIF und Emoji standen in drei verschiedenen
|
||||
Fassungen nebeneinander -- verschiedene Rundungen, verschiedene
|
||||
Ränder, einer mit Fläche, einer ohne. Im Bildschirmfoto sah die
|
||||
Konsole dadurch aus wie vier Knöpfe aus vier Programmen.
|
||||
|
||||
Sie bekommen jetzt dieselbe Mulde wie die Schalter der
|
||||
Registerleiste: eingesenkt, mit Lichtkante oben. Beim Überfahren
|
||||
heben sie sich in die Akzentfarbe.
|
||||
|
||||
NUR OBERFLÄCHE, KEINE MASSE. Breite, Höhe, Polsterung und Abstände
|
||||
bleiben unangetastet -- die Zeile ist seit dem 23.09.2026 auf den
|
||||
Pixel voll, und sechs Pixel haben dort schon einmal gereicht, um
|
||||
„Senden" auf eine eigene Zeile zu schieben. Wer hier eine Maßzahl
|
||||
ändert, misst auf 320, 390 und 412 px nach. */
|
||||
.chat__eingabe :is(.chat__anhang, .chat__ton, .chat__gif, .chat__emoji) {
|
||||
border-radius: 13px;
|
||||
border-color: rgba(255, 255, 255, .07);
|
||||
background: linear-gradient(180deg,
|
||||
rgba(0, 0, 0, .34) 0%, rgba(255, 255, 255, .022) 100%);
|
||||
box-shadow:
|
||||
inset 0 1px 0 rgba(255, 255, 255, .055),
|
||||
inset 0 -2px 5px -3px rgba(0, 0, 0, .75);
|
||||
}
|
||||
.chat__eingabe :is(.chat__anhang, .chat__ton, .chat__gif, .chat__emoji):hover {
|
||||
border-color: color-mix(in srgb, var(--akzent) 45%, transparent);
|
||||
background: color-mix(in srgb, var(--akzent) 14%, transparent);
|
||||
}
|
||||
|
||||
/* ---- Emoji ---------------------------------------------------------- */
|
||||
.chat__emoji {
|
||||
flex: none;
|
||||
@@ -2540,10 +2982,17 @@
|
||||
eintragen -- deshalb stehen alle fuenf Namen jetzt an EINER Stelle
|
||||
beieinander (siehe die gemeinsame Regel weiter oben). */
|
||||
.chat-nachricht__pin-knopf {
|
||||
/* Die Nadel steht in derselben Familie wie die vier daneben (siehe
|
||||
die gemeinsame Zeichen-Regel weiter oben); hier steht nur ihr
|
||||
eigenes Bild. Zwei Zustände, ein Zeichen: „anheften" und „lösen"
|
||||
unterscheidet das WORT -- eine durchgestrichene Nadel wäre bei
|
||||
13 px nicht mehr als ein Fleck. */
|
||||
--zeichen: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 3.6h6'/><path d='M10.6 3.6v5.6L7.4 14.2h9.2L13.4 9.2V3.6'/><path d='M12 14.2v6.2'/></svg>");
|
||||
display: inline-flex; align-items: center; gap: 5px;
|
||||
appearance: none;
|
||||
border: 1px solid transparent;
|
||||
background: none;
|
||||
padding: 3px 8px;
|
||||
padding: 3px 9px 3px 7px;
|
||||
border-radius: 999px;
|
||||
font: inherit; font-size: .72rem; font-weight: 600;
|
||||
line-height: 1.5;
|
||||
@@ -3475,12 +3924,47 @@
|
||||
box-shadow: 0 0 0 3px color-mix(in srgb, var(--akzent) 14%, transparent);
|
||||
}
|
||||
.chat__kachelknopf:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
|
||||
/* =====================================================================
|
||||
AUS DEM FLECK WIRD EIN RING (25.09.2026)
|
||||
|
||||
Im Bildschirmfoto war das ein voller Kreis in der gewählten Farbe,
|
||||
28 px groß, zwischen der Überschrift „Gespräche" und dem Knopf
|
||||
„Neu". In dieser Umgebung liest man einen farbigen Vollkreis als
|
||||
MARKE – als Zahl, die gerade keine Zahl hat. Genau daneben steht
|
||||
ja auch eine (der Zähler der ungelesenen Nachrichten, gleiche
|
||||
Größe, gleiche Form). Er meldet aber nichts, er ist ein SCHALTER.
|
||||
|
||||
Jetzt: ein Ring in der Farbe um einen dunklen Kern. Zwei Gründe,
|
||||
und beide zählen mehr als der Geschmack:
|
||||
|
||||
1. DIESELBE SPRACHE WIE DIE GANZE SEITE. Farbe erscheint hier
|
||||
überall als Kontur – die Kante an der Blase, die Schiene an
|
||||
der offenen Zeile, der Saum am Zeichen. Eine gefüllte Scheibe
|
||||
war der einzige Ort, an dem Farbe Fläche war.
|
||||
2. EIN RING IST DIE FORM, in der jedes Zeichenprogramm eine
|
||||
Farbwahl anbietet. Sie muss niemandem erklärt werden.
|
||||
|
||||
DAS SKRIPT BLEIBT UNBERÜHRT: Es setzt weiterhin nur `background`
|
||||
auf den gewählten Ton. Der dunkle Kern liegt als `::after`
|
||||
darüber – so bleibt die eine Zeile im Skript die eine Zeile im
|
||||
Skript, und die Farbe ist trotzdem ein Ring.
|
||||
|
||||
`inset: 5px` auf 28 px ergibt einen Ring von 5 px Stärke. Dünner,
|
||||
und ein dunkler Ton verschwindet gegen den dunklen Kern; dicker,
|
||||
und es ist wieder ein Fleck. */
|
||||
.chat__kachelknopf-probe {
|
||||
display: block; width: 100%; height: 100%;
|
||||
display: block; position: relative;
|
||||
width: 100%; height: 100%;
|
||||
border-radius: 50%;
|
||||
/* Eine feine Innenkante, damit ein sehr dunkler Ton nicht aussieht
|
||||
wie ein Loch im Knopf. */
|
||||
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .10);
|
||||
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .18);
|
||||
}
|
||||
.chat__kachelknopf-probe::after {
|
||||
content: ""; position: absolute; inset: 5px;
|
||||
border-radius: 50%;
|
||||
background: rgba(8, 12, 19, .94);
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .7);
|
||||
}
|
||||
/* „Neu" steht danach und schiebt sich nicht mehr selbst -- der
|
||||
Farbfleck hat den auto-Rand übernommen. Zwei auto-Ränder
|
||||
@@ -4042,9 +4526,34 @@
|
||||
damit in zwei statt drei Reihen, ohne dass die Schrift
|
||||
schrumpft. */
|
||||
font-size: .72rem; letter-spacing: .02em; text-transform: none;
|
||||
margin-top: 7px; padding-top: 6px;
|
||||
/* DIE MULDE ZIEHT MIT (25.09.2026). Seit die Fusszeile eine
|
||||
eingesenkte Flaeche ist, reicht es nicht mehr, oben Abstand
|
||||
wegzunehmen -- die Polsterung der Mulde selbst gehoert dazu.
|
||||
Bliebe hier `padding-top`, haette die Mulde auf dem Handy
|
||||
unten 6 px und oben 6+6 px, und sie saesse schief. */
|
||||
margin: 8px -7px -2px; padding: 5px 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.chat-nachricht__fuss button { padding: 3px 5px; }
|
||||
.chat-nachricht__fuss button { padding: 3px 6px 3px 5px; gap: 4px; }
|
||||
/* EIN PIXEL KLEINER, UND ES SPART FUENF. Die Zeichen sind am
|
||||
Rechner 13 px; auf 412 px sparen 12 px mal fuenf Knoepfe plus
|
||||
der engere Abstand zusammen rund 10 px -- genug, dass „loeschen
|
||||
(Notfall)" nicht allein in eine dritte Zeile faellt. Unter 12 px
|
||||
wird aus einem Papierkorb ein Fleck; das ist die Grenze. */
|
||||
.chat-nachricht__fuss button::before {
|
||||
width: 12px; height: 12px;
|
||||
-webkit-mask-size: 12px 12px;
|
||||
mask-size: 12px 12px;
|
||||
}
|
||||
.chat-nachricht__weg-knopf[data-notfall="ja"]::before {
|
||||
width: 13px; height: 13px;
|
||||
-webkit-mask-size: 13px 13px;
|
||||
mask-size: 13px 13px;
|
||||
}
|
||||
/* Die Uhrzeit gibt ihr Schild ab: Auf dem Handy zaehlt jede
|
||||
Polsterung, und die Trennung zwischen Angabe und Knopf macht
|
||||
hier ohnehin schon die Reihenfolge. */
|
||||
.chat-nachricht__zeit { padding: 0 2px; background: none; }
|
||||
/* KEIN `margin-right: auto` AUF DEM HANDY. Am Rechner schiebt es
|
||||
die Handgriffe nach rechts und trennt sie von der Angabe -- gut.
|
||||
Auf 412 px nimmt es die ganze erste Zeile fuer die Uhrzeit, und
|
||||
@@ -4055,4 +4564,12 @@
|
||||
/* Die Knopfgruppe oben rechts: Auf 412 px schob ihre Polsterung
|
||||
sie unter den Titel. Ohne sie passt sie wieder daneben. */
|
||||
.chat__kopf-knoepfe { padding: 2px; gap: 2px; border-radius: 11px; }
|
||||
/* DAS GESICHT IM KOPF BLEIBT AM HANDY WEG. Die Rechnung steht bei
|
||||
`.chat__kopf-zeichen` weiter oben: Mit ihm blieben dem Namen
|
||||
126 px, seine Untergrenze sind 128 -- die Knopfreihe fiele eine
|
||||
Zeile tiefer und der Kopf waere 44 px hoeher. Zwei Klassen weit
|
||||
genug (`.chat__kopf .chat__kopf-zeichen`), um die Grundregel
|
||||
`.chat-raum__zeichen { display: grid }` zu schlagen; eine
|
||||
Medienabfrage allein erhoeht die Spezifitaet nicht. */
|
||||
.chat__kopf .chat__kopf-zeichen { display: none; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user