thinkwee commited on
Commit
9c2d624
Β·
1 Parent(s): 1c53c11

fix display

Browse files
Files changed (3) hide show
  1. charts.js +0 -15
  2. index.html +32 -44
  3. styles.css +78 -137
charts.js CHANGED
@@ -62,21 +62,6 @@ const animationSettings = {
62
  let currentScalingDim = 'turn';
63
  let currentProbingMode = 'byTurn';
64
 
65
- // Tab Navigation
66
- document.querySelectorAll('.nav-tab').forEach(tab => {
67
- tab.addEventListener('click', () => {
68
- document.querySelectorAll('.nav-tab').forEach(t => t.classList.remove('active'));
69
- tab.classList.add('active');
70
-
71
- const sectionId = tab.dataset.section;
72
- document.querySelectorAll('.section').forEach(s => s.classList.remove('active'));
73
- document.getElementById(sectionId).classList.add('active');
74
-
75
- // Resize plots on tab change
76
- setTimeout(() => window.dispatchEvent(new Event('resize')), 100);
77
- });
78
- });
79
-
80
  // ============================================================================
81
  // SCALING ANALYSIS - 3 Charts with animated dimension switching
82
  // ============================================================================
 
62
  let currentScalingDim = 'turn';
63
  let currentProbingMode = 'byTurn';
64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  // ============================================================================
66
  // SCALING ANALYSIS - 3 Charts with animated dimension switching
67
  // ============================================================================
index.html CHANGED
@@ -41,78 +41,66 @@
41
  </div>
42
  </header>
43
 
44
- <!-- Navigation -->
45
- <nav class="nav-tabs">
46
- <button class="nav-tab active" data-section="scaling">πŸ“ˆ Scaling Analysis</button>
47
- <button class="nav-tab" data-section="ranking">πŸ† Ranking Comparison</button>
48
- <button class="nav-tab" data-section="turn">πŸ”„ Turn Distribution</button>
49
- <button class="nav-tab" data-section="error">⚠️ Error Analysis</button>
50
- <button class="nav-tab" data-section="probing">πŸ” Probing Results</button>
51
- </nav>
52
-
53
- <!-- Main Content -->
54
  <main class="content">
55
- <!-- Scaling Analysis Section - 3 charts side by side -->
56
- <section id="scaling" class="section active">
 
57
  <div class="section-header">
58
- <h2>Scaling Analysis</h2>
59
- <p>Explore how model performance scales with interaction turns, token usage, and inference cost across
60
- all datasets.</p>
61
  </div>
62
  <div class="dimension-toggle">
63
- <button class="dim-btn active" data-dim="turn">πŸ”„ Interaction Turns</button>
64
- <button class="dim-btn" data-dim="token">πŸ“Š Token Usage</button>
65
- <button class="dim-btn" data-dim="cost">πŸ’° Inference Cost</button>
66
  </div>
67
  <div class="charts-grid three-col">
68
  <div class="chart-card">
69
  <h3>MIMIC</h3>
70
- <div id="scaling-mimic" class="chart-container-sm"></div>
71
  </div>
72
  <div class="chart-card">
73
  <h3>10-K</h3>
74
- <div id="scaling-10k" class="chart-container-sm"></div>
75
  </div>
76
  <div class="chart-card">
77
  <h3>GLOBEM</h3>
78
- <div id="scaling-globem" class="chart-container-sm"></div>
79
  </div>
80
  </div>
81
  </section>
82
 
83
- <!-- Ranking Comparison Section - 3 charts with toggle -->
84
- <section id="ranking" class="section">
85
  <div class="section-header">
86
- <h2>Novelty vs Accuracy Ranking</h2>
87
- <p>Compare model rankings based on Bradley-Terry pairwise ranking against traditional accuracy ranking.
88
- </p>
89
  </div>
90
  <div class="dimension-toggle">
91
  <button class="dim-btn ranking-dim active" data-mode="novelty">🎯 Novelty Rank</button>
92
  <button class="dim-btn ranking-dim" data-mode="accuracy">πŸ“Š Accuracy Rank</button>
93
  </div>
94
-
95
  <div class="charts-grid three-col">
96
  <div class="chart-card">
97
  <h3>MIMIC</h3>
98
- <div id="ranking-mimic" class="chart-container-md"></div>
99
  </div>
100
  <div class="chart-card">
101
  <h3>10-K</h3>
102
- <div id="ranking-10k" class="chart-container-md"></div>
103
  </div>
104
  <div class="chart-card">
105
  <h3>GLOBEM</h3>
106
- <div id="ranking-globem" class="chart-container-md"></div>
107
  </div>
108
  </div>
109
  </section>
110
 
111
-
112
- <!-- Turn Distribution Section - 3 charts -->
113
- <section id="turn" class="section">
114
  <div class="section-header">
115
- <h2>Turn Count Distribution</h2>
116
  <p>Analyze the distribution of interaction turns across different models and datasets.</p>
117
  </div>
118
  <div class="charts-grid three-col">
@@ -131,23 +119,23 @@
131
  </div>
132
  </section>
133
 
134
- <!-- Error Analysis Section -->
135
- <section id="error" class="section">
136
  <div class="section-header">
137
- <h2>Error Type Analysis</h2>
138
  <p>Breakdown of error types encountered during agent interactions, grouped by main categories.</p>
139
  </div>
140
  <div class="charts-grid single">
141
  <div class="chart-card wide">
142
- <div id="error-chart" class="chart-container-md"></div>
143
  </div>
144
  </div>
145
  </section>
146
 
147
- <!-- Probing Results Section -->
148
- <section id="probing" class="section">
149
  <div class="section-header">
150
- <h2>FINISH Token Probing</h2>
151
  <p>Analyze the average log probability of FINISH messages across conversation turns and progress.</p>
152
  </div>
153
  <div class="dimension-toggle">
@@ -157,15 +145,15 @@
157
  <div class="charts-grid three-col">
158
  <div class="chart-card">
159
  <h3>MIMIC</h3>
160
- <div id="probing-mimic" class="chart-container-sm"></div>
161
  </div>
162
  <div class="chart-card">
163
  <h3>GLOBEM</h3>
164
- <div id="probing-globem" class="chart-container-sm"></div>
165
  </div>
166
  <div class="chart-card">
167
  <h3>10-K</h3>
168
- <div id="probing-10k" class="chart-container-sm"></div>
169
  </div>
170
  </div>
171
  </section>
 
41
  </div>
42
  </header>
43
 
44
+ <!-- Main Content - All sections visible -->
 
 
 
 
 
 
 
 
 
45
  <main class="content">
46
+
47
+ <!-- 1. Scaling Analysis Section -->
48
+ <section id="scaling" class="section visible">
49
  <div class="section-header">
50
+ <h2>πŸ“ˆ Scaling Analysis</h2>
51
+ <p>Explore how model performance scales with interaction turns, token usage, and inference cost.</p>
 
52
  </div>
53
  <div class="dimension-toggle">
54
+ <button class="dim-btn active" data-dim="turn">πŸ”„ Turns</button>
55
+ <button class="dim-btn" data-dim="token">πŸ“Š Tokens</button>
56
+ <button class="dim-btn" data-dim="cost">πŸ’° Cost</button>
57
  </div>
58
  <div class="charts-grid three-col">
59
  <div class="chart-card">
60
  <h3>MIMIC</h3>
61
+ <div id="scaling-mimic" class="chart-container"></div>
62
  </div>
63
  <div class="chart-card">
64
  <h3>10-K</h3>
65
+ <div id="scaling-10k" class="chart-container"></div>
66
  </div>
67
  <div class="chart-card">
68
  <h3>GLOBEM</h3>
69
+ <div id="scaling-globem" class="chart-container"></div>
70
  </div>
71
  </div>
72
  </section>
73
 
74
+ <!-- 2. Ranking Comparison Section -->
75
+ <section id="ranking" class="section visible">
76
  <div class="section-header">
77
+ <h2>πŸ† Ranking Comparison</h2>
78
+ <p>Compare model rankings based on Bradley-Terry pairwise ranking against accuracy ranking.</p>
 
79
  </div>
80
  <div class="dimension-toggle">
81
  <button class="dim-btn ranking-dim active" data-mode="novelty">🎯 Novelty Rank</button>
82
  <button class="dim-btn ranking-dim" data-mode="accuracy">πŸ“Š Accuracy Rank</button>
83
  </div>
 
84
  <div class="charts-grid three-col">
85
  <div class="chart-card">
86
  <h3>MIMIC</h3>
87
+ <div id="ranking-mimic" class="chart-container"></div>
88
  </div>
89
  <div class="chart-card">
90
  <h3>10-K</h3>
91
+ <div id="ranking-10k" class="chart-container"></div>
92
  </div>
93
  <div class="chart-card">
94
  <h3>GLOBEM</h3>
95
+ <div id="ranking-globem" class="chart-container"></div>
96
  </div>
97
  </div>
98
  </section>
99
 
100
+ <!-- 3. Turn Distribution Section -->
101
+ <section id="turn" class="section visible">
 
102
  <div class="section-header">
103
+ <h2>πŸ”„ Turn Distribution</h2>
104
  <p>Analyze the distribution of interaction turns across different models and datasets.</p>
105
  </div>
106
  <div class="charts-grid three-col">
 
119
  </div>
120
  </section>
121
 
122
+ <!-- 4. Error Analysis Section -->
123
+ <section id="error" class="section visible">
124
  <div class="section-header">
125
+ <h2>⚠️ Error Analysis</h2>
126
  <p>Breakdown of error types encountered during agent interactions, grouped by main categories.</p>
127
  </div>
128
  <div class="charts-grid single">
129
  <div class="chart-card wide">
130
+ <div id="error-chart" class="chart-container"></div>
131
  </div>
132
  </div>
133
  </section>
134
 
135
+ <!-- 5. Probing Results Section -->
136
+ <section id="probing" class="section visible">
137
  <div class="section-header">
138
+ <h2>πŸ” Probing Results</h2>
139
  <p>Analyze the average log probability of FINISH messages across conversation turns and progress.</p>
140
  </div>
141
  <div class="dimension-toggle">
 
145
  <div class="charts-grid three-col">
146
  <div class="chart-card">
147
  <h3>MIMIC</h3>
148
+ <div id="probing-mimic" class="chart-container"></div>
149
  </div>
150
  <div class="chart-card">
151
  <h3>GLOBEM</h3>
152
+ <div id="probing-globem" class="chart-container"></div>
153
  </div>
154
  <div class="chart-card">
155
  <h3>10-K</h3>
156
+ <div id="probing-10k" class="chart-container"></div>
157
  </div>
158
  </div>
159
  </section>
styles.css CHANGED
@@ -42,7 +42,7 @@ body {
42
  /* Hero Section */
43
  .hero {
44
  background: var(--gradient-hero);
45
- padding: 3rem 2rem 2rem;
46
  text-align: center;
47
  position: relative;
48
  overflow: hidden;
@@ -72,45 +72,45 @@ body {
72
  display: inline-block;
73
  background: rgba(99, 102, 241, 0.2);
74
  color: var(--primary-light);
75
- padding: 0.4rem 0.8rem;
76
  border-radius: 2rem;
77
- font-size: 0.8rem;
78
  font-weight: 500;
79
- margin-bottom: 0.75rem;
80
  border: 1px solid rgba(99, 102, 241, 0.3);
81
  }
82
 
83
  .hero h1 {
84
- font-size: 3rem;
85
  font-weight: 700;
86
  background: linear-gradient(135deg, #f1f5f9 0%, #818cf8 100%);
87
  -webkit-background-clip: text;
88
  -webkit-text-fill-color: transparent;
89
  background-clip: text;
90
- margin-bottom: 0.5rem;
91
  letter-spacing: -0.02em;
92
  }
93
 
94
  .subtitle {
95
- font-size: 1.2rem;
96
  color: var(--text-secondary);
97
- margin-bottom: 0.75rem;
98
  font-weight: 400;
99
  }
100
 
101
  .description {
102
- font-size: 0.9rem;
103
  color: var(--text-muted);
104
  max-width: 700px;
105
- margin: 0 auto 1.5rem;
106
- line-height: 1.6;
107
  }
108
 
109
  .stats-row {
110
  display: flex;
111
  justify-content: center;
112
- gap: 2.5rem;
113
- margin-top: 1.5rem;
114
  }
115
 
116
  .stat-item {
@@ -119,144 +119,102 @@ body {
119
 
120
  .stat-value {
121
  display: block;
122
- font-size: 2rem;
123
  font-weight: 700;
124
  color: var(--primary-light);
125
  }
126
 
127
  .stat-label {
128
- font-size: 0.8rem;
129
  color: var(--text-muted);
130
  }
131
 
132
- /* Navigation Tabs */
133
- .nav-tabs {
134
- display: flex;
135
- justify-content: center;
136
- gap: 0.5rem;
137
- padding: 0.75rem 2rem;
138
- background: var(--bg-card);
139
- border-bottom: 1px solid var(--border);
140
- position: sticky;
141
- top: 0;
142
- z-index: 100;
143
- flex-wrap: wrap;
144
- }
145
-
146
- .nav-tab {
147
- padding: 0.6rem 1.25rem;
148
- background: transparent;
149
- border: 1px solid transparent;
150
- border-radius: 0.5rem;
151
- color: var(--text-secondary);
152
- font-size: 0.9rem;
153
- font-weight: 500;
154
- cursor: pointer;
155
- transition: all 0.2s ease;
156
- font-family: inherit;
157
- }
158
-
159
- .nav-tab:hover {
160
- color: var(--text-primary);
161
- background: var(--bg-card-hover);
162
- }
163
-
164
- .nav-tab.active {
165
- color: var(--primary-light);
166
- background: rgba(99, 102, 241, 0.15);
167
- border-color: rgba(99, 102, 241, 0.3);
168
- }
169
-
170
  /* Main Content */
171
  .content {
172
- max-width: 1600px;
173
  margin: 0 auto;
174
- padding: 1.5rem;
175
  }
176
 
177
- /* Sections */
178
  .section {
179
- display: none;
180
- animation: fadeIn 0.3s ease;
181
- }
182
-
183
- .section.active {
184
  display: block;
 
 
 
185
  }
186
 
187
- @keyframes fadeIn {
188
- from {
189
- opacity: 0;
190
- transform: translateY(10px);
191
- }
192
-
193
- to {
194
- opacity: 1;
195
- transform: translateY(0);
196
- }
197
  }
198
 
199
  .section-header {
200
- margin-bottom: 1.5rem;
201
  text-align: center;
202
  }
203
 
204
  .section-header h2 {
205
- font-size: 1.5rem;
206
  font-weight: 600;
207
  color: var(--text-primary);
208
- margin-bottom: 0.4rem;
209
  }
210
 
211
  .section-header p {
212
  color: var(--text-muted);
213
- font-size: 0.9rem;
214
  }
215
 
216
  /* Dimension Toggle Buttons */
217
  .dimension-toggle {
218
  display: flex;
219
  justify-content: center;
220
- gap: 0.5rem;
221
- margin-bottom: 1.5rem;
222
  }
223
 
224
  .dim-btn {
225
- padding: 0.6rem 1.2rem;
226
  background: var(--bg-card);
227
  border: 1px solid var(--border);
228
  border-radius: 2rem;
229
  color: var(--text-secondary);
230
- font-size: 0.85rem;
231
  font-weight: 500;
232
  cursor: pointer;
233
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
234
  font-family: inherit;
235
  }
236
 
237
  .dim-btn:hover {
238
  background: var(--bg-card-hover);
239
  color: var(--text-primary);
240
- transform: translateY(-1px);
241
  }
242
 
243
  .dim-btn.active {
244
  background: var(--gradient-primary);
245
  color: white;
246
  border-color: transparent;
247
- box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
248
  }
249
 
250
  /* Charts Grid */
251
  .charts-grid {
252
  display: grid;
253
- gap: 1rem;
254
  }
255
 
256
  .charts-grid.three-col {
257
  grid-template-columns: repeat(3, 1fr);
258
  }
259
 
 
 
 
 
 
 
260
  @media (max-width: 1200px) {
261
  .charts-grid.three-col {
262
  grid-template-columns: repeat(2, 1fr);
@@ -272,93 +230,72 @@ body {
272
  /* Chart Card */
273
  .chart-card {
274
  background: var(--bg-card);
275
- border-radius: 0.75rem;
276
- padding: 1rem;
277
  border: 1px solid var(--border);
278
  box-shadow: var(--shadow);
 
279
  }
280
 
281
  .chart-card h3 {
282
- font-size: 1rem;
283
  font-weight: 600;
284
  color: var(--text-primary);
285
- margin-bottom: 0.75rem;
286
  text-align: center;
287
- padding-bottom: 0.5rem;
288
  border-bottom: 1px solid var(--border);
289
  }
290
 
291
- /* Chart Container */
292
- .chart-container-sm {
293
- height: 350px;
294
- min-height: 300px;
295
  }
296
 
297
- .chart-container-md {
298
- height: 450px;
299
- min-height: 400px;
 
300
  }
301
 
302
  .chart-container-tall {
303
- height: 550px;
304
- min-height: 500px;
305
- }
306
-
307
- /* Single chart grid */
308
- .charts-grid.single {
309
- grid-template-columns: 1fr;
310
- max-width: 1000px;
311
- margin: 0 auto;
312
- }
313
-
314
- .chart-card.wide {
315
- padding: 1.5rem;
316
  }
317
 
318
  /* Footer */
319
  .footer {
320
  text-align: center;
321
- padding: 1.5rem;
322
  color: var(--text-muted);
323
- font-size: 0.85rem;
324
  border-top: 1px solid var(--border);
325
- margin-top: 2rem;
326
  }
327
 
328
  /* Responsive */
329
  @media (max-width: 768px) {
330
  .hero {
331
- padding: 2rem 1rem 1.5rem;
332
  }
333
 
334
  .hero h1 {
335
- font-size: 2rem;
336
  }
337
 
338
  .subtitle {
339
- font-size: 1rem;
340
  }
341
 
342
  .stats-row {
343
- gap: 1.5rem;
344
  }
345
 
346
  .stat-value {
347
- font-size: 1.5rem;
348
- }
349
-
350
- .nav-tabs {
351
- padding: 0.5rem 0.75rem;
352
- gap: 0.25rem;
353
- }
354
-
355
- .nav-tab {
356
- padding: 0.5rem 0.75rem;
357
- font-size: 0.8rem;
358
  }
359
 
360
  .content {
361
- padding: 1rem;
362
  }
363
 
364
  .dimension-toggle {
@@ -366,8 +303,16 @@ body {
366
  }
367
 
368
  .dim-btn {
369
- padding: 0.5rem 1rem;
370
- font-size: 0.8rem;
 
 
 
 
 
 
 
 
371
  }
372
  }
373
 
@@ -384,12 +329,8 @@ body {
384
  fill: var(--text-primary) !important;
385
  }
386
 
387
- /* Smooth transitions for chart updates */
388
- .chart-container-sm,
389
- .chart-container-tall {
390
- transition: opacity 0.2s ease;
391
- }
392
-
393
- .chart-updating {
394
- opacity: 0.7;
395
  }
 
42
  /* Hero Section */
43
  .hero {
44
  background: var(--gradient-hero);
45
+ padding: 2rem 2rem 1.5rem;
46
  text-align: center;
47
  position: relative;
48
  overflow: hidden;
 
72
  display: inline-block;
73
  background: rgba(99, 102, 241, 0.2);
74
  color: var(--primary-light);
75
+ padding: 0.3rem 0.7rem;
76
  border-radius: 2rem;
77
+ font-size: 0.75rem;
78
  font-weight: 500;
79
+ margin-bottom: 0.5rem;
80
  border: 1px solid rgba(99, 102, 241, 0.3);
81
  }
82
 
83
  .hero h1 {
84
+ font-size: 2.5rem;
85
  font-weight: 700;
86
  background: linear-gradient(135deg, #f1f5f9 0%, #818cf8 100%);
87
  -webkit-background-clip: text;
88
  -webkit-text-fill-color: transparent;
89
  background-clip: text;
90
+ margin-bottom: 0.4rem;
91
  letter-spacing: -0.02em;
92
  }
93
 
94
  .subtitle {
95
+ font-size: 1rem;
96
  color: var(--text-secondary);
97
+ margin-bottom: 0.5rem;
98
  font-weight: 400;
99
  }
100
 
101
  .description {
102
+ font-size: 0.85rem;
103
  color: var(--text-muted);
104
  max-width: 700px;
105
+ margin: 0 auto 1rem;
106
+ line-height: 1.5;
107
  }
108
 
109
  .stats-row {
110
  display: flex;
111
  justify-content: center;
112
+ gap: 2rem;
113
+ margin-top: 1rem;
114
  }
115
 
116
  .stat-item {
 
119
 
120
  .stat-value {
121
  display: block;
122
+ font-size: 1.5rem;
123
  font-weight: 700;
124
  color: var(--primary-light);
125
  }
126
 
127
  .stat-label {
128
+ font-size: 0.7rem;
129
  color: var(--text-muted);
130
  }
131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  /* Main Content */
133
  .content {
134
+ max-width: 1400px;
135
  margin: 0 auto;
136
+ padding: 1rem 1.5rem;
137
  }
138
 
139
+ /* Sections - all visible */
140
  .section {
 
 
 
 
 
141
  display: block;
142
+ margin-bottom: 2rem;
143
+ padding-bottom: 1rem;
144
+ border-bottom: 1px solid var(--border);
145
  }
146
 
147
+ .section:last-child {
148
+ border-bottom: none;
149
+ margin-bottom: 0;
 
 
 
 
 
 
 
150
  }
151
 
152
  .section-header {
153
+ margin-bottom: 1rem;
154
  text-align: center;
155
  }
156
 
157
  .section-header h2 {
158
+ font-size: 1.25rem;
159
  font-weight: 600;
160
  color: var(--text-primary);
161
+ margin-bottom: 0.25rem;
162
  }
163
 
164
  .section-header p {
165
  color: var(--text-muted);
166
+ font-size: 0.8rem;
167
  }
168
 
169
  /* Dimension Toggle Buttons */
170
  .dimension-toggle {
171
  display: flex;
172
  justify-content: center;
173
+ gap: 0.4rem;
174
+ margin-bottom: 1rem;
175
  }
176
 
177
  .dim-btn {
178
+ padding: 0.4rem 0.9rem;
179
  background: var(--bg-card);
180
  border: 1px solid var(--border);
181
  border-radius: 2rem;
182
  color: var(--text-secondary);
183
+ font-size: 0.75rem;
184
  font-weight: 500;
185
  cursor: pointer;
186
+ transition: all 0.2s ease;
187
  font-family: inherit;
188
  }
189
 
190
  .dim-btn:hover {
191
  background: var(--bg-card-hover);
192
  color: var(--text-primary);
 
193
  }
194
 
195
  .dim-btn.active {
196
  background: var(--gradient-primary);
197
  color: white;
198
  border-color: transparent;
199
+ box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);
200
  }
201
 
202
  /* Charts Grid */
203
  .charts-grid {
204
  display: grid;
205
+ gap: 0.75rem;
206
  }
207
 
208
  .charts-grid.three-col {
209
  grid-template-columns: repeat(3, 1fr);
210
  }
211
 
212
+ .charts-grid.single {
213
+ grid-template-columns: 1fr;
214
+ max-width: 900px;
215
+ margin: 0 auto;
216
+ }
217
+
218
  @media (max-width: 1200px) {
219
  .charts-grid.three-col {
220
  grid-template-columns: repeat(2, 1fr);
 
230
  /* Chart Card */
231
  .chart-card {
232
  background: var(--bg-card);
233
+ border-radius: 0.5rem;
234
+ padding: 0.75rem;
235
  border: 1px solid var(--border);
236
  box-shadow: var(--shadow);
237
+ overflow: hidden;
238
  }
239
 
240
  .chart-card h3 {
241
+ font-size: 0.85rem;
242
  font-weight: 600;
243
  color: var(--text-primary);
244
+ margin-bottom: 0.5rem;
245
  text-align: center;
246
+ padding-bottom: 0.4rem;
247
  border-bottom: 1px solid var(--border);
248
  }
249
 
250
+ .chart-card.wide {
251
+ padding: 1rem;
 
 
252
  }
253
 
254
+ /* Chart Containers - Fixed heights */
255
+ .chart-container {
256
+ height: 280px;
257
+ width: 100%;
258
  }
259
 
260
  .chart-container-tall {
261
+ height: 380px;
262
+ width: 100%;
 
 
 
 
 
 
 
 
 
 
 
263
  }
264
 
265
  /* Footer */
266
  .footer {
267
  text-align: center;
268
+ padding: 1rem;
269
  color: var(--text-muted);
270
+ font-size: 0.75rem;
271
  border-top: 1px solid var(--border);
272
+ margin-top: 1rem;
273
  }
274
 
275
  /* Responsive */
276
  @media (max-width: 768px) {
277
  .hero {
278
+ padding: 1.5rem 1rem;
279
  }
280
 
281
  .hero h1 {
282
+ font-size: 1.75rem;
283
  }
284
 
285
  .subtitle {
286
+ font-size: 0.9rem;
287
  }
288
 
289
  .stats-row {
290
+ gap: 1rem;
291
  }
292
 
293
  .stat-value {
294
+ font-size: 1.25rem;
 
 
 
 
 
 
 
 
 
 
295
  }
296
 
297
  .content {
298
+ padding: 0.75rem;
299
  }
300
 
301
  .dimension-toggle {
 
303
  }
304
 
305
  .dim-btn {
306
+ padding: 0.35rem 0.7rem;
307
+ font-size: 0.7rem;
308
+ }
309
+
310
+ .chart-container {
311
+ height: 250px;
312
+ }
313
+
314
+ .chart-container-tall {
315
+ height: 320px;
316
  }
317
  }
318
 
 
329
  fill: var(--text-primary) !important;
330
  }
331
 
332
+ /* Ensure Plotly charts don't overflow */
333
+ .js-plotly-plot {
334
+ width: 100% !important;
335
+ height: 100% !important;
 
 
 
 
336
  }