redis_dashboard 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/Gemfile +0 -1
  4. data/Gemfile.lock +9 -13
  5. data/README.md +17 -15
  6. data/lib/redis_dashboard/application.rb +50 -17
  7. data/lib/redis_dashboard/client.rb +20 -3
  8. data/lib/redis_dashboard/public/ariato.css +739 -0
  9. data/lib/redis_dashboard/public/style.css +185 -0
  10. data/lib/redis_dashboard/views/application.scss +2 -10
  11. data/lib/redis_dashboard/views/clients.erb +18 -17
  12. data/lib/redis_dashboard/views/config.erb +6 -7
  13. data/lib/redis_dashboard/views/index.erb +10 -10
  14. data/lib/redis_dashboard/views/info.erb +6 -7
  15. data/lib/redis_dashboard/views/key/hash.erb +12 -0
  16. data/lib/redis_dashboard/views/key/list.erb +11 -0
  17. data/lib/redis_dashboard/views/key/metadata.erb +47 -0
  18. data/lib/redis_dashboard/views/key/set.erb +11 -0
  19. data/lib/redis_dashboard/views/key/string.erb +3 -0
  20. data/lib/redis_dashboard/views/key/unsupported.erb +2 -0
  21. data/lib/redis_dashboard/views/key/zset.erb +16 -0
  22. data/lib/redis_dashboard/views/key.erb +5 -0
  23. data/lib/redis_dashboard/views/keys.erb +26 -0
  24. data/lib/redis_dashboard/views/keyspace.erb +23 -0
  25. data/lib/redis_dashboard/views/layout.erb +34 -29
  26. data/lib/redis_dashboard/views/memory.erb +21 -20
  27. data/lib/redis_dashboard/views/slowlog.erb +25 -24
  28. data/lib/redis_dashboard/views/stats.erb +19 -15
  29. data/lib/redis_dashboard.rb +1 -1
  30. data/redis_dashboard.gemspec +1 -2
  31. data/screenshot.jpg +0 -0
  32. metadata +16 -24
  33. data/lib/redis_dashboard/views/stylesheets/base.scss +0 -17
  34. data/lib/redis_dashboard/views/stylesheets/colors.scss +0 -6
  35. data/lib/redis_dashboard/views/stylesheets/link.scss +0 -20
  36. data/lib/redis_dashboard/views/stylesheets/page.scss +0 -69
  37. data/lib/redis_dashboard/views/stylesheets/server-card.scss +0 -37
  38. data/lib/redis_dashboard/views/stylesheets/table.scss +0 -49
  39. data/lib/redis_dashboard/views/stylesheets/typography.scss +0 -21
