From 47051dc79a9288d43250c06b7f78135b6ba11661 Mon Sep 17 00:00:00 2001 From: josh Date: Sat, 12 Sep 2026 12:29:02 -0400 Subject: [PATCH] Repaint theme blue with larger typography MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Swap the cherry-red primary for the logo's blue, bump body 13→15px and h1 32→40px, and add semantic tokens (--bg-*, --accent-*, --text-*) so future palette shifts are a single-file edit. Cherry-red survives only for danger states and the brand cherry mark. Co-Authored-By: Claude Opus 4.7 --- src/lib/ui/components/BetaPanel.svelte | 96 ++++---- src/lib/ui/components/BrandMark.svelte | 18 +- src/lib/ui/components/DiffViewer.svelte | 40 ++-- src/lib/ui/components/LogPanel.svelte | 66 +++--- src/lib/ui/components/PipelineTimeline.svelte | 48 ++-- src/lib/ui/components/PlayerRoster.svelte | 32 +-- src/lib/ui/components/ServerCard.svelte | 70 +++--- src/lib/ui/components/StatusDot.svelte | 2 +- src/lib/ui/styles/tokens.css | 112 ++++++--- src/routes/+layout.svelte | 38 +-- src/routes/+page.svelte | 60 ++--- src/routes/betas/+page.svelte | 9 +- src/routes/deployments/+page.svelte | 49 ++-- src/routes/deployments/[id]/+page.svelte | 86 +++---- src/routes/servers/[name]/+page.svelte | 220 +++++++++--------- 15 files changed, 499 insertions(+), 447 deletions(-) diff --git a/src/lib/ui/components/BetaPanel.svelte b/src/lib/ui/components/BetaPanel.svelte index 8cc62ec..6d6f3f5 100644 --- a/src/lib/ui/components/BetaPanel.svelte +++ b/src/lib/ui/components/BetaPanel.svelte @@ -125,55 +125,55 @@ diff --git a/src/lib/ui/components/BrandMark.svelte b/src/lib/ui/components/BrandMark.svelte index 7cc80e6..ad01a15 100644 --- a/src/lib/ui/components/BrandMark.svelte +++ b/src/lib/ui/components/BrandMark.svelte @@ -16,22 +16,22 @@ .mark { display: inline-flex; align-items: center; - gap: 8px; + gap: 10px; font-family: var(--font-display); color: var(--cream); - letter-spacing: 2px; + letter-spacing: var(--tracking-display); line-height: 1; animation: cherry-fizz 6s ease-in-out infinite; } - .mark-sm .word { font-size: 12px; letter-spacing: 1.5px; } - .mark-md .word { font-size: 16px; } - .mark-lg .word { font-size: 26px; letter-spacing: 3px; } + .mark-sm .word { font-size: 14px; letter-spacing: 1.5px; } + .mark-md .word { font-size: 18px; } + .mark-lg .word { font-size: 32px; letter-spacing: 3px; } .bolt { fill: var(--spark-500); - filter: drop-shadow(0 0 4px rgba(34, 224, 255, 0.7)); + filter: drop-shadow(0 0 5px rgba(124, 212, 255, 0.75)); } - .mark-sm .bolt { width: 10px; height: 16px; } - .mark-md .bolt { width: 12px; height: 20px; } - .mark-lg .bolt { width: 18px; height: 30px; } + .mark-sm .bolt { width: 12px; height: 20px; } + .mark-md .bolt { width: 14px; height: 24px; } + .mark-lg .bolt { width: 22px; height: 36px; } diff --git a/src/lib/ui/components/DiffViewer.svelte b/src/lib/ui/components/DiffViewer.svelte index 8a67502..31dcf3f 100644 --- a/src/lib/ui/components/DiffViewer.svelte +++ b/src/lib/ui/components/DiffViewer.svelte @@ -51,38 +51,38 @@ diff --git a/src/lib/ui/components/LogPanel.svelte b/src/lib/ui/components/LogPanel.svelte index 9028f87..c6a92c8 100644 --- a/src/lib/ui/components/LogPanel.svelte +++ b/src/lib/ui/components/LogPanel.svelte @@ -166,101 +166,101 @@ .log-panel { display: flex; flex-direction: column; - gap: 8px; + gap: 10px; } .tabs { display: flex; - gap: 4px; + gap: 6px; align-items: center; - border-bottom: 1px solid var(--cherry-700); - padding-bottom: 6px; + border-bottom: 1px solid var(--border); + padding-bottom: 8px; } .tab { background: transparent; color: var(--ink-300); border: 1px solid transparent; border-radius: var(--r-sm) var(--r-sm) 0 0; - padding: 6px 12px; + padding: 8px 14px; font-family: var(--font-mono); - font-size: 12px; + font-size: var(--text-mono); cursor: pointer; transition: color 0.15s, background 0.15s; } - .tab:hover { color: var(--cream); background: var(--cherry-875); } + .tab:hover { color: var(--cream); background: var(--bg-card); } .tab.on { color: var(--cream); - background: var(--cherry-875); - border-color: var(--cherry-700); - border-bottom-color: var(--cherry-875); + background: var(--bg-card); + border-color: var(--border); + border-bottom-color: var(--bg-card); } .right { margin-left: auto; display: flex; align-items: center; - gap: 12px; + gap: 14px; } .meta { color: var(--ink-500); font-family: var(--font-mono); - font-size: 11px; + font-size: var(--text-mono-sm); } .auto { display: flex; align-items: center; - gap: 4px; + gap: 6px; color: var(--ink-500); font-family: var(--font-mono); - font-size: 11px; + font-size: var(--text-mono-sm); cursor: pointer; user-select: none; } - .auto input { accent-color: var(--spark-500); } + .auto input { accent-color: var(--accent); } .refresh { - background: var(--cherry-875); + background: var(--bg-card); color: var(--ink-100); - border: 1px solid var(--cherry-700); + border: 1px solid var(--border); border-radius: var(--r-sm); - padding: 4px 10px; + padding: 6px 12px; font-family: var(--font-body); - font-size: 11px; + font-size: var(--text-sm); cursor: pointer; } .refresh:hover:not(:disabled) { - border-color: var(--spark-500); - box-shadow: var(--spark-glow); + border-color: var(--accent); + box-shadow: var(--accent-glow); } .refresh:disabled { opacity: 0.4; cursor: default; } .body { margin: 0; - padding: 12px 14px; - background: var(--cherry-975); - border: 1px solid var(--cherry-700); + padding: 16px 18px; + background: var(--bg-page); + border: 1px solid var(--border); border-radius: var(--r-sm); color: var(--ink-300); font-family: var(--font-mono); - font-size: 11.5px; - line-height: 1.55; - max-height: 520px; + font-size: var(--text-mono); + line-height: var(--leading-mono); + max-height: 560px; overflow: auto; white-space: pre-wrap; word-break: break-word; } .empty, .error { - padding: 24px 14px; + padding: 28px 16px; text-align: center; font-family: var(--font-mono); - font-size: 12px; + font-size: var(--text-mono); border-radius: var(--r-sm); } .empty { color: var(--ink-500); - background: var(--cherry-925); - border: 1px dashed var(--cherry-700); + background: var(--bg-nav); + border: 1px dashed var(--border); } .empty code { color: var(--cream-dim); - font-size: 11px; + font-size: var(--text-mono-sm); } .error { color: var(--danger-500); @@ -270,7 +270,7 @@ .foot { color: var(--ink-500); font-family: var(--font-mono); - font-size: 10.5px; + font-size: var(--text-mono-sm); text-align: right; } diff --git a/src/lib/ui/components/PipelineTimeline.svelte b/src/lib/ui/components/PipelineTimeline.svelte index 523d1e2..a59ef00 100644 --- a/src/lib/ui/components/PipelineTimeline.svelte +++ b/src/lib/ui/components/PipelineTimeline.svelte @@ -45,21 +45,21 @@ diff --git a/src/lib/ui/components/PlayerRoster.svelte b/src/lib/ui/components/PlayerRoster.svelte index 2945eb9..08b0bcd 100644 --- a/src/lib/ui/components/PlayerRoster.svelte +++ b/src/lib/ui/components/PlayerRoster.svelte @@ -55,8 +55,8 @@ diff --git a/src/routes/betas/+page.svelte b/src/routes/betas/+page.svelte index 805b9ed..4441715 100644 --- a/src/routes/betas/+page.svelte +++ b/src/routes/betas/+page.svelte @@ -30,13 +30,14 @@ h1 { color: var(--cream); font-family: var(--font-display); - font-size: 32px; - letter-spacing: 2px; - margin: 0 0 20px; + font-size: var(--text-3xl); + letter-spacing: var(--tracking-display); + line-height: var(--leading-tight); + margin: 0 0 28px; } .empty { color: var(--ink-500); font-family: var(--font-mono); - font-size: 13px; + font-size: var(--text-base); } diff --git a/src/routes/deployments/+page.svelte b/src/routes/deployments/+page.svelte index 3a4b2ea..95c20d5 100644 --- a/src/routes/deployments/+page.svelte +++ b/src/routes/deployments/+page.svelte @@ -96,14 +96,15 @@ h1 { color: var(--cream); font-family: var(--font-display); - font-size: 32px; - letter-spacing: 2px; - margin: 0 0 20px; + font-size: var(--text-3xl); + letter-spacing: var(--tracking-display); + line-height: var(--leading-tight); + margin: 0 0 28px; } h2 { - margin: 28px 0 12px; + margin: var(--gap-section) 0 16px; font-family: var(--font-body); - font-size: 11px; + font-size: var(--text-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 1.5px; @@ -111,30 +112,30 @@ } .row { display: block; - background: var(--cherry-925); - border: 1px solid var(--cherry-700); + background: var(--bg-nav); + border: 1px solid var(--border); border-radius: var(--r-md); - padding: 14px 16px; - margin-bottom: 10px; + padding: 18px 20px; + margin-bottom: 12px; color: var(--ink-100); text-decoration: none; transition: border-color 0.15s, box-shadow 0.15s; } - .row:hover { border-color: var(--spark-500); box-shadow: var(--spark-glow); } - .head { display: flex; justify-content: space-between; margin-bottom: 8px; align-items: baseline; } - .action { font-family: var(--font-mono); font-size: 13px; color: var(--cream); } - .when { color: var(--ink-500); font-size: 12px; font-family: var(--font-mono); } - .chips { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 8px; } + .row:hover { border-color: var(--accent); box-shadow: var(--accent-glow); } + .head { display: flex; justify-content: space-between; margin-bottom: 10px; align-items: baseline; } + .action { font-family: var(--font-mono); font-size: var(--text-md); color: var(--cream); } + .when { color: var(--ink-500); font-size: var(--text-mono); font-family: var(--font-mono); } + .chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; } .chip { - padding: 2px 7px; + padding: 3px 9px; border-radius: var(--r-sm); - font-size: 11px; + font-size: var(--text-mono-sm); font-family: var(--font-mono); border: 1px solid transparent; } .chip-done { - background: rgba(34, 224, 255, 0.1); - border-color: rgba(34, 224, 255, 0.3); + background: rgba(124, 212, 255, 0.10); + border-color: rgba(124, 212, 255, 0.3); color: var(--spark-500); } .chip-failed { @@ -148,23 +149,23 @@ color: var(--amber-500); } .chip-held { - background: rgba(242, 230, 200, 0.08); - border-color: rgba(242, 230, 200, 0.25); + background: rgba(124, 192, 245, 0.10); + border-color: rgba(124, 192, 245, 0.28); color: var(--cream); } .chip-manual { - background: var(--cherry-925); - border-color: var(--cherry-700); + background: var(--bg-nav); + border-color: var(--border); color: var(--ink-500); } .id { color: var(--ink-700); font-family: var(--font-mono); - font-size: 11px; + font-size: var(--text-mono-sm); } .empty { color: var(--ink-500); font-family: var(--font-mono); - font-size: 13px; + font-size: var(--text-base); } diff --git a/src/routes/deployments/[id]/+page.svelte b/src/routes/deployments/[id]/+page.svelte index 881deda..281bd6d 100644 --- a/src/routes/deployments/[id]/+page.svelte +++ b/src/routes/deployments/[id]/+page.svelte @@ -119,90 +119,92 @@ h1 { color: var(--cream); font-family: var(--font-display); - font-size: 24px; + font-size: var(--text-2xl); letter-spacing: 1.5px; - margin: 0 0 6px; + line-height: var(--leading-tight); + margin: 0 0 8px; } h2 { - margin: 26px 0 10px; + margin: var(--gap-section) 0 14px; font-family: var(--font-body); - font-size: 11px; + font-size: var(--text-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 1.5px; color: var(--ink-300); } h3 { - margin: 14px 0 6px; - font-size: 13px; + margin: 18px 0 8px; + font-size: var(--text-md); color: var(--cream); font-family: var(--font-mono); } .meta { color: var(--ink-500); - font-size: 12px; - margin: 0 0 22px; + font-size: var(--text-mono); + margin: 0 0 28px; font-family: var(--font-mono); } .server-grid { display: grid; - gap: 10px; - grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); + gap: 14px; + grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); } .srv { - background: var(--cherry-925); - border: 1px solid var(--cherry-700); + background: var(--bg-nav); + border: 1px solid var(--border); border-radius: var(--r-sm); - padding: 12px; + padding: 16px; } - .srv-done { border-color: rgba(34, 224, 255, 0.35); } + .srv-done { border-color: rgba(124, 212, 255, 0.35); } .srv-failed { border-color: rgba(255, 48, 80, 0.35); } .srv-pending { border-color: rgba(255, 176, 32, 0.35); } - .srv-held { border-color: rgba(242, 230, 200, 0.3); } + .srv-held { border-color: rgba(124, 192, 245, 0.3); } .srv-manual { border-color: var(--ink-500); } .name { font-weight: 600; - margin-bottom: 6px; + margin-bottom: 8px; color: var(--cream); + font-size: var(--text-md); } - .line { font-size: 12px; color: var(--ink-300); font-family: var(--font-mono); } + .line { font-size: var(--text-mono); color: var(--ink-300); font-family: var(--font-mono); line-height: var(--leading-mono); } .line.dim { color: var(--ink-500); } .line.err { color: var(--danger-500); } - .file-group { margin-bottom: 16px; } + .file-group { margin-bottom: 20px; } .file-row { display: flex; align-items: center; - gap: 10px; + gap: 12px; width: 100%; - background: var(--cherry-925); - border: 1px solid var(--cherry-700); + background: var(--bg-nav); + border: 1px solid var(--border); border-radius: var(--r-sm); - padding: 6px 10px; - margin: 3px 0; + padding: 8px 12px; + margin: 4px 0; color: var(--ink-100); cursor: pointer; font: inherit; text-align: left; transition: border-color 0.15s; } - .file-row:hover { border-color: var(--spark-500); } + .file-row:hover { border-color: var(--accent); } .verb { - padding: 2px 7px; + padding: 3px 9px; border-radius: var(--r-sm); - font-size: 10px; + font-size: var(--text-xs); font-family: var(--font-mono); text-transform: uppercase; letter-spacing: 0.8px; border: 1px solid transparent; } .verb-added { - background: rgba(34, 224, 255, 0.1); - border-color: rgba(34, 224, 255, 0.3); + background: rgba(124, 212, 255, 0.10); + border-color: rgba(124, 212, 255, 0.3); color: var(--spark-500); } .verb-updated { - background: rgba(242, 230, 200, 0.08); - border-color: rgba(242, 230, 200, 0.25); + background: rgba(124, 192, 245, 0.10); + border-color: rgba(124, 192, 245, 0.28); color: var(--cream); } .verb-removed { @@ -218,18 +220,18 @@ .sizes { margin-left: auto; color: var(--ink-500); - font-size: 11px; + font-size: var(--text-mono-sm); font-family: var(--font-mono); } - code { font-family: var(--font-mono); color: var(--ink-100); } + code { font-family: var(--font-mono); color: var(--ink-100); font-size: var(--text-mono); } .empty { color: var(--ink-500); font-family: var(--font-mono); - font-size: 13px; + font-size: var(--text-base); } .diff-scrim { position: fixed; inset: 0; - background: rgba(4, 2, 3, 0.85); + background: rgba(6, 11, 22, 0.85); z-index: 100; display: grid; place-items: center; @@ -240,22 +242,22 @@ width: 92%; max-height: 92vh; overflow: auto; - background: var(--cherry-925); - border: 1px solid var(--cherry-700); + background: var(--bg-nav); + border: 1px solid var(--border); border-radius: var(--r-md); - padding: 20px; + padding: var(--pad-panel); box-shadow: var(--shadow-panel); } .close { float: right; - background: var(--cherry-875); + background: var(--bg-card); color: var(--ink-100); - border: 1px solid var(--cherry-700); + border: 1px solid var(--border); border-radius: var(--r-sm); - padding: 5px 12px; + padding: 6px 14px; font-family: var(--font-body); - font-size: 12px; + font-size: var(--text-sm); cursor: pointer; } - .close:hover { border-color: var(--spark-500); box-shadow: var(--spark-glow); } + .close:hover { border-color: var(--accent); box-shadow: var(--accent-glow); } diff --git a/src/routes/servers/[name]/+page.svelte b/src/routes/servers/[name]/+page.svelte index 1d4f44c..a7bed51 100644 --- a/src/routes/servers/[name]/+page.svelte +++ b/src/routes/servers/[name]/+page.svelte @@ -453,11 +453,11 @@