From 7d94ec0d18b46893e23680cf8438109a34cc2a10 Mon Sep 17 00:00:00 2001
From: Matthias Nott <mnott@mnsoft.org>
Date: Sun, 22 Feb 2026 16:55:03 +0100
Subject: [PATCH] feat: promote/sync/rebuild UI, operations page, bidirectional sync, lifecycle ops

---
 static/css/style.css |  124 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 124 insertions(+), 0 deletions(-)

diff --git a/static/css/style.css b/static/css/style.css
index d3deff7..9b1a219 100644
--- a/static/css/style.css
+++ b/static/css/style.css
@@ -401,3 +401,127 @@
   overflow: hidden;
 }
 .mono { font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace; }
+
+/* ---------- Backup Selection Bar ---------- */
+.selection-bar {
+  display: flex;
+  align-items: center;
+  gap: 1rem;
+  padding: 0.75rem 1.25rem;
+  margin-bottom: 0.75rem;
+  background: rgba(59,130,246,0.1);
+  border: 1px solid rgba(59,130,246,0.3);
+  border-radius: 0.5rem;
+  font-size: 0.875rem;
+  color: #93c5fd;
+  animation: fadeIn 0.15s ease-out;
+}
+.selection-bar span {
+  font-weight: 600;
+  margin-right: 0.5rem;
+}
+.selection-bar .btn {
+  margin-left: 0.5rem;
+}
+
+/* ---------- Backup Date Groups ---------- */
+.date-group {
+  margin-bottom: 0.75rem;
+}
+
+.date-group-header {
+  display: flex;
+  align-items: center;
+  gap: 0.75rem;
+  padding: 0.75rem 1rem;
+  background: #1f2937;
+  border: 1px solid #374151;
+  border-radius: 0.5rem;
+  cursor: pointer;
+  user-select: none;
+  transition: background 0.15s, border-color 0.15s;
+}
+.date-group-header:hover {
+  background: #263244;
+  border-color: #4b5563;
+}
+
+.date-group-header .chevron {
+  color: #6b7280;
+  font-size: 0.625rem;
+  transition: transform 0.2s ease;
+  flex-shrink: 0;
+  display: inline-block;
+}
+.date-group-header .chevron.open {
+  transform: rotate(90deg);
+  color: #60a5fa;
+}
+
+.date-group-title {
+  font-weight: 600;
+  color: #f3f4f6;
+  font-size: 0.9375rem;
+  flex: 1;
+}
+
+.date-group-meta {
+  font-size: 0.8125rem;
+  color: #9ca3af;
+  white-space: nowrap;
+}
+
+.date-group-size {
+  font-size: 0.8125rem;
+  color: #6b7280;
+  white-space: nowrap;
+}
+
+.date-group-body {
+  display: none;
+  margin-top: 0.25rem;
+  border-radius: 0 0 0.5rem 0.5rem;
+  overflow: hidden;
+}
+.date-group-body.open {
+  display: block;
+}
+
+/* ---------- Backup Location Badges ---------- */
+.badge-local {
+  background: rgba(16,185,129,0.12);
+  color: #34d399;
+  border: 1px solid rgba(52,211,153,0.25);
+}
+.badge-offsite {
+  background: rgba(139,92,246,0.12);
+  color: #a78bfa;
+  border: 1px solid rgba(167,139,250,0.25);
+}
+.badge-synced {
+  background: linear-gradient(90deg, rgba(16,185,129,0.15) 0%, rgba(139,92,246,0.15) 100%);
+  color: #a3e8d0;
+  border: 1px solid rgba(100,200,180,0.3);
+  text-transform: uppercase;
+  font-size: 0.7rem;
+  letter-spacing: 0.04em;
+}
+
+/* ---------- Restore modal info rows ---------- */
+.restore-info-row {
+  display: flex;
+  align-items: baseline;
+  gap: 0.75rem;
+  margin-bottom: 0.625rem;
+  font-size: 0.875rem;
+}
+.restore-info-label {
+  color: #9ca3af;
+  font-size: 0.8125rem;
+  font-weight: 500;
+  min-width: 5rem;
+}
+.restore-info-value {
+  color: #f3f4f6;
+  font-weight: 600;
+}

--
Gitblit v1.3.1