/* ============================================================ DATEIEN — Marken-Skin für die Dateiablage (Files Gallery, /dateien) KEIN Teil des Seiten-Layouts und deshalb bewusst die 7. CSS-Datei: geladen wird sie ausschließlich von storage/dateien/system/include/head.html, also in einem fremden Dokument, das wir nicht rendern. Sie steht NACH der files.css der App und gewinnt damit über die Variablen. Zusammen mit tokens.css geladen (Farbwerte kommen von dort, nie als Hex von hier). Die App ist durchgängig variablengesteuert — wir setzen deshalb ihre Variablen und fassen ihre Selektoren fast nicht an. Das übersteht Updates. ============================================================ */ /* Die Schrift bleibt bewusst die der App (system-ui): ein Datei-Manager ist ein Werkzeug, nicht eine Seite der Website — nah am Standard heißt hier vertraute Bedienung, und die Systemschrift ist in kleinen Größen und langen Dateinamen ohnehin robuster als unsere Abel. Die Marke tragen Wappen und Rot. */ :root { /* Farbton der App auf das Markenrot ziehen. Die App leitet daraus Flächen, Ränder und Ordnerfarben ab (hsl(var(--hue), 20%, …)) — alles bekommt einen warmen Rotstich statt Blau, ohne dass wir einzelne Regeln überschreiben. */ --hue: var(--clr-accent-h); /* Der Akzent selbst (Buttons, Links, Auswahl) exakt auf --clr-accent. Die App wählt je Theme eine der drei Varianten. */ --hsl-primary-dark: var(--clr-accent-hsl); --hsl-primary-light: var(--clr-accent-hsl); --hsl-primary-contrast: var(--clr-accent-hsl); /* --- Kontrast (gemessen, nicht geschätzt) --- Die App leitet Flächen UND Ordnerfarben aus --hue ab. Mit dem Markenrot als Farbton stand ein dunkelroter Ordner auf dunkelroter Fläche: 1,07:1, praktisch unsichtbar. Deshalb hier drei Korrekturen. */ /* Flächen etwas tiefer als das Seiten-Grau (#222 ≈ 13 %): der Ordner ist ein gefülltes Rot, und Rot ist von Natur aus dunkel — es braucht den Abstand nach unten. Bei 13 % kommt das Rot nur auf 3,03:1, bei 10 % auf 3,30:1. */ --surface-base-lightness-dark: 10%; /* Text heller als die Vorgabe der App (80 %): hebt Dateinamen auf 11,97:1 und zieht die abgeleiteten Meta-Töne (Brotkrumen, Anzahl-Badge) mit nach oben. */ --text-base-lightness-dark: 88%; /* Ordner im Markenrot. Vorderseite ist die große Fläche und trägt die Erkennbarkeit (gemessen 3,91:1 — über den 3:1, die WCAG 1.4.11 für Grafik verlangt), Rückseite dunkler als Kante. Erste Zeile ist der Fallback für Browser ohne color-mix(). */ --svg-folder-fg-dark: var(--clr-accent); --svg-folder-fg-dark: color-mix(in srgb, var(--clr-accent) 80%, white); --svg-folder-fg-large-dark: var(--clr-accent); --svg-folder-fg-large-dark: color-mix(in srgb, var(--clr-accent) 80%, white); --svg-folder-bg-dark: var(--clr-accent-dark); --svg-folder-bg-large-dark: var(--clr-accent-dark); } /* --- Login-Seite --- Die Login-Seite der App rendert nur „Einloggen" und ihr Formular; sie bindet include/footer.html nicht ein (index.php:561 rendert eine eigene, knappe Seite) und kennt keinen Platz für eigenes Markup. Damit man sieht, wessen Ablage das ist, kommt das Vereinswappen als dekorative Fläche darüber — Bild statt CSS-Textinhalt, damit nichts Sinntragendes im Stylesheet landet. */ .page-login-body .login-container::before { content: ''; display: block; width: 96px; height: 124px; margin: 0 auto 1.5rem; background: url('../img/logo.svg') center / contain no-repeat; } /* --- Fußzeile (storage/dateien/system/include/footer.html) --- .custom-footer-fixed ist der Hook der App (fest am unteren Rand, volle Breite). Wir geben ihm nur Typografie und Abstand. */ .tsv-footer { display: flex; align-items: center; justify-content: center; padding: 0.375rem 1rem; border-top: 2px solid hsl(var(--clr-accent-hsl)); line-height: 1.4; } .tsv-footer a { display: inline-flex; align-items: center; gap: 0.5rem; color: var(--text1); text-decoration: none; white-space: nowrap; } /* Wappen in der Fußzeile: echtes mit Maßen (kein Layout-Sprung), dekorativ — der Linktext trägt die Bedeutung. Die offizielle `logo`-Option der App fällt hier aus: sie wird über _c.config in js/custom.js gesetzt, und dieser Hook braucht wie css/custom.css eine öffentliche URL, die unser storage_path nicht hat. */ .tsv-footer a img { height: 2.6em; /* darunter wird das Wappen zum Fleck */ width: auto; } .tsv-footer a:hover, .tsv-footer a:focus-visible { color: hsl(var(--clr-accent-hsl)); text-decoration: underline; } /* Die App reserviert keinen Platz für die feste Fußzeile — sonst verschwindet die letzte Dateizeile bzw. der letzte Menüpunkt darunter. */ #files-container, #sidebar-inner { padding-bottom: 4rem; }