File size: 1,860 Bytes
ef3a68d
150e09e
ef3a68d
 
 
 
 
 
 
 
 
 
 
 
 
 
150e09e
ef3a68d
 
 
150e09e
ef3a68d
 
 
 
 
 
150e09e
 
ef3a68d
 
 
 
150e09e
ef3a68d
 
 
150e09e
 
ef3a68d
150e09e
ef3a68d
 
 
150e09e
 
ef3a68d
 
 
150e09e
 
ef3a68d
 
 
 
 
150e09e
 
ef3a68d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150e09e
 
ef3a68d
 
 
150e09e
ef3a68d
 
 
150e09e
ef3a68d
 
 
 
 
 
150e09e
 
ef3a68d
 
 
 
 
 
 
 
 
 
150e09e
ef3a68d
 
 
150e09e
ef3a68d
 
 
150e09e
ef3a68d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/* src/app.css */
:root {
  --primary: #3b82f6;
  --success: #10b981;
  --danger: #ef4444;
  --gray-50: #f9fafb;
  --gray-100: #f3f4f6;
  --gray-200: #e5e7eb;
  --gray-300: #d1d5db;
  --gray-400: #9ca3af;
  --gray-500: #6b7280;
  --gray-600: #4b5563;
  --gray-700: #374151;
  --gray-800: #1f2937;
  --gray-900: #111827;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  background-color: var(--gray-50);
  color: var(--gray-900);
  line-height: 1.5;
}

.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 2rem 1rem;
}

header {
  margin-bottom: 2rem;
}

h1 {
  margin: 0;
  font-size: 2rem;
  font-weight: 700;
  color: var(--gray-900);
}

.subtitle {
  margin: 0.25rem 0 0;
  color: var(--gray-600);
}

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 1.5rem;
  margin-bottom: 2rem;
}

.loading, .error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 400px;
  color: var(--gray-500);
}

.spinner {
  width: 40px;
  height: 40px;
  border: 4px solid var(--gray-200);
  border-top: 4px solid var(--primary);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.error {
  color: var(--danger);
}

.chart-section {
  background: white;
  border-radius: 0.5rem;
  padding: 1.5rem;
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
}

.chart-section h2 {
  margin: 0 0 1rem;
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--gray-900);
}

@media (max-width: 640px) {
  .container {
    padding: 1rem;
  }
  
  h1 {
    font-size: 1.5rem;
  }
  
  .grid {
    grid-template-columns: 1fr;
  }
}