Grotti 3.0.0: Aufträge, Wartung, SSE, Ausschuss-Dialog, UI-Umbau.

Migrationen 003–009, Kundaufträge mit Lieferschein, Abräumen mit Urteil,
ntfy/Backup/Zeitfenster, Live-Stream und Mobile-Mehr-Menü.
This commit is contained in:
Dominic Gundel committed 2026-10-18 00:54:51 +02:00
1 parent 0236278929
commit 8e88efc094
45 files changed
+3121 -122

No files matched your search

+95 -1
View File
@@ -5,7 +5,7 @@
--bg: #0a0a0c;
--ink: #f0f0f2;
--muted: #9a9aa3;
--faint: #6b6b75;
--faint: #8d8d97;
--line: rgba(255, 255, 255, 0.08);
--line-strong: rgba(255, 255, 255, 0.14);
--card: #141418;
@@ -484,6 +484,7 @@ body.shelf [data-role="hero"] { font-size: 1.35rem; }
.icon-btn.done-btn { color: var(--st-printing); border-color: rgba(61, 206, 124, 0.35); border-radius: 99px !important; }
.icon-btn.done-btn:hover { color: var(--st-printing); background: rgba(61, 206, 124, 0.12); }
.icon-btn.done-btn.confirm-armed { width: auto; padding: 0 0.5rem !important; font-size: 0.66rem; font-weight: 700; background: rgba(61, 206, 124, 0.18); }
.icon-btn.confirm-armed { width: auto; padding: 0 0.5rem !important; font-size: 0.7rem; font-weight: 700; }
.queue-tools { display: flex; gap: 0.1rem; flex-wrap: nowrap; flex: none; }
.send-progress { margin-top: 0.75rem; display: grid; gap: 0.55rem; }
.send-job { display: grid; gap: 0.3rem; }
@@ -1959,6 +1960,31 @@ body.desk-on main {
.tabs button:hover { color: var(--ink); filter: none; }
.tabs button.on { color: var(--ink); border-bottom-color: var(--accent); }
.conn-banner {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 120;
padding: 0.45rem 1rem;
text-align: center;
font-size: var(--t-sm);
font-weight: 500;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
pointer-events: none;
}
.conn-banner[hidden] { display: none !important; }
.conn-banner.bad {
background: rgba(127, 29, 29, 0.92);
color: #fecaca;
border-bottom: 1px solid rgba(248, 113, 113, 0.45);
}
.conn-banner.ok {
background: rgba(20, 83, 45, 0.92);
color: #bbf7d0;
border-bottom: 1px solid rgba(61, 206, 124, 0.45);
}
.toast-host {
position: fixed;
right: 1rem;
@@ -2544,3 +2570,71 @@ ul.plain li:last-child { border-bottom: 0; }
@media (min-width: 800px) {
.grid-2 { grid-template-columns: 1fr 1fr; }
}
/* Abräumen-Dialog + Mobile „Mehr“ */
.abraeumen-dlg,
.mobile-more-sheet {
border: 1px solid var(--line-strong);
border-radius: var(--radius);
padding: 1rem 1.1rem;
background: var(--card);
color: var(--ink);
max-width: min(22rem, calc(100vw - 2rem));
box-shadow: var(--shadow);
}
.abraeumen-dlg::backdrop,
.mobile-more-sheet::backdrop {
background: rgba(0, 0, 0, 0.55);
}
.abraeumen-form h2 { margin: 0 0 0.35rem; font-size: var(--t-lg); }
.abraeumen-form .actions { margin-top: 0.85rem; display: flex; gap: 0.5rem; flex-wrap: wrap; }
.mobile-more-sheet nav {
display: grid;
gap: 0.35rem;
margin-bottom: 0.75rem;
}
.mobile-more-sheet a {
display: block;
padding: 0.65rem 0.75rem;
border-radius: var(--radius-sm);
color: var(--ink);
text-decoration: none;
background: var(--card-2);
border: 1px solid var(--line);
}
.mobile-nav .mobile-more-btn {
appearance: none;
background: transparent;
border: 0;
color: inherit;
font: inherit;
display: flex;
flex-direction: column;
align-items: center;
gap: 0.15rem;
padding: 0.35rem 0.5rem;
cursor: pointer;
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
@media (pointer: coarse) {
.icon-btn, .tiny-btn, .fchip, button, .mobile-nav a, .mobile-nav button {
min-height: 2.75rem;
min-width: 2.75rem;
}
}
@media print {
.sidebar, .mobile-nav, .conn-banner, .toast-host, .nav-toggle { display: none !important; }
.app-shell { display: block; }
.app-main { margin: 0; }
body { background: #fff; color: #111; }
.card, article { box-shadow: none; border-color: #ccc; }
}