/* Operian OS — Sperrbildschirm: die Konten-Reihe ist ZENTRIERT und wischbar.
 *
 * EINE Zusage, drei Bildschirmklassen: die Konten stehen immer in der Mitte — und
 * sobald mehr da sind, als nebeneinander passen, lässt sich die Reihe schieben,
 * auf dem Telefon, auf dem iPad UND am Schreibtisch. Vorher stand sie an drei
 * Stellen getrennt und in jeder etwas anderes; genau daraus kamen beide Befunde.
 *
 * ═══ WAS GEMESSEN WAR (Chromium, echter Bundle-Sperrbildschirm) ═══
 *
 * Mit EINEM Konto — dem Normalfall eines kleinen Betriebs — klebte die Kachel links:
 *
 *   Telefon 390 px   Inhaltsmitte 91 px gegen Viewportmitte 195 px   → 104 px daneben
 *   Telefon 360 px   91 gegen 180                                    →  89 px daneben
 *   iPad    810 px   71 gegen 405                                    → 334 px daneben
 *   iPad   1180 px   71 gegen 590                                    → 519 px daneben
 *
 * Der Auslöser ist in beiden Fällen derselbe und er ist eine Folge des Wischens:
 * wer eine Reihe wischbar macht, zwingt sie auf `width:100%` (sonst wächst der
 * Eltern-Wrapper shrink-to-fit einfach mit und `overflow-x` greift ins Leere) —
 * und eine volle Reihe ohne `justify-content` beginnt links. Die Zentrierung, die
 * der Bundle über `items-center` am Wrapper hatte, war damit weg, ohne dass es
 * jemand geschrieben hätte. Am Schreibtisch (>1366 px bzw. Maus) galt keine der
 * beiden Regeln: dort war die Reihe zwar zentriert, aber NICHT wischbar — bei
 * 14 Konten auf 1512 px begann sie bei −348 px, und weil `#root` `overflow:hidden`
 * trägt, rollt auch das Dokument nicht: die ersten Konten waren schlicht
 * unerreichbar. Ein Konto, das man nicht antippen kann, ist ein Mensch, der sich
 * nicht anmelden kann.
 *
 * ═══ DER MECHANISMUS: `safe center`, und warum nicht `center` ═══
 *
 * `justify-content: center` auf einem Scroll-Container ist die klassische Falle:
 * passt der Inhalt nicht, wächst er in BEIDE Richtungen über die Kante, und der
 * Überhang links liegt vor dem Scroll-Anfang — unerreichbar, in genau dem Fall,
 * für den man das Scrollen gebaut hat. `safe center` zentriert, solange es passt,
 * und fällt bei Überlauf auf `start` zurück. Genau die zwei Sätze der Vorgabe.
 *
 * Die Zeile davor (`flex-start`) ist kein Rest, sondern der Rückfall: eine Engine
 * ohne das `safe`-Schlüsselwort verwirft die zweite Deklaration und behält die
 * erste — also den Zustand von vorher, links, aber vollständig erreichbar. Nie
 * `center` als Rückfall schreiben; das wäre die Falle von oben als Vorgabe.
 *
 * ═══ ANKER (Quell-Audit gegen den eingefrorenen Bundle) ═══
 *
 *   .desktop-bg.justify-center   Lock-Root. `.desktop-bg` trägt AUCH der OS-Desktop
 *       nach dem Login — dort als `desktop-bg relative overflow-hidden cursor-default
 *       ${E}`, wobei `E` nur `wallpaper-<id>` oder leer ist. `justify-center` steht
 *       allein am Sperrbildschirm → nie bare `.desktop-bg`.
 *   .flex.gap-8                  Konten-Liste; „gap-8" kommt im GESAMTEN Bundle genau
 *       einmal vor (Dots = gap-4, Keypad = gap-3). Direkte Kinder = Konto-<button>s.
 *   > div                        der Framer-Motion-Wrapper (`flex flex-col items-center`),
 *       der Kopfzeile und Reihe trägt. Er MUSS mit auf die verfügbare Breite: sonst
 *       ist er selbst schon so breit wie sein Inhalt, und `width:100%` an der Reihe
 *       beschreibt dann genau diese Inhaltsbreite statt des Schirms.
 *
 * ═══ LADEREIHENFOLGE (tragend) ═══
 *
 * Diese Datei steht VOR mobile-shell.css und tablet-shell.css im <head>. Beide
 * Selektoren sind gleich spezifisch — es entscheidet allein die Reihenfolge, und
 * die klassen-eigenen Schichten müssen gewinnen dürfen: das niedrige Querformat
 * stellt die Konten bewusst UNTEREINANDER (mobile-shell.css M2) und nimmt dafür
 * `overflow` und `flex-direction` hier wieder zurück. Umgekehrt eingehängt bliebe
 * eine Spalte in einem waagerechten Scroller stehen.
 *
 * Gepinnt durch mockups/tests/lock-konten-zentriert.test.js.
 */

