Agentur-Events: zwei Karten nebeneinander, Banner in der Mitte
Filipe: "ich will dass die kachel an sich noch viel geiler und krass
aussieht. die soll aber auch garnicht so breit sein. es sollen immer
zwei neben einander stehen können und wenn man auf banner anzeigen
drückt soll das banner schön in der mitte sein."
GEMESSEN VORHER: Karte 1160 px breit, eine je Reihe (#liste stand auf
display: block). --ton: #cace02 an ALLEN drei Zustaenden -- ein seit
drei Tagen vorbeigelaufenes Event leuchtete wie eines, das laeuft. Und
border-left-width: 0px, border-radius: 0px: Die Dringlichkeitskante aus
bereich.css kommt seit dem Baukasten nicht mehr an (module.css setzt
border: 0, gleich stark und spaeter im Ladeweg).
ZWEI NEBENEINANDER -- die Regel SIEBT, statt zu schalten. #liste traegt
das Raster immer; alles, was keine Eventkarte ist, nimmt mit
`grid-column: 1 / -1` die ganze Breite. In den sieben anderen Bereichen
aendert sich damit kein Pixel. Gemessen: Eventkarten 573 px, die
Schulung daneben weiterhin 1160 px; auf 412 px steht wieder eine je
Reihe (379 px, kein seitliches Schieben).
DAS BANNER KOMMT IN DIE MITTE -- und zwar in der BILDSCHAU, die es seit
dem 25.09.2026 gibt und die hier nur nie angeschlossen war. Sie wurde
damals fuer genau diese Beschwerde gebaut ("wenn man bilder aufmacht,
will ich dass die in der mitte sind"). Ihr Stil ist dafuer aus chat.css
in eine eigene bildschau.css gezogen: bereich.html laedt chat.css nicht,
und 5815 Zeilen Chat auf einer Seite ohne Chat waere der falsche Preis.
Gemessen: 1178x662 px, Mitte 640 gegen 640, Escape schliesst, die Seite
springt nicht weg. Der Weg in den Tab bleibt (mittlere Maustaste, Strg).
ZWEI FEHLER, DIE DIE SCHMALERE KARTE ERST SICHTBAR GEMACHT HAT:
1. `justify-content: flex-end` an der Buehne laesst den Inhalt nach
OBEN herauslaufen, wenn der Platz nicht reicht -- und die Karte hat
ein clip-path, also ist er dann weg. Gemessen: Das Etikett
"Agentur-Events" sass auf einer Karte bei y = -28 px. Die alte
Messung fragte nach Farbe, Groesse, Sichtbarkeit und Deckkraft und
bekam auf alles die richtige Antwort -- nach der LAGE hatte sie nie
gefragt. Jetzt `margin-top: auto`, das kann nicht herauslaufen.
2. Die Buehnenhoehe kam aus der BREITE (aspect-ratio 2.6/1, bei
"vorbei" 3.6/1 mit max-height 190px). Bei halber Kartenbreite
bricht der Titel auf mehr Zeilen um: Inhalt 231 px, Kasten 220 px
-- der Zeitbalken lag auf dem Satz darunter. Jetzt eine
Mindesthoehe, der Rest kommt vom Inhalt. Das Banner liegt absolut
darin und fuellt jede Hoehe; die Rechnung brauchte es nie.
AUSSERDEM: Jeder Zustand traegt seinen Ton (laeuft = Agenturgelb,
kommt = kuehl, vorbei = stumpf) und faerbt damit Eckwinkel, Kantenlicht
und Zeitbalken mit. Die Farbkante der Karte liegt im Hintergrund statt
auf einem Pseudoelement (beide gehoeren dem Baukasten), 6 px, weil das
Kantenlicht 1,6 px verdeckt. Der Aufgabenzaehler ist eine Pille statt
grauer Text, gleich hohe Karten mit dem Fuss unten.
pruef-eventkarte: 77 -> 94 Pruefungen, gruen. Zwei Gegenproben gefahren
(Ueberlaufschutz entfernt -> rot mit "ev-buehne__inhalt oben -28px";
die neue Lagepruefung nennt den Schuldigen selbst). Neu darin: nichts
darf aus einer Karte herausragen (132 Teile), der Inhalt muss in jede
Buehne passen, und auf 412 px steht eine Karte je Reihe.
Dazu gruen: chat-anhaenge (168, die Bildschau nach dem Umzug),
chat-optik, chat, css-klassen, haus-trennung, lesbarkeit, eintrag-bild,
tippziele, fingermass, leerzustand.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -5,6 +5,21 @@
|
||||
.eintrag-karte {
|
||||
padding: 15px 17px; margin-bottom: 10px;
|
||||
background: var(--flaeche);
|
||||
/* NACHGEMESSEN AM 07.10.2026: `border`, `border-left: 3px` und
|
||||
`border-radius` kommen hier NICHT an. Gemessen am lebenden System
|
||||
stand an der Karte `border-left-width: 0px`, `border-top-width:
|
||||
0px`, `border-radius: 0px` -- module.css setzt fuer die ganze
|
||||
Modulliste `border: 0; border-radius: 0`, ist mit (0,2,0) gleich
|
||||
stark und wird SPAETER geladen.
|
||||
|
||||
Damit ist auch die Farbcodierung der Dringlichkeit darunter
|
||||
wirkungslos: Die drei Zeilen `[data-dringlich] { border-left-color }`
|
||||
faerben einen Rand, den es nicht gibt. Das steht hier als Befund
|
||||
und wird fuer die EVENTKARTEN weiter unten geloest (ueber den
|
||||
Hintergrund, weil ::before und ::after dem Baukasten gehoeren).
|
||||
Fuer die uebrigen Karten bleibt es vorerst stehen -- das waere ein
|
||||
eigener Umbau an acht Bereichen, und dafuer gibt es noch kein
|
||||
Messgeraet. */
|
||||
border: 1px solid var(--rand);
|
||||
border-left: 3px solid var(--rand);
|
||||
border-radius: var(--radius-klein);
|
||||
@@ -2189,7 +2204,23 @@ body[data-ton] .kopf-zeile::before {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
/* NICHT `justify-content: flex-end` (berichtigt 07.10.2026).
|
||||
|
||||
Beides schiebt den Inhalt nach unten, solange Platz ist. Der
|
||||
Unterschied zeigt sich erst, wenn KEINER mehr da ist: `flex-end`
|
||||
laesst den Inhalt oben aus der Buehne herauslaufen -- und die
|
||||
Karte hat ein `clip-path`, also ist er dann einfach weg.
|
||||
|
||||
Gemessen am 07.10.2026, nachdem die Karten halb so breit wurden:
|
||||
Auf der Karte „September Rueckblick" sass das Etikett
|
||||
„Agentur-Events" bei y = -28 px, also 28 px ueber der Kartenkante.
|
||||
Im Bildschirmfoto fehlte es schlicht; die Messung sagte trotzdem
|
||||
„sichtbar, Deckkraft 1" -- sie hatte nur nie nach der LAGE gefragt.
|
||||
|
||||
`margin-top: auto` am Inhalt tut dasselbe und kann das nicht:
|
||||
Reicht der Platz nicht, beginnt der Inhalt oben, statt
|
||||
herauszulaufen. */
|
||||
justify-content: flex-start;
|
||||
/* DIE HOEHE IST GEDECKELT, UND ZWAR ZWEIFACH.
|
||||
|
||||
aspect-ratio haelt die Form bei schmalen Karten (sonst waere die
|
||||
@@ -2210,9 +2241,37 @@ body[data-ton] .kopf-zeile::before {
|
||||
Mit fester Breite berechnet aspect-ratio nur noch die Hoehe
|
||||
(1230 / 2.6 = 473 px), und max-height deckelt sie auf 300. */
|
||||
width: 100%;
|
||||
aspect-ratio: 2.6 / 1;
|
||||
/* ===== DIE HOEHE KOMMT VOM INHALT, NICHT VON DER BREITE ==========
|
||||
(07.10.2026, nachgemessen)
|
||||
|
||||
Hier stand `aspect-ratio: 2.6/1` mit `max-height: 300px`. Das war
|
||||
richtig, solange die Karte ueber die ganze Breite lief: Die Buehne
|
||||
war dann 300 px hoch und der Titel passte bequem hinein.
|
||||
|
||||
Seit die Eventkarten nur noch halb so breit sind, bricht der Titel
|
||||
auf mehr Zeilen um -- und die Hoehe kam weiterhin aus der BREITE:
|
||||
573 / 2.6 = 220 px. Gemessen am 07.10.2026:
|
||||
|
||||
Oktober Event Inhalt 231 px, Kasten 220 px
|
||||
September Rueckblick Inhalt 189 px, Kasten 159 px
|
||||
|
||||
Der Ueberhang lief unten heraus und legte den Zeitbalken auf den
|
||||
Satz darunter. Eine Form, die aus der Breite folgt, kann das nicht
|
||||
wissen -- und der Fehler faellt genau dann auf, wenn die Breite
|
||||
sich aendert.
|
||||
|
||||
JETZT: eine Mindesthoehe, damit die Buehne auf einer schmalen Karte
|
||||
kein Briefschlitz wird, und sonst so hoch, wie der Inhalt es
|
||||
braucht. Das Banner liegt absolut darin (`inset: 0`, `object-fit:
|
||||
cover`) und fuellt jede Hoehe -- es braucht die Rechnung gar nicht.
|
||||
Der frueher noetige 300-px-Deckel ist damit hinfaellig: Die Hoehe
|
||||
waechst nicht mehr mit der Breite, sondern mit dem Titel.
|
||||
|
||||
`flex: 0 0 auto` kommt dazu, weil die Buehne ein Flex-Element der
|
||||
Karte ist und sonst zusammengedrueckt werden darf -- genau das,
|
||||
was hier gerade schiefging, nur von aussen. */
|
||||
min-height: 170px;
|
||||
max-height: 300px;
|
||||
flex: 0 0 auto;
|
||||
/* DIE SEITLICHE POLSTERUNG HAT EINEN NAMEN, weil der Schriftgrund
|
||||
darunter sie braucht: Er muss genau bis an den Rand der Buehne
|
||||
reichen und keinen Schritt weiter. Mit einer zweiten festen Zahl
|
||||
@@ -2373,7 +2432,11 @@ body[data-ton] .kopf-zeile::before {
|
||||
}
|
||||
}
|
||||
|
||||
.ev-buehne__inhalt { position: relative; }
|
||||
/* `margin-top: auto` statt `justify-content: flex-end` an der Buehne --
|
||||
die Begruendung steht dort. Der Inhalt ist das einzige Stueck der
|
||||
Buehne, das im Fluss liegt (Bild, Schleier und der Knopf „Banner
|
||||
ganz" sind absolut gesetzt), deshalb genuegt diese eine Zeile. */
|
||||
.ev-buehne__inhalt { position: relative; margin-top: auto; }
|
||||
.ev-buehne[data-mitbild="ja"] .ev-buehne__inhalt::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
@@ -2809,7 +2872,18 @@ body[data-ton] .kopf-zeile::before {
|
||||
.ev-buehne[data-stand="vorbei"] .ev-buehne__bild {
|
||||
filter: saturate(.35) brightness(.62);
|
||||
}
|
||||
.ev-buehne[data-stand="vorbei"] { aspect-ratio: 3.6 / 1; max-height: 190px; }
|
||||
/* EIN VORBEIGELAUFENES EVENT BEKAM EINE FLACHERE BUEHNE -- ueber
|
||||
`aspect-ratio: 3.6/1` und `max-height: 190px`. Beides rechnet die
|
||||
Hoehe aus der BREITE, und genau daran ist es am 07.10.2026
|
||||
zerbrochen, als die Karten halb so breit wurden: 573 / 3.6 = 159 px,
|
||||
waehrend der Inhalt 189 px brauchte. Der Zeitbalken lag danach auf
|
||||
dem Satz darunter.
|
||||
|
||||
Die Absicht bleibt -- ein abgelaufenes Event soll weniger Platz
|
||||
einnehmen --, nur wird sie jetzt ueber die MINDESThoehe ausgedrueckt:
|
||||
Es faengt flacher an und waechst trotzdem mit, wenn der Titel drei
|
||||
Zeilen braucht. Dieselbe Entscheidung wie oben an der Grundregel. */
|
||||
.ev-buehne[data-stand="vorbei"] { min-height: 120px; }
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
AUF DEM HANDY
|
||||
@@ -3037,3 +3111,156 @@ body[data-ton] .kopf-zeile::before {
|
||||
Rueckmeldungen). Eine Vorschau, die etwas zeigt, das hinterher
|
||||
fehlt, ist schlimmer als eine kurze. */
|
||||
.ev-vorschau .eintrag-karte { margin-bottom: 0; }
|
||||
|
||||
/* =====================================================================
|
||||
ZWEI EVENTKARTEN NEBENEINANDER (07.10.2026)
|
||||
=====================================================================
|
||||
|
||||
Filipe: „die soll aber auch garnicht so breit sein. es sollen immer
|
||||
zwei neben einander stehen können."
|
||||
|
||||
GEMESSEN VORHER: Die Karte war 1160 px breit, eine je Reihe
|
||||
(`#liste` stand auf `display: block`). Bei einem Banner, das ohnehin
|
||||
nur 300 px hoch sein darf, heisst das: ein Drittel Bild, zwei Drittel
|
||||
Luft daneben.
|
||||
|
||||
DIE REGEL SIEBT, STATT ZU SCHALTEN. `#liste` traegt das Raster
|
||||
IMMER -- und alles, was keine Eventkarte ist, nimmt die ganze Breite
|
||||
(`grid-column: 1 / -1`). In den sieben anderen Bereichen aendert sich
|
||||
dadurch kein Pixel: Dort gibt es keine Eventkarten, also spannt jedes
|
||||
Kind ueber beide Spalten und steht wie vorher untereinander. Eine
|
||||
Umschaltung ueber eine zusaetzliche Klasse waere eine zweite Stelle,
|
||||
an der jemand sie vergessen kann.
|
||||
|
||||
DIE 430 px ZAEHLEN ETWAS: Darunter wird die Buehne zum Briefschlitz
|
||||
und die vier Fussknoepfe brechen auf drei Zeilen um. Mit
|
||||
`auto-fill` entscheidet damit der Platz, nicht eine Fensterbreite --
|
||||
derselbe Grund wie bei der Scout-Pipeline: Eine Zahl, die das FENSTER
|
||||
misst, weiss nichts von Raendern und vom 1240-px-Deckel des Inhalts.
|
||||
|
||||
GLEICH HOHE KARTEN in einer Reihe sind Absicht und nicht Zufall: Die
|
||||
Eckwinkel des Baukastens rahmen jede Karte sichtbar ein, und zwei
|
||||
verschieden hohe Rahmen nebeneinander lesen sich als Unfall. Damit
|
||||
der Fuss trotzdem unten sitzt, ist die Karte eine Spalte mit
|
||||
`margin-top: auto` am Fuss. */
|
||||
#liste {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(min(430px, 100%), 1fr));
|
||||
gap: 14px;
|
||||
}
|
||||
#liste > *:not(.eintrag-karte[data-eventkarte="ja"]) { grid-column: 1 / -1; }
|
||||
/* Der Abstand kommt jetzt vom Raster. Zwei Abstandsquellen ergeben
|
||||
einen doppelten Abstand -- und zwar nur zwischen den Zeilen, was
|
||||
schwer zu finden ist. */
|
||||
#liste > .eintrag-karte { margin-bottom: 0; }
|
||||
|
||||
#liste > .eintrag-karte[data-eventkarte="ja"] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/* Die Buehne liegt am oberen Rand und soll ihn beruehren -- das
|
||||
seitliche Polster der Karte wuerde sie einrahmen wie ein Passepartout.
|
||||
Der Inhalt darunter holt es sich selbst zurueck. */
|
||||
padding: 0 0 15px;
|
||||
}
|
||||
#liste > .eintrag-karte[data-eventkarte="ja"] > *:not(.ev-buehne) {
|
||||
padding-left: 18px; padding-right: 18px;
|
||||
}
|
||||
#liste > .eintrag-karte[data-eventkarte="ja"] .ev-block { margin-left: 0; margin-right: 0; }
|
||||
#liste > .eintrag-karte[data-eventkarte="ja"] .eintrag-fuss { margin-top: auto; }
|
||||
|
||||
/* =====================================================================
|
||||
DIE KARTE SAGT, OB DAS EVENT LAEUFT (07.10.2026)
|
||||
=====================================================================
|
||||
|
||||
Vorher trugen alle drei Zustaende denselben Ton: `--ton: #cace02`,
|
||||
die Farbe des Agentur-Bereichs -- gemessen an der lebenden Seite, an
|
||||
einem Event, das seit drei Tagen vorbei war. Aus `--ton` nimmt der
|
||||
ganze Baukasten in module.css seine Farbe (Kantenlicht, die drei
|
||||
Eckwinkel, das Licht beim Zeigen). Ein abgelaufenes Event leuchtete
|
||||
damit genauso wie das, das gerade laeuft.
|
||||
|
||||
DASSELBE MUSTER WIE IN DER SCOUT-PIPELINE, und aus demselben Grund:
|
||||
`--ton` wird je Zustand gesetzt, dann faerbt sich die ganze Form mit.
|
||||
|
||||
laeuft behaelt den Agenturton -- das ist der Normalfall und soll
|
||||
nach „jetzt" aussehen
|
||||
kommt kuehl: es ist noch nichts zu tun
|
||||
vorbei stumpf: es steht da, es ruft nicht mehr
|
||||
|
||||
KEINE DECKKRAFT auf der ganzen Karte, obwohl das naheliegt: Das
|
||||
senkt auch den Kontrast des Textes, und „vorbei" heisst nicht
|
||||
„unlesbar". Gefaerbt wird der Rahmen, nicht der Inhalt. */
|
||||
#liste > .eintrag-karte[data-event="laeuft"] { --ev-ton: var(--ton, #cace02); }
|
||||
#liste > .eintrag-karte[data-event="kommt"] { --ev-ton: #5b8fd4; --ton: #5b8fd4; }
|
||||
#liste > .eintrag-karte[data-event="vorbei"] { --ev-ton: #6b7686; --ton: #6b7686; }
|
||||
|
||||
/* DIE FARBKANTE LIEGT IM HINTERGRUND und nicht auf einem Pseudoelement:
|
||||
::before (Kantenlicht) und ::after (Raster, Eckwinkel) gehoeren beide
|
||||
dem Baukasten. 6 px, weil das Kantenlicht 1,6 px davon verdeckt --
|
||||
bei 3 px blieb in der Nahaufnahme nichts Erkennbares uebrig (am
|
||||
06.10.2026 an der Scout-Pipeline nachgemessen). */
|
||||
#liste > .eintrag-karte[data-eventkarte="ja"] {
|
||||
--ev-kante: 6px;
|
||||
background:
|
||||
linear-gradient(180deg,
|
||||
color-mix(in srgb, var(--ev-ton, var(--akzent)) 92%, #ffffff) 0%,
|
||||
color-mix(in srgb, var(--ev-ton, var(--akzent)) 65%, transparent) 50%,
|
||||
color-mix(in srgb, var(--ev-ton, var(--akzent)) 12%, transparent) 100%)
|
||||
left top / var(--ev-kante) 100% no-repeat,
|
||||
radial-gradient(120% 70% at 0% 100%,
|
||||
color-mix(in srgb, var(--ev-ton, var(--akzent)) 9%, transparent) 0%,
|
||||
transparent 60%),
|
||||
var(--flaeche);
|
||||
transition: background-size var(--tempo, .18s) ease;
|
||||
}
|
||||
#liste > .eintrag-karte[data-eventkarte="ja"]:hover { --ev-kante: 9px; }
|
||||
|
||||
/* ---- Der Zeitbalken traegt den Zustand ------------------------------
|
||||
Er stand auf Blau-Violett -- derselbe Verlauf bei einem Event, das
|
||||
laeuft, und bei einem, das seit zwoelf Tagen vorbei ist. Jetzt sagt
|
||||
schon die Farbe, welcher Fall vorliegt, und man muss die Zeile
|
||||
darueber nicht erst lesen. */
|
||||
#liste > .eintrag-karte[data-eventkarte="ja"] .ev-zeitbalken__fuellung {
|
||||
background: linear-gradient(90deg,
|
||||
color-mix(in srgb, var(--ev-ton, var(--akzent)) 45%, transparent),
|
||||
color-mix(in srgb, var(--ev-ton, var(--akzent)) 95%, #ffffff));
|
||||
}
|
||||
/* Dicker als 4 px: Bei halber Kartenbreite ist der Balken nur noch
|
||||
knapp 500 px lang, und ein 4-px-Faden darin ist eher Linie als
|
||||
Anzeige. */
|
||||
#liste > .eintrag-karte[data-eventkarte="ja"] .ev-zeitbalken { height: 6px; }
|
||||
|
||||
/* ---- Der Aufgabenzaehler wird eine Anzeige --------------------------
|
||||
„0 von 3" stand als grauer Text neben der Ueberschrift -- dieselbe
|
||||
Schriftgroesse, dieselbe Farbe wie alles andere, und damit die
|
||||
Antwort auf die wichtigste Frage der Karte („wie weit bin ich?") gut
|
||||
versteckt. Jetzt eine Pille, die mitwaechst: still, solange nichts
|
||||
geschafft ist, und im Ton von „erledigt", sobald alles steht. */
|
||||
.ev-zaehler {
|
||||
display: inline-flex; align-items: center;
|
||||
padding: 2px 10px;
|
||||
border-radius: 999px;
|
||||
border: 1px solid color-mix(in srgb, var(--ev-ton, var(--akzent)) 30%, transparent);
|
||||
background: color-mix(in srgb, var(--ev-ton, var(--akzent)) 12%, transparent);
|
||||
color: color-mix(in srgb, var(--ev-ton, var(--akzent)) 45%, #ffffff);
|
||||
/* .8rem = 12,8px -- ueber der Hausgrenze von 11,5px. */
|
||||
font-size: .8rem;
|
||||
}
|
||||
.ev-zaehler[data-voll="ja"] {
|
||||
border-color: color-mix(in srgb, var(--k-gut, #5fc99a) 45%, transparent);
|
||||
background: color-mix(in srgb, var(--k-gut, #5fc99a) 15%, transparent);
|
||||
color: var(--k-gut, #5fc99a);
|
||||
}
|
||||
/* Ist alles abgehakt, bekommt auch der Block einen Saum -- die Karte
|
||||
soll das aus einem Meter Abstand sagen, nicht erst beim Lesen. */
|
||||
#liste > .eintrag-karte[data-eventkarte="ja"] .ev-block[data-fertig="ja"] {
|
||||
border-color: color-mix(in srgb, var(--k-gut, #5fc99a) 38%, transparent);
|
||||
background: color-mix(in srgb, var(--k-gut, #5fc99a) 7%, transparent);
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
#liste > .eintrag-karte[data-eventkarte="ja"] { transition: none; }
|
||||
}
|
||||
@media (forced-colors: active) {
|
||||
.ev-zaehler { border: 1px solid CanvasText; }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
/* =====================================================================
|
||||
bildschau.css — der Stil zur Bildschau (umgezogen am 07.10.2026)
|
||||
=====================================================================
|
||||
|
||||
NICHT AUFGERAEUMT, SONDERN UMGEZOGEN. Diese Regeln standen in
|
||||
chat.css, weil die Bildschau am 25.09.2026 fuer den Chat gebaut
|
||||
wurde. Am 07.10.2026 sollte auch das Event-Banner darin geoeffnet
|
||||
werden -- und bereich.html laedt chat.css nicht. Es gab also genau
|
||||
zwei Wege: chat.css (5815 Zeilen) auf einer Seite mitladen, die
|
||||
keinen Chat hat, oder die 26 Regeln dorthin stellen, wo sie
|
||||
hingehoeren.
|
||||
|
||||
Dieselbe Entscheidung wie bei der Code-Anzeige, die am 11.09.2026
|
||||
von personen.css nach start.css gewandert ist: Sobald ein Bauteil
|
||||
an ZWEI Stellen gebraucht wird, gehoert es keiner der beiden mehr.
|
||||
|
||||
DIE REIHENFOLGE BLEIBT: In chat.html steht diese Datei direkt hinter
|
||||
chat.css, also genau dort, wo der Block vorher endete. Nach ihm kamen
|
||||
nur Regeln zum Bearbeiten einer Chatnachricht, die mit der Schau
|
||||
nichts zu tun haben -- nachgezaehlt, nicht angenommen: null fremde
|
||||
Regeln im Block, 26 eigene.
|
||||
===================================================================== */
|
||||
|
||||
/* =====================================================================
|
||||
=====================================================================
|
||||
DIE BILDSCHAU (25.09.2026)
|
||||
=====================================================================
|
||||
=====================================================================
|
||||
|
||||
Filipe: „wenn man bilder aufmacht, will ich dass die in der mitte
|
||||
sind. beim hochformat soll links der husky sein und rechts der hase
|
||||
und beim querformat soll oben dogfather und unten team dogi stehen
|
||||
da wo platz ist. … ich will nicht dahin geschmissen sondern was
|
||||
richtig geiles mit einem geilen hintergrund."
|
||||
|
||||
DER GRUND IST DREI SCHICHTEN, nicht eine Farbe: ein tiefer Verlauf,
|
||||
drei weiche Lichter (violett, tuerkis, ein warmer Rest) und ein
|
||||
Schleier ganz aussen. Zusammen unter zehn Prozent Deckung -- ein
|
||||
Foto soll darauf liegen, nicht dagegen ankaempfen.
|
||||
|
||||
KEIN REINES SCHWARZ. Genau das zeigt der Browser von sich aus, und
|
||||
genau daran hat Filipe es gemerkt. Schwarz ist keine Gestaltung,
|
||||
sondern ihr Fehlen.
|
||||
===================================================================== */
|
||||
.bildschau {
|
||||
width: 100vw; max-width: 100vw;
|
||||
height: 100dvh; max-height: 100dvh;
|
||||
padding: 0; margin: 0; border: 0;
|
||||
background: none;
|
||||
overflow: hidden;
|
||||
color: var(--text, #e8f1fa);
|
||||
}
|
||||
.bildschau::backdrop { background: rgba(3, 4, 9, .86); backdrop-filter: blur(6px); }
|
||||
|
||||
.bildschau__grund {
|
||||
position: absolute; inset: 0; z-index: 0;
|
||||
background:
|
||||
radial-gradient(70% 55% at 18% 8%, rgba(122, 92, 255, .16), transparent 66%),
|
||||
radial-gradient(62% 52% at 84% 88%, rgba(38, 200, 196, .13), transparent 68%),
|
||||
radial-gradient(48% 40% at 60% 46%, rgba(255, 176, 92, .06), transparent 70%),
|
||||
linear-gradient(168deg, #0a0b14 0%, #070811 55%, #05060c 100%);
|
||||
}
|
||||
/* Ein Schleier von aussen nach innen -- er zieht den Blick in die
|
||||
Mitte, ohne dass man ihn als Rahmen bemerkt. */
|
||||
.bildschau__grund::after {
|
||||
content: ""; position: absolute; inset: 0;
|
||||
background: radial-gradient(120% 95% at 50% 50%, transparent 52%, rgba(0, 0, 0, .55) 100%);
|
||||
}
|
||||
|
||||
/* ---- Die Buehne: das Bild sitzt in der MITTE ----------------------- */
|
||||
.bildschau__buehne {
|
||||
position: absolute; inset: 0; z-index: 2;
|
||||
display: grid; place-items: center;
|
||||
padding: 72px 4vw 56px;
|
||||
}
|
||||
.bildschau__bild {
|
||||
max-width: 92vw; max-height: 82dvh;
|
||||
width: auto; height: auto;
|
||||
border-radius: 14px;
|
||||
/* Ein feiner heller Saum trennt das Foto vom Grund, auch wenn seine
|
||||
Raender selbst dunkel sind. Ohne ihn franst ein dunkles Foto in
|
||||
den Hintergrund aus, und man sieht nicht mehr, wo es aufhoert. */
|
||||
box-shadow:
|
||||
0 0 0 1px rgba(255, 255, 255, .1),
|
||||
0 40px 90px -40px rgba(0, 0, 0, .95),
|
||||
0 0 90px -40px rgba(122, 92, 255, .5);
|
||||
}
|
||||
|
||||
/* ---- Die Begleiter ------------------------------------------------- */
|
||||
/* Sie liegen HINTER dem Bild (z-index 1 gegen 2) -- ein Husky, der
|
||||
ueber einem Foto liegt, waere keine Zierde, sondern ein Hindernis. */
|
||||
.bildschau__figur {
|
||||
position: absolute; bottom: 0; z-index: 1;
|
||||
height: min(78dvh, 720px);
|
||||
width: auto;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .32s ease;
|
||||
}
|
||||
.bildschau__figur--links { left: 0; }
|
||||
/* NICHT SPIEGELN. Der erste Anlauf drehte den Hasen um, damit beide
|
||||
„nach innen" schauen -- ein alter Reflex aus dem Plakatsatz. Auf dem
|
||||
Probebild stand danach „Hasi Dog" seitenverkehrt auf seinem Hoodie.
|
||||
Beide Figuren sehen ohnehin nach vorn; es gibt nichts zu spiegeln,
|
||||
und Schrift im Bild spiegelt man nie. */
|
||||
.bildschau__figur--rechts { right: 0; }
|
||||
.bildschau[data-lage="hoch"] .bildschau__figur { opacity: .92; }
|
||||
|
||||
/* ---- Die zwei Schriftzuege ----------------------------------------- */
|
||||
.bildschau__wort {
|
||||
position: absolute; left: 0; right: 0; z-index: 1;
|
||||
display: flex; align-items: center; justify-content: center; gap: 14px;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .32s ease;
|
||||
}
|
||||
.bildschau__wort--oben { top: 18px; }
|
||||
.bildschau__wort--unten { bottom: 16px; }
|
||||
.bildschau[data-lage="quer"] .bildschau__wort { opacity: 1; }
|
||||
.bildschau__zeichen { width: 34px; height: 34px; filter: invert(1) opacity(.72); }
|
||||
/* GESPERRT UND GROSS: Ein Schriftzug ist kein Satz. Die Sperrung macht
|
||||
aus zwei Woertern ein Zeichen -- man liest es nicht, man erkennt es. */
|
||||
.bildschau__wort-text {
|
||||
font-size: clamp(1.1rem, 2.6vw, 1.9rem);
|
||||
font-weight: 800;
|
||||
letter-spacing: .34em;
|
||||
text-transform: uppercase;
|
||||
color: rgba(232, 241, 250, .5);
|
||||
text-shadow: 0 0 26px rgba(122, 92, 255, .45);
|
||||
}
|
||||
.bildschau__wort--unten .bildschau__wort-text {
|
||||
font-size: clamp(.9rem, 2vw, 1.4rem);
|
||||
letter-spacing: .42em;
|
||||
color: rgba(232, 241, 250, .34);
|
||||
}
|
||||
|
||||
/* ---- Die Leiste ---------------------------------------------------- */
|
||||
.bildschau__leiste {
|
||||
position: absolute; top: 0; left: 0; right: 0; z-index: 3;
|
||||
display: flex; align-items: center; gap: 10px;
|
||||
padding: 12px 14px;
|
||||
background: linear-gradient(180deg, rgba(4, 5, 11, .78), transparent);
|
||||
}
|
||||
.bildschau__name {
|
||||
flex: 1; min-width: 0;
|
||||
font-size: .86rem; color: rgba(232, 241, 250, .7);
|
||||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||||
}
|
||||
/* 44 px hoch, auch am Rechner: Der Schliessen-Knopf ist der einzige
|
||||
Weg heraus, den man SIEHT (Escape kennt nicht jeder). */
|
||||
.bildschau__knopf {
|
||||
flex: none;
|
||||
min-height: 44px; padding: 0 14px;
|
||||
display: inline-flex; align-items: center;
|
||||
border: 1px solid rgba(255, 255, 255, .12);
|
||||
border-radius: 999px;
|
||||
background: rgba(255, 255, 255, .06);
|
||||
color: var(--text, #e8f1fa);
|
||||
font: inherit; font-size: .84rem; font-weight: 600;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
.bildschau__knopf:hover { background: rgba(255, 255, 255, .13); }
|
||||
.bildschau__knopf:focus-visible { outline: 2px solid #b9a7ff; outline-offset: 2px; }
|
||||
.bildschau__zu { min-width: 44px; justify-content: center; padding: 0; font-size: 1rem; }
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.bildschau__figur, .bildschau__wort { transition: none; }
|
||||
}
|
||||
/* Auf einem Telefon fuellt ein Foto den Schirm -- dort gibt es keinen
|
||||
Platz fuer Begleiter, und die Schau sagt das ueber `data-lage`
|
||||
ohnehin selbst. Hier bleibt nur die Buehne enger. */
|
||||
@media (max-width: 620px) {
|
||||
.bildschau__buehne { padding: 64px 12px 24px; }
|
||||
.bildschau__bild { max-width: 96vw; max-height: 78dvh; }
|
||||
}
|
||||
@@ -5558,159 +5558,6 @@
|
||||
.chat__kopf .chat__kopf-zeichen { display: none; }
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
=====================================================================
|
||||
DIE BILDSCHAU (25.09.2026)
|
||||
=====================================================================
|
||||
=====================================================================
|
||||
|
||||
Filipe: „wenn man bilder aufmacht, will ich dass die in der mitte
|
||||
sind. beim hochformat soll links der husky sein und rechts der hase
|
||||
und beim querformat soll oben dogfather und unten team dogi stehen
|
||||
da wo platz ist. … ich will nicht dahin geschmissen sondern was
|
||||
richtig geiles mit einem geilen hintergrund."
|
||||
|
||||
DER GRUND IST DREI SCHICHTEN, nicht eine Farbe: ein tiefer Verlauf,
|
||||
drei weiche Lichter (violett, tuerkis, ein warmer Rest) und ein
|
||||
Schleier ganz aussen. Zusammen unter zehn Prozent Deckung -- ein
|
||||
Foto soll darauf liegen, nicht dagegen ankaempfen.
|
||||
|
||||
KEIN REINES SCHWARZ. Genau das zeigt der Browser von sich aus, und
|
||||
genau daran hat Filipe es gemerkt. Schwarz ist keine Gestaltung,
|
||||
sondern ihr Fehlen.
|
||||
===================================================================== */
|
||||
.bildschau {
|
||||
width: 100vw; max-width: 100vw;
|
||||
height: 100dvh; max-height: 100dvh;
|
||||
padding: 0; margin: 0; border: 0;
|
||||
background: none;
|
||||
overflow: hidden;
|
||||
color: var(--text, #e8f1fa);
|
||||
}
|
||||
.bildschau::backdrop { background: rgba(3, 4, 9, .86); backdrop-filter: blur(6px); }
|
||||
|
||||
.bildschau__grund {
|
||||
position: absolute; inset: 0; z-index: 0;
|
||||
background:
|
||||
radial-gradient(70% 55% at 18% 8%, rgba(122, 92, 255, .16), transparent 66%),
|
||||
radial-gradient(62% 52% at 84% 88%, rgba(38, 200, 196, .13), transparent 68%),
|
||||
radial-gradient(48% 40% at 60% 46%, rgba(255, 176, 92, .06), transparent 70%),
|
||||
linear-gradient(168deg, #0a0b14 0%, #070811 55%, #05060c 100%);
|
||||
}
|
||||
/* Ein Schleier von aussen nach innen -- er zieht den Blick in die
|
||||
Mitte, ohne dass man ihn als Rahmen bemerkt. */
|
||||
.bildschau__grund::after {
|
||||
content: ""; position: absolute; inset: 0;
|
||||
background: radial-gradient(120% 95% at 50% 50%, transparent 52%, rgba(0, 0, 0, .55) 100%);
|
||||
}
|
||||
|
||||
/* ---- Die Buehne: das Bild sitzt in der MITTE ----------------------- */
|
||||
.bildschau__buehne {
|
||||
position: absolute; inset: 0; z-index: 2;
|
||||
display: grid; place-items: center;
|
||||
padding: 72px 4vw 56px;
|
||||
}
|
||||
.bildschau__bild {
|
||||
max-width: 92vw; max-height: 82dvh;
|
||||
width: auto; height: auto;
|
||||
border-radius: 14px;
|
||||
/* Ein feiner heller Saum trennt das Foto vom Grund, auch wenn seine
|
||||
Raender selbst dunkel sind. Ohne ihn franst ein dunkles Foto in
|
||||
den Hintergrund aus, und man sieht nicht mehr, wo es aufhoert. */
|
||||
box-shadow:
|
||||
0 0 0 1px rgba(255, 255, 255, .1),
|
||||
0 40px 90px -40px rgba(0, 0, 0, .95),
|
||||
0 0 90px -40px rgba(122, 92, 255, .5);
|
||||
}
|
||||
|
||||
/* ---- Die Begleiter ------------------------------------------------- */
|
||||
/* Sie liegen HINTER dem Bild (z-index 1 gegen 2) -- ein Husky, der
|
||||
ueber einem Foto liegt, waere keine Zierde, sondern ein Hindernis. */
|
||||
.bildschau__figur {
|
||||
position: absolute; bottom: 0; z-index: 1;
|
||||
height: min(78dvh, 720px);
|
||||
width: auto;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .32s ease;
|
||||
}
|
||||
.bildschau__figur--links { left: 0; }
|
||||
/* NICHT SPIEGELN. Der erste Anlauf drehte den Hasen um, damit beide
|
||||
„nach innen" schauen -- ein alter Reflex aus dem Plakatsatz. Auf dem
|
||||
Probebild stand danach „Hasi Dog" seitenverkehrt auf seinem Hoodie.
|
||||
Beide Figuren sehen ohnehin nach vorn; es gibt nichts zu spiegeln,
|
||||
und Schrift im Bild spiegelt man nie. */
|
||||
.bildschau__figur--rechts { right: 0; }
|
||||
.bildschau[data-lage="hoch"] .bildschau__figur { opacity: .92; }
|
||||
|
||||
/* ---- Die zwei Schriftzuege ----------------------------------------- */
|
||||
.bildschau__wort {
|
||||
position: absolute; left: 0; right: 0; z-index: 1;
|
||||
display: flex; align-items: center; justify-content: center; gap: 14px;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity .32s ease;
|
||||
}
|
||||
.bildschau__wort--oben { top: 18px; }
|
||||
.bildschau__wort--unten { bottom: 16px; }
|
||||
.bildschau[data-lage="quer"] .bildschau__wort { opacity: 1; }
|
||||
.bildschau__zeichen { width: 34px; height: 34px; filter: invert(1) opacity(.72); }
|
||||
/* GESPERRT UND GROSS: Ein Schriftzug ist kein Satz. Die Sperrung macht
|
||||
aus zwei Woertern ein Zeichen -- man liest es nicht, man erkennt es. */
|
||||
.bildschau__wort-text {
|
||||
font-size: clamp(1.1rem, 2.6vw, 1.9rem);
|
||||
font-weight: 800;
|
||||
letter-spacing: .34em;
|
||||
text-transform: uppercase;
|
||||
color: rgba(232, 241, 250, .5);
|
||||
text-shadow: 0 0 26px rgba(122, 92, 255, .45);
|
||||
}
|
||||
.bildschau__wort--unten .bildschau__wort-text {
|
||||
font-size: clamp(.9rem, 2vw, 1.4rem);
|
||||
letter-spacing: .42em;
|
||||
color: rgba(232, 241, 250, .34);
|
||||
}
|
||||
|
||||
/* ---- Die Leiste ---------------------------------------------------- */
|
||||
.bildschau__leiste {
|
||||
position: absolute; top: 0; left: 0; right: 0; z-index: 3;
|
||||
display: flex; align-items: center; gap: 10px;
|
||||
padding: 12px 14px;
|
||||
background: linear-gradient(180deg, rgba(4, 5, 11, .78), transparent);
|
||||
}
|
||||
.bildschau__name {
|
||||
flex: 1; min-width: 0;
|
||||
font-size: .86rem; color: rgba(232, 241, 250, .7);
|
||||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||||
}
|
||||
/* 44 px hoch, auch am Rechner: Der Schliessen-Knopf ist der einzige
|
||||
Weg heraus, den man SIEHT (Escape kennt nicht jeder). */
|
||||
.bildschau__knopf {
|
||||
flex: none;
|
||||
min-height: 44px; padding: 0 14px;
|
||||
display: inline-flex; align-items: center;
|
||||
border: 1px solid rgba(255, 255, 255, .12);
|
||||
border-radius: 999px;
|
||||
background: rgba(255, 255, 255, .06);
|
||||
color: var(--text, #e8f1fa);
|
||||
font: inherit; font-size: .84rem; font-weight: 600;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
.bildschau__knopf:hover { background: rgba(255, 255, 255, .13); }
|
||||
.bildschau__knopf:focus-visible { outline: 2px solid #b9a7ff; outline-offset: 2px; }
|
||||
.bildschau__zu { min-width: 44px; justify-content: center; padding: 0; font-size: 1rem; }
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.bildschau__figur, .bildschau__wort { transition: none; }
|
||||
}
|
||||
/* Auf einem Telefon fuellt ein Foto den Schirm -- dort gibt es keinen
|
||||
Platz fuer Begleiter, und die Schau sagt das ueber `data-lage`
|
||||
ohnehin selbst. Hier bleibt nur die Buehne enger. */
|
||||
@media (max-width: 620px) {
|
||||
.bildschau__buehne { padding: 64px 12px 24px; }
|
||||
.bildschau__bild { max-width: 96vw; max-height: 78dvh; }
|
||||
}
|
||||
|
||||
/* =====================================================================
|
||||
DIE DREI FAECHER AM FINGER (25.09.2026)
|
||||
|
||||
Reference in New Issue
Block a user