/* ========================================================================== Grundton der Oberflaeche Die Seite laeuft auf AdminLTE, also auf Bootstrap. Beide beziehen ihre Farben aus Variablen - deshalb wird hier nicht Regel fuer Regel ueberschrieben, sondern die Palette ausgetauscht: ein paar Variablen am Wurzelelement, und Karten, Tabellen, Abzeichen und Knoepfe folgen von selbst. Was danach noch kommt, sind wenige gezielte Regeln fuer die Dinge, die Bootstrap fest verdrahtet hat (Kartenrahmen, Kopfzeilen, Trennlinien). Die Palette selbst ist die des Jahresvergleichs: ein leicht blaustichiges Anthrazit als Grund, eine Spur hellere Flaeche fuer Karten, Haarlinien statt Rahmen - und Bernstein als einzige Akzentfarbe, weil das auf dieser Seite die Farbe der eigenen Anlage ist. Gruen, Rot und Gelb bleiben den Zustaenden vorbehalten und sind kein Schmuck. ========================================================================== */ :root, [data-bs-theme="dark"] { --ton-grund: #191d20; /* Seitenhintergrund */ --ton-flaeche: #23282c; /* Karten */ --ton-flaeche-2: #2b3237; /* Kopfzeilen, Tabellenkopf */ --ton-linie: rgba(138, 148, 158, .20); --ton-linie-satt: rgba(138, 148, 158, .38); --ton-schrift: #e8ede9; --ton-schrift-2: #9aa6ad; --ton-schrift-3: #6f7a81; --ton-sonne: #f0b429; /* die eigene Anlage */ --ton-sonne-rgb: 240, 180, 41; --ton-gut: #4caf7d; --ton-schlecht: #e06060; /* Zwei Radien statt einem. Der grosse gilt fuer Flaechen (Karten, Modale, Eingabefelder), der kleine fuer alles, was in einer Reihe steht - Schalter, kleine Knoepfe, Abzeichen. Bootstrap kennt beide, benutzte bisher aber nur den grossen; der kleine stand auf seiner Vorgabe von .25rem und wirkte daneben eckig. */ --ton-radius: .875rem; --ton-radius-klein: .5rem; /* Die Anzeigeschrift. Poppins liegt seit jeher unter assets/fonts und trug bisher nur die Etagenknoepfe im Aussenplan - eine ganze Schrift fuer vier Buchstaben. Als Variable traegt sie jetzt alle Ueberschriften: waermer und eine Spur weniger technisch als die Source Sans 3 des Fliesstextes, ohne dass eine zweite Datei geladen wird. Zahlenkolonnen und Fliesstext bleiben unberuehrt - Poppins hat keine Tabellenziffern. */ --font-anzeige: Poppins, system-ui, -apple-system, "Segoe UI", sans-serif; /* ... und dieselben Werte dort, wo Bootstrap sie sucht. */ --bs-body-bg: var(--ton-grund); --bs-body-bg-rgb: 25, 29, 32; --bs-body-color: var(--ton-schrift); --bs-body-color-rgb: 232, 237, 233; --bs-emphasis-color: #fff; --bs-secondary-color: var(--ton-schrift-2); --bs-secondary-bg: var(--ton-flaeche-2); --bs-tertiary-color: var(--ton-schrift-3); --bs-tertiary-bg: var(--ton-flaeche-2); --bs-border-color: var(--ton-linie-satt); --bs-border-radius: var(--ton-radius); --bs-border-radius-sm: var(--ton-radius-klein); --bs-link-color: var(--ton-sonne); --bs-link-hover-color: #ffc94d; --bs-heading-color: var(--ton-schrift); } /* Ueberschriften in der Anzeigeschrift. Bewusst nur Ueberschriften: der Fliesstext und alle Zahlenkolonnen bleiben bei der Schrift des Themes, weil Poppins keine Tabellenziffern mitbringt und Messwerte sonst springen wuerden. */ h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6, .card-title, .modal-title { font-family: var(--font-anzeige); font-weight: 600; letter-spacing: -.01em; } /* Der Rumpf traegt zwei Grundfarben: die Seite und die Leisten drumherum. AdminLTE setzt sie ueber eigene Klassen, die hier auf denselben Ton gebracht werden - sonst steht eine Karte auf drei verschiedenen Grautoenen. */ body.bg-body-tertiary, .app-content, .app-content-header { background: var(--ton-grund); } .app-header.bg-body, .app-sidebar.bg-body-secondary { background: var(--ton-flaeche) !important; border-color: var(--ton-linie) !important; } .app-header { box-shadow: 0 1px 0 var(--ton-linie); } /* --- Eigene Symbole ------------------------------------------------------ Fuer Dinge, die Bootstrap Icons nicht kennt. Gezeichnet als Maske in currentColor, damit sie sich wie ein Symbol aus der Schrift verhalten: - Groesse, Farbe und Ausrichtung wie bei allen anderen. bootstrap-icons.min.css laedt nach dieser Datei, daher .bi doppelt im Selektor. bi-beschattung: Kasten, zwei Lamellen, Endleiste - ein Raffstore. Bewusst nur vier Balken mit viel Luft dazwischen: mit Fuehrungsschienen und drei Lamellen lief das Zeichen bei 16 px zu einem Block zusammen. Ueberall dasselbe: Raum-Modal, Zeitleiste, Editor. -------------------------------------------------------------------------- */ .bi.bi-beschattung::before { content: ""; width: 1em; height: 1em; background-color: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22%3E%3Crect x=%221.5%22 y=%221.6%22 width=%2213%22 height=%222.6%22 rx=%22.9%22/%3E%3Crect x=%222.6%22 y=%225.7%22 width=%2210.8%22 height=%221.7%22 rx=%22.85%22/%3E%3Crect x=%222.6%22 y=%228.6%22 width=%2210.8%22 height=%221.7%22 rx=%22.85%22/%3E%3Crect x=%221.5%22 y=%2211.8%22 width=%2213%22 height=%222.6%22 rx=%22.9%22/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22%3E%3Crect x=%221.5%22 y=%221.6%22 width=%2213%22 height=%222.6%22 rx=%22.9%22/%3E%3Crect x=%222.6%22 y=%225.7%22 width=%2210.8%22 height=%221.7%22 rx=%22.85%22/%3E%3Crect x=%222.6%22 y=%228.6%22 width=%2210.8%22 height=%221.7%22 rx=%22.85%22/%3E%3Crect x=%221.5%22 y=%2211.8%22 width=%2213%22 height=%222.6%22 rx=%22.9%22/%3E%3C/svg%3E") center / contain no-repeat; } /* --- Auswahllisten ------------------------------------------------------- Eigener Knopf statt der Liste, die der Browser zeichnet (js/solar/auswahl.js). Chrome malt sie hell auf grau, und gestalten laesst sie sich nicht. Die aufgeklappte Liste haengt an und liegt ueber der Seite - im Fluss machte sie ein Modal hoeher, und der ganze Inhalt sprang. -------------------------------------------------------------------------- */ .aw { display: block; position: relative; min-width: 0; } .aw.aw-text { display: inline-block; max-width: 100%; } .aw > select { display: none; } .aw .aw-knopf { display: flex; align-items: center; justify-content: space-between; gap: .4rem; width: 100%; min-width: 0; padding: .35rem .6rem; border: 1px solid var(--ton-linie-satt, rgba(138, 148, 158, .38)); border-radius: var(--ton-radius-klein, .5rem); background: var(--ton-flaeche-2, #2b3237); color: var(--ton-schrift, #e8ede9); font: inherit; text-align: left; cursor: pointer; } .aw .aw-knopf:hover { border-color: var(--bs-link-color, #f0b429); } .aw .aw-knopf:focus-visible { outline: 2px solid var(--bs-link-color, #f0b429); outline-offset: 1px; } .aw .aw-knopf[aria-expanded="true"] { border-color: var(--bs-link-color, #f0b429); } .aw .aw-knopf:disabled { opacity: .55; cursor: default; } .aw .aw-wert { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .aw .aw-wert.aw-leer { color: var(--ton-schrift-3, #6f7a81); } .aw .aw-knopf > .bi { flex: none; font-size: .7em; color: var(--ton-schrift-2, #9aa6ad); transition: transform .2s; } .aw .aw-knopf[aria-expanded="true"] > .bi { transform: rotate(180deg); } /* Als Text im Fliesstext (Automatik-Editor): der Knopf traegt dort die Gestaltung von .feld-als-text, nur der Pfeil kommt dazu. */ .aw .aw-knopf.feld-als-text { display: inline-flex; width: auto; max-width: 100%; } .input-group > .aw { flex: 1 1 auto; width: 1%; } .input-group > .aw .aw-knopf { border-radius: 0; height: 100%; } .input-group > .aw:last-child .aw-knopf { border-top-right-radius: var(--ton-radius-klein, .5rem); border-bottom-right-radius: var(--ton-radius-klein, .5rem); } /* Ein wie fuer