@leadertechie/personal-site-kit 0.1.0-alpha.25 → 0.1.0-alpha.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,81 +8,121 @@ const aboutmeStyles = css`
8
8
  }
9
9
 
10
10
  .aboutme {
11
+ /* Layout */
11
12
  display: block;
12
- padding: 20px;
13
- max-width: 800px;
13
+
14
+ /* Box */
15
+ padding: var(--space-lg, 2lh);
16
+ max-width: var(--content-medium, 960px);
14
17
  margin: 0 auto;
15
- line-height: 1.6;
18
+
19
+ /* Typography */
20
+ line-height: var(--line-height-relaxed, 1.6);
21
+ color: var(--text-primary, #0b1120);
16
22
  }
17
23
 
18
24
  .aboutme h2 {
19
- color: var(--link-color);
20
- margin-bottom: 15px;
21
- font-size: 2em;
25
+ /* Typography */
26
+ font-size: var(--font-size-h2, clamp(1.35rem, 2.25vw, 1.75rem));
27
+ color: var(--text-primary, #0b1120);
28
+ font-weight: var(--font-weight-semibold, 600);
29
+
30
+ /* Box */
31
+ margin-bottom: var(--space-sm, 0.5lh);
22
32
  }
23
33
 
24
34
  .aboutme h3 {
25
- color: var(--link-color);
26
- margin-bottom: 10px;
35
+ /* Typography */
36
+ font-size: var(--font-size-h3, clamp(1.15rem, 1.75vw, 1.375rem));
37
+ color: var(--text-primary, #0b1120);
38
+ font-weight: var(--font-weight-semibold, 600);
39
+
40
+ /* Box */
41
+ margin-bottom: var(--space-2xs, 0.25lh);
27
42
  }
28
43
 
29
44
  .aboutme p {
30
- margin-bottom: 10px;
45
+ margin-bottom: var(--space-2xs, 0.25lh);
31
46
  text-align: left;
32
47
  }
33
48
 
34
49
  .aboutme ul {
35
50
  list-style-type: disc;
36
- margin-left: 20px;
51
+ margin-left: var(--space-lg, 2lh);
37
52
  text-align: left;
38
53
  }
39
54
 
40
55
  .aboutme li {
41
- margin-bottom: 5px;
56
+ margin-bottom: var(--space-3xs, 0.125lh);
42
57
  }
43
58
 
44
59
  .aboutme .profile-picture {
60
+ /* Box */
45
61
  width: 150px;
46
62
  height: 150px;
47
- border-radius: 50%;
63
+ border-radius: var(--radius-full, 9999px);
48
64
  object-fit: cover;
49
- margin-bottom: 20px;
50
- border: 3px solid var(--link-color);
51
- box-shadow:
52
- 0 0 0 4px var(--link-color),
53
- 0 8px 16px rgba(0, 0, 0, 0.2),
54
- 0 12px 24px rgba(0, 0, 0, 0.15);
65
+ margin-bottom: var(--space-md, 1lh);
66
+
67
+ /* Visual */
68
+ border: 3px solid var(--border-accent, #2563eb);
69
+ box-shadow:
70
+ 0 0 0 4px color-mix(in srgb, var(--brand-color, #2563eb), transparent 80%),
71
+ var(--shadow-md, 0 4px 6px -2px oklch(0% 0 0 / 0.06)),
72
+ var(--shadow-lg, 0 10px 20px -4px oklch(0% 0 0 / 0.08));
55
73
  }
56
74
 
57
75
  .aboutme .profile-section {
76
+ /* Layout */
58
77
  text-align: center;
59
- background: var(--card-bg, var(--background-color, #fff));
60
- border-radius: 16px;
61
- padding: 2rem;
62
- box-shadow:
63
- 0 4px 6px rgba(0, 0, 0, 0.07),
64
- 0 10px 20px rgba(0, 0, 0, 0.05);
65
- margin-bottom: 2rem;
78
+
79
+ /* Box */
80
+ background: var(--bg-primary, #ffffff);
81
+ border: 1px solid var(--border-subtle, #e5e7eb);
82
+ border-radius: var(--radius-xl, 1rem);
83
+ padding: var(--space-lg, 2lh);
84
+ box-shadow: var(--shadow-md, 0 4px 6px -2px oklch(0% 0 0 / 0.06));
85
+
86
+ /* Box model */
87
+ margin-bottom: var(--space-lg, 2lh);
88
+ }
89
+
90
+ .aboutme .profile-section::before {
91
+ content: '';
92
+ display: block;
93
+ width: 3rem;
94
+ height: var(--accent-line-thickness, 3px);
95
+ background: linear-gradient(
96
+ 90deg,
97
+ var(--brand-color, #2563eb),
98
+ var(--accent-secondary, #6366f1)
99
+ );
100
+ margin: 0 auto var(--space-md, 1lh) auto;
101
+ border-radius: var(--radius-full, 9999px);
66
102
  }
67
103
 
68
104
  .aboutme .profile-title {
69
- color: var(--secondary-text, #666);
105
+ /* Typography */
106
+ color: var(--text-secondary, #475569);
107
+ font-size: var(--font-size-body, clamp(0.9375rem, 1.15vw, 1rem));
108
+
109
+ /* Box */
70
110
  margin-bottom: 0;
71
111
  text-align: center;
72
112
  }
73
113
 
74
114
  .aboutme h1 {
75
- margin-bottom: 0.5rem;
115
+ margin-bottom: var(--space-sm, 0.5lh);
76
116
  }
77
117
 
78
118
  .aboutme .loading {
79
119
  text-align: center;
80
- padding: 20px;
81
- color: var(--text-color);
120
+ padding: var(--space-lg, 2lh);
121
+ color: var(--text-secondary, #475569);
82
122
  }
83
123
 
84
124
  .aboutme .content-section {
85
- font-family: Arial, sans-serif;
125
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
86
126
  }
87
127
  `;
88
128
  async function fetchAboutMe(url) {
@@ -237,15 +277,20 @@ MyAboutme.styles = aboutmeStyles;
237
277
  __runInitializers$f(_init$f, 1, MyAboutme);
238
278
  const adminStyles = css`
239
279
  :host {
280
+ /* Layout */
240
281
  display: block;
282
+
283
+ /* Box */
241
284
  width: 100%;
242
285
  max-width: 100%;
243
- padding: 20px;
244
- font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
245
- color: var(--text-color, #213547);
246
- background-color: var(--background-color, #fff);
286
+ padding: var(--space-lg, 2lh);
247
287
  min-height: 100vh;
248
288
  box-sizing: border-box;
289
+
290
+ /* Typography */
291
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
292
+ color: var(--text-primary, #0b1120);
293
+ background-color: var(--bg-primary, #ffffff);
249
294
  }
250
295
 
251
296
  *, *::before, *::after {
@@ -253,109 +298,136 @@ const adminStyles = css`
253
298
  }
254
299
 
255
300
  .container {
301
+ /* Box */
256
302
  width: 100%;
257
- max-width: 900px;
303
+ max-width: var(--content-medium, 960px);
258
304
  margin: 0 auto;
259
- padding: 1rem;
305
+ padding: var(--space-md, 1lh);
260
306
  }
261
307
 
