From 93c8d00af677bb71cb36262fbded23b66b346b79 Mon Sep 17 00:00:00 2001 From: mr-forust Date: Sun, 26 Jul 2026 19:02:11 +0200 Subject: [PATCH] style(webui): format stylesheet --- webui/style.css | 490 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 404 insertions(+), 86 deletions(-) diff --git a/webui/style.css b/webui/style.css index 4729665..6d0c4c0 100644 --- a/webui/style.css +++ b/webui/style.css @@ -1404,109 +1404,427 @@ tbody tr:hover { --info: #d7d7d7; --radius: 8px; --shadow: none; - --font-ui: Inter, "SF Pro Display", "Helvetica Neue", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + --font-ui: Inter, 'SF Pro Display', 'Helvetica Neue', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; } -body { font-size: 14px; -webkit-font-smoothing: antialiased; } -a { border-bottom: 0; } -a:hover, button:hover { border-color: var(--accent-line); background: var(--accent-soft); } +body { + font-size: 14px; + -webkit-font-smoothing: antialiased; +} +a { + border-bottom: 0; +} +a:hover, +button:hover { + border-color: var(--accent-line); + background: var(--accent-soft); +} -.app-shell { grid-template-columns: 236px minmax(0, 1fr); min-height: 100vh; } +.app-shell { + grid-template-columns: 236px minmax(0, 1fr); + min-height: 100vh; +} .sidebar { - position: sticky; top: 0; height: 100vh; padding: 18px 12px; - background: var(--panel-alt); border-right-color: var(--line); + position: sticky; + top: 0; + height: 100vh; + padding: 18px 12px; + background: var(--panel-alt); + border-right-color: var(--line); } -.brand-block { position: relative; display: block; min-height: 64px; padding: 5px 9px 16px; } -.brand-block::before { content: '◈'; position: absolute; top: 8px; left: 9px; color: var(--text-color); font-size: 25px; line-height: 1; } -.brand-block h1, .dialog-header h2 { color: var(--text-color); font-size: 15px; line-height: 1.12; letter-spacing: -0.01em; } -.brand-block h1 { margin-left: 36px; } -.brand-block .eyebrow { margin: 0 0 3px 36px; color: var(--muted, #747474); font-size: 12px; letter-spacing: 0; text-transform: none; } -.brand-block .muted { display: none; } -.eyebrow, .section-title { color: #747474; font-size: 10px; font-weight: 650; letter-spacing: .08em; } -.muted { color: #9a9a9a; } - -.nav-links { gap: 5px; margin: 10px 0 24px; } -.nav-link, .button, input, .content-tab, .viewer-channel-item, .account-tab { - border-color: transparent; border-radius: 6px; background: transparent; +.brand-block { + position: relative; + display: block; + min-height: 64px; + padding: 5px 9px 16px; } -.nav-link { justify-content: flex-start; min-height: 46px; padding: 0 13px; color: #979797; font-size: 13px; font-weight: 650; } -.nav-link.active { border-color: #3b3b3b; color: var(--text-color); background: var(--accent-soft); } -.nav-link::before { content: '—'; width: 16px; color: currentColor; } - -.status-card, .panel, .stat-panel, .job-card, .message-card, .settings-dialog { - border-color: var(--line); border-radius: var(--radius); background: var(--panel); box-shadow: none; +.brand-block::before { + content: '◈'; + position: absolute; + top: 8px; + left: 9px; + color: var(--text-color); + font-size: 25px; + line-height: 1; +} +.brand-block h1, +.dialog-header h2 { + color: var(--text-color); + font-size: 15px; + line-height: 1.12; + letter-spacing: -0.01em; +} +.brand-block h1 { + margin-left: 36px; +} +.brand-block .eyebrow { + margin: 0 0 3px 36px; + color: var(--muted, #747474); + font-size: 12px; + letter-spacing: 0; + text-transform: none; +} +.brand-block .muted { + display: none; +} +.eyebrow, +.section-title { + color: #747474; + font-size: 10px; + font-weight: 650; + letter-spacing: 0.08em; +} +.muted { + color: #9a9a9a; } -.status-card { padding: 14px 10px 4px; background: transparent; border: 0; border-top: 1px solid rgba(255,255,255,.09); } -.status-card + .status-card { margin-top: 12px; } -.status-card .button { width: auto; justify-content: flex-start; padding: 0 13px; } -.status-badge { padding: 0; border: 0; border-radius: 0; color: var(--text-color); background: transparent; font-size: 12px; font-weight: 700; } -.content { max-width: none; padding: 24px 28px 40px; } -.content::before { content: ''; display: block; height: 43px; margin: -24px -28px 24px; border-bottom: 1px solid var(--line); } -.content-tabs, .account-tabs { gap: 0; margin-bottom: 18px; padding-bottom: 0; border-bottom: 0; } -.content-tab, .account-tab { min-height: 38px; padding: 8px 14px; border: 1px solid var(--line); border-radius: 0; color: #aaa; font-size: 13px; } -.content-tab:first-child, .account-tab:first-child { border-radius: 6px 0 0 6px; } -.content-tab + .content-tab, .account-tab + .account-tab { margin-left: -1px; } -.content-tab:last-child, .account-tab:last-child { border-radius: 0 6px 6px 0; } -.content-tab.active, .account-tab.active { position: relative; z-index: 1; border-color: #535353; color: var(--text-color); background: var(--accent-soft); } +.nav-links { + gap: 5px; + margin: 10px 0 24px; +} +.nav-link, +.button, +input, +.content-tab, +.viewer-channel-item, +.account-tab { + border-color: transparent; + border-radius: 6px; + background: transparent; +} +.nav-link { + justify-content: flex-start; + min-height: 46px; + padding: 0 13px; + color: #979797; + font-size: 13px; + font-weight: 650; +} +.nav-link.active { + border-color: #3b3b3b; + color: var(--text-color); + background: var(--accent-soft); +} +.nav-link::before { + content: '—'; + width: 16px; + color: currentColor; +} -.panel-grid { gap: 14px; margin-bottom: 14px; grid-template-columns: repeat(4, minmax(0, 1fr)); } -.settings-health-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } -.panel, .status-card, .job-card, .message-card { padding: 18px; } -.panel { margin-bottom: 14px; } -.stat-panel { min-height: 128px; padding: 17px 18px; } -.stat-value { margin-top: 20px; font-size: 30px; font-weight: 650; letter-spacing: -.04em; } -.stat-compact { font-size: 19px; } -.panel-header, .dialog-header, .job-head { align-items: center; gap: 16px; } -.panel-header h2, .settings-hero h2 { font-size: 16px; font-weight: 650; letter-spacing: -.02em; } -.panel-header .muted { margin-top: 4px; font-size: 12px; } +.status-card, +.panel, +.stat-panel, +.job-card, +.message-card, +.settings-dialog { + border-color: var(--line); + border-radius: var(--radius); + background: var(--panel); + box-shadow: none; +} +.status-card { + padding: 14px 10px 4px; + background: transparent; + border: 0; + border-top: 1px solid rgba(255, 255, 255, 0.09); +} +.status-card + .status-card { + margin-top: 12px; +} +.status-card .button { + width: auto; + justify-content: flex-start; + padding: 0 13px; +} +.status-badge { + padding: 0; + border: 0; + border-radius: 0; + color: var(--text-color); + background: transparent; + font-size: 12px; + font-weight: 700; +} -.button { min-height: 36px; padding: 7px 12px; border: 1px solid var(--line); color: #d4d4d4; font-size: 12px; font-weight: 650; } -.button.primary { border-color: #d9d9d9; color: #111; background: #f1f1f1; } -.button.primary:hover { border-color: #fff; background: #fff; color: #080808; } -.button.danger { color: #c5c5c5; } -.button.button-small { min-height: 32px; padding: 5px 9px; } -input { min-height: 36px; padding: 8px 11px; border: 1px solid var(--line); color: var(--text-color); background: #0d0d0d; font-size: 12px; } -input:focus { border-color: #777; } +.content { + max-width: none; + padding: 24px 28px 40px; +} +.content::before { + content: ''; + display: block; + height: 43px; + margin: -24px -28px 24px; + border-bottom: 1px solid var(--line); +} +.content-tabs, +.account-tabs { + gap: 0; + margin-bottom: 18px; + padding-bottom: 0; + border-bottom: 0; +} +.content-tab, +.account-tab { + min-height: 38px; + padding: 8px 14px; + border: 1px solid var(--line); + border-radius: 0; + color: #aaa; + font-size: 13px; +} +.content-tab:first-child, +.account-tab:first-child { + border-radius: 6px 0 0 6px; +} +.content-tab + .content-tab, +.account-tab + .account-tab { + margin-left: -1px; +} +.content-tab:last-child, +.account-tab:last-child { + border-radius: 0 6px 6px 0; +} +.content-tab.active, +.account-tab.active { + position: relative; + z-index: 1; + border-color: #535353; + color: var(--text-color); + background: var(--accent-soft); +} -th, td { padding: 12px 10px; border-bottom-color: var(--line); font-size: 12px; } -th { color: #888; font-size: 10px; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; } -tbody tr:hover { background: rgba(255,255,255,.035); } -.job-card { border-radius: 6px; } -.job-status { color: #aaa; font-size: 10px; } -.job-logs, .log-viewer { border-color: var(--line); border-radius: 6px; background: #0b0b0b; font-family: var(--font-mono); font-size: 12px; } -.log-line { border-bottom-color: #202020; } -.log-line:hover { background: rgba(255,255,255,.04); } +.panel-grid { + gap: 14px; + margin-bottom: 14px; + grid-template-columns: repeat(4, minmax(0, 1fr)); +} +.settings-health-grid { + grid-template-columns: repeat(4, minmax(0, 1fr)); +} +.panel, +.status-card, +.job-card, +.message-card { + padding: 18px; +} +.panel { + margin-bottom: 14px; +} +.stat-panel { + min-height: 128px; + padding: 17px 18px; +} +.stat-value { + margin-top: 20px; + font-size: 30px; + font-weight: 650; + letter-spacing: -0.04em; +} +.stat-compact { + font-size: 19px; +} +.panel-header, +.dialog-header, +.job-head { + align-items: center; + gap: 16px; +} +.panel-header h2, +.settings-hero h2 { + font-size: 16px; + font-weight: 650; + letter-spacing: -0.02em; +} +.panel-header .muted { + margin-top: 4px; + font-size: 12px; +} -.switch { width: 42px; min-width: 42px; height: 22px; } -.switch-slider { border-color: #3a3a3a; background: #181818; } -.switch-slider::before { top: 3px; left: 3px; width: 14px; height: 14px; background: #8d8d8d; } -.switch input:checked + .switch-slider { border-color: #858585; background: #f1f1f1; } -.switch input:checked + .switch-slider::before { transform: translateX(20px); background: #111; } -.checkbox-row, .settings-account-button, .account-list-item, .add-account-form, .import-account-row, .qr-wrap { border-color: var(--line); border-radius: 6px; background: #111; } -.settings-account-button.active { border-color: #535353; background: var(--accent-soft); } +.button { + min-height: 36px; + padding: 7px 12px; + border: 1px solid var(--line); + color: #d4d4d4; + font-size: 12px; + font-weight: 650; +} +.button.primary { + border-color: #d9d9d9; + color: #111; + background: #f1f1f1; +} +.button.primary:hover { + border-color: #fff; + background: #fff; + color: #080808; +} +.button.danger { + color: #c5c5c5; +} +.button.button-small { + min-height: 32px; + padding: 5px 9px; +} +input { + min-height: 36px; + padding: 8px 11px; + border: 1px solid var(--line); + color: var(--text-color); + background: #0d0d0d; + font-size: 12px; +} +input:focus { + border-color: #777; +} -.settings-hero { border-top: 0; } -.settings-dialog { border-color: #3b3b3b; } -.dialog-shell { padding: 20px; } -.settings-section { border-top-color: var(--line); } -.toast { border-color: #4a4a4a; border-radius: 6px; background: #151515; } +th, +td { + padding: 12px 10px; + border-bottom-color: var(--line); + font-size: 12px; +} +th { + color: #888; + font-size: 10px; + font-weight: 650; + letter-spacing: 0.06em; + text-transform: uppercase; +} +tbody tr:hover { + background: rgba(255, 255, 255, 0.035); +} +.job-card { + border-radius: 6px; +} +.job-status { + color: #aaa; + font-size: 10px; +} +.job-logs, +.log-viewer { + border-color: var(--line); + border-radius: 6px; + background: #0b0b0b; + font-family: var(--font-mono); + font-size: 12px; +} +.log-line { + border-bottom-color: #202020; +} +.log-line:hover { + background: rgba(255, 255, 255, 0.04); +} + +.switch { + width: 42px; + min-width: 42px; + height: 22px; +} +.switch-slider { + border-color: #3a3a3a; + background: #181818; +} +.switch-slider::before { + top: 3px; + left: 3px; + width: 14px; + height: 14px; + background: #8d8d8d; +} +.switch input:checked + .switch-slider { + border-color: #858585; + background: #f1f1f1; +} +.switch input:checked + .switch-slider::before { + transform: translateX(20px); + background: #111; +} +.checkbox-row, +.settings-account-button, +.account-list-item, +.add-account-form, +.import-account-row, +.qr-wrap { + border-color: var(--line); + border-radius: 6px; + background: #111; +} +.settings-account-button.active { + border-color: #535353; + background: var(--accent-soft); +} + +.settings-hero { + border-top: 0; +} +.settings-dialog { + border-color: #3b3b3b; +} +.dialog-shell { + padding: 20px; +} +.settings-section { + border-top-color: var(--line); +} +.toast { + border-color: #4a4a4a; + border-radius: 6px; + background: #151515; +} @media (max-width: 900px) { - .panel-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } + .panel-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } } @media (max-width: 768px) { - .app-shell { grid-template-columns: 1fr; } - .sidebar { position: static; height: auto; padding: 12px; border-right: 0; border-bottom: 1px solid var(--line); } - .brand-block { min-height: 46px; padding-bottom: 5px; } - .nav-links { display: flex; overflow-x: auto; margin: 8px 0 0; } - .nav-link { min-height: 34px; white-space: nowrap; } - .status-card { display: none; } - .content { padding: 16px; } - .content::before { height: 0; margin: -16px -16px 16px; } + .app-shell { + grid-template-columns: 1fr; + } + .sidebar { + position: static; + height: auto; + padding: 12px; + border-right: 0; + border-bottom: 1px solid var(--line); + } + .brand-block { + min-height: 46px; + padding-bottom: 5px; + } + .nav-links { + display: flex; + overflow-x: auto; + margin: 8px 0 0; + } + .nav-link { + min-height: 34px; + white-space: nowrap; + } + .status-card { + display: none; + } + .content { + padding: 16px; + } + .content::before { + height: 0; + margin: -16px -16px 16px; + } } @media (max-width: 560px) { - .panel-grid, .settings-health-grid { grid-template-columns: 1fr; } - .content-tabs, .account-tabs { overflow-x: auto; flex-wrap: nowrap; } - .content-tab, .account-tab { white-space: nowrap; } + .panel-grid, + .settings-health-grid { + grid-template-columns: 1fr; + } + .content-tabs, + .account-tabs { + overflow-x: auto; + flex-wrap: nowrap; + } + .content-tab, + .account-tab { + white-space: nowrap; + } }