@@ -0,0 +1,739 @@
1
+ /* design_tokens */
2
+ /* Colors */
3
+
4
+ :root,
5
+ .theme-light {
6
+ --color-red-00: 255, 255, 255;
7
+ --color-red-20: 253, 249, 249;
8
+ --color-red-35: 252, 246, 245;
9
+ --color-red-50: 250, 240, 239;
10
+ --color-red-100: 244, 223, 219;
11
+ --color-red-200: 229, 184, 177;
12
+ --color-red-300: 211, 146, 137;
13
+ --color-red-400: 193, 111, 101;
14
+ --color-red-500: 174, 78, 69;
15
+ --color-red-600: 151, 63, 58;
16
+ --color-red-700: 130, 49, 47;
17
+ --color-red-800: 109, 35, 36;
18
+ --color-red-900: 89, 21, 26;
19
+ --color-red-1000: 64, 4, 9;
20
+ --color-grey-00: 255, 255, 255;
21
+ --color-grey-20: 250, 250, 251;
22
+ --color-grey-35: 247, 247, 248;
23
+ --color-grey-50: 242, 242, 244;
24
+ --color-grey-100: 226, 227, 231;
25
+ --color-grey-200: 191, 195, 202;
26
+ --color-grey-300: 157, 163, 173;
27
+ --color-grey-400: 127, 134, 148;
28
+ --color-grey-500: 100, 108, 124;
29
+ --color-grey-600: 81, 88, 104;
30
+ --color-grey-700: 64, 70, 85;
31
+ --color-grey-800: 48, 52, 67;
32
+ --color-grey-900: 32, 35, 49;
33
+ --color-grey-1000: 12, 14, 28;
34
+ --color-black: 0, 0.6353307795189879, 20.78828237830061;
35
+
36
+ --color-bg: var(--color-grey-20);
37
+ --color-body: var(--color-grey-500);
38
+ }
39
+
40
+ .theme-dark {
41
+ --color-red-00: 36, 19, 16;
42
+ --color-red-20: 42, 22, 19;
43
+ --color-red-35: 47, 25, 22;
44
+ --color-red-50: 51, 27, 24;
45
+ --color-red-100: 67, 35, 31;
46
+ --color-red-200: 100, 52, 47;
47
+ --color-red-300: 135, 71, 63;
48
+ --color-red-400: 172, 89, 80;
49
+ --color-red-500: 210, 109, 98;
50
+ --color-red-600: 223, 138, 127;
51
+ --color-red-700: 233, 167, 158;
52
+ --color-red-800: 243, 196, 189;
53
+ --color-red-900: 250, 225, 222;
54
+ --color-red-1000: 255, 255, 255;
55
+ --color-grey-00: 15, 24, 37;
56
+ --color-grey-20: 19, 28, 41;
57
+ --color-grey-35: 22, 31, 44;
58
+ --color-grey-50: 25, 34, 47;
59
+ --color-grey-100: 36, 44, 58;
60
+ --color-grey-200: 58, 66, 81;
61
+ --color-grey-300: 81, 89, 105;
62
+ --color-grey-400: 105, 114, 130;
63
+ --color-grey-500: 130, 139, 156;
64
+ --color-grey-600: 154, 161, 175;
65
+ --color-grey-700: 178, 184, 194;
66
+ --color-grey-800: 203, 207, 214;
67
+ --color-grey-900: 229, 231, 234;
68
+ --color-grey-1000: 255, 255, 255;
69
+ --color-black: 0, 0, 0;
70
+
71
+ --color-bg: var(--color-grey-20);
72
+ --color-body: var(--color-grey-500);
73
+ }
74
+
75
+ @media (prefers-color-scheme: dark) {
76
+ :not(.theme-light) {
77
+ --color-red-00: 36, 19, 16;
78
+ --color-red-20: 42, 22, 19;
79
+ --color-red-35: 47, 25, 22;
80
+ --color-red-50: 51, 27, 24;
81
+ --color-red-100: 67, 35, 31;
82
+ --color-red-200: 100, 52, 47;
83
+ --color-red-300: 135, 71, 63;
84
+ --color-red-400: 172, 89, 80;
85
+ --color-red-500: 210, 109, 98;
86
+ --color-red-600: 223, 138, 127;
87
+ --color-red-700: 233, 167, 158;
88
+ --color-red-800: 243, 196, 189;
89
+ --color-red-900: 250, 225, 222;
90
+ --color-red-1000: 255, 255, 255;
91
+ --color-grey-00: 15, 24, 37;
92
+ --color-grey-20: 19, 28, 41;
93
+ --color-grey-35: 22, 31, 44;
94
+ --color-grey-50: 25, 34, 47;
95
+ --color-grey-100: 36, 44, 58;
96
+ --color-grey-200: 58, 66, 81;
97
+ --color-grey-300: 81, 89, 105;
98
+ --color-grey-400: 105, 114, 130;
99
+ --color-grey-500: 130, 139, 156;
100
+ --color-grey-600: 154, 161, 175;
101
+ --color-grey-700: 178, 184, 194;
102
+ --color-grey-800: 203, 207, 214;
103
+ --color-grey-900: 229, 231, 234;
104
+ --color-grey-1000: 255, 255, 255;
105
+ --color-black: 0, 0, 0;
106
+
107
+ --color-bg: var(--color-grey-20);
108
+ --color-body: var(--color-grey-500);
109
+ }
110
+ }
111
+
112
+ body {
113
+ background: rgba(var(--color-bg), 1);
114
+ color: rgba(var(--color-body), 1);
115
+ }
116
+
117
+ :focus {
118
+ outline: 2px solid rgba(var(--color-red-200), 1);
119
+ }
120
+
121
+ :root {
122
+ --font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
123
+ --font-serif: Athelas, Cambria, Source Serif Pro, serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
124
+ --font-mono: SF Mono, Menlo, Consolas, DejaVu Sans Mono, monospace;
125
+
126
+ --base-font-size: var(--space-2x);
127
+
128
+ /****************/
129
+ /* font-weight */
130
+
131
+ --font-weight-400: 400;
132
+ --font-weight-700: 700;
133
+
134
+ /****************/
135
+ /* modular scale */
136
+
137
+ --ratio: 1.25;
138
+ --font-size-10: calc(var(--base-font-size) / var(--ratio) / var(--ratio) / var(--ratio) / var(--ratio)); /* -4 */
139
+ --font-size-20: calc(var(--base-font-size) / var(--ratio) / var(--ratio) / var(--ratio)); /* -3 */
140
+ --font-size-30: calc(var(--base-font-size) / var(--ratio) / var(--ratio)); /* -2 */
141
+ --font-size-40: calc(var(--base-font-size) / var(--ratio)); /* -1 */
142
+ --font-size-50: var(--base-font-size);
143
+ --font-size-60: calc(var(--base-font-size) * var(--ratio)); /* +1 */
144
+ --font-size-70: calc(var(--base-font-size) * var(--ratio) * var(--ratio)); /* +2 */
145
+ --font-size-80: calc(var(--base-font-size) * var(--ratio) * var(--ratio) * var(--ratio)); /* +4 */
146
+ --font-size-90: calc(var(--base-font-size) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio)); /* +5 */
147
+ --font-size-100: calc(var(--base-font-size) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio)); /* +6 */
148
+ --font-size-110: calc(var(--base-font-size) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio)); /* +7 */
149
+ --font-size-120: calc(var(--base-font-size) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio)); /* +8 */
150
+ --font-size-130: calc(var(--base-font-size) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio)); /* +9 */
151
+ --font-size-140: calc(var(--base-font-size) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio) * var(--ratio)); /* +10 */
152
+ }
153
+
154
+ html,
155
+ body {
156
+ font-size: var(--base-font-size);
157
+ }
158
+
159
+ body {
160
+ font-family: var(--font-sans);
161
+ font-weight: var(--font-weight-400);
162
+ line-height: var(--space-3x);
163
+ }
164
+
165
+ :root {
166
+ /* box-shadow */
167
+ --box-shadow-s: 0 0 2px -1px rgba(var(--color-black), 0.05),
168
+ 0 1px 2px 0 rgba(var(--color-black), 0.05);
169
+ --box-shadow-m: 0 0 2px -1px rgba(var(--color-black), 0.05),
170
+ 0 1px 2px 0 rgba(var(--color-black), 0.05),
171
+ 0 2px 4px -2px rgba(var(--color-black), 0.05);
172
+ --box-shadow-l: 0 2px 2px -1px rgba(var(--color-black), 0.05),
173
+ 0 4px 4px -2px rgba(var(--color-black), 0.05),
174
+ 0 8px 16px -4px rgba(var(--color-black), 0.05),
175
+ 0 16px 32px -8px rgba(var(--color-black), 0.05);
176
+ /* inset box shadow */
177
+ --box-inset-shadow-s: 0 1px 1px 0 rgba(var(--color-black), 0.04) inset;
178
+ --box-inset-shadow-m: 0 1px 1px 0px rgba(var(--color-black), 0.04) inset,
179
+ 0 2px 2px 1px rgba(var(--color-black), 0.04) inset;
180
+ --box-inset-shadow-l: 0 1px 1px 0px rgba(var(--color-black), 0.04) inset,
181
+ 0 2px 2px 1px rgba(var(--color-black), 0.04) inset,
182
+ 0 2px 8px 2px rgba(var(--color-black), 0.04) inset;
183
+ /* text shadow */
184
+ --text-shadow-s: 0 1px 1px rgba(var(--color-black), 0.04);
185
+ --text-shadow-m: 0 1px 1px rgba(var(--color-black), 0.04),
186
+ 0 2px 2px rgba(var(--color-black), 0.04);
187
+ --text-shadow-l: 0 1px 1px rgba(var(--color-black), 0.04),
188
+ 0 2px 2px rgba(var(--color-black), 0.04),
189
+ 0 4px 4px rgba(var(--color-black), 0.04);
190
+ }
191
+ /* shape */
192
+
193
+ :root {
194
+ /* border radius */
195
+ --border-radius-s: calc(var(--space) * 0.25);
196
+ --border-radius-m: var(--space-1-2);
197
+ --border-radius-l: calc(var(--space) * 1);
198
+ }
199
+ /* space */
200
+
201
+ *,
202
+ *::before,
203
+ *::after {
204
+ box-sizing: border-box;
205
+ }
206
+
207
+ :root {
208
+ --space: 0.5rem;
209
+ /* divided */
210
+ --space-1-4: calc(var(--space) / 4);
211
+ --space-1-2: calc(var(--space) / 2);
212
+ /* multiple */
213
+ --space-2x: calc(var(--space) * 2);
214
+ --space-3x: calc(var(--space) * 3);
215
+ --space-4x: calc(var(--space) * 4);
216
+ --space-5x: calc(var(--space) * 5);
217
+ --space-6x: calc(var(--space) * 6);
218
+ --space-7x: calc(var(--space) * 7);
219
+ --space-8x: calc(var(--space) * 8);
220
+ --space-9x: calc(var(--space) * 9);
221
+ --space-10x: calc(var(--space) * 10);
222
+ --space-11x: calc(var(--space) * 11);
223
+ --space-12x: calc(var(--space) * 12);
224
+ --space-13x: calc(var(--space) * 13);
225
+ --space-14x: calc(var(--space) * 14);
226
+
227
+ --screen-s: 900px;
228
+ --screen-m: 1200px;
229
+ --screen-l: 1400px;
230
+ }
231
+
232
+ is-flow > * + * {
233
+ margin-top: var(--space-3x);
234
+ }
235
+ /* time */
236
+
237
+ /* use for animations */
238
+
239
+ /* elements */
240
+ /* text selection */
241
+ ::-moz-selection {
242
+ background: rgba(var(--color-red-100), 1);
243
+ text-shadow: none;
244
+ }
245
+
246
+ ::selection {
247
+ background: rgba(var(--color-red-100), 1);
248
+ text-shadow: none;
249
+ }
250
+
251
+ /* paragraphs */
252
+
253
+ p {
254
+ margin: 0;
255
+ max-width: 70ch;
256
+ padding: calc(var(--space) - 2px) 0 calc(var(--space-2x) + 2px); /* adjust baseline */
257
+ }
258
+
259
+ p + :not(p) {
260
+ margin-top: var(--space-3x);
261
+ }
262
+
263
+ strong {
264
+ color: rgba(var(--color-grey-700), 1);
265
+ font-weight: inherit;
266
+ }
267
+
268
+ hr {
269
+ height: var(--space-3x);
270
+ margin: 0;
271
+ padding: var(--space-3x) 0 calc(var(--space-3x) - 1px);
272
+
273
+ /* type */
274
+ background: transparent;
275
+ border: 0;
276
+ box-shadow: 0 -1px 0 0 rgba(var(--color-grey-50), 1);
277
+ }
278
+
279
+ sub,
280
+ sup {
281
+ line-height: 0; /* prevent line height shift */
282
+ }
283
+
284
+ kbd {
285
+ padding: 0 var(--space-1-2);
286
+ background-color: rgba(var(--color-grey-50), 1);
287
+ box-shadow:
288
+ 0 0 0 1px rgba(var(--color-grey-300), 1),
289
+ var(--box-shadow-m);
290
+ border-radius: var(--space-1-2);
291
+
292
+ /* type */
293
+ color: rgba(var(--color-grey-700), 1);
294
+ font-size: var(--font-size-40);
295
+ line-height: var(--space-3x);
296
+ white-space: nowrap;
297
+ text-transform: uppercase;
298
+ font-family: var(--font-mono);
299
+ font-weight: 700;
300
+ }
301
+
302
+
303
+ /* components/grid_auto.css */
304
+
305
+ .grid-auto {
306
+ --gap: var(--space-3x);
307
+ --col-min-width: calc(var(--space) * 30);
308
+
309
+ display: grid;
310
+ grid-gap: var(--gap, 0);
311
+ grid-template-columns: repeat(auto-fit, minmax(var(--col-min-width), 1fr));
312
+ width: 100%;
313
+ padding: 0;
314
+ }
315
+
316
+ .grid-auto > * {
317
+ list-style-type: none;
318
+ margin: 0;
319
+ }
320
+
321
+ .grid-auto * + *,
322
+ .grid-auto * + .card {
323
+ margin-top: 0;
324
+ }
325
+
326
+ .grid-auto + * {
327
+ margin-top: var(--space-3x);
328
+ }
329
+
330
+ /* FORMS */
331
+
332
+ form > * + * {
333
+ margin-top: var(--space-3x, 1em);
334
+ }
335
+
336
+ /* FIELDSET */
337
+
338
+ legend {
339
+ transform: translateY(-2px);
340
+ margin: calc(var(--space-3x) * -1) 0 0;
341
+ }
342
+
343
+ label {
344
+ display: block;
345
+ line-height: var(--space-3x);
346
+ min-height: var(--space-5x);
347
+ font-weight: 400;
348
+ color: rgba(var(--color-grey-700), 1);
349
+ padding: calc(var(--space) - 2px) 0 2px;
350
+ }
351
+
352
+ input,
353
+ select,
354
+ textarea,
355
+ output {
356
+ display: block;
357
+ width: 100%;
358
+ background-color: rgba(var(--color-grey-35), 1);
359
+ min-height: var(--space-5x);
360
+ padding: calc(var(--space) - 1px) calc(var(--space) - 1px);
361
+ margin: 2px 0 -2px;
362
+
363
+ /* border */
364
+ border: 1px solid rgba(var(--color-grey-200), 1);
365
+ border-radius: var(--border-radius-m, 0);
366
+ outline: 0 none;
367
+ box-shadow: var(--box-inset-shadow-s);
368
+
369
+ /* text */
370
+ color: rgba(var(--color-grey-600), 1);
371
+ font-size: var(--base-font-size);
372
+ line-height: var(--space-3x);
373
+ }
374
+
375
+ input:focus,
376
+ select:focus,
377
+ textarea:focus,
378
+ output:focus {
379
+ outline: 0 none;
380
+ border-color: rgba(var(--color-red-400), 1);
381
+ box-shadow:
382
+ 0 0 0 2px rgba(var(--color-red-200), 1),
383
+ var(--box-shadow-s);
384
+ }
385
+
386
+ input:focus:not(:focus-visible),
387
+ select:focus:not(:focus-visible),
388
+ textarea:focus:not(:focus-visible),
389
+ output:focus:not(:focus-visible) {
390
+ outline: none;
391
+ }
392
+
393
+ input[disabled],
394
+ select[disabled],
395
+ textarea[disabled],
396
+ output[disabled] {
397
+ border-color: rgba(var(--color-grey-100), 1);
398
+ color: rgba(var(--color-bg), 1);
399
+ background-color: rgba(var(--color-grey-100), 1);
400
+ box-shadow: none;
401
+ cursor: not-allowed;
402
+ opacity: 1;
403
+ }
404
+
405
+ input[readonly],
406
+ select[readonly],
407
+ textarea[readonly],
408
+ output[readonly] {
409
+ border: 1px dashed rgba(var(--color-grey-200), 1);
410
+ cursor: not-allowed;
411
+ color: rgba(var(--color-grey-500), 1);
412
+ background-color: transparent;
413
+ box-shadow: 0 0 0 0;
414
+ }
415
+
416
+ input:-internal-autofill-selected,
417
+ select:-internal-autofill-selected,
418
+ textarea:-internal-autofill-selected,
419
+ output:-internal-autofill-selected {
420
+ font-size: var(--base-font-size);
421
+ background-color: rgba(var(--color-red-100), 1) !important;
422
+ }
423
+
424
+ label + input,
425
+ label + textarea,
426
+ label + select,
427
+ label + output {
428
+ margin-top: calc(var(--space) * -1);
429
+ }
430
+
431
+
432
+ /* Change Autocomplete styles in Chrome*/
433
+ input:-webkit-autofill,
434
+ input:-webkit-autofill:hover,
435
+ input:-webkit-autofill:focus,
436
+ textarea:-webkit-autofill,
437
+ textarea:-webkit-autofill:hover,
438
+ textarea:-webkit-autofill:focus,
439
+ select:-webkit-autofill,
440
+ select:-webkit-autofill:hover,
441
+ select:-webkit-autofill:focus {
442
+ border-color:rgba(var(--color-red-200), 1);
443
+ font-size: var(--base-font-size);
444
+ -webkit-text-fill-color:rgba(var(--color-red-700), 1);
445
+ -webkit-box-shadow: 0 0 0px 1000px rgba(var(--color-red-100), 1) inset;
446
+ box-shadow: 0 0 0px 1000px rgba(var(--color-red-100), 1) inset;
447
+ transition: background-color 5000s ease-in-out 0s;
448
+ }
449
+
450
+ ::placeholder {
451
+ color: rgba(var(--color-grey-300), 1);
452
+ }
453
+
454
+ /* special inputs */
455
+
456
+ input[type="search"] {
457
+ -webkit-appearance: none;
458
+ }
459
+
460
+ a:any-link {
461
+ /* Selects any element that would be matched by :link or :visited */
462
+ display: inline-flex;
463
+ align-items: center;
464
+ color: rgba(var(--color-red-500, inherit), 1);
465
+ text-decoration: underline;
466
+ }
467
+
468
+ a:any-link:hover {
469
+ color: rgba(var(--color-red-600), 1);
470
+ }
471
+
472
+ a:any-link > * + * {
473
+ margin-left: var(--space);
474
+ text-decoration: none;
475
+ }
476
+
477
+ /* external links */
478
+ a:any-link[target="_blank"] {
479
+ padding-right: 16px;
480
+ position: relative;
481
+ }
482
+
483
+ /* Arrow to signify external links */
484
+ a:any-link[target="_blank"]::after,
485
+ a:any-link[target="_blank"]::before {
486
+ content: "";
487
+ display: block;
488
+ box-sizing: border-box;
489
+ position: absolute;
490
+ right: 0;
491
+ }
492
+
493
+ a:any-link[target="_blank"]::before {
494
+ background: currentColor;
495
+ transform: rotate(-45deg);
496
+ top: 12px;
497
+ height: 2px;
498
+ width: 12px;
499
+ }
500
+
501
+ a:any-link[target="_blank"]::after {
502
+ width: 8px;
503
+ height: 8px;
504
+ border-right: 2px solid;
505
+ border-top: 2px solid;
506
+ top: 7px;
507
+ }
508
+
509
+ ul,
510
+ ol,
511
+ dl {
512
+ margin: 0;
513
+ padding: 6px 0 18px 24px;
514
+ }
515
+
516
+ ul ul,
517
+ ol ol,
518
+ ol ul {
519
+ padding: 0 0 0 24px;
520
+ }
521
+
522
+ ul.is-nobullet {
523
+ list-style-type: none;
524
+ padding: 0;
525
+ }
526
+
527
+ dl {
528
+ padding: 6px 0 18px 0;
529
+ }
530
+
531
+ dt {
532
+ font-weight: var(--font-weight-700);
533
+ color: rgba(var(--color-grey-700), 1);
534
+ }
535
+
536
+ dd {
537
+ margin: 0;
538
+ }
539
+
540
+ dd + dt {
541
+ margin-top: var(--space-3x)
542
+ }
543
+ /* audio video embed ... */
544
+ table {
545
+ width: 100%;
546
+ padding: 0;
547
+ border-spacing: 0;
548
+ }
549
+
550
+ thead {
551
+ box-shadow: 0 -1px 0 0 rgba(var(--color-grey-100), 1) inset;
552
+ }
553
+
554
+ tfoot {
555
+ box-shadow: 0 -1px 0 0 rgba(var(--color-grey-100), 1);
556
+ }
557
+
558
+ caption {
559
+ color: rgba(var(--color-grey-500), 1);
560
+ padding: 6px 0 18px;
561
+ }
562
+
563
+ th {
564
+ text-transform: uppercase;
565
+ font-weight: var(--font-weight-700);
566
+ font-size: calc(var(--base-font-size) / var(--ratio) / var(--ratio));
567
+ letter-spacing: 0.03em;
568
+ transform: translateY(2px);
569
+ padding: 12px 24px 12px;
570
+ text-align: left;
571
+ color: rgba(var(--color-grey-500), 1);
572
+ }
573
+
574
+ tbody tr {
575
+ box-shadow: 0 -1px 0 0 rgba(var(--color-grey-50), 1) inset;
576
+ }
577
+
578
+ tbody tr:hover {
579
+ background: rgba(var(--color-grey-50), 1);
580
+ }
581
+
582
+
583
+ tbody tr:nth-child(even) {
584
+ background: rgba(var(--color-grey-35), 1);
585
+ }
586
+
587
+ tbody tr:nth-child(even):hover {
588
+ background: rgba(var(--color-grey-50), 1);
589
+ }
590
+
591
+ td {
592
+ color: rgba(var(--color-grey-500), 1);
593
+ padding: 12px 24px;
594
+ }
595
+
596
+ th.is-right,
597
+ td.is-right {
598
+ text-align: right;
599
+ }
600
+
601
+ [role="alert"] {
602
+ display: flex;
603
+ align-items: center;
604
+ color: rgba(var(--color-grey-600), 1);
605
+ background: rgba(var(--color-grey-50), 1);
606
+ border-left: var(--space-1-2) solid rgba(var(--color-grey-400), 1);
607
+ border-radius: var(--border-radius-s, 0);
608
+ box-shadow: var(--box-shadow-m);
609
+ padding: calc(var(--space) * 1.5 ) var(--space-3x);
610
+ }
611
+
612
+ [role="alert"]:empty {
613
+ display: none;
614
+ }
615
+
616
+ [role="alert"] a:any-link {
617
+ color: inherit;
618
+ text-decoration: underline;
619
+ }
620
+
621
+ [role="alert"] a:any-link:hover {
622
+ color: rgba(var(--color-grey-800), 1);
623
+ }
624
+
625
+ [role="alert"] p {
626
+ color: inherit;
627
+ font-family: var(--font-sans);
628
+ font-size: 1rem;
629
+ padding: 0;
630
+ max-width: none;
631
+ }
632
+
633
+ [role="alert"] + * {
634
+ margin-top: var(--space-6x);
635
+ }
636
+
637
+ /* flow */
638
+ * + [role="alert"] {
639
+ margin-top: var(--space-3x);
640
+ }
641
+
642
+ .badge {
643
+ display: inline-block;
644
+ height: var(--space-2x);
645
+ padding: 0 var(--space-1-2);
646
+ position: relative;
647
+ background: rgba(var(--color-grey-50), 1);
648
+ border-radius: var(--border-radius-m, 0);
649
+ box-shadow: var(--box-shadow-s);
650
+
651
+ /* text */
652
+ color: rgba(var(--color-grey-700), 1);
653
+ font-size: var(--font-size-30);
654
+ font-weight: var(--font-weight-400);
655
+ line-height: var(--space-2x);
656
+ text-decoration: none;
657
+ }
658
+
659
+ .badge > svg {
660
+ width: 12px;
661
+ height: 12px;
662
+ min-width: 12px;
663
+ margin: 2px;
664
+ vertical-align: middle;
665
+ }
666
+
667
+ .card {
668
+ background: rgba(var(--color-grey-00), 1);
669
+ border: 1px solid rgba(var(--color-grey-35), 1);
670
+ border-radius: var(--border-radius-l, 0);
671
+ box-shadow: var(--box-shadow-s);
672
+ padding: calc(var(--space-3x) - 1px) calc(var(--space-3x) - 1px) calc(var(--space-3x) - 1px);
673
+ list-style-type: none;
674
+ overflow: hidden;
675
+ }
676
+
677
+ .card > header {
678
+ display: flex;
679
+ align-items: center;
680
+ min-height: var(--space-6x);
681
+ width: calc(100% + var(--space-6x));
682
+ border-radius: var(--border-radius-m, 0) var(--border-radius-m, 0) 0 0;
683
+ padding: var(--space) var(--space-3x);
684
+ margin: calc(var(--space-3x) * -1) calc(var(--space-3x) * -1) calc(var(--space-3x) * 1);
685
+ box-shadow: 0 1px 0 0 rgba(var(--color-grey-50), 1);
686
+ color: rgba(var(--color-grey-500), 1);
687
+ }
688
+
689
+ .card > header > * {
690
+ margin: 0 var(--space-1-2);
691
+ padding: 0;
692
+ text-transform: none;
693
+ letter-spacing: 0;
694
+ font-size: var(--font-size-50);
695
+ line-height: var(--space-3x);
696
+ }
697
+
698
+ .card > picture {
699
+ margin: calc(var(--space-3x) * -1) calc(var(--space-3x) * -1) calc(var(--space-3x) * 1);
700
+ width: calc(100% + var(--space-6x));
701
+ }
702
+
703
+ .card > footer {
704
+ background: rgba(var(--color-grey-35), 1);
705
+ box-shadow: 0 -1px 0 0 rgba(var(--color-grey-50), 1);
706
+ border-radius: 0 0 var(--border-radius-m, 0) var(--border-radius-m, 0);
707
+ margin: var(--space-3x) calc(var(--space-3x) * -1) calc(var(--space-3x) * -1);
708
+ padding: var(--space-2x) calc(var(--space-3x) - 1px);
709
+ width: calc(100% + var(--space-6x));
710
+ }
711
+
712
+ .card > aside {
713
+ background: rgba(var(--color-grey-50), 1);
714
+ min-width: 300px;
715
+ padding: var(--space-3x);
716
+ }
717
+
718
+ * + .card {
719
+ margin-top: var(--space-3x);
720
+ }
721
+
722
+ /* Aria states last loaded */
723
+ *[hidden=true] {
724
+ display: none;
725
+ }
726
+
727
+ /* hide visually but make it available to assistive technology. */
728
+ .sr-only {
729
+ border: 0 !important;
730
+ clip: rect(1px, 1px, 1px, 1px) !important;
731
+ -webkit-clip-path: inset(50%) !important;
732
+ clip-path: inset(50%) !important;
733
+ height: 1px !important;
734
+ overflow: hidden !important;
735
+ padding: 0 !important;
736
+ position: absolute !important;
737
+ width: 1px !important;
738
+ white-space: nowrap !important;
739
+ }