262
308
  .login-box {
263
- border: 1px solid var(--border-color, #e0e0e0);
264
- padding: 3rem 2.5rem;
265
- border-radius: 16px;
309
+ /* Layout */
310
+ text-align: center;
311
+
312
+ /* Box */
313
+ border: 1px solid var(--border-subtle, #e5e7eb);
314
+ padding: var(--space-xl, 3lh) var(--space-lg, 2lh);
315
+ border-radius: var(--radius-xl, 1rem);
266
316
  width: 100%;
267
317
  max-width: 420px;
268
318
  margin: 80px auto;
269
- text-align: center;
270
- background: var(--card-bg, #fff);
271
- box-shadow: 0 4px 6px rgba(0,0,0,0.07), 0 10px 20px rgba(0,0,0,0.05);
319
+ background: var(--bg-primary, #ffffff);
320
+ box-shadow: var(--shadow-md, 0 4px 6px -2px oklch(0% 0 0 / 0.06));
272
321
  }
273
322
 
274
323
  .login-box h2 {
275
- margin: 0 0 0.5rem 0;
276
- font-size: 1.75rem;
277
- font-weight: 600;
278
- color: var(--text-color, #213547);
324
+ /* Typography */
325
+ font-size: var(--font-size-h2, clamp(1.35rem, 2.25vw, 1.75rem));
326
+ font-weight: var(--font-weight-semibold, 600);
327
+ color: var(--text-primary, #0b1120);
328
+
329
+ /* Box */
330
+ margin: 0 0 var(--space-sm, 0.5lh) 0;
279
331
  }
280
332
 
281
333
  .login-box p {
282
- color: var(--secondary-text, #666);
283
- margin-bottom: 1.5rem;
334
+ color: var(--text-secondary, #475569);
335
+ margin-bottom: var(--space-md, 1lh);
284
336
  }
285
337
 
286
338
  .nav-tabs {
339
+ /* Layout */
287
340
  display: flex;
288
- gap: 8px;
289
- margin-bottom: 24px;
290
- flex-wrap: wrap;
291
- padding: 0.5rem;
292
- background: var(--card-bg, #fff);
293
- border-radius: 12px;
294
- box-shadow: 0 2px 4px rgba(0,0,0,0.05);
341
+ gap: var(--space-2xs, 0.25lh);
342
+
343
+ /* Box */
344
+ margin-bottom: var(--space-lg, 2lh);
345
+ padding: var(--space-sm, 0.5lh);
346
+ background: var(--bg-primary, #ffffff);
347
+ border: 1px solid var(--border-subtle, #e5e7eb);
348
+ border-radius: var(--radius-lg, 0.75rem);
349
+ box-shadow: var(--shadow-sm, 0 1px 2px oklch(0% 0 0 / 0.05));
295
350
  width: 100%;
351
+ flex-wrap: wrap;
296
352
  }
297
353
 
298
354
  .nav-tab {
299
- padding: 0.6rem 1.25rem;
355
+ /* Box */
356
+ padding: var(--space-sm, 0.5lh) var(--space-md, 1lh);
300
357
  border: none;
301
- border-radius: 8px;
302
- cursor: pointer;
358
+ border-radius: var(--radius-sm, 0.375rem);
303
359
  background: transparent;
304
- color: var(--text-color, #213547);
305
- font-size: 0.95rem;
306
- font-weight: 500;
307
- transition: all 0.2s ease;
360
+
361
+ /* Typography */
362
+ color: var(--text-primary, #0b1120);
363
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
364
+ font-weight: var(--font-weight-medium, 500);
365
+ cursor: pointer;
366
+
367
+ /* Misc */
368
+ transition: all var(--transition-fast, 0.15s ease);
308
369
  }
309
370
 
310
371
  .nav-tab:hover {
311
- background: var(--nav-link-hover-bg, #f0f0f0);
312
- color: var(--link-color, #646cff);
372
+ background: var(--bg-secondary, #f8fafc);
373
+ color: var(--link-color, #2563eb);
313
374
  }
314
375
 
315
376
  .nav-tab.active {
316
- background: var(--link-color, #646cff);
317
- color: white;
318
- box-shadow: 0 2px 8px rgba(100, 108, 255, 0.3);
377
+ background: var(--brand-color, #2563eb);
378
+ color: var(--text-inverse, #ffffff);
379
+ box-shadow: 0 2px 8px color-mix(in srgb, var(--brand-color, #2563eb), transparent 70%);
319
380
  }
320
381
 
321
382
  .section {
383
+ /* Box */
322
384
  width: 100%;
323
- border: none;
324
- padding: 24px;
325
- border-radius: 16px;
326
- background: var(--card-bg, #fff);
327
- box-shadow: 0 4px 6px rgba(0,0,0,0.07), 0 10px 20px rgba(0,0,0,0.05);
328
- margin-bottom: 20px;
385
+ border: 1px solid var(--border-subtle, #e5e7eb);
386
+ padding: var(--space-lg, 2lh);
387
+ border-radius: var(--radius-lg, 0.75rem);
388
+ background: var(--bg-primary, #ffffff);
389
+ box-shadow: var(--shadow-sm, 0 1px 2px oklch(0% 0 0 / 0.05));
390
+ margin-bottom: var(--space-md, 1lh);
329
391
  min-height: 450px;
330
392
  box-sizing: border-box;
331
393
  }
332
394
 
333
395
  .section h3 {
334
- margin: 0 0 0.5rem 0;
335
- font-size: 1.25rem;
336
- font-weight: 600;
337
- color: var(--text-color, #213547);
396
+ /* Typography */
397
+ font-size: var(--font-size-h3, clamp(1.15rem, 1.75vw, 1.375rem));
398
+ font-weight: var(--font-weight-semibold, 600);
399
+ color: var(--text-primary, #0b1120);
400
+
401
+ /* Box */
402
+ margin: 0 0 var(--space-sm, 0.5lh) 0;
403
+
404
+ /* Layout */
338
405
  display: flex;
339
406
  align-items: center;
340
- gap: 0.5rem;
407
+ gap: var(--space-sm, 0.5lh);
341
408
  }
342
409
 
343
410
  .file-list {
344
- margin-top: 20px;
411
+ margin-top: var(--space-md, 1lh);
345
412
  }
346
413
 
347
414
  .file-item {
415
+ /* Layout */
348
416
  display: flex;
349
417
  justify-content: space-between;
350
418
  align-items: center;
351
- padding: 12px 16px;
352
- border-bottom: 1px solid var(--border-color, #eee);
353
- border-radius: 8px;
354
- transition: background 0.15s ease;
419
+
420
+ /* Box */
421
+ padding: var(--space-sm, 0.5lh) var(--space-md, 1lh);
422
+ border-bottom: 1px solid var(--border-subtle, #e5e7eb);
423
+ border-radius: var(--radius-sm, 0.375rem);
424
+
425
+ /* Misc */
426
+ transition: background var(--transition-fast, 0.15s ease);
355
427
  }
356
428
 
357
429
  .file-item:hover {
358
- background: var(--nav-link-hover-bg, #f8f9fa);
430
+ background: var(--bg-secondary, #f8fafc);
359
431
  }
360
432
 
361
433
  .file-item:last-child {
@@ -364,142 +436,161 @@ const adminStyles = css`
364
436
 
365
437
  button {
366
438
  cursor: pointer;
367
- padding: 10px 20px;
368
- border-radius: 8px;
369
- font-weight: 500;
370
- font-size: 0.95rem;
371
- transition: all 0.2s ease;
439
+ padding: var(--space-sm, 0.5lh) var(--space-md, 1lh);
440
+ border-radius: var(--radius-sm, 0.375rem);
441
+ font-weight: var(--font-weight-medium, 500);
442
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
443
+ transition: all var(--transition-fast, 0.15s ease);
372
444
  border: none;
373
445
  }
374
446
 
375
447
  .btn-primary {
376
- background: var(--link-color, #646cff);
377
- color: white;
378
- box-shadow: 0 2px 4px rgba(100, 108, 255, 0.25);
448
+ background: var(--brand-color, #2563eb);
449
+ color: var(--text-inverse, #ffffff);
450
+ box-shadow: 0 2px 4px color-mix(in srgb, var(--brand-color, #2563eb), transparent 75%);
379
451
  }
380
452
 
381
453
  .btn-primary:hover {
382
- background: var(--link-hover-color, #535bf2);
454
+ background: color-mix(in srgb, var(--brand-color, #2563eb), black 15%);
383
455
  transform: translateY(-1px);
384
- box-shadow: 0 4px 8px rgba(100, 108, 255, 0.3);
456
+ box-shadow: 0 4px 8px color-mix(in srgb, var(--brand-color, #2563eb), transparent 70%);
385
457
  }
386
458
 
387
459
  .btn-danger {
388
- color: #dc3545;
460
+ color: var(--color-danger, #ef4444);
389
461
  background: transparent;
390
- border: 1px solid #dc3545;
391
- padding: 6px 12px;
392
- font-size: 0.85rem;
462
+ border: 1px solid var(--color-danger, #ef4444);
463
+ padding: var(--space-2xs, 0.25lh) var(--space-sm, 0.5lh);
464
+ font-size: var(--font-size-tiny, clamp(0.6875rem, 0.85vw, 0.75rem));
393
465
  }
394
466
 
395
467
  .btn-danger:hover {
396
- background: #dc3545;
397
- color: white;
468
+ background: var(--color-danger, #ef4444);
469
+ color: var(--text-inverse, #ffffff);
398
470
  }
399
471
 
400
472
  .btn-secondary {
401
- background: var(--nav-link-hover-bg, #f0f0f0);
402
- color: var(--text-color, #333);
403
- border: none;
404
- font-size: 0.85rem;
405
- padding: 8px 16px;
473
+ background: var(--bg-secondary, #f8fafc);
474
+ color: var(--text-primary, #0b1120);
475
+ border: 1px solid var(--border-subtle, #e5e7eb);
476
+ font-size: var(--font-size-tiny, clamp(0.6875rem, 0.85vw, 0.75rem));
477
+ padding: var(--space-2xs, 0.25lh) var(--space-sm, 0.5lh);
406
478
  }
407
479
 
408
480
  .btn-secondary:hover {
409
- background: #e0e0e0;
481
+ background: var(--bg-tertiary, #f1f5f9);
482
+ border-color: var(--border-color, #d1d5db);
410
483
  }
411
484
 
412
485
  input[type="text"], input[type="password"], input[type="file"] {
413
- padding: 12px 14px;
486
+ /* Box */
487
+ padding: var(--space-sm, 0.5lh) var(--space-md, 1lh);
414
488
  width: 100%;
489
+ margin-bottom: var(--space-sm, 0.5lh);
490
+ border: 1.5px solid var(--border-subtle, #e5e7eb);
491
+ border-radius: var(--radius-md, 0.5rem);
492
+ background-color: var(--bg-primary, #ffffff);
493
+
494
+ /* Typography */
495
+ color: var(--text-primary, #0b1120);
496
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
415
497
  box-sizing: border-box;
416
- margin-bottom: 12px;
417
- border: 2px solid var(--border-color, #e0e0e0);
418
- border-radius: 10px;
419
- background-color: var(--background-color, #fff);
420
- color: var(--text-color, #213547);
421
- font-size: 0.95rem;
422
- transition: border-color 0.2s ease, box-shadow 0.2s ease;
498
+
499
+ /* Misc */
500
+ transition: border-color var(--transition-fast, 0.15s ease),
501
+ box-shadow var(--transition-fast, 0.15s ease);
423
502
  }
424
503
 
425
504
  input[type="text"]:focus, input[type="password"]:focus {
426
505
  outline: none;
427
- border-color: var(--link-color, #646cff);
428
- box-shadow: 0 0 0 3px rgba(100, 108, 255, 0.15);
506
+ border-color: var(--brand-color, #2563eb);
507
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand-color, #2563eb), transparent 85%);
429
508
  }
430
509
 
431
510
  input[type="file"] {
432
- padding: 10px;
511
+ padding: var(--space-sm, 0.5lh);
433
512
  border-style: dashed;
434
513
  cursor: pointer;
435
514
  }
436
515
 
437
516
  input[type="file"]:hover {
438
- border-color: var(--link-color, #646cff);
439
- background: rgba(100, 108, 255, 0.03);
517
+ border-color: var(--brand-color, #2563eb);
518
+ background: color-mix(in srgb, var(--brand-color, #2563eb), transparent 97%);
440
519
  }
441
520
 
442
521
  .help-text {
443
- color: var(--secondary-text, #666);
444
- font-size: 0.9rem;
445
- margin-bottom: 16px;
446
- line-height: 1.5;
522
+ color: var(--text-secondary, #475569);
523
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
524
+ margin-bottom: var(--space-md, 1lh);
525
+ line-height: var(--line-height-normal, 1.5);
447
526
  }
448
527
 
449
528
  .status-message {
450
- padding: 12px 16px;
451
- border-radius: 8px;
452
- margin-bottom: 16px;
453
- font-size: 0.9rem;
454
- background: var(--nav-link-hover-bg, #f5f5f5);
455
- color: var(--text-color, #333);
529
+ padding: var(--space-sm, 0.5lh) var(--space-md, 1lh);
530
+ border-radius: var(--radius-sm, 0.375rem);
531
+ margin-bottom: var(--space-md, 1lh);
532
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
533
+ background: var(--bg-secondary, #f8fafc);
534
+ color: var(--text-primary, #0b1120);
535
+ border: 1px solid var(--border-subtle, #e5e7eb);
456
536
  }
457
537
 
458
538
  .status-message.success {
459
- background: linear-gradient(135deg, #e8f5e9, #c8e6c9);
460
- color: #2e7d32;
461
- border: 1px solid #a5d6a7;
539
+ background: color-mix(in srgb, var(--color-success, #10b981), transparent 90%);
540
+ color: color-mix(in srgb, var(--color-success, #10b981), black 30%);
541
+ border: 1px solid color-mix(in srgb, var(--color-success, #10b981), transparent 60%);
462
542
  }
463
543
 
464
544
  .status-message.error {
465
- background: linear-gradient(135deg, #ffebee, #ffcdd2);
466
- color: #c62828;
467
- border: 1px solid #ef9a9a;
545
+ background: color-mix(in srgb, var(--color-danger, #ef4444), transparent 90%);
546
+ color: color-mix(in srgb, var(--color-danger, #ef4444), black 20%);
547
+ border: 1px solid color-mix(in srgb, var(--color-danger, #ef4444), transparent 60%);
468
548
  }
469
549
 
470
550
  .header {
551
+ /* Layout */
471
552
  display: flex;
472
553
  justify-content: space-between;
473
554
  align-items: center;
474
- margin-bottom: 24px;
475
- padding-bottom: 16px;
476
- border-bottom: 2px solid var(--border-color, #eee);
555
+
556
+ /* Box */
557
+ margin-bottom: var(--space-lg, 2lh);
558
+ padding-bottom: var(--space-md, 1lh);
559
+ border-bottom: 1px solid var(--border-subtle, #e5e7eb);
560
+ gap: var(--space-sm, 0.5lh);
561
+ flex-wrap: wrap;
477
562
  }
478
563
 
479
564
  .header h1 {
565
+ /* Typography */
566
+ font-size: var(--font-size-h2, clamp(1.35rem, 2.25vw, 1.75rem));
567
+ font-weight: var(--font-weight-semibold, 600);
568
+ color: var(--text-primary, #0b1120);
569
+
570
+ /* Box */
480
571
  margin: 0;
481
- font-size: 1.5rem;
482
- font-weight: 600;
483
- color: var(--text-color, #213547);
484
572
  }
485
573
 
486
- .mt-1 { margin-top: 12px; }
487
- .mb-1 { margin-bottom: 1rem; }
574
+ .mt-1 { margin-top: var(--space-sm, 0.5lh); }
575
+ .mb-1 { margin-bottom: var(--space-md, 1lh); }
488
576
 
489
577
  @media (max-width: 600px) {
578
+ :host {
579
+ padding: var(--space-sm, 0.5lh);
580
+ }
490
581
  .container {
491
- padding: 0.5rem;
582
+ padding: var(--space-2xs, 0.25lh);
492
583
  }
493
584
  .section {
494
- padding: 16px;
585
+ padding: var(--space-md, 1lh);
495
586
  }
496
587
  .nav-tabs {
497
- gap: 4px;
498
- padding: 8px;
588
+ gap: var(--space-3xs, 0.125lh);
589
+ padding: var(--space-2xs, 0.25lh);
499
590
  }
500
591
  .nav-tab {
501
- padding: 8px 12px;
502
- font-size: 0.85rem;
592
+ padding: var(--space-2xs, 0.25lh) var(--space-sm, 0.5lh);
593
+ font-size: var(--font-size-tiny, clamp(0.6875rem, 0.85vw, 0.75rem));
503
594
  }
504
595
  }
505
596
  `;
@@ -670,101 +761,172 @@ AdminSection.styles = css`
670
761
 
671
762
  .section {
672
763
  width: 100%;
673
- border: none;
674
- padding: 24px;
675
- border-radius: 16px;
676
- background: var(--card-bg, #fff);
677
- box-shadow: 0 4px 6px rgba(0,0,0,0.07), 0 10px 20px rgba(0,0,0,0.05);
678
- margin-bottom: 20px;
764
+ border: 1px solid var(--border-subtle, #e5e7eb);
765
+ padding: var(--space-lg, 2lh);
766
+ border-radius: var(--radius-lg, 0.75rem);
767
+ background: var(--bg-primary, #ffffff);
768
+ box-shadow: var(--shadow-sm, 0 1px 2px oklch(0% 0 0 / 0.05));
769
+ margin-bottom: var(--space-md, 1lh);
679
770
  min-height: 450px;
680
771
  box-sizing: border-box;
681
772
  }
682
773
 
683
774
  .section h3 {
684
- margin: 0 0 0.5rem 0;
685
- font-size: 1.25rem;
775
+ margin: 0 0 var(--space-sm, 0.5lh) 0;
776
+ font-size: var(--font-size-h3, clamp(1.15rem, 1.75vw, 1.375rem));
777
+ font-weight: var(--font-weight-semibold, 600);
778
+ color: var(--text-primary, #0b1120);
686
779
  }
687
780
 
688
781
  .help-text {
689
- color: var(--secondary-text, #666);
690
- margin-bottom: 1rem;
782
+ color: var(--text-secondary, #475569);
783
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
784
+ margin-bottom: var(--space-md, 1lh);
691
785
  }
692
786
 
693
787
  .current-file {
694
- margin-bottom: 1rem;
695
- padding: 1rem;
696
- background: var(--nav-link-hover-bg, #f5f5f5);
697
- border-radius: 8px;
788
+ margin-bottom: var(--space-md, 1lh);
789
+ padding: var(--space-md, 1lh);
790
+ background: var(--bg-secondary, #f8fafc);
791
+ border: 1px solid var(--border-subtle, #e5e7eb);
792
+ border-radius: var(--radius-sm, 0.375rem);
698
793
  }
699
794
 
700
795
  input[type="text"],
701
796
  input[type="file"] {
702
797
  width: 100%;
703
- padding: 10px;
704
- margin-bottom: 1rem;
705
- border: 1px solid var(--border-color);
706
- border-radius: 4px;
707
- background: var(--background-color);
708
- color: var(--text-color);
798
+ padding: var(--space-sm, 0.5lh) var(--space-md, 1lh);
799
+ margin-bottom: var(--space-sm, 0.5lh);
800
+ border: 1.5px solid var(--border-subtle, #e5e7eb);
801
+ border-radius: var(--radius-md, 0.5rem);
802
+ background: var(--bg-primary, #ffffff);
803
+ color: var(--text-primary, #0b1120);
804
+ font-size: var(--font-size-body, clamp(0.9375rem, 1.15vw, 1rem));
709
805
  box-sizing: border-box;
806
+ transition: border-color var(--transition-fast, 0.15s ease),
807
+ box-shadow var(--transition-fast, 0.15s ease);
808
+ }
809
+
810
+ input:focus {
811
+ outline: none;
812
+ border-color: var(--brand-color, #2563eb);
813
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand-color, #2563eb), transparent 85%);
710
814
  }
711
815
 
712
816
  input[type="file"] {
713
- margin-bottom: 1rem;
817
+ margin-bottom: var(--space-md, 1lh);
714
818
  }
715
819
 
716
820
  button {
717
- padding: 10px 20px;
821
+ padding: var(--space-sm, 0.5lh) var(--space-md, 1lh);
718
822
  border: none;
719
- border-radius: 4px;
823
+ border-radius: var(--radius-sm, 0.375rem);
720
824
  cursor: pointer;
721
- font-size: 1rem;
722
- transition: background-color 0.3s ease;
723
- margin-right: 10px;
825
+ font-size: var(--font-size-body, clamp(0.9375rem, 1.15vw, 1rem));
826
+ font-weight: var(--font-weight-medium, 500);
827
+ transition: background-color var(--transition-base, 0.2s ease);
724
828
  }
725
829
 
726
830
  .btn-primary {
727
- background: var(--link-color, #646cff);
728
- color: white;
831
+ background: var(--brand-color, #2563eb);
832
+ color: var(--text-inverse, #ffffff);
833
+ box-shadow: 0 2px 4px color-mix(in srgb, var(--brand-color, #2563eb), transparent 75%);
729
834
  }
730
835
 
731
836
  .btn-primary:hover {
732
- background: var(--link-hover-color, #535bf2);
837
+ background: color-mix(in srgb, var(--brand-color, #2563eb), black 15%);
733
838
  }
734
839
 
735
840
  .btn-secondary {
736
- background: var(--nav-link-hover-bg, #f0f0f0);
737
- color: var(--text-color, #213547);
841
+ background: var(--bg-secondary, #f8fafc);
842
+ color: var(--text-primary, #0b1120);
843
+ border: 1px solid var(--border-subtle, #e5e7eb);
844
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
738
845
  }
739
846
 
740
847
  .btn-secondary:hover {
741
- background: var(--border-color, #e0e0e0);
848
+ background: var(--bg-tertiary, #f1f5f9);
849
+ border-color: var(--border-color, #d1d5db);
742
850
  }
743
851
 
744
852
  .btn-danger {
745
- background: #dc3545;
746
- color: white;
853
+ background: var(--color-danger, #ef4444);
854
+ color: var(--text-inverse, #ffffff);
747
855
  }
748
856
 
749
857
  .btn-danger:hover {
750
- background: #c82333;
858
+ background: var(--color-danger-hover, #dc2626);
751
859
  }
752
860
 
753
861
  .file-list {
754
- margin-top: 1rem;
862
+ margin-top: var(--space-md, 1lh);
755
863
  }
756
864
 
757
865
  .file-item {
758
866
  display: flex;
759
867
  justify-content: space-between;
760
868
  align-items: center;
761
- padding: 0.5rem;
762
- border-bottom: 1px solid var(--border-color, #eee);
869
+ padding: var(--space-sm, 0.5lh);
870
+ border-bottom: 1px solid var(--border-subtle, #e5e7eb);
871
+ border-radius: var(--radius-sm, 0.375rem);
872
+ transition: background var(--transition-fast, 0.15s ease);
873
+ }
874
+
875
+ .file-item:hover {
876
+ background: var(--bg-secondary, #f8fafc);
763
877
  }
764
878
 
765
879
  .file-item:last-child {
766
880
  border-bottom: none;
767
881
  }
882
+
883
+ .logo-preview {
884
+ background: var(--bg-secondary, #f8fafc);
885
+ padding: var(--space-sm, 0.5lh);
886
+ border-radius: var(--radius-sm, 0.375rem);
887
+ margin-bottom: var(--space-sm, 0.5lh);
888
+ display: inline-block;
889
+ }
890
+
891
+ .logo-preview-img {
892
+ max-height: 100px;
893
+ display: block;
894
+ }
895
+
896
+ .field-label {
897
+ display: block;
898
+ margin-bottom: var(--space-2xs, 0.25lh);
899
+ font-weight: var(--font-weight-medium, 500);
900
+ font-size: var(--font-size-body, clamp(0.9375rem, 1.15vw, 1rem));
901
+ color: var(--text-primary, #0b1120);
902
+ }
903
+
904
+ .info-box {
905
+ background: var(--bg-secondary, #f8fafc);
906
+ border: 1px solid var(--border-subtle, #e5e7eb);
907
+ border-radius: var(--radius-sm, 0.375rem);
908
+ padding: var(--space-sm, 0.5lh) var(--space-md, 1lh);
909
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
910
+ color: var(--text-secondary, #475569);
911
+ margin-top: var(--space-sm, 0.5lh);
912
+ }
913
+
914
+ h4 {
915
+ font-size: var(--font-size-body, clamp(0.9375rem, 1.15vw, 1rem));
916
+ font-weight: var(--font-weight-semibold, 600);
917
+ color: var(--text-primary, #0b1120);
918
+ margin: 0 0 var(--space-2xs, 0.25lh) 0;
919
+ }
920
+
921
+ .required-badge {
922
+ font-size: var(--font-size-tiny, clamp(0.6875rem, 0.85vw, 0.75rem));
923
+ font-weight: var(--font-weight-medium, 500);
924
+ color: var(--color-warning, #f59e0b);
925
+ background: color-mix(in srgb, var(--color-warning, #f59e0b), transparent 85%);
926
+ padding: 0 var(--space-2xs, 0.25lh);
927
+ border-radius: var(--radius-sm, 0.25rem);
928
+ vertical-align: middle;
929
+ }
768
930
  `;
769
931
  var __create$d = Object.create;
770
932
  var __defProp$d = Object.defineProperty;
@@ -866,67 +1028,79 @@ AdminLoginForm.styles = css`
866
1028
 
867
1029
  .container {
868
1030
  width: 100%;
869
- max-width: 900px;
1031
+ max-width: var(--content-medium, 960px);
870
1032
  margin: 0 auto;
871
- padding: 1rem;
1033
+ padding: var(--space-md, 1lh);
872
1034
  }
873
1035
 
874
1036
  .login-box {
875
- border: 1px solid var(--border-color, #e0e0e0);
876
- padding: 3rem 2.5rem;
877
- border-radius: 16px;
1037
+ border: 1px solid var(--border-subtle, #e5e7eb);
1038
+ padding: var(--space-xl, 3lh) var(--space-lg, 2lh);
1039
+ border-radius: var(--radius-xl, 1rem);
878
1040
  width: 100%;
879
1041
  max-width: 420px;
880
1042
  margin: 80px auto;
881
1043
  text-align: center;
882
- background: var(--card-bg, #fff);
883
- box-shadow: 0 4px 6px rgba(0,0,0,0.07), 0 10px 20px rgba(0,0,0,0.05);
1044
+ background: var(--bg-primary, #ffffff);
1045
+ box-shadow: var(--shadow-md, 0 4px 6px -2px oklch(0% 0 0 / 0.06));
884
1046
  }
885
1047
 
886
1048
  .login-box h2 {
887
- margin: 0 0 0.5rem 0;
888
- font-size: 1.75rem;
889
- font-weight: 600;
890
- color: var(--text-color, #213547);
1049
+ margin: 0 0 var(--space-sm, 0.5lh) 0;
1050
+ font-size: var(--font-size-h2, clamp(1.35rem, 2.25vw, 1.75rem));
1051
+ font-weight: var(--font-weight-semibold, 600);
1052
+ color: var(--text-primary, #0b1120);
891
1053
  }
892
1054
 
893
1055
  .login-box p {
894
- color: var(--secondary-text, #666);
895
- margin-bottom: 1.5rem;
1056
+ color: var(--text-secondary, #475569);
1057
+ margin-bottom: var(--space-md, 1lh);
896
1058
  }
897
1059
 
898
1060
  input {
899
1061
  width: 100%;
900
- padding: 10px;
901
- margin-bottom: 20px;
902
- border: 1px solid var(--border-color);
903
- border-radius: 4px;
904
- background: var(--background-color);
905
- color: var(--text-color);
1062
+ padding: var(--space-sm, 0.5lh) var(--space-md, 1lh);
1063
+ margin-bottom: var(--space-sm, 0.5lh);
1064
+ border: 1.5px solid var(--border-subtle, #e5e7eb);
1065
+ border-radius: var(--radius-md, 0.5rem);
1066
+ background: var(--bg-primary, #ffffff);
1067
+ color: var(--text-primary, #0b1120);
1068
+ font-size: var(--font-size-body, clamp(0.9375rem, 1.15vw, 1rem));
906
1069
  box-sizing: border-box;
1070
+ transition: border-color var(--transition-fast, 0.15s ease),
1071
+ box-shadow var(--transition-fast, 0.15s ease);
1072
+ }
1073
+
1074
+ input:focus {
1075
+ outline: none;
1076
+ border-color: var(--brand-color, #2563eb);
1077
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand-color, #2563eb), transparent 85%);
907
1078
  }
908
1079
 
909
1080
  button {
910
- padding: 10px 20px;
1081
+ padding: var(--space-sm, 0.5lh) var(--space-md, 1lh);
911
1082
  border: none;
912
- border-radius: 4px;
1083
+ border-radius: var(--radius-sm, 0.375rem);
913
1084
  cursor: pointer;
914
- font-size: 1rem;
915
- transition: background-color 0.3s ease;
1085
+ font-size: var(--font-size-body, clamp(0.9375rem, 1.15vw, 1rem));
1086
+ font-weight: var(--font-weight-medium, 500);
1087
+ transition: background-color var(--transition-base, 0.2s ease);
916
1088
  }
917
1089
 
918
1090
  .btn-primary {
919
- background: var(--link-color, #646cff);
920
- color: white;
1091
+ background: var(--brand-color, #2563eb);
1092
+ color: var(--text-inverse, #ffffff);
1093
+ box-shadow: 0 2px 4px color-mix(in srgb, var(--brand-color, #2563eb), transparent 75%);
921
1094
  }
922
1095
 
923
1096
  .btn-primary:hover {
924
- background: var(--link-hover-color, #535bf2);
1097
+ background: color-mix(in srgb, var(--brand-color, #2563eb), black 15%);
925
1098
  }
926
1099
 
927
1100
  .error-message {
928
- color: red;
929
- margin-bottom: 10px;
1101
+ color: var(--accent-warm, #f59e0b);
1102
+ margin-bottom: var(--space-sm, 0.5lh);
1103
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
930
1104
  }
931
1105
  `;
932
1106
  __runInitializers$d(_init$d, 1, AdminLoginForm);
@@ -1225,15 +1399,15 @@ class AdminBlogsSection extends (_a$9 = AdminSection) {
1225
1399
 
1226
1400
  <h4>Upload New Blog</h4>
1227
1401
  <div class="mb-1">
1228
- <label style="display:block;margin-bottom:4px;font-weight:500">Metadata (JSON)</label>
1402
+ <label class="field-label">Metadata (JSON)</label>
1229
1403
  <input type="file" id="blogMetaFile" accept=".json" />
1230
1404
  </div>
1231
1405
  <div class="mb-1">
1232
- <label style="display:block;margin-bottom:4px;font-weight:500">Content (Markdown)</label>
1406
+ <label class="field-label">Content (Markdown)</label>
1233
1407
  <input type="file" id="blogContentFile" accept=".md" />
1234
1408
  </div>
1235
1409
  <div class="mb-1">
1236
- <label style="display:block;margin-bottom:4px;font-weight:500">URL Slug</label>
1410
+ <label class="field-label">URL Slug</label>
1237
1411
  <input type="text" id="blogSlug" placeholder="Slug (e.g., my-new-post)" />
1238
1412
  </div>
1239
1413
  <button class="btn-primary" @click=${this.handleUpload}>Upload Blog (JSON + MD)</button>
@@ -1325,15 +1499,15 @@ class AdminStoriesSection extends (_a$8 = AdminSection) {
1325
1499
 
1326
1500
  <h4>Upload New Story</h4>
1327
1501
  <div class="mb-1">
1328
- <label style="display:block;margin-bottom:4px;font-weight:500">Metadata (JSON)</label>
1502
+ <label class="field-label">Metadata (JSON)</label>
1329
1503
  <input type="file" id="storyMetaFile" accept=".json" />
1330
1504
  </div>
1331
1505
  <div class="mb-1">
1332
- <label style="display:block;margin-bottom:4px;font-weight:500">Content (Markdown)</label>
1506
+ <label class="field-label">Content (Markdown)</label>
1333
1507
  <input type="file" id="storyContentFile" accept=".md" />
1334
1508
  </div>
1335
1509
  <div class="mb-1">
1336
- <label style="display:block;margin-bottom:4px;font-weight:500">URL Slug</label>
1510
+ <label class="field-label">URL Slug</label>
1337
1511
  <input type="text" id="storySlug" placeholder="Slug (e.g., my-story)" />
1338
1512
  </div>
1339
1513
  <button class="btn-primary" @click=${this.handleUpload}>Upload Story (JSON + MD)</button>
@@ -1506,10 +1680,9 @@ class AdminLogoSection extends (_a$6 = AdminSection) {
1506
1680
  <div class="mb-1">
1507
1681
  <strong>Current:</strong> logo.svg (${logo.size} bytes)
1508
1682
  </div>
1509
- <div style="background: #f0f0f0; padding: 10px; border-radius: 8px; margin-bottom: 10px; display: inline-block;">
1510
- <img src="${logoUrl}" alt="Current Logo" style="max-height: 100px; display: block;" />
1683
+ <div class="logo-preview">
1684
+ <img src="${logoUrl}" alt="Current Logo" class="logo-preview-img" />
1511
1685
  </div>
1512
- <br/>
1513
1686
  <button class="btn-danger" @click=${this.handleDelete}>Delete</button>
1514
1687
  </div>
1515
1688
  ` : ""}
@@ -1614,27 +1787,27 @@ class AdminStaticSection extends (_a$5 = AdminSection, _localDetails_dec = [stat
1614
1787
  <p class="help-text">Manage your site's static details like title, footer links, etc.</p>
1615
1788
 
1616
1789
  <div class="mb-1">
1617
- <label style="display:block;margin-bottom:4px;font-weight:500">Site Title</label>
1790
+ <label class="field-label">Site Title</label>
1618
1791
  <input type="text" id="siteTitle" .value=${this.localDetails?.siteTitle || ""} />
1619
1792
  </div>
1620
1793
 
1621
1794
  <div class="mb-1">
1622
- <label style="display:block;margin-bottom:4px;font-weight:500">Copyright Text</label>
1795
+ <label class="field-label">Copyright Text</label>
1623
1796
  <input type="text" id="copyright" .value=${this.localDetails?.copyright || ""} />
1624
1797
  </div>
1625
1798
 
1626
1799
  <div class="mb-1">
1627
- <label style="display:block;margin-bottom:4px;font-weight:500">LinkedIn URL</label>
1800
+ <label class="field-label">LinkedIn URL</label>
1628
1801
  <input type="text" id="linkedin" .value=${this.localDetails?.linkedin || ""} />
1629
1802
  </div>
1630
1803
 
1631
1804
  <div class="mb-1">
1632
- <label style="display:block;margin-bottom:4px;font-weight:500">GitHub URL</label>
1805
+ <label class="field-label">GitHub URL</label>
1633
1806
  <input type="text" id="github" .value=${this.localDetails?.github || ""} />
1634
1807
  </div>
1635
1808
 
1636
1809
  <div class="mb-1">
1637
- <label style="display:block;margin-bottom:4px;font-weight:500">Email</label>
1810
+ <label class="field-label">Email</label>
1638
1811
  <input type="text" id="email" .value=${this.localDetails?.email || ""} />
1639
1812
  </div>
1640
1813
 
@@ -2021,45 +2194,71 @@ __runInitializers$4(_init$4, 1, AdminPortal);
2021
2194
  const adminLoaded = true;
2022
2195
  const bannerStyles = css`
2023
2196
  :host {
2197
+ /* Layout */
2024
2198
  display: block;
2199
+ position: relative;
2200
+
2201
+ /* Box */
2025
2202
  width: 100%;
2026
2203
  box-sizing: border-box;
2027
- font-family: Arial, sans-serif;
2028
- color: var(--text-color);
2029
- background-color: var(--background-color);
2204
+
2205
+ /* Typography */
2206
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
2207
+ color: var(--text-primary, #0b1120);
2208
+ background-color: var(--bg-primary, #ffffff);
2209
+
2210
+ /* Misc */
2211
+ border-bottom: 1px solid var(--border-subtle, #e5e7eb);
2030
2212
  }
2031
2213
 
2032
2214
  .banner,
2033
2215
  .banner-component {
2216
+ /* Layout */
2034
2217
  display: flex;
2035
2218
  flex-direction: row;
2036
2219
  justify-content: space-between;
2037
2220
  align-items: center;
2038
- padding: 1rem 2rem;
2039
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
2040
- transition: background-color 0.3s, color 0.3s;
2041
- background-color: var(--background-color);
2042
- color: var(--text-color);
2221
+
2222
+ /* Box */
2223
+ padding: var(--space-sm, 0.5lh) var(--space-lg, 2lh);
2224
+
2225
+ /* Visual */
2226
+ background-color: var(--bg-primary, #ffffff);
2227
+ color: var(--text-primary, #0b1120);
2228
+
2229
+ /* Misc */
2230
+ transition: background-color var(--transition-slow, 0.3s ease),
2231
+ color var(--transition-slow, 0.3s ease);
2043
2232
  }
2044
2233
 
2045
2234
  .header-content {
2235
+ /* Layout */
2046
2236
  display: flex;
2047
2237
  align-items: center;
2238
+
2239
+ /* Box */
2048
2240
  margin-bottom: 0;
2049
2241
  margin-right: auto;
2242
+ gap: var(--space-sm, 0.5lh);
2050
2243
  }
2051
2244
 
2052
2245
  .logo-link {
2246
+ /* Layout */
2053
2247
  display: inline-flex;
2054
2248
  align-items: center;
2249
+
2250
+ /* Misc */
2055
2251
  text-decoration: none;
2056
2252
  cursor: pointer;
2057
2253
  }
2058
2254
 
2059
2255
  .logo {
2060
- height: 50px;
2061
- margin-right: 1rem;
2256
+ /* Box */
2257
+ height: 48px;
2258
+ margin-right: var(--space-sm, 0.5lh);
2062
2259
  width: auto;
2260
+
2261
+ /* Misc */
2063
2262
  cursor: pointer;
2064
2263
  }
2065
2264
 
@@ -2069,35 +2268,52 @@ const bannerStyles = css`
2069
2268
  }
2070
2269
 
2071
2270
  h1 {
2271
+ /* Typography */
2272
+ font-size: var(--font-size-h3, clamp(1.15rem, 1.75vw, 1.375rem));
2273
+ font-weight: var(--font-weight-semibold, 600);
2274
+ letter-spacing: -0.02em;
2275
+ color: var(--text-primary, #0b1120);
2276
+
2277
+ /* Box */
2072
2278
  margin: 0;
2073
- font-size: 1.8em;
2074
- font-weight: 600;
2075
- color: var(--text-color);
2076
2279
  }
2077
2280
 
2078
2281
  .nav-and-theme {
2282
+ /* Layout */
2079
2283
  display: flex;
2080
2284
  align-items: center;
2081
- gap: 1rem;
2285
+ gap: var(--space-md, 1lh);
2082
2286
  }
2083
2287
 
2084
2288
  nav {
2289
+ /* Layout */
2085
2290
  display: flex;
2086
2291
  align-items: center;
2087
- padding: 0 1rem;
2088
- gap: 10px;
2292
+
2293
+ /* Box */
2294
+ padding: 0 var(--space-md, 1lh);
2295
+ gap: var(--space-2xs, 0.25lh);
2089
2296
  }
2090
2297
 
2091
2298
  nav a {
2299
+ /* Typography */
2092
2300
  text-decoration: none;
2093
- color: var(--nav-link-color, #333);
2094
- padding: 0.5rem 1rem;
2095
- border-radius: 5px;
2096
- transition: background-color 0.3s ease, color 0.3s ease;
2301
+ color: var(--link-color, #2563eb);
2302
+ font-size: var(--font-size-body, clamp(0.9375rem, 1.15vw, 1rem));
2303
+ font-weight: var(--font-weight-medium, 500);
2304
+
2305
+ /* Box */
2306
+ padding: var(--space-2xs, 0.25lh) var(--space-sm, 0.5lh);
2307
+ border-radius: var(--radius-sm, 0.375rem);
2308
+
2309
+ /* Misc */
2310
+ transition: background-color var(--transition-base, 0.2s ease),
2311
+ color var(--transition-base, 0.2s ease);
2097
2312
  }
2098
2313
 
2099
2314
  nav a:hover {
2100
- background-color: var(--nav-link-hover-bg, #e2e6ea);
2315
+ background-color: var(--bg-accent, #eff6ff);
2316
+ color: var(--link-hover, #1d4ed8);
2101
2317
  text-decoration: none;
2102
2318
  }
2103
2319
 
@@ -2105,8 +2321,8 @@ nav a:hover {
2105
2321
  .banner,
2106
2322
  .banner-component {
2107
2323
  flex-direction: column;
2108
- gap: 1rem;
2109
- padding: 1rem;
2324
+ gap: var(--space-sm, 0.5lh);
2325
+ padding: var(--space-sm, 0.5lh);
2110
2326
  }
2111
2327
 
2112
2328
  .header-content {
@@ -2117,6 +2333,7 @@ nav a:hover {
2117
2333
  nav {
2118
2334
  flex-wrap: wrap;
2119
2335
  justify-content: center;
2336
+ gap: var(--space-3xs, 0.125lh);
2120
2337
  }
2121
2338
  }
2122
2339
  `;
@@ -2189,38 +2406,61 @@ MyBanner = __decorateElement$3(_init$3, 0, "MyBanner", _MyBanner_decorators, MyB
2189
2406
  __runInitializers$3(_init$3, 1, MyBanner);
2190
2407
  const footerStyles = css`
2191
2408
  :host {
2409
+ /* Layout */
2192
2410
  display: flex;
2193
2411
  align-items: center;
2194
2412
  justify-content: space-between;
2195
- padding: 1rem 2rem;
2196
- background: var(--background-color);
2197
- color: var(--text-color);
2198
- border-top: 1px solid var(--nav-link-hover-bg);
2413
+
2414
+ /* Box */
2415
+ padding: var(--space-md, 1lh) var(--space-lg, 2lh);
2416
+
2417
+ /* Visual */
2418
+ background: var(--bg-primary, #ffffff);
2419
+ color: var(--text-primary, #0b1120);
2420
+ border-top: 1px solid var(--border-subtle, #e5e7eb);
2421
+
2422
+ /* Misc */
2199
2423
  flex-wrap: wrap;
2200
2424
  }
2201
2425
 
2202
2426
  .footer-content {
2427
+ /* Layout */
2203
2428
  display: flex;
2204
2429
  flex-direction: column;
2205
2430
  align-items: flex-start;
2431
+
2432
+ /* Typography */
2433
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
2434
+ color: var(--text-secondary, #475569);
2206
2435
  }
2207
2436
 
2208
2437
  .links {
2438
+ /* Layout */
2209
2439
  display: flex;
2210
- gap: 1rem;
2211
- margin-top: 0.5rem;
2440
+ gap: var(--space-sm, 0.5lh);
2441
+
2442
+ /* Box */
2443
+ margin-top: var(--space-2xs, 0.25lh);
2212
2444
  }
2213
2445
 
2214
2446
  .links a {
2215
- color: inherit;
2447
+ /* Typography */
2448
+ color: var(--link-color, #2563eb);
2216
2449
  text-decoration: none;
2217
- padding: 0.25rem 0.5rem;
2218
- border-radius: 4px;
2219
- transition: background-color 0.3s ease;
2450
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
2451
+
2452
+ /* Box */
2453
+ padding: var(--space-3xs, 0.125lh) var(--space-2xs, 0.25lh);
2454
+ border-radius: var(--radius-sm, 0.25rem);
2455
+
2456
+ /* Misc */
2457
+ transition: background-color var(--transition-base, 0.2s ease),
2458
+ color var(--transition-base, 0.2s ease);
2220
2459
  }
2221
2460
 
2222
2461
  .links a:hover {
2223
- background-color: rgba(0, 0, 0, 0.1);
2462
+ background-color: var(--bg-accent, #eff6ff);
2463
+ color: var(--link-hover, #1d4ed8);
2224
2464
  }
2225
2465
 
2226
2466
  @media (min-width: 768px) {
@@ -2330,19 +2570,38 @@ const blogviewerStyles = css`
2330
2570
  }
2331
2571
 
2332
2572
  .tags {
2573
+ /* Layout */
2333
2574
  display: flex;
2334
- gap: 0.5rem;
2575
+ gap: var(--space-2xs, 0.25lh);
2335
2576
  flex-wrap: wrap;
2336
- margin-top: 1rem;
2577
+
2578
+ /* Box */
2579
+ margin-top: var(--space-md, 1lh);
2337
2580
  }
2338
2581
 
2339
2582
  .tag {
2340
- background: var(--nav-link-hover-bg, #f0f0f0);
2341
- color: var(--text-color, #333);
2342
- padding: 0.25rem 0.5rem;
2343
- border-radius: 4px;
2344
- font-size: 0.875rem;
2345
- border: 1px solid var(--border-color, transparent);
2583
+ /* Box */
2584
+ background: var(--bg-secondary, #f8fafc);
2585
+ color: var(--text-secondary, #475569);
2586
+ padding: var(--space-3xs, 0.125lh) var(--space-sm, 0.5lh);
2587
+ border: 1px solid var(--border-subtle, #e5e7eb);
2588
+ border-radius: var(--radius-full, 9999px);
2589
+
2590
+ /* Typography */
2591
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
2592
+ font-weight: var(--font-weight-medium, 500);
2593
+ letter-spacing: 0.01em;
2594
+
2595
+ /* Misc */
2596
+ transition: background-color var(--transition-fast, 0.15s ease),
2597
+ border-color var(--transition-fast, 0.15s ease),
2598
+ color var(--transition-fast, 0.15s ease);
2599
+ }
2600
+
2601
+ .tag:hover {
2602
+ background: var(--bg-accent, #eff6ff);
2603
+ border-color: var(--brand-color, #2563eb);
2604
+ color: var(--brand-color, #2563eb);
2346
2605
  }
2347
2606
  `;
2348
2607
  const __vite_import_meta_env__ = {};
@@ -2505,53 +2764,87 @@ __runInitializers$1(_init$1, 1, BlogViewer);
2505
2764
  const storyviewerStyles = css`
2506
2765
  :host {
2507
2766
  display: block;
2508
- max-width: 800px;
2767
+ max-width: var(--content-narrow, 720px);
2509
2768
  margin: 0 auto;
2769
+ width: 100%;
2510
2770
  }
2511
2771
 
2512
2772
  .loading {
2513
2773
  text-align: center;
2514
- padding: 2rem;
2774
+ padding: var(--space-xl, 3lh);
2775
+ color: var(--text-secondary, #475569);
2515
2776
  }
2516
2777
 
2517
2778
  .error {
2518
- color: red;
2779
+ color: var(--accent-warm, #f59e0b);
2519
2780
  text-align: center;
2520
- padding: 2rem;
2781
+ padding: var(--space-xl, 3lh);
2521
2782
  }
2522
2783
 
2523
2784
  h1 {
2524
- margin-bottom: 0.5rem;
2785
+ /* Typography */
2786
+ font-size: var(--font-size-h1, clamp(1.75rem, 3vw, 2.5rem));
2787
+ font-weight: var(--font-weight-bold, 700);
2788
+ line-height: var(--line-height-tight, 1.15);
2789
+ letter-spacing: -0.02em;
2790
+ color: var(--text-primary, #0b1120);
2791
+
2792
+ /* Box */
2793
+ margin-bottom: var(--space-sm, 0.5lh);
2525
2794
  }
2526
2795
 
2527
2796
  .meta {
2528
- color: #666;
2529
- margin-bottom: 2rem;
2797
+ /* Typography */
2798
+ color: var(--text-secondary, #475569);
2799
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
2800
+
2801
+ /* Box */
2802
+ margin-bottom: var(--space-lg, 2lh);
2803
+ padding-bottom: var(--space-sm, 0.5lh);
2804
+ border-bottom: 1px solid var(--border-subtle, #e5e7eb);
2530
2805
  }
2531
2806
 
2532
2807
  .tags {
2808
+ /* Layout */
2533
2809
  display: flex;
2534
- gap: 0.5rem;
2810
+ gap: var(--space-2xs, 0.25lh);
2535
2811
  flex-wrap: wrap;
2536
- margin-top: 1rem;
2812
+
2813
+ /* Box */
2814
+ margin-top: var(--space-md, 1lh);
2537
2815
  }
2538
2816
 
2539
2817
  .tag {
2540
- background: var(--nav-link-hover-bg, #f0f0f0);
2541
- color: var(--text-color, #333);
2542
- padding: 0.25rem 0.5rem;
2543
- border-radius: 4px;
2544
- font-size: 0.875rem;
2545
- border: 1px solid var(--border-color, transparent);
2818
+ /* Box */
2819
+ background: var(--bg-secondary, #f8fafc);
2820
+ color: var(--text-secondary, #475569);
2821
+ padding: var(--space-3xs, 0.125lh) var(--space-sm, 0.5lh);
2822
+ border: 1px solid var(--border-subtle, #e5e7eb);
2823
+ border-radius: var(--radius-full, 9999px);
2824
+
2825
+ /* Typography */
2826
+ font-size: var(--font-size-small, clamp(0.8125rem, 1vw, 0.875rem));
2827
+ font-weight: var(--font-weight-medium, 500);
2828
+
2829
+ /* Misc */
2830
+ transition: background-color var(--transition-fast, 0.15s ease),
2831
+ border-color var(--transition-fast, 0.15s ease);
2832
+ }
2833
+
2834
+ .tag:hover {
2835
+ background: var(--bg-accent, #eff6ff);
2836
+ border-color: var(--brand-color, #2563eb);
2546
2837
  }
2547
2838
 
2548
2839
  .content {
2549
- line-height: 1.8;
2840
+ /* Typography */
2841
+ line-height: var(--line-height-relaxed, 1.8);
2550
2842
  text-align: left;
2843
+ color: var(--text-primary, #0b1120);
2551
2844
  }
2552
2845
 
2553
2846
  .content h1, .content h2, .content h3 {
2554
- margin-top: 1.5rem;
2847
+ margin-top: var(--space-lg, 2lh);
2555
2848
  }
2556
2849
  `;
2557
2850
  var __create = Object.create;