/* ==========================================================================
   Freifunk Dresden — Weboberflaeche der Router-Firmware

   Keine Web-Schriften, keine externen Dateien, kein Build-Schritt: Der Router
   kann nichts nachladen, und was hier steht, wird unveraendert ausgeliefert.

   Zwei Schalter am <body> steuern die ganze Oberflaeche:
     data-rolle  = gast | betreiber   -- angemeldet oder nicht
     data-modus  = standard | experte -- Anzeigetiefe

   Sie hat das alte ff.css abgeloest; jenes ist mit der letzten CGI-Seite
   entfallen.
   ========================================================================== */

/* ==========================================================================
   Freifunk Dresden — Entwurf Router-Oberfläche
   Keine Web-Schriften, keine externen Dateien: der Router kann nichts nachladen.
   ========================================================================== */

/* Das hidden-Attribut muss gewinnen.
 *
 * Der Browser setzt dafür nur [hidden]{display:none} in seinem eigenen
 * Stylesheet -- und JEDE Klassenregel mit display schlägt das, weil sie
 * spezifischer ist. Ohne diese Zeile bleibt ein .marker oder eine .meldung
 * sichtbar, obwohl das Skript sie ausgeblendet hat: Auf der Statusseite
 * standen "verbunden" und "kein Gateway" nebeneinander.
 *
 * Aufgefallen erst auf dem Gerät. In jsdom gibt es kein Layout -- die Tests
 * prüfen el.hidden, und das war die ganze Zeit richtig gesetzt. */
[hidden]{display:none!important}

:root{
  --gelb:#ffcb05;
  --tanne:#2f3d38;
  --tanne-hell:#4b5f56;
  --magenta:#dc0067;
  --magenta-dunkel:#b60055;
  --flaeche:#f4f4f1;
  --karte:#ffffff;
  --linie:#dcdcd6;
  --text:#23302c;
  --text-leise:#66716d;
  --ok:#2e7d4f;
  --warn:#b26b00;
  --gefahr:#c62828;
  --mono:ui-monospace,"DejaVu Sans Mono","Liberation Mono",Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --r:6px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--flaeche);color:var(--text);
  font:15px/1.55 var(--sans);
}
a{color:var(--magenta)}
h1,h2,h3{margin:0;font-weight:700;line-height:1.25}
h1{font-size:22px;letter-spacing:-.01em}
h2{font-size:16px}
h3{font-size:14px}
code,.mono,.wert{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* --- Etikett: gesperrte Versalien, das Ordnungsmittel der ganzen Oberfläche --- */
.etikett{
  font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--text-leise);
}

/* ==================== Kopfleiste ==================== */
.kopf{
  position:sticky;top:0;z-index:40;
  background:var(--tanne);color:#fff;
  display:flex;align-items:center;gap:12px;
  padding:0 14px;height:52px;
}
.marke{display:flex;align-items:center;gap:9px;font-weight:700;font-size:15px;white-space:nowrap}
.marke-punkt{width:15px;height:15px;border-radius:50%;background:var(--gelb);flex:none}
.marke small{font-weight:400;opacity:.72;font-size:12px}
.kopf-schub{margin-left:auto}
.menu-knopf{
  display:none;background:transparent;border:1px solid rgba(255,255,255,.34);
  color:#fff;border-radius:var(--r);padding:7px 11px;font:inherit;font-size:13px;cursor:pointer;
}
/* Modusschalter */
.modus{display:flex;background:rgba(0,0,0,.26);border-radius:99px;padding:3px;gap:2px}
.modus button{
  border:0;background:transparent;color:rgba(255,255,255,.74);
  font:inherit;font-size:12.5px;font-weight:600;padding:5px 13px;border-radius:99px;cursor:pointer;
}
.modus button[aria-pressed=true]{background:var(--gelb);color:var(--tanne)}
.modus button:focus-visible{outline:2px solid var(--gelb);outline-offset:2px}