/* Der Wrapper auf die verfügbare Breite — erst dann beschreibt `width:100%` an der
   Reihe wirklich den Schirm (siehe Anker oben). */
.desktop-bg.justify-center > div {
  width: 100%;
}

.desktop-bg.justify-center .flex.gap-8 {
  flex-wrap: nowrap;
  width: 100%;
  max-width: 100%;
  justify-content: flex-start;  /* Rückfall ohne `safe`: links, aber erreichbar */
  justify-content: safe center; /* zentriert, solange es passt — sonst ab Anfang */
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
}

/* Die Kacheln behalten ihre Eigenbreite — ohne das schrumpfen sie in der vollen
   Reihe zusammen, statt über die Kante zu laufen, und es gäbe nichts zu wischen. */
.desktop-bg.justify-center .flex.gap-8 > button {
  flex: 0 0 auto;
}

/* Touch (Telefon, iPad): gewischt wird mit dem Finger, ein Balken wäre nur Fläche. */
@media (pointer: coarse) {
  .desktop-bg.justify-center .flex.gap-8 {
    scrollbar-width: none;
  }
  .desktop-bg.justify-center .flex.gap-8::-webkit-scrollbar {
    display: none;
  }
}

/* Maus: der Balken bleibt SICHTBAR — hier wird nichts versteckt. Am Schreibtisch
   gibt es keine Wischgeste, und gemessen (Chromium, 1512px, 14 Konten) bewegt ein
   senkrechtes Mausrad die Reihe NICHT: es scrollen nur Shift+Rad (400px), ein
   waagerechtes Rad bzw. Trackpad (bis ans Ende) und der Tabulator, der das nächste
   Konto von selbst heranholt (letztes Konto sichtbar bei scrollLeft 729). Ohne
   sichtbaren Balken wäre „rechts steht noch jemand" damit eine Auskunft, die niemand
   bekommt — deshalb gilt das Ausblenden oben ausdrücklich nur für `pointer: coarse`.

   Gestaltet wird er nur, nicht erzwungen: welche Sorte Balken ein Browser malt
   (platzhaltend oder Overlay) entscheidet er selbst, und diese Regeln nehmen ihm
   nichts weg. `scrollbar-width`/`scrollbar-color` stehen bewusst NICHT hier — in
   Chromium schalten sie die `::-webkit-scrollbar`-Regeln ab, und `thin` wäre auf
   einer Fläche, die ohnehin nur bei echtem Überlauf einen Balken zeigt, die falsche
   Sparsamkeit. Gezeigt wird er nur dann: `overflow-x: auto`, nie `scroll`. */
@media (pointer: fine) {
  .desktop-bg.justify-center .flex.gap-8::-webkit-scrollbar {
    height: 8px;
  }
  .desktop-bg.justify-center .flex.gap-8::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, .28);
    border-radius: 999px;
  }
  .desktop-bg.justify-center .flex.gap-8::-webkit-scrollbar-track {
    background: transparent;
  }
}
