aboutsummaryrefslogtreecommitdiffstats
path: root/renderer/src/styles/globals.css
diff options
context:
space:
mode:
authorClawd <ai@clawd.bot>2026-02-28 15:21:27 -0800
committerClawd <ai@clawd.bot>2026-02-28 15:21:27 -0800
commita9ae7c65c387bcf144de8df0a13dbbfd7496cc1e (patch)
treee742a76e5638e8564b893584836678dec095fee8 /renderer/src/styles/globals.css
parent4bd42f9c508345391806eb7c5c2ed39863764695 (diff)
Restyle UI with light/dark theme support
- Add light/dark theme toggle with localStorage persistence - Add 'Claude Flow' wordmark in header - Switch to monospace font (SF Mono, Cascadia Code, etc.) - Update accent colors (lighter blue) - Add theme-aware CodeMirror styling (oneDark vs defaultHighlightStyle) - Update window title to 'Claude Flow' - Refine spacing and visual polish throughout - Add .claude-flow/ artifacts from self-restyling session
Diffstat (limited to 'renderer/src/styles/globals.css')
-rw-r--r--renderer/src/styles/globals.css259
1 files changed, 178 insertions, 81 deletions
diff --git a/renderer/src/styles/globals.css b/renderer/src/styles/globals.css
index 7ad199e..97b7bb8 100644
--- a/renderer/src/styles/globals.css
+++ b/renderer/src/styles/globals.css
@@ -4,25 +4,44 @@
4 padding: 0; 4 padding: 0;
5} 5}
6 6
7/* ── Dark theme (default) ────────────────────────────────────── */
7:root { 8:root {
8 --bg-primary: #1a1a1a; 9 --bg-primary: #1a1a1a;
9 --bg-secondary: #252525; 10 --bg-secondary: #252525;
10 --bg-tertiary: #333; 11 --bg-tertiary: #333;
11 --border: #444; 12 --border: #444;
12 --text-primary: #e0e0e0; 13 --text-primary: #e0e0e0;
13 --text-secondary: #888; 14 --text-secondary: #888;
14 --accent: #3b82f6; 15 --accent: #60a5fa;
15 --accent-hover: #2563eb; 16 --accent-hover: #93c5fd;
16 --success: #10b981; 17 --success: #10b981;
17 --warning: #f59e0b; 18 --warning: #f59e0b;
18 --danger: #ef4444; 19 --danger: #ef4444;
19} 20}
20 21
22/* ── Light theme overrides ───────────────────────────────────── */
23html[data-theme="light"] {
24 --bg-primary: #f4f4f2;
25 --bg-secondary: #e8e8e5;
26 --bg-tertiary: #d8d8d4;
27 --border: #b4b4b0;
28 --text-primary: #1a1a18;
29 --text-secondary: #5a5a56;
30 --accent: #2563eb;
31 --accent-hover: #1d4ed8;
32 --success: #059669;
33 --warning: #d97706;
34 --danger: #dc2626;
35}
36
37/* ── Base ────────────────────────────────────────────────────── */
21body { 38body {
22 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; 39 font-family: "SF Mono", "Cascadia Code", "JetBrains Mono", "Fira Code",
40 Monaco, "Courier New", monospace;
23 background: var(--bg-primary); 41 background: var(--bg-primary);
24 color: var(--text-primary); 42 color: var(--text-primary);
25 overflow: hidden; 43 overflow: hidden;
44 font-size: 13px;
26} 45}
27 46
28.app { 47.app {
@@ -31,12 +50,12 @@ body {
31 height: 100vh; 50 height: 100vh;
32} 51}
33 52
34/* Header */ 53/* ── Header ──────────────────────────────────────────────────── */
35.header { 54.header {
36 display: flex; 55 display: flex;
37 justify-content: space-between; 56 justify-content: space-between;
38 align-items: center; 57 align-items: center;
39 padding: 12px 16px; 58 padding: 10px 16px;
40 background: var(--bg-secondary); 59 background: var(--bg-secondary);
41 border-bottom: 1px solid var(--border); 60 border-bottom: 1px solid var(--border);
42 -webkit-app-region: drag; 61 -webkit-app-region: drag;
@@ -50,15 +69,30 @@ body {
50 -webkit-app-region: no-drag; 69 -webkit-app-region: no-drag;
51} 70}
52 71
72/* App wordmark */
73.app-wordmark {
74 font-size: 12px;
75 font-weight: 700;
76 letter-spacing: 0.15em;
77 text-transform: uppercase;
78 color: var(--text-primary);
79 padding-right: 12px;
80 border-right: 1px solid var(--border);
81 margin-right: 4px;
82 user-select: none;
83 white-space: nowrap;
84}
85
53.header select, 86.header select,
54.header button { 87.header button {
55 padding: 6px 12px; 88 padding: 5px 10px;
56 background: var(--bg-tertiary); 89 background: var(--bg-tertiary);
57 border: 1px solid var(--border); 90 border: 1px solid var(--border);
58 border-radius: 4px; 91 border-radius: 2px;
59 color: var(--text-primary); 92 color: var(--text-primary);
60 cursor: pointer; 93 cursor: pointer;
61 font-size: 13px; 94 font-size: 12px;
95 font-family: inherit;
62} 96}
63 97
64.header button:hover { 98.header button:hover {
@@ -68,8 +102,8 @@ body {
68.header button.btn-delete { 102.header button.btn-delete {
69 background: transparent; 103 background: transparent;
70 border: 1px solid var(--border); 104 border: 1px solid var(--border);
71 padding: 6px 8px; 105 padding: 5px 8px;
72 font-size: 14px; 106 font-size: 13px;
73} 107}
74 108
75.header button.btn-delete:hover { 109.header button.btn-delete:hover {
@@ -77,15 +111,32 @@ body {
77 border-color: var(--danger); 111 border-color: var(--danger);
78} 112}
79 113
114/* Theme toggle */
115.theme-toggle {
116 font-size: 11px;
117 letter-spacing: 0.08em;
118 text-transform: lowercase;
119 opacity: 0.7;
120 transition: opacity 0.15s;
121}
122
123.theme-toggle:hover {
124 opacity: 1;
125 background: var(--bg-tertiary) !important;
126}
127
128/* Phase indicator */
80.phase-indicator { 129.phase-indicator {
81 display: flex; 130 display: flex;
82 gap: 4px; 131 gap: 4px;
83} 132}
84 133
85.phase-step { 134.phase-step {
86 padding: 4px 12px; 135 padding: 3px 10px;
87 font-size: 12px; 136 font-size: 11px;
88 border-radius: 4px; 137 letter-spacing: 0.07em;
138 text-transform: uppercase;
139 border-radius: 2px;
89 background: var(--bg-tertiary); 140 background: var(--bg-tertiary);
90 color: var(--text-secondary); 141 color: var(--text-secondary);
91} 142}
@@ -100,14 +151,14 @@ body {
100 color: white; 151 color: white;
101} 152}
102 153
103/* Main Content */ 154/* ── Main Content ─────────────────────────────────────────────── */
104.main-content { 155.main-content {
105 flex: 1; 156 flex: 1;
106 display: flex; 157 display: flex;
107 overflow: hidden; 158 overflow: hidden;
108} 159}
109 160
110/* Document Pane */ 161/* ── Document Pane ───────────────────────────────────────────── */
111.document-pane { 162.document-pane {
112 flex: 1; 163 flex: 1;
113 display: flex; 164 display: flex;
@@ -121,21 +172,29 @@ body {
121 display: flex; 172 display: flex;
122 justify-content: space-between; 173 justify-content: space-between;
123 align-items: center; 174 align-items: center;
124 padding: 8px 16px; 175 padding: 7px 16px;
125 background: var(--bg-secondary); 176 background: var(--bg-secondary);
126 border-bottom: 1px solid var(--border); 177 border-bottom: 1px solid var(--border);
127 font-size: 14px; 178 font-size: 11px;
179 letter-spacing: 0.07em;
180 text-transform: uppercase;
128 color: var(--text-secondary); 181 color: var(--text-secondary);
129} 182}
130 183
131.document-header button { 184.document-header button {
132 padding: 4px 8px; 185 padding: 3px 8px;
133 background: var(--bg-tertiary); 186 background: var(--bg-tertiary);
134 border: 1px solid var(--border); 187 border: 1px solid var(--border);
135 border-radius: 4px; 188 border-radius: 2px;
136 color: var(--text-primary); 189 color: var(--text-primary);
137 cursor: pointer; 190 cursor: pointer;
138 font-size: 12px; 191 font-size: 11px;
192 font-family: inherit;
193 letter-spacing: 0.05em;
194}
195
196.document-header button:hover {
197 background: var(--border);
139} 198}
140 199
141.document-content { 200.document-content {
@@ -145,8 +204,8 @@ body {
145} 204}
146 205
147.document-content.editing { 206.document-content.editing {
148 font-family: "SF Mono", Monaco, "Cascadia Code", monospace; 207 font-family: inherit;
149 font-size: 14px; 208 font-size: 13px;
150 line-height: 1.6; 209 line-height: 1.6;
151 background: var(--bg-primary); 210 background: var(--bg-primary);
152 border: none; 211 border: none;
@@ -179,16 +238,19 @@ body {
179} 238}
180 239
181.document-content.rendered h1 { 240.document-content.rendered h1 {
182 font-size: 28px; 241 font-size: 22px;
183 margin: 24px 0 16px; 242 margin: 24px 0 16px;
243 letter-spacing: -0.01em;
184} 244}
185.document-content.rendered h2 { 245.document-content.rendered h2 {
186 font-size: 22px; 246 font-size: 17px;
187 margin: 20px 0 12px; 247 margin: 20px 0 12px;
188 color: var(--text-secondary); 248 color: var(--text-secondary);
249 text-transform: uppercase;
250 letter-spacing: 0.05em;
189} 251}
190.document-content.rendered h3 { 252.document-content.rendered h3 {
191 font-size: 18px; 253 font-size: 14px;
192 margin: 16px 0 8px; 254 margin: 16px 0 8px;
193} 255}
194.document-content.rendered p { 256.document-content.rendered p {
@@ -198,14 +260,14 @@ body {
198.document-content.rendered code { 260.document-content.rendered code {
199 background: var(--bg-tertiary); 261 background: var(--bg-tertiary);
200 padding: 2px 6px; 262 padding: 2px 6px;
201 border-radius: 4px; 263 border-radius: 2px;
202 font-size: 13px; 264 font-size: 12px;
203 font-family: "SF Mono", Monaco, "Cascadia Code", monospace; 265 font-family: inherit;
204} 266}
205.document-content.rendered pre { 267.document-content.rendered pre {
206 background: var(--bg-tertiary); 268 background: var(--bg-tertiary);
207 padding: 16px; 269 padding: 16px;
208 border-radius: 8px; 270 border-radius: 2px;
209 overflow-x: auto; 271 overflow-x: auto;
210 margin: 16px 0; 272 margin: 16px 0;
211} 273}
@@ -238,17 +300,20 @@ body {
238 width: 100%; 300 width: 100%;
239 border-collapse: collapse; 301 border-collapse: collapse;
240 margin: 16px 0; 302 margin: 16px 0;
241 font-size: 14px; 303 font-size: 12px;
242} 304}
243.document-content.rendered th, 305.document-content.rendered th,
244.document-content.rendered td { 306.document-content.rendered td {
245 padding: 10px 12px; 307 padding: 8px 12px;
246 text-align: left; 308 text-align: left;
247 border: 1px solid var(--border); 309 border: 1px solid var(--border);
248} 310}
249.document-content.rendered th { 311.document-content.rendered th {
250 background: var(--bg-tertiary); 312 background: var(--bg-tertiary);
251 font-weight: 600; 313 font-weight: 600;
314 text-transform: uppercase;
315 letter-spacing: 0.06em;
316 font-size: 11px;
252} 317}
253.document-content.rendered tr:nth-child(even) td { 318.document-content.rendered tr:nth-child(even) td {
254 background: var(--bg-secondary); 319 background: var(--bg-secondary);
@@ -280,11 +345,13 @@ body {
280 background: var(--accent); 345 background: var(--accent);
281 color: white; 346 color: white;
282 padding: 2px 8px; 347 padding: 2px 8px;
283 border-radius: 4px; 348 border-radius: 2px;
284 font-size: 11px; 349 font-size: 10px;
350 letter-spacing: 0.08em;
351 text-transform: uppercase;
285} 352}
286 353
287/* Chat Pane */ 354/* ── Chat Pane ───────────────────────────────────────────────── */
288.chat-pane { 355.chat-pane {
289 width: 380px; 356 width: 380px;
290 display: flex; 357 display: flex;
@@ -299,11 +366,11 @@ body {
299} 366}
300 367
301.message { 368.message {
302 margin-bottom: 12px; 369 margin-bottom: 10px;
303 padding: 10px 14px; 370 padding: 9px 13px;
304 border-radius: 8px; 371 border-radius: 4px;
305 max-width: 90%; 372 max-width: 90%;
306 font-size: 14px; 373 font-size: 13px;
307 line-height: 1.5; 374 line-height: 1.5;
308 white-space: pre-wrap; 375 white-space: pre-wrap;
309} 376}
@@ -311,6 +378,7 @@ body {
311.message.user { 378.message.user {
312 background: var(--accent); 379 background: var(--accent);
313 margin-left: auto; 380 margin-left: auto;
381 color: white;
314} 382}
315 383
316.message.assistant { 384.message.assistant {
@@ -331,27 +399,38 @@ body {
331 399
332.chat-input input { 400.chat-input input {
333 flex: 1; 401 flex: 1;
334 padding: 10px 14px; 402 padding: 9px 13px;
335 background: var(--bg-tertiary); 403 background: var(--bg-tertiary);
336 border: 1px solid var(--border); 404 border: 1px solid var(--border);
337 border-radius: 8px; 405 border-radius: 2px;
338 color: var(--text-primary); 406 color: var(--text-primary);
339 font-size: 14px; 407 font-size: 13px;
408 font-family: inherit;
409 transition: border-color 0.15s, box-shadow 0.15s;
340} 410}
341 411
342.chat-input input:focus { 412.chat-input input:focus {
343 outline: none; 413 outline: none;
344 border-color: var(--accent); 414 border-color: var(--accent);
415 box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.2);
416}
417
418html[data-theme="light"] .chat-input input:focus {
419 box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.2);
345} 420}
346 421
347.chat-input button { 422.chat-input button {
348 padding: 10px 16px; 423 padding: 9px 15px;
349 background: var(--accent); 424 background: var(--accent);
350 border: none; 425 border: none;
351 border-radius: 8px; 426 border-radius: 2px;
352 color: white; 427 color: white;
353 cursor: pointer; 428 cursor: pointer;
354 font-size: 14px; 429 font-size: 12px;
430 font-family: inherit;
431 letter-spacing: 0.05em;
432 text-transform: uppercase;
433 transition: background 0.15s;
355} 434}
356 435
357.chat-input button:hover:not(:disabled) { 436.chat-input button:hover:not(:disabled) {
@@ -359,16 +438,16 @@ body {
359} 438}
360 439
361.chat-input button:disabled { 440.chat-input button:disabled {
362 opacity: 0.5; 441 opacity: 0.4;
363 cursor: not-allowed; 442 cursor: not-allowed;
364} 443}
365 444
366/* Action Bar */ 445/* ── Action Bar ──────────────────────────────────────────────── */
367.action-bar { 446.action-bar {
368 display: flex; 447 display: flex;
369 justify-content: space-between; 448 justify-content: space-between;
370 align-items: center; 449 align-items: center;
371 padding: 12px 16px; 450 padding: 10px 16px;
372 background: var(--bg-secondary); 451 background: var(--bg-secondary);
373 border-top: 1px solid var(--border); 452 border-top: 1px solid var(--border);
374} 453}
@@ -388,9 +467,9 @@ body {
388 467
389.token-bar { 468.token-bar {
390 width: 100px; 469 width: 100px;
391 height: 6px; 470 height: 4px;
392 background: var(--bg-tertiary); 471 background: var(--bg-tertiary);
393 border-radius: 3px; 472 border-radius: 1px;
394 overflow: hidden; 473 overflow: hidden;
395} 474}
396 475
@@ -400,7 +479,9 @@ body {
400} 479}
401 480
402.token-label { 481.token-label {
403 font-size: 12px; 482 font-size: 10px;
483 letter-spacing: 0.08em;
484 text-transform: uppercase;
404 color: var(--text-secondary); 485 color: var(--text-secondary);
405} 486}
406 487
@@ -408,7 +489,9 @@ body {
408 display: flex; 489 display: flex;
409 align-items: center; 490 align-items: center;
410 gap: 6px; 491 gap: 6px;
411 font-size: 13px; 492 font-size: 11px;
493 letter-spacing: 0.05em;
494 text-transform: uppercase;
412 color: var(--text-secondary); 495 color: var(--text-secondary);
413 cursor: pointer; 496 cursor: pointer;
414} 497}
@@ -418,13 +501,16 @@ body {
418} 501}
419 502
420.btn-secondary { 503.btn-secondary {
421 padding: 8px 16px; 504 padding: 6px 14px;
422 background: var(--bg-tertiary); 505 background: var(--bg-tertiary);
423 border: 1px solid var(--border); 506 border: 1px solid var(--border);
424 border-radius: 6px; 507 border-radius: 2px;
425 color: var(--text-primary); 508 color: var(--text-primary);
426 cursor: pointer; 509 cursor: pointer;
427 font-size: 14px; 510 font-size: 12px;
511 font-family: inherit;
512 letter-spacing: 0.05em;
513 transition: background 0.15s;
428} 514}
429 515
430.btn-secondary:hover:not(:disabled) { 516.btn-secondary:hover:not(:disabled) {
@@ -432,19 +518,23 @@ body {
432} 518}
433 519
434.btn-secondary:disabled { 520.btn-secondary:disabled {
435 opacity: 0.5; 521 opacity: 0.4;
436 cursor: not-allowed; 522 cursor: not-allowed;
437} 523}
438 524
439.btn-primary { 525.btn-primary {
440 padding: 8px 20px; 526 padding: 6px 18px;
441 background: var(--accent); 527 background: var(--accent);
442 border: none; 528 border: none;
443 border-radius: 6px; 529 border-radius: 2px;
444 color: white; 530 color: white;
445 cursor: pointer; 531 cursor: pointer;
446 font-weight: 500; 532 font-weight: 600;
447 font-size: 14px; 533 font-size: 12px;
534 font-family: inherit;
535 letter-spacing: 0.07em;
536 text-transform: uppercase;
537 transition: background 0.15s;
448} 538}
449 539
450.btn-primary:hover:not(:disabled) { 540.btn-primary:hover:not(:disabled) {
@@ -452,16 +542,18 @@ body {
452} 542}
453 543
454.btn-primary:disabled { 544.btn-primary:disabled {
455 opacity: 0.5; 545 opacity: 0.4;
456 cursor: not-allowed; 546 cursor: not-allowed;
457} 547}
458 548
459.implementing-status { 549.implementing-status {
460 color: var(--success); 550 color: var(--success);
461 font-size: 14px; 551 font-size: 11px;
552 letter-spacing: 0.1em;
553 text-transform: uppercase;
462} 554}
463 555
464/* Error Bar */ 556/* ── Error Bar ───────────────────────────────────────────────── */
465.error-bar { 557.error-bar {
466 display: flex; 558 display: flex;
467 justify-content: space-between; 559 justify-content: space-between;
@@ -469,14 +561,15 @@ body {
469 padding: 8px 16px; 561 padding: 8px 16px;
470 background: var(--danger); 562 background: var(--danger);
471 color: white; 563 color: white;
472 font-size: 14px; 564 font-size: 12px;
565 letter-spacing: 0.03em;
473} 566}
474 567
475.error-bar button { 568.error-bar button {
476 background: none; 569 background: none;
477 border: none; 570 border: none;
478 color: white; 571 color: white;
479 font-size: 18px; 572 font-size: 16px;
480 cursor: pointer; 573 cursor: pointer;
481 padding: 0 4px; 574 padding: 0 4px;
482} 575}
@@ -485,17 +578,21 @@ body {
485 opacity: 0.8; 578 opacity: 0.8;
486} 579}
487 580
488/* Onboarding */ 581/* ── Onboarding ──────────────────────────────────────────────── */
489.onboarding h1 { 582.onboarding h1 {
490 font-size: 32px; 583 font-size: 24px;
491 margin-bottom: 8px; 584 margin-bottom: 8px;
585 letter-spacing: 0.05em;
586 text-transform: uppercase;
492} 587}
493 588
494.onboarding h2 { 589.onboarding h2 {
495 font-size: 20px; 590 font-size: 13px;
496 margin-top: 28px; 591 margin-top: 28px;
497 margin-bottom: 12px; 592 margin-bottom: 12px;
498 color: var(--accent); 593 color: var(--accent);
594 text-transform: uppercase;
595 letter-spacing: 0.1em;
499} 596}
500 597
501.onboarding p { 598.onboarding p {
@@ -515,13 +612,13 @@ body {
515.onboarding pre { 612.onboarding pre {
516 background: var(--bg-tertiary); 613 background: var(--bg-tertiary);
517 padding: 12px 16px; 614 padding: 12px 16px;
518 border-radius: 6px; 615 border-radius: 2px;
519 margin: 12px 0; 616 margin: 12px 0;
520} 617}
521 618
522.onboarding code { 619.onboarding code {
523 font-family: "SF Mono", Monaco, monospace; 620 font-family: inherit;
524 font-size: 13px; 621 font-size: 12px;
525} 622}
526 623
527.onboarding a { 624.onboarding a {
@@ -538,5 +635,5 @@ body {
538 padding: 16px; 635 padding: 16px;
539 background: var(--bg-tertiary); 636 background: var(--bg-tertiary);
540 border-left: 3px solid var(--accent); 637 border-left: 3px solid var(--accent);
541 border-radius: 0 6px 6px 0; 638 border-radius: 0 2px 2px 0;
542} 639}