/* ==================== Gerüst ==================== */
.geruest{display:flex;align-items:flex-start;max-width:1400px;margin:0 auto}
.nav{
  flex:none;width:232px;padding:18px 0 40px;
  position:sticky;top:52px;max-height:calc(100vh - 52px);overflow-y:auto;
}
.nav-gruppe{margin:0 0 4px;padding-bottom:8px;border-bottom:1px solid var(--linie)}
.nav-gruppe:last-child{border-bottom:0}
/* Gruppenkopf als eigener Streifen: die Gliederung soll man sehen, bevor man liest. */
.nav-gruppe > .etikett{
  display:block;padding:9px 18px 8px;margin-bottom:4px;
  background:#eeeeea;color:var(--tanne);border-bottom:1px solid var(--linie);
}
/* Der Gruppenkopf der Verwaltung ist ein Schalter: 33 Eintraege in sechs
   Gruppen sind zugeklappt schneller zu ueberblicken als offen. Er sieht aus
   wie das Etikett daneben -- nur der Pfeil verraet, dass er etwas tut. */
.nav-gruppe > button.etikett{
  width:100%;font:inherit;font-weight:inherit;cursor:pointer;text-align:left;
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  border:0;border-bottom:1px solid var(--linie);
}
.nav-gruppe > button.etikett:hover{background:#e6e6e1}
.nav-gruppe > button.etikett:focus-visible{outline:2px solid var(--gelb);outline-offset:-2px}
.nav-gruppe > button.etikett::after{
  content:"";flex:none;width:7px;height:7px;margin-right:2px;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(45deg) translate(-2px,-2px);transition:transform .15s;
}
.nav-gruppe > button.etikett[aria-expanded=false]::after{
  transform:rotate(-45deg) translate(-1px,1px);
}
.nav a{
  display:block;padding:7px 18px;color:var(--text);text-decoration:none;
  font-size:14px;border-left:3px solid transparent;
}
.nav a:hover{background:rgba(0,0,0,.045)}
.nav a[aria-current=page]{
  border-left-color:var(--gelb);background:var(--karte);font-weight:700;
}
.nav a .zahl{float:right;color:var(--text-leise);font-family:var(--mono);font-size:12px;font-weight:400}
.inhalt{flex:1;min-width:0;padding:18px 18px 64px;max-width:980px}

/* ==================== Seitenkopf ==================== */
.brotkrumen{font-size:12.5px;color:var(--text-leise);margin:0 0 6px}
.seiten-kopf{margin:0 0 16px}
.seiten-kopf p{margin:5px 0 0;color:var(--text-leise);font-size:14px;max-width:70ch}

/* ==================== Typenschild ==================== */
.typenschild{
  background:var(--karte);border:1px solid var(--linie);border-radius:var(--r);
  padding:14px 16px;margin-bottom:18px;
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
}
.ts-nummer{display:flex;align-items:center;gap:12px}
.ts-punkt{
  width:11px;height:11px;border-radius:50%;background:var(--ok);flex:none;
  box-shadow:0 0 0 4px rgba(46,125,79,.16);
}
.ts-punkt.aus{background:var(--gefahr);box-shadow:0 0 0 4px rgba(198,40,40,.16)}
.ts-zahl{
  font-family:var(--mono);font-size:30px;font-weight:700;line-height:1;
  letter-spacing:.02em;font-variant-numeric:tabular-nums;
  border-bottom:3px solid var(--gelb);padding-bottom:3px;
}
.ts-daten{font-size:13px;color:var(--text-leise);line-height:1.5}
.ts-daten b{color:var(--text);font-weight:600}
.ts-rechts{margin-left:auto;text-align:right;font-size:13px;color:var(--text-leise)}

/* ==================== Karten ==================== */
.karte{
  background:var(--karte);border:1px solid var(--linie);border-radius:var(--r);
  margin:0 0 16px;overflow:hidden;
}
.karte-kopf{
  padding:11px 16px;border-bottom:1px solid var(--linie);
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.karte-kopf h2{flex:1;min-width:0}
.karte-leib{padding:14px 16px}
.karte-fuss{padding:12px 16px;border-top:1px solid var(--linie);background:#fafaf8;
  display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.hinweis{font-size:13px;color:var(--text-leise);margin:4px 0 0}

/* Die Aktionsleiste eines Formulars, das MEHRERE Karten umspannt.
 *
 * Als Fuss der letzten Karte sah "Uebernehmen" aus, als gaelte es nur fuer
 * diese eine -- auf der Automatik-Seite etwa fuer den naechtlichen
 * Neustart, nicht auch fuer Wartungszeit und Update. Freistehend unter den
 * Karten ist der Bezug richtig: alles darueber. */
.formular-fuss{
  display:flex;gap:10px;align-items:center;flex-wrap:wrap;
  margin:0 0 18px;padding:0 2px;
}

/* ==================== Verbindungskette (Signatur der Übersicht) ============ */
.kette{display:flex;align-items:stretch;gap:0;flex-wrap:wrap;padding:4px 0}
.kette-glied{
  flex:1 1 130px;min-width:120px;text-align:center;padding:12px 8px;position:relative;
}
.kette-glied .etikett{display:block;margin-bottom:6px}
.kette-glied .kg-wert{font-family:var(--mono);font-size:15px;font-weight:700;word-break:break-all}
.kette-glied .kg-sub{font-size:12px;color:var(--text-leise);margin-top:3px}
.kette-glied::after{
  content:"";position:absolute;right:-9px;top:50%;width:18px;height:3px;border-radius:2px;
  background:var(--ok);z-index:1;
}
.kette-glied:last-child::after{display:none}
.kette-glied.gebrochen::after{background:var(--gefahr)}
.kg-punkt{
  width:34px;height:34px;border-radius:50%;margin:0 auto 8px;
  border:3px solid var(--ok);display:flex;align-items:center;justify-content:center;
  font-size:15px;color:var(--ok);background:var(--karte);position:relative;z-index:2;
}
.kg-punkt.warn{border-color:var(--warn);color:var(--warn)}
.kg-punkt.aus{border-color:var(--gefahr);color:var(--gefahr)}

/* ==================== Aufgabenliste ==================== */
.aufgaben{list-style:none;margin:0;padding:0}
.aufgaben li{
  display:flex;gap:11px;align-items:flex-start;padding:9px 0;border-top:1px solid var(--linie);
}
.aufgaben li:first-child{border-top:0}
.hak{
  flex:none;width:19px;height:19px;border-radius:50%;font-size:11px;font-weight:700;
  display:flex;align-items:center;justify-content:center;color:#fff;margin-top:2px;
}
.hak.ok{background:var(--ok)}
.hak.offen{background:var(--warn)}
.aufgaben .a-text{flex:1;min-width:0;font-size:14px}
.aufgaben .a-text small{display:block;color:var(--text-leise);font-size:12.5px}

/* ==================== Wertetabelle ==================== */
.werte{width:100%;border-collapse:collapse;font-size:14px}
.werte th{
  text-align:left;font-weight:600;color:var(--text-leise);padding:6px 12px 6px 0;
  white-space:nowrap;vertical-align:top;width:1%;
}
.werte td{padding:6px 0;font-family:var(--mono);font-size:13.5px;word-break:break-word}
.werte tr + tr th,.werte tr + tr td{border-top:1px solid var(--linie)}

/* ==================== Formular ==================== */
.feld{margin:0 0 16px;max-width:520px}
.feld > label{display:block;font-size:13.5px;font-weight:600;margin-bottom:4px}
.feld .erklaerung{font-size:12.5px;color:var(--text-leise);margin:0 0 6px}
input[type=text],input[type=password],input[type=number],select,textarea{
  width:100%;font:inherit;font-size:16px;padding:9px 11px;
  border:1px solid #bfc4c1;border-radius:var(--r);background:#fff;color:var(--text);
}
input.wert,select.wert,textarea.wert{font-family:var(--mono);font-size:15px}
input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{
  outline:3px solid var(--gelb);outline-offset:1px;border-color:var(--tanne);
}
input[disabled],select[disabled]{background:#ececeb;color:var(--text-leise)}
.feld-reihe{display:flex;gap:12px;flex-wrap:wrap;align-items:stretch}
.feld-reihe .feld{
  flex:1 1 150px;margin-bottom:0;
  /* Spalte, damit die Eingabe unten buendig sitzt: Die Erklaerungen ueber
     den Feldern sind unterschiedlich lang, und ohne das stuenden die
     Eingabefelder einer Reihe auf verschiedenen Hoehen -- sichtbar bei
     Netzwerk-ID und Router-Gruppe. */
  display:flex;flex-direction:column;
}
.feld-reihe .feld > :last-child{margin-top:auto}
.schalter{display:flex;gap:10px;align-items:flex-start;padding:9px 0;max-width:620px}
.schalter input{margin-top:3px;width:18px;height:18px;flex:none;accent-color:var(--magenta)}
.schalter .s-text{font-size:14px}
.schalter .s-text small{display:block;color:var(--text-leise);font-size:12.5px;margin-top:1px}
fieldset{border:0;margin:0;padding:0}
legend{padding:0}

/* Knöpfe */
.knopf{
  font:inherit;font-size:14px;font-weight:600;padding:9px 17px;border-radius:var(--r);
  border:1px solid var(--linie);background:#fff;color:var(--text);cursor:pointer;
  /* inline-flex, damit ein <a class="knopf"> genauso hoch wird wie ein
     <button class="knopf">: Ein Knopf ist von sich aus inline-block, ein
     Link nur inline -- dort wirkt das senkrechte Padding nicht auf die
     Zeilenhoehe. Und es richtet ein Symbol neben dem Text aus. */
  display:inline-flex;align-items:center;gap:7px;text-decoration:none;
  vertical-align:middle;
}
/* Symbole in Knoepfen: immer gleich gross, nie gestaucht, in der Farbe
   des Textes (fill/stroke = currentColor im SVG). */
.knopf svg{width:15px;height:15px;flex:none}
.knopf:hover{background:#f2f2ef}
.knopf.wichtig{background:var(--magenta);border-color:var(--magenta);color:#fff}
.knopf.wichtig:hover{background:var(--magenta-dunkel)}
/* Auch der schlichte Knopf muss gesperrt ANDERS aussehen -- vorher tat das nur
   "wichtig"/"gefahr", und ein gesperrter "Backbone neu starten" wirkte
   anklickbar. Die beiden farbigen Regeln darunter gehen vor (spezifischer). */
.knopf[disabled]{opacity:.55;cursor:not-allowed}
.knopf.wichtig[disabled],
.knopf.gefahr[disabled]{background:#c9ccca;border-color:#c9ccca;cursor:not-allowed;opacity:1}
.knopf.gefahr{background:var(--gefahr);border-color:var(--gefahr);color:#fff}
.knopf.klein{padding:5px 11px;font-size:13px;font-weight:500}

/* Rückmeldungen */
.meldung{
  display:block;padding:11px 14px;border-radius:var(--r);font-size:14px;
  margin:0 0 16px;border:1px solid;
}
.meldung.gut{background:#eaf5ee;border-color:#bcdcc8;color:#1d5e39}
.meldung.warn{background:#fdf4e3;border-color:#eed8ab;color:#7a4a00}
.meldung.gefahr{background:#fdecec;border-color:#f0c1c1;color:#8f1d1d}
.meldung b{font-weight:700}
/* Warteanzeige (verwaltung.js, warteAnzeige): zeigt die Zeit, nicht einen
   Fortschritt. Farbe aus der Meldung, damit sie zu gut/warn passt. */
.meldung progress{display:block;width:100%;height:6px;margin-top:8px;accent-color:currentColor}
/* Gelöschte Verbindung, die bis zum Neustart noch besteht (backbone.js). */
tr.geloescht td{color:var(--text-leise)}
tr.geloescht td.fest{text-decoration:line-through}
.feld-fehler{border-color:var(--gefahr)!important}
.fehlertext{color:var(--gefahr);font-size:12.5px;margin:5px 0 0;font-weight:600}

/* Marken */
.marker{
  display:inline-block;font-size:11px;font-weight:700;padding:2px 7px;border-radius:99px;
  letter-spacing:.03em;white-space:nowrap;
}
.marker.ok{background:#e4f2ea;color:var(--ok)}
.marker.warn{background:#fbf0da;color:var(--warn)}
.marker.aus{background:#f7e3e3;color:var(--gefahr)}
.marker.neutral{background:#ececeb;color:var(--text-leise)}
.marker.experte{background:var(--tanne);color:var(--gelb)}
.sofort{color:var(--tanne-hell);font-weight:700}

/* ==================== Datentabelle ==================== */
.tab-werkzeug{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:0}
.tab-werkzeug input[type=text]{width:auto;flex:0 1 200px;font-size:15px;padding:7px 10px}
.tab-huelle{overflow-x:auto;-webkit-overflow-scrolling:touch}
.daten{width:100%;border-collapse:collapse;font-size:13.5px;min-width:560px}
.daten th{
  text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-leise);padding:8px 9px;border-bottom:2px solid var(--linie);white-space:nowrap;
  background:var(--karte);position:sticky;top:0;
}
.daten td{padding:8px 9px;border-bottom:1px solid var(--linie);font-family:var(--mono);white-space:nowrap}
.daten td.text{font-family:var(--sans);white-space:normal}
.daten tbody tr:hover{background:#fafaf7}
.daten .fest{position:sticky;left:0;background:var(--karte);z-index:2;border-right:1px solid var(--linie)}
/* Die Zeile, die gerade benutzt wird -- z. B. das gewaehlte Gateway. */
.daten tbody tr.genutzt{background:#fffbe8}
.daten tbody tr.genutzt .fest{background:#fffbe8}
.daten tbody tr:hover .fest{background:#fafaf7}
.balken{display:inline-flex;gap:2px;vertical-align:middle;margin-right:6px}
.balken i{width:5px;height:12px;border-radius:1px;background:#dcdcd6;display:block}
.balken.q1 i:nth-child(-n+4){background:var(--ok)}
.balken.q2 i:nth-child(-n+3){background:var(--gelb)}
.balken.q3 i:nth-child(-n+2){background:#ff6600}
.balken.q4 i:nth-child(-n+1){background:var(--gefahr)}

/* ==================== Favoriten ==================== */
.stern{
  background:transparent;border:0;padding:0;cursor:pointer;font-size:17px;line-height:1;
  color:#c9ccca;
}
.stern[aria-pressed=true]{color:var(--gelb)}
.stern:focus-visible{outline:3px solid var(--gelb);outline-offset:2px;border-radius:3px}
.daten th.stern-spalte,.daten td.stern-spalte{width:1%;text-align:center;padding-right:0}

/* ==================== Rollen-Steuerung ==================== */
/* gast = nicht angemeldet (öffentliche Seiten), betreiber = angemeldet (Verwaltung) */
body[data-rolle=gast] .nur-betreiber{display:none!important}
body[data-rolle=betreiber] .nur-gast{display:none!important}

/* Kopf-Schaltflächen rechts */
.kopf-knopf{
  font:inherit;font-size:13px;font-weight:600;padding:7px 13px;border-radius:var(--r);
  border:1px solid transparent;cursor:pointer;white-space:nowrap;text-decoration:none;
}
.kopf-knopf.anmelden{background:var(--magenta);border-color:var(--magenta);color:#fff}
.kopf-knopf.anmelden:hover{background:var(--magenta-dunkel)}
.kopf-knopf.zurueck{background:transparent;border-color:rgba(255,255,255,.34);color:#fff}
.kopf-knopf.zurueck:hover{background:rgba(255,255,255,.12)}

/* ==================== Modus-Steuerung ==================== */
body[data-modus=standard] .nur-experte{display:none!important}

/* --- Zusätze kenntlich machen: ein schmaler Balken am linken Rand.
   Nicht in Gelb — das bedeutet hier schon Fokus, aktive Seite und Marke. --- */
body[data-modus=experte] .karte.nur-experte{border-left:3px solid var(--tanne-hell)}
body[data-modus=experte] .feld.nur-experte,
body[data-modus=experte] .feld-reihe.nur-experte,
body[data-modus=experte] .schalter.nur-experte,
body[data-modus=experte] .karte-leib > div.nur-experte,
body[data-modus=experte] pre.nur-experte{
  border-left:3px solid var(--tanne-hell);padding-left:12px;
}
/* Tabellen: nur die Spaltenüberschrift wird markiert. Die Zellen darunter
   bleiben ruhig — sonst ist die halbe Tabelle gestreift. */
body[data-modus=experte] .daten th.nur-experte{border-bottom-color:var(--tanne-hell)}
body[data-modus=experte] .werte tr.nur-experte th{
  border-left:3px solid var(--tanne-hell);padding-left:9px;
}
/* Menü: welche Seiten es nur im Expertenmodus gibt */
.nav a .exp{
  float:right;width:7px;height:7px;margin:6px 0 0 8px;border-radius:50%;
  background:var(--text);overflow:hidden;text-indent:100px;white-space:nowrap;
}

/* ==================== Aufklappbarer Abschnitt ==================== */
.klapp summary{
  cursor:pointer;padding:11px 16px;font-weight:700;font-size:15px;
  display:flex;align-items:center;gap:9px;list-style:none;
}
.klapp summary::-webkit-details-marker{display:none}
.klapp summary::before{content:"▸";color:var(--text-leise);font-size:12px}
.klapp[open] summary::before{content:"▾"}
.klapp summary:focus-visible{outline:3px solid var(--gelb);outline-offset:-3px}
.klapp[open] summary{border-bottom:1px solid var(--linie)}
.klapp .klapp-leib{padding:14px 16px}

/* ==================== Ausgabe von Werkzeugen ==================== */
.ausgabe{
  background:var(--tanne);color:#e9e9e4;font-family:var(--mono);font-size:12.5px;line-height:1.5;
  padding:12px 14px;border-radius:var(--r);margin:0;overflow-x:auto;white-space:pre;
}
.ausgabe b{color:var(--gelb);font-weight:700}

/* ==================== Fließtext (öffentliche Seiten) ==================== */
.fliess{margin:0 0 10px;font-size:14.5px;max-width:70ch}
.fliess:last-child{margin-bottom:0}
.liste{margin:0;padding-left:19px;font-size:14px;max-width:70ch}
.liste li{margin:0 0 7px}
.liste li:last-child{margin-bottom:0}
.liste b{font-weight:700}

/* ==================== Schmal ==================== */
@media (max-width:860px){
  .menu-knopf{display:block}
  .nav{
    display:none;position:fixed;inset:52px 0 0;width:auto;max-height:none;
    background:var(--karte);z-index:35;padding:14px 0 40px;overflow-y:auto;
    border-top:1px solid var(--linie);
  }
  body.nav-offen .nav{display:block}
  body.nav-offen{overflow:hidden}
  .nav a{padding:11px 18px;font-size:15px}
  /* Fingerbreite Schaltflaeche -- hier wird am meisten geklappt. */
  .nav-gruppe > button.etikett{padding:13px 18px;font-size:14px}
  .nav-gruppe > button.etikett::after{width:9px;height:9px}
  .inhalt{padding:14px 12px 56px}
  .geruest{display:block}
  .ts-zahl{font-size:26px}
  .ts-rechts{margin-left:0;width:100%;text-align:left}
  .kette-glied::after{display:none}
  .kette-glied{
    flex:1 1 100%;display:grid;grid-template-columns:34px 1fr;column-gap:13px;
    grid-template-areas:"p e" "p w" "p s";align-items:center;text-align:left;
    padding:11px 0;border-top:1px solid var(--linie);
  }
  .kette-glied:first-child{border-top:0}
  .kg-punkt{grid-area:p;margin:0}
  .kette-glied .etikett{grid-area:e;margin-bottom:1px}
  .kette-glied .kg-wert{grid-area:w;word-break:normal}
  .kette-glied .kg-sub{grid-area:s;margin-top:1px}
  h1{font-size:19px}
  .karte-kopf{padding:11px 13px}
  .karte-leib{padding:13px}
  .karte-fuss{padding:11px 13px}
}
@media (max-width:560px){
  .kopf{gap:8px;padding:0 10px}
  .marke small{display:none}
  .menu-knopf{padding:7px 9px}
  .menu-knopf .mk-text{display:none}
  .marke{flex:none}
  body[data-rolle=betreiber] .marke-name{display:none}
  .kk-lang{display:none}
  .modus button{padding:5px 9px;font-size:11.5px}
  .kopf-knopf{padding:7px 10px;font-size:12px}
  /* Wertetabellen stapeln statt zu quetschen */
  .werte th,.werte td{display:block;width:auto;white-space:normal;padding:0}
  .werte th{padding-top:9px}
  .werte td{padding-bottom:9px}
  .werte tr + tr td{border-top:0}
  .feld,.schalter{max-width:none}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
