/* ========================================================================== 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); } /* --- Karten -------------------------------------------------------------- Eine Karte ist eine Flaeche, kein Kasten: ein Ton heller als der Grund, eine Haarlinie als Rand, kein Schlagschatten. Der Schatten trennte frueher, was der Farbunterschied jetzt allein leistet. */ .card { background: var(--ton-flaeche); border: 1px solid var(--ton-linie); border-radius: var(--ton-radius); box-shadow: none; } .card-header { background: transparent; border-bottom: 1px solid var(--ton-linie); padding-inline: 1rem; } .card-title { font-size: 1rem; font-weight: 500; letter-spacing: -.01em; } .card-body { padding: 1rem; } .card-footer { background: transparent; border-top: 1px solid var(--ton-linie); } /* Werkzeugknoepfe in der Kopfzeile: ruhig, bis man sie braucht. */ .btn-tool { color: var(--ton-schrift-3); transition: color .18s, background .18s; border-radius: .35rem; } .btn-tool:hover, .btn-tool:focus-visible { color: var(--ton-schrift); background: rgba(138, 148, 158, .12); } /* --- Menue --------------------------------------------------------------- Der aktive Punkt traegt die Akzentfarbe, nicht das Blau des Themes - sonst haette die Seite zwei Hauptfarben. */ .sidebar-menu .nav-link { border-radius: .45rem; color: var(--ton-schrift-2); } .sidebar-menu .nav-link:hover { background: rgba(138, 148, 158, .1); color: var(--ton-schrift); } .sidebar-menu .nav-link.active, .sidebar-menu .nav-link.active:hover { background: rgba(var(--ton-sonne-rgb), .16); color: var(--ton-sonne); } .sidebar-brand { border-bottom: 1px solid var(--ton-linie); } .brand-text { font-weight: 400; letter-spacing: .01em; } /* --- Schrift ------------------------------------------------------------- Zahlen stehen ueberall in Spalten untereinander - mit Ziffern gleicher Breite bleiben sie ausgerichtet, auch wenn sich der Wert aendert. */ .card-body, .table, .info-box-number, .progress-bar { font-variant-numeric: tabular-nums; } .app-content-header h3 { font-weight: 500; letter-spacing: -.01em; } /* --- Tabellen ------------------------------------------------------------ */ .table { --bs-table-bg: transparent; --bs-table-color: var(--ton-schrift); --bs-table-border-color: var(--ton-linie); --bs-table-hover-bg: rgba(138, 148, 158, .06); --bs-table-striped-bg: rgba(138, 148, 158, .04); } .table > thead { color: var(--ton-schrift-2); font-size: .82rem; font-weight: 500; } /* --- Abzeichen ----------------------------------------------------------- Gedaempft statt grell: ein Abzeichen soll den Zustand sagen, nicht die Kachel dominieren. */ .badge { font-weight: 500; letter-spacing: .01em; } .badge.text-bg-secondary { background: rgba(138, 148, 158, .18) !important; color: var(--ton-schrift-2) !important; } .badge.text-bg-success { background: rgba(76, 175, 125, .18) !important; color: var(--ton-gut) !important; } .badge.text-bg-warning { background: rgba(240, 180, 41, .18) !important; color: var(--ton-sonne) !important; } .badge.text-bg-danger { background: rgba(224, 96, 96, .18) !important; color: var(--ton-schlecht) !important; } .badge.text-bg-info { background: rgba(122, 167, 199, .18) !important; color: #9cc4de !important; } /* --- Formulare ----------------------------------------------------------- */ .form-control, .form-select { background: rgba(0, 0, 0, .18); border-color: var(--ton-linie-satt); color: var(--ton-schrift); } .form-control:focus, .form-select:focus { background: rgba(0, 0, 0, .18); border-color: var(--ton-sonne); box-shadow: 0 0 0 .2rem rgba(var(--ton-sonne-rgb), .2); color: var(--ton-schrift); } .form-check-input:checked { background-color: var(--ton-sonne); border-color: var(--ton-sonne); } .form-check-input:focus { box-shadow: 0 0 0 .2rem rgba(var(--ton-sonne-rgb), .2); } /* Sichtbarer Tastaturfokus, einheitlich - AdminLTE setzt ihn stellenweise ab. */ a:focus-visible, button:focus-visible, [tabindex]:focus-visible { outline: 2px solid var(--ton-sonne); outline-offset: 2px; } /* --- Trennlinien und Modals ---------------------------------------------- */ hr { border-color: var(--ton-linie); opacity: 1; } .modal-content { background: var(--ton-flaeche); border: 1px solid var(--ton-linie-satt); border-radius: var(--ton-radius); } .modal-header, .modal-footer { border-color: var(--ton-linie); } /* ========================================================================== Jahresstatistik (js/solar/jahresstatistik.js) Die Tabelle traegt die Seite "Vergangenheit" und steht in kleiner Form auch auf der Solarseite. Sie ist zum Lesen einer Zeile gebaut: Kennzahlen links, Jahre nebeneinander, die Veraenderung als Zahl - nicht als blosser Pfeil. ========================================================================== */ /* Der Baustein setzt seine Bloecke selbst auf Abstand - und zwar auf denselben wie den zwischen den Leitzahlen und den Innenabstand der Karte. Alle Nahtstellen sind dadurch gleich weit, gleich ob die Werkzeugleiste dabei ist oder nicht. */ .jahresstatistik { display: flex; flex-direction: column; gap: var(--stat-abstand, 1.25rem); } /* Der Innenabstand der Karte gehoert zum selben Mass - sonst sitzt die erste Kachel enger unter der Ueberschrift als die zweite unter der ersten. Der Vorsatz .app-content ist noetig, nicht schmueckend: weiter unten in dieser Datei setzt .app-content .card-body auf dem Handy einen kleineren Innenabstand, und bei gleicher Spezifitaet gewaenne die spaetere Regel. */ .app-content .card-body.statistik { padding: var(--stat-abstand, 1.25rem); } /* Auf dem Handy ruecken alle Nahtstellen zusammen - aber gemeinsam, sonst waere die Gleichheit wieder dahin. */ @media (max-width: 767.98px) { .jahresstatistik, .app-content .card-body.statistik { --stat-abstand: 1rem; } } /* --- Leitzahlen ---------------------------------------------------------- */ .jahresstatistik .leitzahlen { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: var(--stat-abstand, 1.25rem); } .jahresstatistik .leitzahl { background: rgba(138, 148, 158, .07); border: 1px solid var(--ton-linie); border-radius: var(--ton-radius); padding: .9rem 1.05rem 1rem; } .jahresstatistik .leitzahl .name { font-size: .78rem; color: var(--ton-schrift-2); } .jahresstatistik .leitzahl .zahl { display: flex; align-items: baseline; gap: .35rem; margin-top: .3rem; font-size: 1.9rem; font-weight: 500; line-height: 1.1; font-variant-numeric: tabular-nums; } .jahresstatistik .leitzahl .einheit { font-size: .95rem; font-weight: 400; color: var(--ton-schrift-2); } .jahresstatistik .leitzahl .fuss { margin-top: .45rem; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; font-size: .76rem; color: var(--ton-schrift-3); } .jahresstatistik .leitzahl.betont { border-color: rgba(var(--ton-sonne-rgb), .45); } .jahresstatistik .leitzahl.betont .zahl { color: var(--ton-sonne); } /* Die Veraenderung: Richtung und Groesse, nicht nur Richtung. */ .jahresstatistik .delta { display: inline-flex; align-items: center; gap: .25rem; font-size: .78rem; font-variant-numeric: tabular-nums; white-space: nowrap; } .jahresstatistik .delta.gut { color: var(--ton-gut); } .jahresstatistik .delta.schlecht { color: var(--ton-schlecht); } .jahresstatistik .delta.gleich { color: var(--ton-schrift-3); } /* --- Werkzeugleiste ------------------------------------------------------ */ .jahresstatistik .werkzeuge { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; } .jahresstatistik .umschalter { display: inline-flex; border: 1px solid var(--ton-linie-satt); border-radius: .45rem; overflow: hidden; } .jahresstatistik .umschalter button { appearance: none; border: 0; background: none; color: var(--ton-schrift-2); font: inherit; font-size: .82rem; padding: .4rem .9rem; cursor: pointer; transition: background .18s, color .18s; } .jahresstatistik .umschalter button + button { border-left: 1px solid var(--ton-linie-satt); } .jahresstatistik .umschalter button:hover { background: rgba(138, 148, 158, .1); } .jahresstatistik .umschalter button[aria-pressed="true"] { background: rgba(var(--ton-sonne-rgb), .16); color: var(--ton-sonne); } /* Das Jahrfenster: zwei Pfeile und dazwischen, was gerade zu sehen ist. */ .jahresstatistik .jahrwahl { display: inline-flex; align-items: center; gap: .35rem; font-size: .82rem; color: var(--ton-schrift-2); } .jahresstatistik .jahrwahl button { appearance: none; border: 1px solid var(--ton-linie-satt); background: none; color: var(--ton-schrift-2); border-radius: .35rem; width: 1.9rem; height: 1.9rem; line-height: 1; cursor: pointer; transition: background .18s, color .18s, opacity .18s; } .jahresstatistik .jahrwahl button:hover:not(:disabled) { background: rgba(138, 148, 158, .12); color: var(--ton-schrift); } .jahresstatistik .jahrwahl button:disabled { opacity: .3; cursor: default; } .jahresstatistik .jahrwahl .fenster { font-variant-numeric: tabular-nums; min-width: 5.5rem; text-align: center; } .jahresstatistik .kasten { display: inline-flex; align-items: center; gap: .45rem; font-size: .82rem; color: var(--ton-schrift-2); cursor: pointer; user-select: none; } .jahresstatistik .kasten input { accent-color: var(--ton-sonne); width: 1rem; height: 1rem; } /* --- Die Tabelle --------------------------------------------------------- */ .jahresstatistik .tafel-scroll { overflow-x: auto; border: 1px solid var(--ton-linie); border-radius: var(--ton-radius); } .jahresstatistik .tafel { width: 100%; border-collapse: collapse; font-size: .88rem; margin: 0; } .jahresstatistik .tafel thead th { background: var(--ton-flaeche-2); text-align: right; font-weight: 500; font-size: .78rem; padding: .55rem .9rem .5rem; border-bottom: 1px solid var(--ton-linie-satt); white-space: nowrap; } .jahresstatistik .tafel thead th:first-child { text-align: left; } .jahresstatistik .tafel thead th.jetzt { color: var(--ton-sonne); } .jahresstatistik .tafel thead .zeitraum { display: block; font-weight: 400; font-size: .68rem; color: var(--ton-schrift-3); letter-spacing: .03em; } .jahresstatistik .tafel tbody td { padding: .4rem .9rem; border-bottom: 1px solid var(--ton-linie); text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; } .jahresstatistik .tafel tbody td.name { text-align: left; width: 40%; min-width: 14rem; white-space: normal; } .jahresstatistik .tafel tbody tr:last-child td { border-bottom: 0; } @media (hover: hover) { .jahresstatistik .tafel tbody tr:hover td { background: rgba(138, 148, 158, .06); } .jahresstatistik .tafel tbody tr.gruppe:hover td { background: none; } } /* Gruppenkopf: kein Kasten, nur eine Zaesur. */ .jahresstatistik .tafel tr.gruppe td { padding: 1rem .9rem .25rem; border-bottom: 1px solid var(--ton-linie-satt); font-size: .7rem; letter-spacing: .13em; text-transform: uppercase; color: var(--ton-schrift-3); text-align: left; } /* Die Summenzeile traegt das Gewicht, die Teile darunter nicht. */ .jahresstatistik .tafel tr.summe td { font-size: .95rem; } .jahresstatistik .tafel tr.summe td.name { font-weight: 500; } .jahresstatistik .tafel tr.summe .wert-jetzt { color: var(--ton-sonne); } /* Einrueckung: "davon" teilt die Summe auf, "darin" greift etwas heraus, das schon in einer Zeile darueber steckt. */ .jahresstatistik .tafel td.name .stufe-1 { padding-left: 1.4rem; position: relative; display: inline-block; } .jahresstatistik .tafel td.name .stufe-1::before { content: ""; position: absolute; left: .45rem; top: .75em; width: .55rem; border-top: 1px solid var(--ton-linie-satt); } .jahresstatistik .tafel tr.teilmenge td { color: var(--ton-schrift-2); font-size: .82rem; } /* Zweite Stufe. Der Strich sitzt tiefer eingerueckt als der der ersten und zeigt damit, an welcher Zeile die Teilmenge haengt. */ .jahresstatistik .tafel td.name .stufe-2 { padding-left: 2.8rem; position: relative; display: inline-block; } .jahresstatistik .tafel td.name .stufe-2::before { content: ""; position: absolute; left: 1.85rem; top: .75em; width: .55rem; border-top: 1px dashed var(--ton-linie-satt); } .jahresstatistik .tafel .darin { font-size: .68rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ton-schrift-3); margin-right: .4rem; } .jahresstatistik .tafel .einheit-klein { font-size: .7rem; color: var(--ton-schrift-3); margin-left: .4rem; } .jahresstatistik .tafel .wert-alt { color: var(--ton-schrift-2); } .jahresstatistik .tafel .leer { color: var(--ton-schrift-3); text-align: left; } /* Die Gesamtspalte ist eine andere Art Zahl als ein Jahreswert - sie steht deshalb abgesetzt und ruhiger. */ .jahresstatistik .tafel .gesamt { border-left: 1px solid var(--ton-linie-satt); color: var(--ton-schrift-2); } .jahresstatistik .tafel thead th.gesamt { color: var(--ton-schrift-2); } /* Aufklappbare Teilzeilen */ .jahresstatistik .tafel button.klapp { appearance: none; background: none; border: 0; color: inherit; font: inherit; padding: 0; cursor: pointer; display: inline-flex; flex-wrap: wrap; align-items: center; gap: .2rem .4rem; text-align: left; } .jahresstatistik .tafel button.klapp .pfeil { display: inline-block; width: .55rem; color: var(--ton-schrift-3); transition: transform .18s; } .jahresstatistik .tafel button.klapp[aria-expanded="true"] .pfeil { transform: rotate(90deg); } /* Was hinter einer zugeklappten Zeile steckt - sonst waere das Zugeklappte nicht nur zusammengefasst, sondern verschwunden. */ .jahresstatistik .tafel .posten { margin-left: .55rem; padding: .05rem .45rem; border: 1px solid var(--ton-linie-satt); border-radius: 1rem; font-size: .68rem; font-weight: 400; letter-spacing: .03em; color: var(--ton-schrift-3); white-space: nowrap; } @media (hover: hover) { .jahresstatistik .tafel button.klapp:hover .posten { border-color: var(--ton-sonne); color: var(--ton-sonne); } } .jahresstatistik .tafel tr.versteckt { display: none; } /* --- Monatsverlauf ------------------------------------------------------- */ .jahresstatistik .tafel th.verlauf, .jahresstatistik .tafel td.verlauf { width: 7.5rem; } .jahresstatistik .spark { display: block; /* Waagerecht faehrt der Finger die Monate ab, senkrecht scrollt die Seite weiter - ohne diese Angabe verschluckt der Browser das Wischen. */ touch-action: pan-y; } .jahresstatistik .spark rect.balken { fill: var(--ton-linie-satt); transition: fill .15s; } .jahresstatistik .spark rect.balken.jetzt { fill: var(--ton-sonne); } .jahresstatistik .spark rect.balken.aktiv { fill: var(--ton-sonne); } .jahresstatistik .spark line.basis { stroke: var(--ton-linie); stroke-width: 1; } /* Die ganze Zelle nimmt die Beruehrung an, nicht nur die Balken darin - ein SVG-Wurzelelement laesst sich nicht mit Innenabstand vergroessern. */ .jahresstatistik .tafel td.verlauf { touch-action: pan-y; cursor: crosshair; } .spark-tipp { position: fixed; z-index: 1080; pointer-events: none; background: #12161a; border: 1px solid var(--ton-linie-satt); border-radius: .35rem; padding: .3rem .55rem; font-size: .75rem; font-variant-numeric: tabular-nums; box-shadow: 0 .4rem 1.2rem rgba(0, 0, 0, .5); opacity: 0; transition: opacity .12s; } .spark-tipp.an { opacity: 1; } /* --- Fussnoten ----------------------------------------------------------- */ .jahresstatistik .fussnoten { display: grid; gap: .5rem; font-size: .78rem; color: var(--ton-schrift-2); max-width: 68ch; } .jahresstatistik .fussnoten p { margin: 0; } .jahresstatistik .fussnoten b { color: var(--ton-schrift); font-weight: 500; } @media (max-width: 575.98px) { .jahresstatistik .tafel tbody td.name { min-width: 11rem; } .jahresstatistik .werkzeuge { gap: .6rem .9rem; } } @media (prefers-reduced-motion: reduce) { .jahresstatistik .umschalter button, .jahresstatistik .jahrwahl button, .jahresstatistik .spark rect.balken, .jahresstatistik .tafel button.klapp .pfeil, .spark-tipp { transition: none; } } .winddir { position:absolute; left:60%; width:25%; height:40%; padding: 0; background-image: url('../assets/img/arrow.svg'); background-size:contain; background-repeat: no-repeat; background-position: center; } /* Schieberegler in den Modals (Autoladung, Heizstab, Thermostat). Der gefuellte Anteil kommt aus --background-size, gesetzt von bindModalSlider() in js/solar/common.js. */ input[type='range']::-webkit-slider-runnable-track { background: linear-gradient(to right, #00788F, #00788F), #D7D7D7; background-size: var(--background-size, 0%) 100%; background-repeat: no-repeat; } /* Diagramme (Chart.js). Die Hoehe kommt aus diesem Container, nicht aus dem canvas - die Charts laufen mit maintainAspectRatio: false. Auf dem Handy ist der Container nur rund 300 px breit; mit 400 px Hoehe wird aus einer Zeitreihe ein Hochformat, in dem die Zeitachse die kurze Seite ist. */ .chart-container { position: relative; width: 100%; height: 400px; } @media (max-width: 767.98px) { .chart-container { height: 250px; } } /* Auf dem Handy gehen von 375 px rund 75 an Innenabstaende verloren, und zwischen den Karten stehen 24 px. Beides wird hier enger gefasst - nur im Inhaltsbereich, damit Seitenleiste, Kopfzeile und Modals unberuehrt bleiben. Die Abstandsklassen von Bootstrap (mb-4) tragen !important, deshalb steht es auch hier. */ @media (max-width: 767.98px) { .app-content { padding: 0 .25rem; } .app-content-header { padding: .5rem .25rem; } .app-content .row { --bs-gutter-x: .5rem; } .app-content .card { margin-bottom: .75rem !important; } /* Nur der Standardwert wird kleiner; eigene Angaben im Markup (p-0 fuer das Realtime-SVG) gelten weiter. */ .app-content .card-body { padding: .5rem; } /* Die Jahrestabelle scrollt auf dem Handy seitwaerts; damit moeglichst viel davon ohne Schieben zu sehen ist, ruecken die Spalten enger zusammen. */ .jahresstatistik .tafel tbody td, .jahresstatistik .tafel thead th { padding-inline: .55rem; } } /* -------------------------------------------------------------------------- Drei Klassen, die der Automatik-Editor gebraucht hat - hier, nicht dort Sie stehen absichtlich in der gemeinsamen Datei und nicht als Sonderfall im Editor. Zwei davon sind allgemein genug, um anderswo zu taugen; die dritte ist eine echte Ausnahme und als einzelne Klasse auch als solche erkennbar. -------------------------------------------------------------------------- */ /* Ein Auswahlfeld, das wie Text aussieht, bis man es anfaehrt. Eine Bedingung hat sechs Bestandteile, aber nur zwei davon traegt man wirklich ein: Vergleich und Wert. Standen alle sechs als gleich schwere Kaesten nebeneinander, sagte nichts mehr, worauf es ankommt. Die gepunktete Linie sagt "anklickbar", ohne den Platz und das Gewicht eines Eingabefelds zu nehmen. Bewusst allgemein: dieselbe Not haben das Raum-Modal und die Kachel-Einstellungen, wo ebenfalls jede Kleinigkeit in einem Kasten steht. Taugt fuer