diff --git a/frontend/static/proxmox.css b/frontend/static/proxmox.css index 0f03851..8c75ba4 100644 --- a/frontend/static/proxmox.css +++ b/frontend/static/proxmox.css @@ -1,20 +1,21 @@ /* ═════════════════════════════════════════════════════════ - Proxmox VE-inspired dark theme for VM Bench + Proxmox VE-inspired light theme for VM Bench ═════════════════════════════════════════════════════════ */ :root { - --pve-bg: #161616; - --pve-panel-bg: #1e1e1e; - --pve-border: #3a3a3a; - --pve-text: #e0e0e0; - --pve-muted: #888; - --pve-accent: #f48024; /* Proxmox orange */ - --pve-blue: #3892d5; - --pve-green: #54b948; - --pve-red: #e8524a; - --pve-yellow: #e5a72e; - --pve-radius: 4px; - --pve-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + --pve-bg: #f0f0f0; + --pve-panel-bg: #ffffff; + --pve-border: #cfcfcf; + --pve-text: #333333; + --pve-muted: #666666; + --pve-accent: #f48024; + --pve-blue: #3892d5; + --pve-green: #54b948; + --pve-red: #e8524a; + --pve-yellow: #e5a72e; + --pve-header-bg: #1b3a5c; + --pve-radius: 4px; + --pve-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; } * { box-sizing: border-box; margin: 0; padding: 0; } @@ -32,9 +33,8 @@ body { /* ── Header ──────────────────────────────────────────────────── */ .pve-header { - background: var(--pve-panel-bg); - border-bottom: 2px solid var(--pve-accent); - padding: 0.6rem 1.5rem; + background: var(--pve-header-bg); + padding: 0.5rem 1.5rem; display: flex; align-items: center; gap: 0.75rem; @@ -42,11 +42,11 @@ body { .pve-header .pve-logo { font-size: 1.1rem; font-weight: 700; - color: var(--pve-accent); + color: #fff; } .pve-header .pve-sub { font-size: 0.75rem; - color: var(--pve-muted); + color: rgba(255,255,255,0.65); margin-left: auto; } @@ -77,10 +77,11 @@ body { border-radius: var(--pve-radius); margin-bottom: 1.25rem; overflow: hidden; + box-shadow: 0 1px 2px rgba(0,0,0,0.04); } .pve-panel-header { - background: #252525; - padding: 0.65rem 1.25rem; + background: #f8f8f8; + padding: 0.55rem 1.25rem; border-bottom: 1px solid var(--pve-border); display: flex; align-items: center; @@ -110,19 +111,19 @@ body { display: inline-flex; align-items: center; gap: 0.3rem; - padding: 0.45rem 1rem; - font-size: 0.8rem; + padding: 0.4rem 0.9rem; + font-size: 0.78rem; font-weight: 600; border: 1px solid var(--pve-border); border-radius: var(--pve-radius); - background: #2a2a2a; + background: #f5f5f5; color: var(--pve-text); cursor: pointer; text-decoration: none; - transition: background 0.15s, border-color 0.15s; + transition: background 0.12s; white-space: nowrap; } -.pve-btn:hover { background: #333; border-color: #555; } +.pve-btn:hover { background: #e8e8e8; } .pve-btn:disabled { opacity: 0.5; cursor: not-allowed; } .pve-btn-primary { background: var(--pve-accent); color: #fff; border-color: var(--pve-accent); } @@ -134,11 +135,11 @@ body { .pve-btn-danger { background: var(--pve-red); color: #fff; border-color: var(--pve-red); } .pve-btn-danger:hover { background: #d9443f; } -.pve-btn-small { padding: 0.25rem 0.6rem; font-size: 0.72rem; } +.pve-btn-small { padding: 0.2rem 0.55rem; font-size: 0.7rem; } .pve-btn-row { display: flex; - gap: 0.6rem; + gap: 0.5rem; margin-top: 0.75rem; flex-wrap: wrap; } @@ -154,33 +155,32 @@ body { } .pve-input, .pve-select { width: 100%; - padding: 0.45rem 0.65rem; - background: var(--pve-bg); + padding: 0.4rem 0.6rem; + background: #fff; border: 1px solid var(--pve-border); border-radius: var(--pve-radius); color: var(--pve-text); font-family: inherit; - font-size: 0.82rem; + font-size: 0.8rem; transition: border-color 0.15s; - cursor: pointer; -} -.pve-select { - appearance: none; - -webkit-appearance: none; - -moz-appearance: none; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M6 8L1 3h10z'/%3E%3C/svg%3E"); - background-repeat: no-repeat; - background-position: right 0.6rem center; - padding-right: 2rem; -} -.pve-select option { - background: var(--pve-panel-bg); - color: var(--pve-text); } .pve-input:focus, .pve-select:focus { border-color: var(--pve-accent); outline: none; - box-shadow: 0 0 0 2px rgba(244,128,36,0.15); + box-shadow: 0 0 0 2px rgba(244,128,36,0.2); +} +.pve-select { + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 8L1 3h10z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 0.6rem center; + padding-right: 2rem; + cursor: pointer; +} +.pve-select option { + background: #fff; + color: var(--pve-text); } .pve-hint { display: block; @@ -206,7 +206,7 @@ body { .pve-table td { padding: 0.35rem 0.6rem; border-bottom: 1px solid var(--pve-border); - font-size: 0.82rem; + font-size: 0.8rem; } .pve-table td:first-child { color: var(--pve-muted); @@ -217,8 +217,8 @@ body { /* ── Progress ────────────────────────────────────────────────── */ .pve-progress { - height: 1.15rem; - background: var(--pve-bg); + height: 1.1rem; + background: #e8e8e8; border-radius: var(--pve-radius); overflow: hidden; margin: 0.6rem 0; @@ -230,7 +230,7 @@ body { display: flex; align-items: center; justify-content: center; - font-size: 0.68rem; + font-size: 0.65rem; font-weight: 700; color: #fff; min-width: 2.5rem; @@ -243,20 +243,20 @@ body { border-radius: 3px; font-size: 0.72rem; font-weight: 600; - margin-bottom: 0.5rem; + margin-bottom: 0.4rem; } -.pve-badge-queued { background: #3b3410; color: var(--pve-yellow); } -.pve-badge-running { background: #1e3a5f; color: var(--pve-blue); } -.pve-badge-completed { background: #1a3a1a; color: var(--pve-green); } -.pve-badge-failed { background: #3a1a1a; color: var(--pve-red); } +.pve-badge-queued { background: #fff3cd; color: #856404; } +.pve-badge-running { background: #cce5ff; color: #004085; } +.pve-badge-completed { background: #d4edda; color: #155724; } +.pve-badge-failed { background: #f8d7da; color: #721c24; } /* ── Spinner ─────────────────────────────────────────────────── */ .pve-spinner { display: inline-block; - width: 0.8rem; - height: 0.8rem; + width: 0.75rem; + height: 0.75rem; border: 2px solid var(--pve-border); - border-top-color: currentColor; + border-top-color: var(--pve-accent); border-radius: 50%; animation: pve-spin 0.6s linear infinite; vertical-align: middle; @@ -273,23 +273,23 @@ body { line-height: 1.5; } .pve-alert-error { - background: #3a1a1a; - border: 1px solid var(--pve-red); - color: var(--pve-red); + background: #f8d7da; + border: 1px solid #f5c6cb; + color: #721c24; } .pve-alert-success { - background: #1a3a1a; - border: 1px solid var(--pve-green); - color: var(--pve-green); + background: #d4edda; + border: 1px solid #c3e6cb; + color: #155724; } .pve-alert-info { - background: #1a2a3a; - border: 1px solid var(--pve-blue); - color: var(--pve-blue); + background: #cce5ff; + border: 1px solid #b8daff; + color: #004085; } /* ── Misc ────────────────────────────────────────────────────── */ .pve-dim { color: var(--pve-muted); } .pve-divider { border: none; border-top: 1px solid var(--pve-border); margin: 1rem 0; } -.pve-code { background: var(--pve-bg); padding: 0.1rem 0.4rem; border-radius: 2px; font-size: 0.78rem; } +.pve-code { background: #f5f5f5; padding: 0.1rem 0.4rem; border-radius: 2px; font-size: 0.78rem; } .pve-center { text-align: center; } diff --git a/frontend/templates/base.html b/frontend/templates/base.html index ca0e24f..00f03a4 100644 --- a/frontend/templates/base.html +++ b/frontend/templates/base.html @@ -4,7 +4,7 @@