UX: Offline-Score direkt im FAB statt separater Pfote, SW by-v1083

User-Feedback: separater Indikator zu viel — die Pfote IM FAB selbst
soll je nach Score grün eingefärbt werden.

- Separater #offline-indicator Button entfernt (HTML + CSS)
- Welten-FAB-Icon: <use phosphor.svg#paw-print> ersetzt durch
  Inline-SVG mit 5 einzelnen paw-elem-Pfaden (1 Ballen + 4 Zehen)
- CSS: Default weiß (wie bisher), .filled wird leuchtendes Grün
  (#16a34a) — überzeichnet auf orangem FAB klar erkennbar
- offline-indicator.js: zeigt jetzt nur noch die FAB-Pfade ein/aus,
  kein eigenes Element mehr; Klick-Status-Modal als window.OfflineIndicator.openStatus() weiter verfügbar (kann
  später bei Bedarf an Long-Press oder Menüpunkt gehängt werden)
This commit is contained in:
rene 2026-05-26 14:57:19 +02:00
parent 53c80b9bf6
commit b9fe5b5bc3
6 changed files with 61 additions and 152 deletions

View file

@ -8867,44 +8867,17 @@ svg.empty-state-icon {
}
/* ============================================================
Offline-Bereitschafts-Indikator schwebend über dem Welten-FAB
Sichtbar NUR wenn Welten aktiv sind (Sibling-Selektor)
5 Pfade Score 0 (grau) bis 5 (grün, gefüllt)
Offline-Bereitschafts-Anzeige IM Welten-FAB
Die 5 Pfoten-Pfade werden je nach Score grün gefärbt
(Default = weiß auf orange, filled = grün auf orange)
============================================================ */
#offline-indicator {
display: flex; /* Default: sichtbar — JS blendet auf Detail-Seiten aus */
position: fixed;
right: 20px; /* gleicher right wie #worlds-fab */
bottom: calc(env(safe-area-inset-bottom, 16px) + 16px + 54px + 12px); /* FAB-Bottom + FAB-Höhe + 12px */
width: 40px;
height: 40px;
border-radius: 50%;
background: rgba(255,255,255,0.95);
border: 2px solid var(--c-border);
box-shadow: 0 2px 10px rgba(0,0,0,0.18);
align-items: center;
justify-content: center;
padding: 0;
cursor: pointer;
z-index: 61; /* knapp über dem FAB (60), unter Modals */
transition: transform 0.12s, opacity 0.2s;
#worlds-fab .offline-paw .paw-elem {
color: #fff;
transition: stroke 0.4s ease, fill 0.4s ease;
}
#offline-indicator.is-hidden { display: none; } /* JS-gesteuert: in Detail-Seiten */
[data-theme="dark"] #offline-indicator {
background: rgba(31,41,55,0.85);
border-color: rgba(255,255,255,0.08);
}
#offline-indicator:active { transform: scale(0.92); }
#offline-indicator .offline-paw { width: 24px; height: 24px; }
.offline-paw .paw-elem {
color: var(--c-text-muted);
transition: stroke 0.5s ease, fill 0.5s ease;
}
.offline-paw .paw-elem.filled {
color: var(--c-success);
fill: var(--c-success);
#worlds-fab .offline-paw .paw-elem.filled {
color: #16a34a; /* leuchtendes Grün, klar sichtbar auf orange */
fill: #16a34a;
}
.offline-status-row {