DU HATTEST RECHT (Bildschirmfoto 3). Beim letzten Mal habe ich an der Calls-Seite nur das MATERIAL der Karten getauscht und die Aufstellung gelassen. Drei Gruppen untereinander, und weil "Steht an" 27 Eintraege hat, lagen die beiden anderen ausserhalb des Bildes -- man SAH die Aenderung gar nicht, weil man nie so weit kam. Das war Lackieren, kein Umbauen. JETZT EIN BRETT AUS ZWEI SPALTEN. Die Gruppen sind eigenstaendige Tafeln in einem Raster; "Protokoll fehlt" (kurz, dringend) und "Festgehalten" (Archiv) liegen NEBEN der langen Liste statt darunter. `align-items: start` ist dabei der Punkt: Ohne ihn waeren alle Tafeln so hoch wie die hoechste, und neben der langen Liste stuenden zwei fast leere Kaesten. Welche Tafel wo landet, entscheidet die Breite und nicht das Skript -- eine festgeschriebene Spalte waere eine Zahl, die beim naechsten Fenster falsch ist. Jede Tafel klappt zu, und der Zustand wird gemerkt. Vorgabe: "Festgehalten" ist zu -- es ist das Archiv; wer die Seite oeffnet, will wissen, was ansteht. DIE GRUPPEN AUF DER STARTSEITE genauso. Der Kopf IST der Schalter, nicht ein Dreieck daneben: Die ganze Zeile ist ein Ziel von 40 Pixeln statt eines von vierzehn. <button> statt <div>, damit Tastaturbedienung und Ansage nicht mit tabindex und role nachgebaut werden muessen. Gemerkt wird je Gruppe UND je angesehener Rolle -- DogFather, der sich einen Creator ansieht, hat dort eine andere Aufteilung im Kopf. DIE UHR: drei Ringe statt zwei. Aussen die Stunde in Schwarzsilber, in der Mitte die Minute in Blau, innen die Sekunde in Rot -- von aussen nach innen immer schneller, so liest man eine Uhr ohne nachzudenken. UND SIE IST SCHARF. Kein blur(), kein drop-shadow mehr auf den Boegen -- an der alten lag beides drauf, und der Vorwurf stimmte. Der Glanz kommt jetzt aus dem VERLAUF: Echtes Metall glaenzt nicht, weil es leuchtet, sondern weil es das Licht abwechselnd hell und dunkel zurueckwirft. Fuenf Stopps statt zwei -- ein zweifarbiger Verlauf waere ein Farbverlauf, erst der Wechsel ist Metall. Dazu `shape-rendering="geometricPrecision"` (sonst rastert der Browser duenne Boegen grober) und Kappen auf `butt` statt `round`: Eine runde Kappe steht ueber das Ende hinaus, bei null Sekunden saehe man trotzdem einen Punkt. Minute und Stunde laufen WEICH mit: die Minute bekommt die Sekunden anteilig, die Stunde die Minuten. Ein Minutenring, der einmal pro Minute springt, sieht aus wie eine haengende Anzeige. Gruen: css-klassen (15), call-kategorien (17), start-ansicht (136), handy (59), breiten (23), buehne (38), struktur (32). NOCH OFFEN: der neue Kachelstil fuer die ganze Website und die Rolle "Spicy Media". Co-Authored-By: Claude Opus 5 <[email protected]>
476 lines
18 KiB
CSS
476 lines
18 KiB
CSS
/* ===================================================================
|
|
Calls & Meeting-Protokolle.
|
|
|
|
Nur eine Gruppe wird optisch hervorgehoben: die, in der etwas fehlt.
|
|
Alles andere bleibt bewusst ruhig -- sonst schreit die ganze Seite
|
|
und man sieht nicht mehr, was wirklich dran ist.
|
|
=================================================================== */
|
|
|
|
.gruppe { margin-bottom: 32px; }
|
|
.stufe__kopf { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
|
|
.stufe__titel {
|
|
margin: 0; font-size: .78rem; font-weight: 700;
|
|
letter-spacing: .08em; text-transform: uppercase; color: var(--akzent);
|
|
}
|
|
.stufe__zahl {
|
|
min-width: 22px; padding: 1px 7px; text-align: center;
|
|
font-size: .74rem; font-weight: 700; color: var(--text-still);
|
|
background: rgba(255, 255, 255, .06); border-radius: 999px;
|
|
}
|
|
.block__frage { margin: 0 0 12px; font-size: .85rem; color: var(--text-still); }
|
|
.gruppe__karten { display: grid; gap: 10px; margin-top: 12px; }
|
|
|
|
.gruppe[data-gruppe="offen"] .stufe__titel { color: #f0c48a; }
|
|
.gruppe[data-gruppe="offen"] .stufe__zahl {
|
|
color: #f0c48a; background: rgba(240, 196, 138, .13);
|
|
}
|
|
|
|
/* ---------- Karte --------------------------------------------------------- */
|
|
|
|
.call {
|
|
position: relative;
|
|
padding: 15px 18px 15px 21px;
|
|
background: var(--flaeche);
|
|
border: 1px solid var(--rand);
|
|
border-radius: var(--radius-klein);
|
|
transition: border-color .18s ease;
|
|
}
|
|
.call::before {
|
|
content: ""; position: absolute; left: 0; top: 10px; bottom: 10px; width: 3px;
|
|
border-radius: 0 3px 3px 0;
|
|
background: var(--rand-stark, rgba(255, 255, 255, .18));
|
|
}
|
|
.call[data-gruppe="offen"] {
|
|
border-color: rgba(240, 196, 138, .32);
|
|
background: rgba(240, 196, 138, .045);
|
|
}
|
|
.call[data-gruppe="offen"]::before { background: #f0c48a; }
|
|
.call[data-gruppe="anstehend"]::before { background: var(--akzent); }
|
|
.call[data-gruppe="erledigt"] { opacity: .82; }
|
|
.call[data-gruppe="erledigt"]:hover { opacity: 1; }
|
|
.call[data-gruppe="erledigt"]::before { background: #79d1a2; opacity: .55; }
|
|
.call:hover { border-color: rgba(255, 255, 255, .18); }
|
|
|
|
.call__kopf { display: flex; gap: 14px; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; }
|
|
.call__titel { margin: 0; font-size: 1.02rem; font-weight: 650; }
|
|
.call__zeit { margin: 2px 0 0; font-size: .82rem; color: var(--text-still); }
|
|
.call__text, .call__ort { margin: 10px 0 0; font-size: .86rem; color: var(--text-leise); }
|
|
.call__ort::before { content: "Ort: "; color: var(--text-still); }
|
|
|
|
.marke-fehlt {
|
|
padding: 3px 9px; border-radius: 999px;
|
|
font-size: .71rem; font-weight: 600;
|
|
color: #f0c48a; background: rgba(240, 196, 138, .12);
|
|
border: 1px solid rgba(240, 196, 138, .35);
|
|
}
|
|
|
|
/* ---------- Aufgeklappt ---------------------------------------------------- */
|
|
|
|
.call__detail { margin-top: 15px; padding-top: 15px; border-top: 1px solid var(--rand); }
|
|
.call__abschnitt {
|
|
margin: 2px 0 14px; font-size: .88rem; color: var(--text-leise);
|
|
white-space: pre-wrap; max-width: 78ch;
|
|
}
|
|
.call__quelle { margin: 12px 0 0; font-size: .77rem; color: var(--text-still); }
|
|
.call__verweis { color: var(--akzent); }
|
|
|
|
.todo-liste { margin: 4px 0 0; padding: 0; list-style: none; }
|
|
.todo-liste li {
|
|
padding: 9px 13px; margin-bottom: 6px;
|
|
background: var(--flaeche);
|
|
border: 1px solid var(--rand); border-radius: var(--radius-klein);
|
|
font-size: .87rem;
|
|
}
|
|
.todo-liste li[data-status="erledigt"] { opacity: .6; }
|
|
.todo-liste li[data-status="erledigt"] .todo-liste__titel { text-decoration: line-through; }
|
|
.todo-liste__titel { display: block; }
|
|
.todo-liste .kk__still { display: block; margin-top: 2px; font-size: .76rem; color: var(--text-still); }
|
|
|
|
/* ---------- Protokollbogen -------------------------------------------------- */
|
|
|
|
.bogen__hinweis { margin: 1px 0 6px; font-size: .78rem; color: var(--text-still); max-width: 70ch; }
|
|
.bogen__feld {
|
|
width: 100%; margin-bottom: 16px; padding: 10px 12px;
|
|
background: rgba(255, 255, 255, .04);
|
|
border: 1px solid var(--rand); border-radius: var(--radius-klein);
|
|
color: var(--text); font: inherit; resize: vertical;
|
|
}
|
|
.bogen__zeit {
|
|
margin-bottom: 14px; padding: 9px 11px;
|
|
background: rgba(255, 255, 255, .05);
|
|
border: 1px solid var(--rand); border-radius: var(--radius-klein);
|
|
color: var(--text); font: inherit;
|
|
}
|
|
|
|
.todos { display: grid; gap: 7px; margin: 4px 0 10px; }
|
|
.todo { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 7px; }
|
|
.todo__titel, .todo__frist {
|
|
padding: 9px 11px;
|
|
background: rgba(255, 255, 255, .05);
|
|
border: 1px solid var(--rand); border-radius: var(--radius-klein);
|
|
color: var(--text); font: inherit;
|
|
}
|
|
|
|
.bogen__feld:focus, .bogen__zeit:focus, .todo__titel:focus, .todo__frist:focus {
|
|
outline: none; border-color: rgba(63, 189, 245, .65);
|
|
box-shadow: 0 0 0 3px rgba(63, 189, 245, .14);
|
|
}
|
|
|
|
|
|
@media (max-width: 560px) {
|
|
.todo { grid-template-columns: minmax(0, 1fr) auto; }
|
|
.todo__frist { grid-column: 1 / 2; }
|
|
.todo__weg { grid-row: 1 / 3; }
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.call, .todo__weg { transition: none; }
|
|
}
|
|
|
|
/* ---------- Aufklappbare Zeitraum-Blöcke --------------------------------
|
|
|
|
Wunsch Filipe, 06.09.2026, mit einem Bild von "STEHT AN 27":
|
|
*"die liste da soll kategorisiert sein und werden mit einem button
|
|
zum auf und zu machen."*
|
|
|
|
Siebenundzwanzig Karten am Stück beantworten keine Frage -- man
|
|
scrollt an allem vorbei, was diese Woche ansteht, um zu sehen, dass
|
|
der Rest im November liegt. Jetzt: Heute · Diese Woche · Nächste
|
|
Woche · Später, und offen ist nur der erste gefüllte Block.
|
|
|
|
Gestaltet wie der Bereich "Abgebrochen" auf dem Aufgabenbrett --
|
|
dasselbe Bauteil soll auch gleich aussehen. */
|
|
|
|
.zeitblock {
|
|
margin-top: 10px;
|
|
border: 1px solid var(--rand);
|
|
border-radius: 13px;
|
|
background: rgba(255, 255, 255, .018);
|
|
}
|
|
.zeitblock + .zeitblock { margin-top: 8px; }
|
|
|
|
.zeitblock__kopf {
|
|
display: flex; align-items: center; gap: 10px;
|
|
padding: 12px 15px;
|
|
cursor: pointer;
|
|
font-size: .8rem; font-weight: 700;
|
|
letter-spacing: .05em; text-transform: uppercase;
|
|
color: var(--text-still);
|
|
/* Das eigene Dreieck von <summary> weg -- es wird unten selbst
|
|
gezeichnet, damit es links steht und sich beim Öffnen dreht. */
|
|
list-style: none;
|
|
}
|
|
.zeitblock__kopf::-webkit-details-marker { display: none; }
|
|
.zeitblock__kopf:hover { color: var(--text-leise); }
|
|
.zeitblock__kopf:focus-visible {
|
|
outline: 2px solid var(--akzent); outline-offset: -2px; border-radius: 13px;
|
|
}
|
|
|
|
.zeitblock__kopf::before {
|
|
content: ""; flex: none;
|
|
width: 0; height: 0;
|
|
border-left: 5px solid currentColor;
|
|
border-top: 4px solid transparent;
|
|
border-bottom: 4px solid transparent;
|
|
transition: transform .18s ease;
|
|
}
|
|
.zeitblock[open] .zeitblock__kopf::before { transform: rotate(90deg); }
|
|
|
|
.zeitblock__name { flex: none; }
|
|
.zeitblock__zahl {
|
|
padding: 2px 9px; border-radius: 999px;
|
|
font-size: .75rem; font-weight: 700; letter-spacing: 0;
|
|
color: var(--text-leise);
|
|
background: rgba(255, 255, 255, .06);
|
|
border: 1px solid var(--rand);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
/* "ab 23. Sep" -- ohne das sagt "Später" nicht, ob morgen oder im
|
|
November. Steht rechts und tritt zurück. */
|
|
.zeitblock__ab {
|
|
margin-left: auto;
|
|
font-size: .74rem; font-weight: 500;
|
|
letter-spacing: 0; text-transform: none;
|
|
color: var(--text-still);
|
|
}
|
|
|
|
/* Der offene Block hebt sich ab -- sonst sieht man beim Scrollen nicht,
|
|
wo man gerade ist. */
|
|
.zeitblock[open] { border-color: var(--rand-hell); }
|
|
.zeitblock[open] .zeitblock__kopf { color: var(--text-leise); }
|
|
.zeitblock .gruppe__karten { padding: 4px 13px 14px; }
|
|
|
|
/* ZUGEKLAPPT HEISST WIRKLICH WEG (06.09.2026, gefunden von
|
|
pruef-call-kategorien).
|
|
|
|
<details> versteckt seinen Inhalt von selbst -- aber nur, solange
|
|
niemand dem Inhalt eine eigene `display`-Angabe gibt. `.gruppe__karten`
|
|
traegt `display: grid` (aus dem gemeinsamen Stil der Gruppen), und
|
|
damit war der Block zwar ZUGEKLAPPT, seine Karten standen aber
|
|
weiterhin darunter: gemessen 367 Pixel Hoehe bei open=false.
|
|
|
|
Die ganze Funktion waere damit wirkungslos gewesen -- der Knopf
|
|
haette sich bewegt und sonst nichts getan. Im Bildschirmfoto fiel es
|
|
nicht auf, weil der Ausschnitt genau darueber endete.
|
|
|
|
Deshalb hier ausdruecklich: zu ist zu. */
|
|
.zeitblock:not([open]) .gruppe__karten { display: none; }
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.zeitblock__kopf::before { transition: none; }
|
|
}
|
|
|
|
@media (forced-colors: active) {
|
|
.zeitblock { border: 1px solid CanvasText; }
|
|
.zeitblock__zahl { border: 1px solid CanvasText; }
|
|
}
|
|
|
|
|
|
/* =====================================================================
|
|
CALLS & PROTOKOLLE — übersichtlicher (07.09.2026)
|
|
|
|
Wunsch Filipe: "ich will dass du diese komplette seite viel
|
|
übersichtlicher machst ... total übersichtlich und hoch profissionell."
|
|
|
|
---------------------------------------------------------------------
|
|
WAS AN DER SEITE UNÜBERSICHTLICH WAR
|
|
|
|
Nicht die Menge -- 27 anstehende Gespräche sind viele, aber sie waren
|
|
schon sauber gruppiert. Unübersichtlich waren DREI Dinge, und alle
|
|
drei sind Abstände, keine Inhalte:
|
|
|
|
1. ALLES STAND GLEICH WEIT AUSEINANDER. Zwischen zwei Karten
|
|
derselben Woche lag derselbe Abstand wie zwischen zwei Gruppen.
|
|
Damit sieht man die Gliederung nicht mehr -- man liest eine
|
|
lange Reihe statt drei Blöcke. Jetzt: 10 px innerhalb einer
|
|
Gruppe, 32 px zwischen Gruppen, und die Gruppenüberschrift
|
|
bekommt eine eigene Linie.
|
|
|
|
2. DIE KARTEN WAREN FAST DURCHSICHTIG. Auf einem Bild mit einem
|
|
großen hellen Logo bedeutet das: Der Untergrund kämpft mit dem
|
|
Text. Sie bekommen jetzt dasselbe Material wie überall --
|
|
beleuchtete Platte, Leuchtschiene in der Farbe ihres Zustands.
|
|
|
|
3. DER ZUSTAND STAND NUR IN DER FARBE. "Protokoll fehlt" war ein
|
|
bernsteinfarbener Strich am Rand. Farbe allein ist nie genug --
|
|
die Schiene bleibt, aber die Karte trägt den Zustand ohnehin
|
|
schon als Wort in ihrer Marke.
|
|
|
|
Die Farben sind dieselben wie im ganzen Haus: Bernstein = wartet,
|
|
Blau = steht an, Grün = erledigt.
|
|
===================================================================== */
|
|
|
|
.gruppe { margin-bottom: 34px; }
|
|
/* Die Gruppenüberschrift bekommt eine Grundlinie über die ganze Breite
|
|
-- das ist der billigste und stärkste Trick für Gliederung: Das Auge
|
|
sieht einen Block, bevor es ein Wort gelesen hat. */
|
|
.gruppe > .stufe {
|
|
padding-bottom: 10px;
|
|
border-bottom: 1px solid rgba(150, 186, 220, .12);
|
|
}
|
|
.gruppe__karten { gap: 10px; margin-top: 14px; }
|
|
|
|
.call {
|
|
--c: var(--akzent);
|
|
padding: 16px 18px 16px 22px;
|
|
border-radius: 3px 16px 16px 3px;
|
|
border-color: color-mix(in srgb, var(--c) 16%, rgba(150, 186, 220, .12));
|
|
background:
|
|
linear-gradient(90deg,
|
|
color-mix(in srgb, var(--c) 20%, transparent) 0%,
|
|
color-mix(in srgb, var(--c) 6%, transparent) 14%,
|
|
color-mix(in srgb, var(--c) 2%, transparent) 30%,
|
|
transparent 50%),
|
|
linear-gradient(163deg,
|
|
rgba(21, 28, 41, .95) 0%,
|
|
rgba(11, 15, 24, .95) 62%,
|
|
rgba(8, 11, 18, .95) 100%);
|
|
box-shadow:
|
|
inset 0 1px 0 rgba(255, 255, 255, .075),
|
|
inset 0 -1px 0 rgba(0, 0, 0, .45),
|
|
0 2px 4px -2px rgba(0, 0, 0, .5),
|
|
0 12px 26px -18px rgba(0, 0, 0, .85);
|
|
transition: border-color var(--tempo), transform var(--tempo), box-shadow var(--tempo);
|
|
}
|
|
/* Die Schiene läuft über die ganze Höhe, nicht mit 10 px Luft oben und
|
|
unten. Ein Strich, der vor der Ecke aufhört, sieht aus wie ein
|
|
Fehler; einer, der durchgeht, sieht aus wie Bauweise. */
|
|
.call::before {
|
|
top: 0; bottom: 0; width: 3px;
|
|
border-radius: 3px 0 0 3px;
|
|
background: linear-gradient(180deg,
|
|
color-mix(in srgb, var(--c) 80%, transparent) 0%,
|
|
color-mix(in srgb, var(--c) 42%, transparent) 100%);
|
|
opacity: .75;
|
|
transition: opacity var(--tempo);
|
|
}
|
|
.call[data-gruppe="offen"] { --c: #f0c48a; }
|
|
.call[data-gruppe="anstehend"] { --c: var(--akzent); }
|
|
.call[data-gruppe="erledigt"] { --c: #79d1a2; }
|
|
/* Die alten Sonderregeln setzten Fläche und Strichfarbe getrennt --
|
|
jetzt steckt beides in --c. Diese eine Zeile ersetzt vier. */
|
|
.call[data-gruppe="offen"]::before,
|
|
.call[data-gruppe="anstehend"]::before,
|
|
.call[data-gruppe="erledigt"]::before { background: linear-gradient(180deg,
|
|
color-mix(in srgb, var(--c) 80%, transparent) 0%,
|
|
color-mix(in srgb, var(--c) 42%, transparent) 100%); }
|
|
/* Erledigtes tritt zurück -- aber über die Fläche, nicht über die
|
|
Schriftdeckkraft. `opacity` auf der ganzen Karte hätte auch den Text
|
|
erfasst, und genau dieser Fehler hat am 07.09. an anderer Stelle
|
|
einen Kontrast unter die Schwelle gedrückt. */
|
|
.call[data-gruppe="erledigt"] {
|
|
opacity: 1;
|
|
border-color: rgba(150, 186, 220, .10);
|
|
}
|
|
.call[data-gruppe="erledigt"]::before { opacity: .5; }
|
|
|
|
.call:hover {
|
|
transform: translateY(-2px);
|
|
border-color: color-mix(in srgb, var(--c) 34%, rgba(150, 186, 220, .16));
|
|
box-shadow:
|
|
inset 0 1px 0 rgba(255, 255, 255, .10),
|
|
inset 0 -1px 0 rgba(0, 0, 0, .45),
|
|
0 4px 9px -4px rgba(0, 0, 0, .55),
|
|
0 18px 36px -20px rgba(0, 0, 0, .9);
|
|
}
|
|
.call:hover::before { opacity: 1; }
|
|
|
|
.call__titel { font-size: 1.05rem; font-weight: 700; color: #eaf2fb; }
|
|
.call__zeit { color: var(--text-leise); font-variant-numeric: tabular-nums; }
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.call, .call:hover { transform: none; }
|
|
}
|
|
@media (forced-colors: active) {
|
|
.call { background: Canvas; box-shadow: none; border: 1px solid CanvasText; }
|
|
}
|
|
|
|
|
|
/* =====================================================================
|
|
DAS BRETT — zwei Spalten statt einer Liste (07.09.2026)
|
|
|
|
Filipe: "immer noch gleich aufgestellt, man kann sogar bestimmt zwei
|
|
kategorien neben einander legen ... wenn ich sage komplett aendern
|
|
dan komplett aendern."
|
|
|
|
Er hatte recht. Beim letzten Mal habe ich nur das Material der Karten
|
|
getauscht -- die Aufstellung blieb eine Spalte, in der drei Gruppen
|
|
untereinander standen. Und weil "Steht an" siebenundzwanzig Eintraege
|
|
hat, lagen die beiden anderen ausserhalb des Bildes: Man SAH die
|
|
Aenderung gar nicht, weil man nie so weit kam.
|
|
|
|
Jetzt sind die Gruppen eigenstaendige Tafeln in einem Raster. Die
|
|
kurze, dringende ("Protokoll fehlt") und das Archiv ("Festgehalten")
|
|
liegen NEBEN der langen Liste statt darunter.
|
|
|
|
`align-items: start` ist dabei der entscheidende Punkt: Ohne ihn
|
|
waeren alle Tafeln so hoch wie die hoechste, und neben der langen
|
|
Liste stuenden zwei fast leere Kaesten. So endet jede Tafel dort, wo
|
|
ihr Inhalt endet.
|
|
|
|
KEINE feste Spaltenzuweisung im Skript. Welche Tafel wo landet,
|
|
entscheidet die Breite -- eine im Skript festgeschriebene Spalte waere
|
|
eine Zahl, die beim naechsten Fenster falsch ist.
|
|
===================================================================== */
|
|
.call-brett {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(420px, 100%), 1fr));
|
|
gap: 16px;
|
|
align-items: start;
|
|
}
|
|
/* Die lange Liste bekommt die erste Spalte und behaelt sie. Ohne diese
|
|
Zeile wandert sie je nach Anzahl mal links, mal rechts -- und eine
|
|
Oberflaeche, deren Aufbau sich mit dem Inhalt aendert, lernt man nie. */
|
|
.call-brett .gruppe[data-gruppe="anstehend"] { grid-row: span 2; }
|
|
|
|
.call-brett .gruppe {
|
|
margin: 0;
|
|
padding: 4px 14px 14px;
|
|
border: 1px solid rgba(150, 186, 220, .12);
|
|
border-radius: 4px 18px 18px 4px;
|
|
background:
|
|
linear-gradient(90deg,
|
|
color-mix(in srgb, var(--tafel-ton, var(--akzent)) 16%, transparent) 0%,
|
|
color-mix(in srgb, var(--tafel-ton, var(--akzent)) 5%, transparent) 12%,
|
|
transparent 34%),
|
|
linear-gradient(163deg,
|
|
rgba(21, 28, 41, .95) 0%,
|
|
rgba(11, 15, 24, .95) 62%,
|
|
rgba(8, 11, 18, .95) 100%);
|
|
box-shadow:
|
|
inset 0 1px 0 rgba(255, 255, 255, .075),
|
|
inset 0 -1px 0 rgba(0, 0, 0, .45),
|
|
0 2px 4px -2px rgba(0, 0, 0, .5),
|
|
0 14px 30px -20px rgba(0, 0, 0, .88);
|
|
overflow: hidden;
|
|
position: relative;
|
|
}
|
|
/* Jede Tafel traegt die Farbe ihres Zustands in einer Schiene links --
|
|
dieselbe Sprache wie ueberall: Bernstein wartet, Blau steht an, Gruen
|
|
ist erledigt. */
|
|
.call-brett .gruppe[data-gruppe="offen"] { --tafel-ton: #f0c48a; }
|
|
.call-brett .gruppe[data-gruppe="anstehend"] { --tafel-ton: var(--akzent); }
|
|
.call-brett .gruppe[data-gruppe="erledigt"] { --tafel-ton: #79d1a2; }
|
|
.call-brett .gruppe::before {
|
|
content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
|
|
background: linear-gradient(180deg,
|
|
color-mix(in srgb, var(--tafel-ton) 85%, transparent) 0%,
|
|
color-mix(in srgb, var(--tafel-ton) 35%, transparent) 100%);
|
|
}
|
|
|
|
/* Der Kopf ist der Schalter -- <button>, also muessen die Vorgaben des
|
|
Browsers zurueck (eigene Schrift, Rand, zentrierter Text). */
|
|
.call-brett .stufe__kopf {
|
|
appearance: none; -webkit-appearance: none;
|
|
width: 100%;
|
|
font: inherit; color: inherit; text-align: left;
|
|
border: 0; background: none; cursor: pointer;
|
|
display: flex; align-items: center; gap: 10px;
|
|
padding: 12px 2px;
|
|
border-radius: 10px;
|
|
transition: background var(--tempo);
|
|
}
|
|
.call-brett .stufe__kopf:hover { background: rgba(255, 255, 255, .04); }
|
|
.call-brett .stufe__kopf:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
|
|
.call-brett .stufe__titel { margin: 0; }
|
|
.call-brett .stufe__zahl { margin-left: auto; }
|
|
.call-brett .gruppe__pfeil {
|
|
width: 16px; height: 16px; flex: none;
|
|
color: var(--text-still);
|
|
transition: transform var(--tempo);
|
|
}
|
|
.call-brett .gruppe[data-zu="ja"] .gruppe__pfeil { transform: rotate(-90deg); }
|
|
.call-brett .gruppe[data-zu="ja"] { padding-bottom: 4px; }
|
|
.call-brett .gruppe__karten { margin-top: 0; }
|
|
/* Die Karten stehen jetzt IN einer Tafel -- sie brauchen keine zweite
|
|
schwere Flaeche, sonst liegt Kasten in Kasten. Leichter Grund, gleiche
|
|
Schiene. */
|
|
.call-brett .call {
|
|
background:
|
|
linear-gradient(90deg,
|
|
color-mix(in srgb, var(--c) 14%, transparent) 0%,
|
|
transparent 38%),
|
|
rgba(255, 255, 255, .028);
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05);
|
|
}
|
|
.call-brett .call:hover {
|
|
transform: none;
|
|
background:
|
|
linear-gradient(90deg,
|
|
color-mix(in srgb, var(--c) 20%, transparent) 0%,
|
|
transparent 42%),
|
|
rgba(255, 255, 255, .05);
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.call-brett .stufe__kopf, .call-brett .gruppe__pfeil { transition: none; }
|
|
}
|
|
@media (max-width: 900px) {
|
|
/* Eine Spalte -- und die Reihenspanne muss weg, sonst reisst sie in
|
|
der einspaltigen Ansicht eine leere Zeile auf. */
|
|
.call-brett .gruppe[data-gruppe="anstehend"] { grid-row: auto; }
|
|
}
|
|
@media (forced-colors: active) {
|
|
.call-brett .gruppe { background: Canvas; box-shadow: none; border: 1px solid CanvasText; }
|
|
}
|