From 47c97f064f89774febdb4da199806cb85b8f2bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Wed, 6 May 2026 19:32:49 +0900 Subject: [PATCH] Add initial web panel styles --- web/static/app.css | 156 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 web/static/app.css diff --git a/web/static/app.css b/web/static/app.css new file mode 100644 index 0000000..52cea77 --- /dev/null +++ b/web/static/app.css @@ -0,0 +1,156 @@ +:root { + --bg: #070b12; + --panel: #101722; + --panel-2: #0d131d; + --line: #233044; + --text: #e8eef8; + --muted: #8d9bb0; + --accent: #37d6ff; + --green: #3dff9d; + --yellow: #ffd166; + --red: #ff5c7a; +} + +* { box-sizing: border-box; } + +body { + margin: 0; + min-height: 100vh; + background: radial-gradient(circle at top left, rgba(55, 214, 255, .14), transparent 34%), var(--bg); + color: var(--text); + font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; +} + +.shell { + width: min(1440px, calc(100% - 32px)); + margin: 0 auto; + padding: 24px 0 48px; +} + +.topbar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + padding: 18px 20px; + margin-bottom: 18px; + background: rgba(16, 23, 34, .86); + border: 1px solid var(--line); + border-radius: 22px; + box-shadow: 0 24px 70px rgba(0,0,0,.28); + backdrop-filter: blur(12px); +} + +.brand { + font-size: 28px; + font-weight: 800; + letter-spacing: -.04em; +} + +.muted { color: var(--muted); } + +.top-meta { + display: flex; + gap: 10px; + flex-wrap: wrap; + justify-content: flex-end; +} + +.top-meta span, +.pill { + display: inline-flex; + align-items: center; + min-height: 30px; + padding: 6px 10px; + border: 1px solid var(--line); + border-radius: 999px; + color: var(--muted); + background: rgba(13, 19, 29, .8); + font-size: 13px; +} + +.grid { display: grid; gap: 16px; } +.stats { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 16px; } +.two { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 16px; } + +.card { + background: linear-gradient(180deg, rgba(16, 23, 34, .96), rgba(13, 19, 29, .96)); + border: 1px solid var(--line); + border-radius: 22px; + padding: 18px; + box-shadow: 0 18px 50px rgba(0,0,0,.22); + margin-bottom: 16px; +} + +.card-head { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + margin-bottom: 14px; +} + +h2 { margin: 0; font-size: 18px; letter-spacing: -.02em; } +.label { color: var(--muted); font-size: 13px; margin-bottom: 8px; } +.value { font-size: 24px; font-weight: 800; letter-spacing: -.03em; } +.value.small { font-size: 16px; } +.strong { font-weight: 700; } + +.services { display: grid; gap: 10px; } +.service-row { + display: flex; + align-items: center; + justify-content: space-between; + padding: 11px 12px; + background: rgba(255,255,255,.03); + border: 1px solid rgba(255,255,255,.06); + border-radius: 14px; +} + +.status { + display: inline-flex; + padding: 5px 9px; + border-radius: 999px; + font-size: 12px; + font-weight: 800; + border: 1px solid currentColor; +} +.status.ok { color: var(--green); background: rgba(61,255,157,.09); } +.status.warn { color: var(--yellow); background: rgba(255,209,102,.09); } +.status.err { color: var(--red); background: rgba(255,92,122,.09); } + +table { width: 100%; border-collapse: collapse; } +th, td { text-align: left; padding: 11px 10px; border-bottom: 1px solid rgba(255,255,255,.07); } +th { color: var(--muted); font-size: 13px; font-weight: 700; } +tr:last-child td { border-bottom: 0; } + +.actions { display: flex; gap: 8px; flex-wrap: wrap; } +.actions form { margin: 0; } +button { + border: 1px solid var(--line); + background: rgba(55,214,255,.08); + color: var(--text); + padding: 8px 10px; + border-radius: 12px; + cursor: pointer; + font-weight: 700; +} +button:hover { border-color: var(--accent); } +button.danger { background: rgba(255,92,122,.09); color: var(--red); } + +pre { + overflow: auto; + margin: 0; + padding: 14px; + border-radius: 14px; + background: #070b12; + border: 1px solid rgba(255,255,255,.06); + color: #d9e5f6; + line-height: 1.55; +} + +@media (max-width: 900px) { + .topbar { align-items: flex-start; flex-direction: column; } + .stats, .two { grid-template-columns: 1fr; } + .shell { width: min(100% - 20px, 1440px); padding-top: 10px; } +}