plotleaf 0.0.0-stage → 0.1.0

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.
@@ -0,0 +1,458 @@
1
+ :root {
2
+ color-scheme: light dark;
3
+ --page: #ffffff;
4
+ --ink: #202123;
5
+ --body: #55585d;
6
+ --muted: #71757c;
7
+ --rule: #e9eaec;
8
+ --soft: #f5f6f7;
9
+ --focus: #2787ce;
10
+ --positive: #258044;
11
+ --negative: #ca4247;
12
+ --warning: #996719;
13
+ --series: #429ee4;
14
+ --series-fill: rgba(79, 178, 239, .31);
15
+ --series-fill-end: rgba(79, 178, 239, 0);
16
+ --tooltip: #ffffff;
17
+ --target: #969ba2;
18
+ font-family:
19
+ ui-sans-serif,
20
+ -apple-system,
21
+ BlinkMacSystemFont,
22
+ "Segoe UI",
23
+ sans-serif;
24
+ font-synthesis: none;
25
+ -webkit-font-smoothing: antialiased;
26
+ text-rendering: optimizeLegibility;
27
+ }
28
+ @media (prefers-color-scheme: dark) {
29
+ :root {
30
+ --page: #18191c;
31
+ --ink: #efeff1;
32
+ --body: #b9bbc2;
33
+ --muted: #999da7;
34
+ --rule: #303238;
35
+ --soft: #23252a;
36
+ --focus: #79bdf2;
37
+ --positive: #79c591;
38
+ --negative: #ed8a8d;
39
+ --warning: #ddba73;
40
+ --series: #65b5ed;
41
+ --series-fill: rgba(72, 158, 224, .26);
42
+ --series-fill-end: rgba(72, 158, 224, 0);
43
+ --tooltip: #25272c;
44
+ --target: #878d97;
45
+ }
46
+ }
47
+ * {
48
+ box-sizing: border-box;
49
+ }
50
+ html {
51
+ background: var(--page);
52
+ scroll-padding-block-start: 32px;
53
+ }
54
+ body {
55
+ margin: 0;
56
+ color: var(--body);
57
+ font-size: 18px;
58
+ line-height: 1.75;
59
+ }
60
+ button {
61
+ font: inherit;
62
+ color: inherit;
63
+ }
64
+ a {
65
+ color: var(--focus);
66
+ text-underline-offset: 0.2em;
67
+ text-decoration-thickness: 1px;
68
+ overflow-wrap: anywhere;
69
+ }
70
+ a:focus-visible,
71
+ button:focus-visible,
72
+ summary:focus-visible {
73
+ outline: 2px solid var(--focus);
74
+ outline-offset: 5px;
75
+ border-radius: 3px;
76
+ }
77
+ .report {
78
+ max-width: 1680px;
79
+ margin-inline: auto;
80
+ padding: 40px clamp(24px, 3.5vw, 60px) 80px;
81
+ }
82
+ h1,
83
+ h2,
84
+ h3,
85
+ h4,
86
+ h5,
87
+ h6 {
88
+ color: var(--ink);
89
+ line-height: 1.3;
90
+ letter-spacing: -0.025em;
91
+ text-wrap: balance;
92
+ scroll-margin-block-start: 32px;
93
+ }
94
+ h1 {
95
+ font-size: clamp(28px, 2.4vw, 34px);
96
+ font-weight: 650;
97
+ margin: 0 0 32px;
98
+ }
99
+ h2 {
100
+ font-size: 24px;
101
+ font-weight: 620;
102
+ margin: 48px 0 14px;
103
+ }
104
+ h3 {
105
+ font-size: 19px;
106
+ font-weight: 600;
107
+ margin: 32px 0 12px;
108
+ }
109
+ h4,
110
+ h5,
111
+ h6 {
112
+ font-size: 18px;
113
+ margin: 28px 0 10px;
114
+ }
115
+ p {
116
+ margin: 0 0 18px;
117
+ max-width: 78ch;
118
+ overflow-wrap: anywhere;
119
+ }
120
+ strong {
121
+ color: var(--ink);
122
+ font-weight: 650;
123
+ }
124
+ ul,
125
+ ol {
126
+ padding-inline-start: 25px;
127
+ margin: 14px 0 24px;
128
+ max-width: 78ch;
129
+ }
130
+ li {
131
+ margin-block: 6px;
132
+ }
133
+ blockquote {
134
+ margin: 24px 0;
135
+ padding-inline-start: 22px;
136
+ border-inline-start: 2px solid var(--rule);
137
+ color: var(--muted);
138
+ }
139
+ hr {
140
+ border: 0;
141
+ border-block-start: 1px solid var(--rule);
142
+ margin: 42px 0;
143
+ }
144
+ pre {
145
+ overflow: auto;
146
+ padding: 20px 24px;
147
+ background: var(--soft);
148
+ border-radius: 6px;
149
+ font-size: 14px;
150
+ line-height: 1.65;
151
+ }
152
+ code {
153
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
154
+ font-size: 0.86em;
155
+ }
156
+ :not(pre) > code {
157
+ background: var(--soft);
158
+ border-radius: 3px;
159
+ padding: 0.15em 0.35em;
160
+ color: var(--ink);
161
+ }
162
+ .component-grid {
163
+ display: grid;
164
+ gap: 36px 48px;
165
+ margin: 30px 0 48px;
166
+ align-items: start;
167
+ }
168
+ .component-grid[data-columns="1"] {
169
+ grid-template-columns: minmax(0, 1fr);
170
+ }
171
+ .component-grid[data-columns="2"] {
172
+ grid-template-columns: repeat(2, minmax(0, 1fr));
173
+ }
174
+ .component-grid[data-columns="3"] {
175
+ grid-template-columns: repeat(3, minmax(0, 1fr));
176
+ }
177
+ .component-grid[data-columns="4"] {
178
+ grid-template-columns: repeat(4, minmax(0, 1fr));
179
+ }
180
+ .component-grid > * {
181
+ min-width: 0;
182
+ margin-block: 0;
183
+ }
184
+ .metric {
185
+ padding-block: 7px 12px;
186
+ font-variant-numeric: tabular-nums;
187
+ }
188
+ .metric-label {
189
+ color: var(--muted);
190
+ font-size: 17px;
191
+ line-height: 1.45;
192
+ margin: 0 0 14px;
193
+ }
194
+ .metric-value {
195
+ color: var(--ink);
196
+ font-size: clamp(30px, 2.8vw, 42px);
197
+ font-weight: 560;
198
+ letter-spacing: -0.035em;
199
+ line-height: 1.15;
200
+ margin: 0;
201
+ white-space: nowrap;
202
+ overflow-x: auto;
203
+ }
204
+ .metric-comparison {
205
+ font-size: 15px;
206
+ line-height: 1.5;
207
+ margin: 16px 0 0;
208
+ }
209
+ .metric-direction {
210
+ font-size: 0.75em;
211
+ margin-inline-end: 7px;
212
+ }
213
+ [data-sentiment="positive"] {
214
+ color: var(--positive);
215
+ }
216
+ [data-sentiment="negative"] {
217
+ color: var(--negative);
218
+ }
219
+ .chart {
220
+ min-width: 0;
221
+ margin: 28px 0 38px;
222
+ }
223
+ .chart figcaption {
224
+ color: var(--ink);
225
+ font-size: 18px;
226
+ font-weight: 550;
227
+ line-height: 1.4;
228
+ margin-block-end: 20px;
229
+ }
230
+ .chart-plot {
231
+ width: 100%;
232
+ height: 290px;
233
+ overflow: hidden;
234
+ }
235
+ .chart-data {
236
+ margin-block-start: 9px;
237
+ font-size: 13px;
238
+ }
239
+ .chart-data summary {
240
+ width: fit-content;
241
+ color: var(--muted);
242
+ cursor: pointer;
243
+ padding-block: 4px;
244
+ }
245
+ .chart-data[open] {
246
+ margin-block-end: 24px;
247
+ }
248
+ .chart-data table {
249
+ font-size: 14px;
250
+ }
251
+ .chart-data caption {
252
+ font-size: 15px;
253
+ }
254
+ .table-scroll {
255
+ max-width: 100%;
256
+ overflow: auto;
257
+ margin: 28px 0 30px;
258
+ scrollbar-width: thin;
259
+ }
260
+ table {
261
+ width: 100%;
262
+ border-collapse: collapse;
263
+ font-size: 16px;
264
+ line-height: 1.6;
265
+ font-variant-numeric: tabular-nums;
266
+ }
267
+ caption {
268
+ color: var(--ink);
269
+ font-size: 18px;
270
+ font-weight: 550;
271
+ text-align: start;
272
+ padding: 0 0 20px;
273
+ }
274
+ thead {
275
+ color: var(--muted);
276
+ }
277
+ th {
278
+ font-weight: 400;
279
+ border-block-end: 1px solid var(--rule);
280
+ }
281
+ th,
282
+ td {
283
+ text-align: start;
284
+ padding: 13px 18px 13px 0;
285
+ white-space: nowrap;
286
+ }
287
+ th:last-child,
288
+ td:last-child {
289
+ padding-inline-end: 0;
290
+ }
291
+ td {
292
+ border-block-end: 1px solid var(--rule);
293
+ }
294
+ tbody tr:last-child td {
295
+ border-block-end: 0;
296
+ }
297
+ .numeric {
298
+ text-align: end;
299
+ }
300
+ th button {
301
+ border: 0;
302
+ background: transparent;
303
+ display: inline-flex;
304
+ align-items: center;
305
+ gap: 6px;
306
+ padding: 4px 0;
307
+ margin: -4px 0;
308
+ min-height: 32px;
309
+ cursor: pointer;
310
+ text-align: inherit;
311
+ }
312
+ th.numeric button {
313
+ justify-content: end;
314
+ }
315
+ .sort-indicator {
316
+ font-size: 11px;
317
+ opacity: 0.4;
318
+ }
319
+ th[aria-sort="ascending"] .sort-indicator,
320
+ th[aria-sort="descending"] .sort-indicator {
321
+ opacity: 1;
322
+ color: var(--ink);
323
+ }
324
+ .callout {
325
+ border-inline-start: 2px solid var(--rule);
326
+ margin: 32px 0;
327
+ padding: 4px 0 4px 20px;
328
+ font-size: 16px;
329
+ }
330
+ .callout[data-tone="warning"] {
331
+ border-color: var(--warning);
332
+ }
333
+ .callout-title {
334
+ font-weight: 600;
335
+ color: var(--ink);
336
+ margin-block-end: 8px;
337
+ }
338
+ .callout > :last-child {
339
+ margin-block-end: 0;
340
+ }
341
+ .empty-state {
342
+ padding-block: 32px;
343
+ color: var(--muted);
344
+ font-size: 15px;
345
+ }
346
+ .skip-link {
347
+ position: absolute;
348
+ inset-block-start: 12px;
349
+ inset-inline-start: 12px;
350
+ transform: translateY(-160%);
351
+ background: var(--page);
352
+ padding: 8px 14px;
353
+ z-index: 10;
354
+ }
355
+ .skip-link:focus {
356
+ transform: none;
357
+ }
358
+ .visually-hidden {
359
+ position: absolute;
360
+ width: 1px;
361
+ height: 1px;
362
+ padding: 0;
363
+ overflow: hidden;
364
+ clip-path: inset(50%);
365
+ white-space: nowrap;
366
+ border: 0;
367
+ }
368
+ .diagnostic {
369
+ padding-block: 22px;
370
+ border-block-start: 1px solid var(--rule);
371
+ max-width: 90ch;
372
+ }
373
+ .diagnostic-location {
374
+ font-family: ui-monospace, monospace;
375
+ font-size: 13px;
376
+ color: var(--negative);
377
+ }
378
+ .diagnostic-hint,
379
+ .diagnostic-intro {
380
+ color: var(--muted);
381
+ }
382
+ @media (hover: hover) {
383
+ th button:hover {
384
+ color: var(--ink);
385
+ }
386
+ tbody tr:hover {
387
+ background: var(--soft);
388
+ }
389
+ }
390
+ @media (max-width: 1280px) {
391
+ .metric-grid[data-columns="4"] {
392
+ grid-template-columns: repeat(2, minmax(0, 1fr));
393
+ }
394
+ }
395
+ @media (max-width: 800px) {
396
+ .component-grid[data-columns="3"],
397
+ .component-grid[data-columns="4"] {
398
+ grid-template-columns: repeat(2, minmax(0, 1fr));
399
+ }
400
+ .component-grid {
401
+ gap: 26px 28px;
402
+ }
403
+ .report {
404
+ padding-block-start: 30px;
405
+ }
406
+ .metric-label {
407
+ font-size: 15px;
408
+ }
409
+ }
410
+ @media (max-width: 640px) {
411
+ .component-grid.metric-grid {
412
+ grid-template-columns: minmax(0, 1fr);
413
+ }
414
+ }
415
+ @media (max-width: 540px) {
416
+ body {
417
+ font-size: 16px;
418
+ }
419
+ .component-grid[data-columns="2"] {
420
+ grid-template-columns: minmax(0, 1fr);
421
+ }
422
+ .metric-value {
423
+ font-size: 30px;
424
+ }
425
+ .metric-comparison {
426
+ font-size: 13px;
427
+ }
428
+ .chart-plot {
429
+ height: 245px;
430
+ }
431
+ h2 {
432
+ font-size: 21px;
433
+ margin-block-start: 34px;
434
+ }
435
+ table {
436
+ font-size: 14px;
437
+ }
438
+ .report {
439
+ padding-inline: 22px;
440
+ }
441
+ }
442
+ @media print {
443
+ :root {
444
+ color-scheme: light;
445
+ }
446
+ .chart-data summary,
447
+ .skip-link {
448
+ display: none;
449
+ }
450
+ .chart,
451
+ .metric,
452
+ tr {
453
+ break-inside: avoid;
454
+ }
455
+ .report {
456
+ padding: 0;
457
+ }
458
+ }