@energie360/ui-library 0.0.3

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.
Files changed (67) hide show
  1. package/.browserslistrc +1 -0
  2. package/README.md +3 -0
  3. package/base/_accessibility.scss +5 -0
  4. package/base/_base.scss +104 -0
  5. package/base/_body.scss +7 -0
  6. package/base/_focus-handling.scss +18 -0
  7. package/base/_html.scss +11 -0
  8. package/base/_input-resets.scss +49 -0
  9. package/base/_print.scss +6 -0
  10. package/base/_resets.scss +53 -0
  11. package/base/abstracts/_functions.scss +21 -0
  12. package/base/abstracts/_layers.scss +6 -0
  13. package/base/abstracts/_mixins.scss +80 -0
  14. package/base/abstracts/_resets.scss +11 -0
  15. package/base/abstracts/_variables.scss +42 -0
  16. package/base/abstracts/index.scss +5 -0
  17. package/base/base-v2.scss +35 -0
  18. package/base/custom-element-base.scss +14 -0
  19. package/base/index.scss +5 -0
  20. package/base/main.scss +14 -0
  21. package/dist/index.css +1 -0
  22. package/dist/index.js +5182 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/style.css +20 -0
  25. package/dist/style.js +2 -0
  26. package/dist/style.js.map +1 -0
  27. package/elements/button/_button-base.scss +49 -0
  28. package/elements/button/_button-filled-inverted.scss +41 -0
  29. package/elements/button/_button-filled.scss +32 -0
  30. package/elements/button/_button-outlined-inverted.scss +38 -0
  31. package/elements/button/_button-outlined.scss +38 -0
  32. package/elements/button/_button-plain-small.scss +7 -0
  33. package/elements/button/_button-plain.scss +49 -0
  34. package/elements/button/_button-secondary-outlined.scss +38 -0
  35. package/elements/button/button.js +12 -0
  36. package/elements/button/button.scss +68 -0
  37. package/elements/button/button.vue +42 -0
  38. package/elements/icon/icon.ce.scss +6 -0
  39. package/elements/icon/icon.js +13 -0
  40. package/elements/icon/icon.scss +25 -0
  41. package/elements/icon/icon.vue +80 -0
  42. package/elements/icon-button/_icon-button-base.scss +59 -0
  43. package/elements/icon-button/_icon-button-filled-inverted.scss +42 -0
  44. package/elements/icon-button/_icon-button-filled.scss +32 -0
  45. package/elements/icon-button/_icon-button-outlined-inverted.scss +34 -0
  46. package/elements/icon-button/_icon-button-outlined.scss +38 -0
  47. package/elements/icon-button/_icon-button-plain-inverted.scss +32 -0
  48. package/elements/icon-button/_icon-button-plain.scss +32 -0
  49. package/elements/icon-button/icon-button.js +12 -0
  50. package/elements/icon-button/icon-button.scss +51 -0
  51. package/elements/icon-button/icon-button.vue +41 -0
  52. package/elements/index.js +11 -0
  53. package/elements/loader/loader.ce.scss +5 -0
  54. package/elements/loader/loader.js +13 -0
  55. package/elements/loader/loader.scss +106 -0
  56. package/elements/loader/loader.vue +18 -0
  57. package/globals.js +4 -0
  58. package/index.js +1 -0
  59. package/package.json +30 -0
  60. package/style.js +2 -0
  61. package/utils/math/clamp.js +14 -0
  62. package/utils/math/index.js +1 -0
  63. package/utils/object/deep-get.js +26 -0
  64. package/utils/object/index.js +2 -0
  65. package/utils/translations/index.js +1 -0
  66. package/utils/translations/translate.js +10 -0
  67. package/vite.config.js +31 -0
@@ -0,0 +1 @@
1
+ defaults
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Energie 360 UI Library
2
+
3
+ *WIP*
@@ -0,0 +1,5 @@
1
+ @use './abstracts/_mixins.scss' as m;
2
+
3
+ .visually-hidden {
4
+ @include m.visually-hidden;
5
+ }
@@ -0,0 +1,104 @@
1
+ @use './abstracts' as a;
2
+ @use '@energie360/design-tokens/dist/scss' as dt;
3
+
4
+ html {
5
+ box-sizing: border-box;
6
+ scroll-behavior: smooth;
7
+ }
8
+
9
+ html,
10
+ body {
11
+ min-height: 100vh;
12
+ }
13
+
14
+ *,
15
+ *::before,
16
+ *::after {
17
+ box-sizing: inherit;
18
+ }
19
+
20
+ body {
21
+ font-family: a.$body-font;
22
+ font-size: a.rem(a.$body-font-size);
23
+ font-weight: a.$body-font-weight;
24
+ line-height: a.$body-line-height;
25
+ color: a.$body-font-color;
26
+ }
27
+
28
+ input {
29
+ font-family: inherit;
30
+ appearance: none;
31
+ border: 0;
32
+ background: none;
33
+
34
+ // Set this here because of specificity issues (with ::slotted)
35
+ @include a.type(200);
36
+
37
+ ::placeholder {
38
+ color: var(--e-c-mono-700);
39
+ }
40
+ }
41
+
42
+ [type='search']::-webkit-search-cancel-button {
43
+ display: none;
44
+ }
45
+
46
+ [type='date']::-webkit-calendar-picker-indicator {
47
+ opacity: 0;
48
+ cursor: pointer;
49
+ }
50
+
51
+ select {
52
+ font-family: inherit;
53
+ appearance: none;
54
+ border: 0;
55
+ background: none;
56
+
57
+ // Set this here because of specificity issues (with ::slotted)
58
+ @include a.type(200);
59
+
60
+ &:invalid {
61
+ color: var(--e-c-mono-700);
62
+ }
63
+ }
64
+
65
+ textarea {
66
+ font-family: inherit;
67
+ appearance: none;
68
+ border: 0;
69
+ background: none;
70
+ resize: vertical;
71
+
72
+ // Set this here because of specificity issues (with ::slotted)
73
+ @include a.type(200);
74
+ }
75
+
76
+ fieldset {
77
+ padding: 0;
78
+ margin: 0;
79
+ border: 0;
80
+ }
81
+
82
+ // Focus Handling
83
+ // There's still room for improvement here.
84
+ // Maybe we'll implement floating focus later on.
85
+ * {
86
+ outline: none;
87
+ }
88
+
89
+ *:focus-visible {
90
+ outline-style: solid;
91
+ outline-offset: 4px;
92
+ outline-color: rgba(dt.$c-mono-500, 0.8);
93
+ }
94
+
95
+ [data-whatintent='mouse'] *:focus {
96
+ outline: none;
97
+ }
98
+
99
+ @media print {
100
+ body {
101
+ -webkit-print-color-adjust: exact !important; /* stylelint-disable-line */
102
+ print-color-adjust: exact !important; /* stylelint-disable-line */
103
+ }
104
+ }
@@ -0,0 +1,7 @@
1
+ body {
2
+ font-family: var(--e-type-font-body), var(--e-type-font-fallback);
3
+ font-size: var(--e-type-size-300);
4
+ font-weight: var(--e-type-weight-weak);
5
+ line-height: var(--e-type-line-height-300);
6
+ color: var(--e-c-mono-900);
7
+ }
@@ -0,0 +1,18 @@
1
+ @use '@energie360/design-tokens/dist/scss' as dt;
2
+
3
+ // Focus Handling
4
+ // There's still room for improvement here.
5
+ // Maybe we'll implement floating focus later on.
6
+ * {
7
+ outline: none;
8
+ }
9
+
10
+ *:focus-visible {
11
+ outline-style: solid;
12
+ outline-offset: 4px;
13
+ outline-color: rgba(dt.$c-mono-500, 0.8);
14
+ }
15
+
16
+ [data-whatintent='mouse'] *:focus {
17
+ outline: none;
18
+ }
@@ -0,0 +1,11 @@
1
+ html {
2
+ box-sizing: border-box;
3
+ scroll-behavior: smooth;
4
+ min-height: 100vh;
5
+ }
6
+
7
+ *,
8
+ *::before,
9
+ *::after {
10
+ box-sizing: inherit;
11
+ }
@@ -0,0 +1,49 @@
1
+ @use './abstracts' as a;
2
+
3
+ input,
4
+ textarea,
5
+ select {
6
+ font-family: inherit;
7
+ font-size: inherit;
8
+ appearance: none;
9
+ border: 0;
10
+ background: none;
11
+ margin: 0;
12
+ }
13
+
14
+ input,
15
+ select,
16
+ textarea {
17
+ @include a.type(
18
+ 200
19
+ ); // Set this here because of specificity issues (with ::slotted)
20
+ }
21
+
22
+ input {
23
+ &::placeholder {
24
+ color: var(--e-c-mono-700);
25
+ }
26
+
27
+ &:disabled::placeholder {
28
+ color: var(--e-c-mono-500);
29
+ }
30
+ }
31
+
32
+ [type='search']::-webkit-search-cancel-button {
33
+ display: none;
34
+ }
35
+
36
+ [type='date']::-webkit-calendar-picker-indicator {
37
+ opacity: 0;
38
+ cursor: pointer;
39
+ }
40
+
41
+ select {
42
+ &:invalid {
43
+ color: var(--e-c-mono-700);
44
+ }
45
+ }
46
+
47
+ textarea {
48
+ resize: vertical;
49
+ }
@@ -0,0 +1,6 @@
1
+ @media print {
2
+ body {
3
+ -webkit-print-color-adjust: exact !important; /* stylelint-disable-line */
4
+ print-color-adjust: exact !important; /* stylelint-disable-line */
5
+ }
6
+ }
@@ -0,0 +1,53 @@
1
+ @use './abstracts/resets' as r;
2
+
3
+ body {
4
+ margin: 0;
5
+ min-height: 100vh;
6
+ }
7
+
8
+ h1,
9
+ h2,
10
+ h3,
11
+ h4,
12
+ h5,
13
+ h6 {
14
+ margin: 0;
15
+ text-wrap: balance;
16
+ }
17
+
18
+ p,
19
+ figure,
20
+ blockquote {
21
+ margin: 0;
22
+ }
23
+
24
+ @include r.button-reset;
25
+
26
+ ul,
27
+ ol {
28
+ list-style: none;
29
+ padding: 0;
30
+ margin: 0;
31
+ }
32
+
33
+ dl,
34
+ dt,
35
+ dd {
36
+ margin: 0;
37
+ }
38
+
39
+ address {
40
+ font-style: normal;
41
+ }
42
+
43
+ img,
44
+ picture {
45
+ max-width: 100%;
46
+ display: block;
47
+ }
48
+
49
+ fieldset {
50
+ padding: 0;
51
+ margin: 0;
52
+ border: 0;
53
+ }
@@ -0,0 +1,21 @@
1
+ @use 'variables' as v;
2
+ @use 'sass:math';
3
+ @use 'sass:list';
4
+ @use 'sass:meta';
5
+
6
+ /* prettier-ignore */
7
+ @function rem($size, $base-size: v.$base-font-size) {
8
+ @if meta.function-exists(get-env) {
9
+ @if get-env() == 'development' {
10
+ @return #{math.div($size, $size * 0 + 1)}px;
11
+ }
12
+ } @else {
13
+ $rem-size: math.div(($size * 1px), $base-size);
14
+
15
+ @if list.index('px', math.unit($size)) != null and meta.type_of($size) == 'number' {
16
+ $rem-size: math.div(($size), $base-size);
17
+ }
18
+
19
+ @return #{$rem-size}rem;
20
+ }
21
+ }
@@ -0,0 +1,6 @@
1
+ // TODO: Check if these vars are even used. They could also be moved to design-tokens.
2
+ // z-index layers
3
+ $layer-tooltip: 100;
4
+ $layer-nav-flyout: 200;
5
+ $layer-mobile-menu: 200;
6
+ $layer-message: 300;
@@ -0,0 +1,80 @@
1
+ @use 'sass:map';
2
+ @use 'sass:list';
3
+ @use '@energie360/design-tokens/dist/scss' as dt;
4
+ @use './functions' as f;
5
+
6
+ // Accessibility
7
+ @mixin visually-hidden {
8
+ position: absolute;
9
+ display: block;
10
+ width: 1px;
11
+ height: 1px;
12
+ margin: -1px;
13
+ padding: 0;
14
+ border: 0;
15
+ clip: rect(0, 0, 0, 0);
16
+ overflow: hidden;
17
+ white-space: nowrap;
18
+ }
19
+
20
+ // Media query helper mixin
21
+ @mixin bp($query) {
22
+ @media (max-width: #{map.get(dt.$mediaquery-token-map, #{'mq-breakpoint-' + $query})}) {
23
+ @content;
24
+ }
25
+ }
26
+
27
+ $letter-spacings: (
28
+ // (weak, strong)
29
+ 1000: (0.2px, 0.2px),
30
+ 900: (0.2px, 0.2px),
31
+ 800: (0.6px, 0.4px),
32
+ 700: (0.4px, 0.4px),
33
+ 600: (0.4px, 0.4px),
34
+ 500: (0.7px, 0.7px),
35
+ 400: (0.5px, 0.5px),
36
+ 300: (0.3px, 0.3px),
37
+ 200: (0.3px, 0.1px),
38
+ 100: (0.3px, 0.4px),
39
+ 50: (0.4px, 0.4px)
40
+ );
41
+
42
+ // Small helper because font-size and line-height are basically are always the same size.
43
+ @mixin type($size, $weight: null) {
44
+ font-size: var(--e-type-size-#{$size});
45
+ line-height: var(--e-type-line-height-#{$size});
46
+
47
+ @if $weight == strong {
48
+ letter-spacing: f.rem(list.nth(map.get($letter-spacings, $size), 2));
49
+ } @else {
50
+ letter-spacing: f.rem(list.nth(map.get($letter-spacings, $size), 1));
51
+ }
52
+
53
+ @if $weight {
54
+ font-weight: var(--e-type-weight-#{$weight});
55
+
56
+ @if $weight == strong {
57
+ // TODO: find a better way to set this smoothing properties.
58
+ // Now they would be rendered multiple times on every type(xxx, strong).
59
+ -webkit-font-smoothing: antialiased;
60
+ -moz-osx-font-smoothing: grayscale;
61
+ }
62
+ }
63
+
64
+ @media print {
65
+ font-size: calc(var(--e-type-size-#{$size}) * 0.75);
66
+ line-height: calc(var(--e-type-line-height-#{$size}) * 0.75);
67
+ }
68
+ }
69
+
70
+ // This mixin will simply add an animated background.
71
+ @mixin skeleton-background {
72
+ background-color: var(--e-c-mono-200);
73
+ animation-name: skeleton-bg-loader;
74
+ animation-duration: 1500ms;
75
+ animation-iteration-count: infinite;
76
+ animation-timing-function: var(--e-trs-easing-default);
77
+ border-radius: var(--e-brd-radius-1);
78
+ overflow: hidden;
79
+ color: transparent;
80
+ }
@@ -0,0 +1,11 @@
1
+ @mixin button-reset {
2
+ button {
3
+ padding: 0;
4
+ margin: 0;
5
+ appearance: none;
6
+ border: 0;
7
+ font-family: inherit;
8
+ font-size: inherit;
9
+ background: none;
10
+ }
11
+ }
@@ -0,0 +1,42 @@
1
+ // TODO: Use CSS vars instead of SCSS vars.
2
+ @use '@energie360/design-tokens/dist/scss' as dt;
3
+ @use 'sass:math';
4
+
5
+ // Global variables
6
+ // These are abstractions of design tokens
7
+
8
+ $body-font:
9
+ #{dt.$type-font-body},
10
+ #{dt.$type-font-fallback};
11
+ $body-font-color: dt.$c-mono-900;
12
+ $body-line-height: dt.$type-line-height-300;
13
+ $body-font-size: dt.$type-size-300;
14
+ $body-font-weight: dt.$type-weight-weak;
15
+
16
+ // $base-font-size: dt.$type-font-base-size;
17
+ $base-font-size: 16px;
18
+
19
+ // Layout: Container
20
+ $container-edge-2xl: dt.$space-20;
21
+ $container-edge-lg: dt.$space-10;
22
+ $container-edge-m: dt.$space-10;
23
+ $container-edge-s: dt.$space-5;
24
+ $container-inner-2xl: dt.$layout-site-width - 2 * $container-edge-2xl;
25
+ $container-inner-lg: dt.$layout-site-width-lg - 2 * $container-edge-lg;
26
+ $container-inner-m: dt.$layout-site-width-m - 2 * $container-edge-m;
27
+ $container-inner-s: dt.$layout-site-width-s - 2 * $container-edge-s;
28
+
29
+ // Layout: Grid
30
+ $grid-columns: dt.$layout-grid-columns; // Default columns in grid. Can be overridden in mixin.
31
+ $grid-gutter-2xl: math.div(dt.$space-10, $container-inner-2xl) * 100%;
32
+ $grid-gutter-lg: math.div(dt.$space-6, $container-inner-lg) * 100%;
33
+ $grid-gutter-m: math.div(dt.$space-6, $container-inner-m) * 100%;
34
+ $grid-gutter-s: math.div(dt.$space-5, $container-inner-s) * 100%;
35
+
36
+ // Transition
37
+ $trs-default: var(--e-trs-duration-faster) var(--e-trs-easing-default);
38
+
39
+ // CMS-Section
40
+ $section-default-padding-2xl: dt.$space-28;
41
+ $section-default-padding: dt.$space-20;
42
+ $section-default-padding-mobile: dt.$space-16;
@@ -0,0 +1,5 @@
1
+ @forward './variables';
2
+ @forward './functions';
3
+ @forward './mixins';
4
+ @forward './layers';
5
+ @forward './resets';
@@ -0,0 +1,35 @@
1
+ /*
2
+ Base styling and resets for all web-components.
3
+ This must be loaded before all other styles.
4
+ */
5
+
6
+ @use '@energie360/design-tokens/dist/css/design-tokens.css';
7
+ @use 'resets';
8
+ @use 'input-resets';
9
+ @use 'focus-handling';
10
+ @use '@energie360/design-tokens/dist/fonts/fonts.css';
11
+
12
+ html {
13
+ box-sizing: border-box;
14
+ scroll-behavior: smooth;
15
+ }
16
+
17
+ html,
18
+ body {
19
+ min-height: 100vh;
20
+ }
21
+
22
+ *,
23
+ *::after,
24
+ *::before {
25
+ box-sizing: inherit;
26
+ }
27
+
28
+ body {
29
+ margin: 0;
30
+ font-family: var(--e-type-font-body), var(--e-type-font-fallback);
31
+ font-size: var(--e-type-size-300);
32
+ font-weight: var(--e-type-weight-weak);
33
+ line-height: var(--e-type-line-height-300);
34
+ color: var(--e-c-mono-900);
35
+ }
@@ -0,0 +1,14 @@
1
+ :host {
2
+ font-family: var(--e-type-font-body), var(--e-type-font-fallback);
3
+ font-size: var(--e-type-size-300);
4
+ font-weight: var(--e-type-weight-weak);
5
+ line-height: var(--e-type-line-height-300);
6
+ color: var(--e-c-mono-900);
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ *,
11
+ *::after,
12
+ *::before {
13
+ box-sizing: inherit;
14
+ }
@@ -0,0 +1,5 @@
1
+ @use './base';
2
+ @use './resets';
3
+
4
+ // TODO: _fonts.scss needs a variable '$host', which is set depedending on environment. figure it out how to get this here...
5
+ // @import './fonts';
package/base/main.scss ADDED
@@ -0,0 +1,14 @@
1
+ @use './resets';
2
+ @use './html';
3
+ @use './body';
4
+ @use './focus-handling';
5
+ @import '@energie360/design-tokens/dist/fonts/fonts.css';
6
+ @import '@energie360/design-tokens/dist/css/design-tokens.css';
7
+
8
+ e-button,
9
+ e-icon-button,
10
+ e-loader {
11
+ &:not(:defined) {
12
+ opacity: 0;
13
+ }
14
+ }
package/dist/index.css ADDED
@@ -0,0 +1 @@
1
+ .icon[data-v-fee8d5eb]{display:block;fill:var(--icon-fill-color, currentColor);width:var(--icon-width, 24px);height:var(--icon-height, 24px);transition:var(--icon-transition, none)}.icon.icon--custom-size[data-v-fee8d5eb]{width:100%;height:100%}.icon.icon--inline[data-v-fee8d5eb]{display:inline-block;vertical-align:baseline}@keyframes horizontal-a2f9c45c{0%{transform:translate(0)}20%{transform:translate(0);opacity:1;width:8px}50%{transform:translate(24px);opacity:.7;width:16px}80%{transform:translate(56px);opacity:1;width:8px}to{transform:translate(56px)}}@keyframes vertical-a2f9c45c{0%{transform:translateY(0)}50%{transform:translateY(0);opacity:1;height:8px}55%{transform:translateY(-12px);opacity:.7;height:16px}60%{transform:translateY(0);opacity:1;height:8px}70%{transform:translateY(-4px)}to{transform:translateY(0)}}.loader[data-v-a2f9c45c]{position:relative;display:inline-flex;--dot-color: var(--e-c-mono-900)}.loader>span[data-v-a2f9c45c]{display:block;width:8px;height:8px;border-radius:4px;background-color:var(--dot-color)}.loader.horizontal[data-v-a2f9c45c]{width:64px}.loader.horizontal>span[data-v-a2f9c45c]{transform:translate(0);animation-name:horizontal-a2f9c45c;animation-duration:1s;animation-direction:alternate;animation-timing-function:cubic-bezier(.4,.61,.61,.4);animation-iteration-count:infinite}.loader.vertical[data-v-a2f9c45c]{height:8px;width:8px}.loader.vertical>span[data-v-a2f9c45c]{transform:translateY(0);animation-name:vertical-a2f9c45c;animation-duration:2s;animation-timing-function:cubic-bezier(.47,.52,.165,1.005);animation-iteration-count:infinite}button[data-v-9f038231]{padding:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;font-family:inherit;font-size:inherit;background:none}.button[data-v-9f038231]{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:.625rem 1.875rem;grid-gap:var(--e-space-2);border-radius:24px;transition:background-color var(--e-trs-duration-faster) var(--e-trs-easing-default),box-shadow var(--e-trs-duration-faster) var(--e-trs-easing-default),color var(--e-trs-duration-faster) var(--e-trs-easing-default),border var(--e-trs-duration-faster) var(--e-trs-easing-default);border-width:2px;border-style:solid;text-decoration:none;vertical-align:middle;text-align:center;cursor:pointer;font-size:var(--e-type-size-200);line-height:var(--e-type-line-height-200);letter-spacing:.00625rem;font-weight:var(--e-type-weight-strong);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.button .icon[data-v-9f038231],.button e-icon[data-v-9f038231]{width:24px;height:24px}@media print{.button[data-v-9f038231]{font-size:calc(var(--e-type-size-200) * .75);line-height:calc(var(--e-type-line-height-200) * .75)}}.button .button__loader[data-v-9f038231]{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.button.disabled[data-v-9f038231],.button[data-v-9f038231]:disabled{pointer-events:none}.button[loading][data-v-9f038231]{cursor:default}.button .icon[data-v-9f038231],.button e-icon[data-v-9f038231]{--icon-transition: fill var(--e-trs-duration-faster) var(--e-trs-easing-default)}.button[data-v-9f038231]{background-color:var(--e-c-primary-01-700);color:var(--e-c-mono-00);border-color:var(--e-c-primary-01-700)}.button .icon[data-v-9f038231],.button e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-mono-00)}.button .loader[data-v-9f038231],.button e-loader[data-v-9f038231]{--dot-color: var(--e-c-mono-00)}.button[data-v-9f038231]:hover{background-color:var(--e-c-secondary-01-900);border-color:var(--e-c-secondary-01-900)}.button[data-v-9f038231]:active,.button[loading][data-v-9f038231]{background-color:var(--e-c-secondary-01-700);border-color:var(--e-c-secondary-01-700)}.button.disabled[data-v-9f038231]:not([loading]),.button[data-v-9f038231]:disabled:not([loading]){background-color:var(--e-c-mono-500);border-color:var(--e-c-mono-500)}.button.outlined[data-v-9f038231]{background-color:transparent;color:var(--e-c-primary-01-700);border:2px solid var(--e-c-primary-01-700)}.button.outlined .icon[data-v-9f038231],.button.outlined e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-primary-01-700)}.button.outlined .loader[data-v-9f038231],.button.outlined e-loader[data-v-9f038231]{--dot-color: var(--e-c-primary-01-500)}.button.outlined[data-v-9f038231]:hover{background-color:var(--e-c-primary-01-50);border-color:var(--e-c-primary-01-200)}.button.outlined[data-v-9f038231]:active,.button.outlined[loading][data-v-9f038231]{background-color:transparent;border-color:var(--e-c-primary-01-500)}.button.outlined.disabled[data-v-9f038231]:not([loading]),.button.outlined[data-v-9f038231]:disabled:not([loading]){border-color:var(--e-c-mono-500);background-color:transparent;color:var(--e-c-mono-500)}.button.outlined.disabled:not([loading]) .icon[data-v-9f038231],.button.outlined.disabled:not([loading]) e-icon[data-v-9f038231],.button.outlined:disabled:not([loading]) .icon[data-v-9f038231],.button.outlined:disabled:not([loading]) e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-mono-500)}.button.plain[data-v-9f038231]{padding:var(--e-space-2) var(--e-space-3);color:var(--e-c-primary-01-700);background:none;border:0;text-decoration:none;grid-gap:var(--e-space-1)}.button.plain .icon[data-v-9f038231],.button.plain e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-primary-01-700)}.button.plain[data-v-9f038231]:hover{color:var(--e-c-secondary-01-900)}.button.plain:hover .icon[data-v-9f038231],.button.plain:hover e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-secondary-01-900)}.button.plain[data-v-9f038231]:active{color:var(--e-c-secondary-01-700)}.button.plain:active .icon[data-v-9f038231],.button.plain:active e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-secondary-01-700)}.button.plain.disabled[data-v-9f038231]:not([loading]),.button.plain[data-v-9f038231]:disabled:not([loading]){background:none;color:var(--e-c-mono-500)}.button.plain.disabled:not([loading]) .icon[data-v-9f038231],.button.plain.disabled:not([loading]) e-icon[data-v-9f038231],.button.plain:disabled:not([loading]) .icon[data-v-9f038231],.button.plain:disabled:not([loading]) e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-mono-500)}.button.plain[loading] .loader[data-v-9f038231],.button.plain[loading] e-loader[data-v-9f038231]{--dot-color: var(--e-c-secondary-01-700)}.button.plain-small[data-v-9f038231]{padding:var(--e-space-2) var(--e-space-3);color:var(--e-c-primary-01-700);background:none;border:0;text-decoration:none;grid-gap:var(--e-space-1);font-size:var(--e-type-size-100);line-height:var(--e-type-line-height-100);letter-spacing:.025rem;font-weight:var(--e-type-weight-strong);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.button.plain-small .icon[data-v-9f038231],.button.plain-small e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-primary-01-700)}.button.plain-small[data-v-9f038231]:hover{color:var(--e-c-secondary-01-900)}.button.plain-small:hover .icon[data-v-9f038231],.button.plain-small:hover e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-secondary-01-900)}.button.plain-small[data-v-9f038231]:active{color:var(--e-c-secondary-01-700)}.button.plain-small:active .icon[data-v-9f038231],.button.plain-small:active e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-secondary-01-700)}.button.plain-small.disabled[data-v-9f038231]:not([loading]),.button.plain-small[data-v-9f038231]:disabled:not([loading]){background:none;color:var(--e-c-mono-500)}.button.plain-small.disabled:not([loading]) .icon[data-v-9f038231],.button.plain-small.disabled:not([loading]) e-icon[data-v-9f038231],.button.plain-small:disabled:not([loading]) .icon[data-v-9f038231],.button.plain-small:disabled:not([loading]) e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-mono-500)}.button.plain-small[loading] .loader[data-v-9f038231],.button.plain-small[loading] e-loader[data-v-9f038231]{--dot-color: var(--e-c-secondary-01-700)}@media print{.button.plain-small[data-v-9f038231]{font-size:calc(var(--e-type-size-100) * .75);line-height:calc(var(--e-type-line-height-100) * .75)}}.button.filled-inverted[data-v-9f038231]{background-color:var(--e-c-mono-00);border-color:var(--e-c-mono-00);color:var(--e-c-primary-01-700)}.button.filled-inverted e-loader[data-v-9f038231]{--dot-color: var(--e-c-secondary-01-900)}.button.filled-inverted .icon[data-v-9f038231],.button.filled-inverted e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-primary-01-700)}.button.filled-inverted[data-v-9f038231]:hover{background-color:var(--e-c-primary-01-100);border-color:var(--e-c-primary-01-100);color:var(--e-c-secondary-01-700)}.button.filled-inverted:hover .icon[data-v-9f038231],.button.filled-inverted:hover e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-secondary-01-700)}.button.filled-inverted[data-v-9f038231]:active,.button.filled-inverted[loading][data-v-9f038231]{background-color:var(--e-c-primary-01-200);border-color:var(--e-c-primary-01-200)}.button.filled-inverted.disabled[data-v-9f038231]:not([loading]),.button.filled-inverted[data-v-9f038231]:disabled:not([loading]){color:var(--e-c-mono-700)}.button.filled-inverted.disabled:not([loading]) .icon[data-v-9f038231],.button.filled-inverted.disabled:not([loading]) e-icon[data-v-9f038231],.button.filled-inverted:disabled:not([loading]) .icon[data-v-9f038231],.button.filled-inverted:disabled:not([loading]) e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-mono-700)}.button.outlined-inverted[data-v-9f038231]{background-color:transparent;border-color:var(--e-c-mono-00);color:var(--e-c-mono-00)}.button.outlined-inverted .icon[data-v-9f038231],.button.outlined-inverted e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-mono-00)}.button.outlined-inverted .loader[data-v-9f038231],.button.outlined-inverted e-loader[data-v-9f038231]{--dot-color: var(--e-c-mono-00)}.button.outlined-inverted[data-v-9f038231]:hover{background-color:rgba(var(--e-c-primary-01-900-rgb),.7);border-color:var(--e-c-primary-01-200)}.button.outlined-inverted[data-v-9f038231]:active,.button.outlined-inverted[loading][data-v-9f038231]{background-color:transparent;border-color:var(--e-c-primary-01-500)}.button.outlined-inverted.disabled[data-v-9f038231]:not([loading]),.button.outlined-inverted[data-v-9f038231]:disabled:not([loading]){color:var(--e-c-mono-500);border:2px solid var(--e-c-mono-500);background-color:transparent}.button.outlined-inverted.disabled:not([loading]) .icon[data-v-9f038231],.button.outlined-inverted.disabled:not([loading]) e-icon[data-v-9f038231],.button.outlined-inverted:disabled:not([loading]) .icon[data-v-9f038231],.button.outlined-inverted:disabled:not([loading]) e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-mono-500)}.button.secondary-outlined[data-v-9f038231]{background-color:transparent;color:var(--e-c-secondary-02-500);border:2px solid var(--e-c-secondary-02-500)}.button.secondary-outlined .icon[data-v-9f038231],.button.secondary-outlined e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-secondary-02-500)}.button.secondary-outlined .loader[data-v-9f038231],.button.secondary-outlined e-loader[data-v-9f038231]{--dot-color: var(--e-c-secondary-02-500)}.button.secondary-outlined[data-v-9f038231]:hover{background-color:var(--e-c-secondary-02-50);border-color:var(--e-c-secondary-02-200)}.button.secondary-outlined[data-v-9f038231]:active,.button.secondary-outlined[loading][data-v-9f038231]{background-color:transparent;border-color:var(--e-c-secondary-02-200)}.button.secondary-outlined.disabled[data-v-9f038231]:not([loading]),.button.secondary-outlined[data-v-9f038231]:disabled:not([loading]){border-color:var(--e-c-mono-500);background-color:transparent;color:var(--e-c-mono-500)}.button.secondary-outlined.disabled:not([loading]) .icon[data-v-9f038231],.button.secondary-outlined.disabled:not([loading]) e-icon[data-v-9f038231],.button.secondary-outlined:disabled:not([loading]) .icon[data-v-9f038231],.button.secondary-outlined:disabled:not([loading]) e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-mono-500)}.button.secondary-outlined-small[data-v-9f038231]{padding:var(--e-space-2_5) var(--e-space-6);background-color:transparent;color:var(--e-c-secondary-02-500);border:2px solid var(--e-c-secondary-02-500);font-size:var(--e-type-size-100);line-height:var(--e-type-line-height-100);letter-spacing:.025rem;font-weight:var(--e-type-weight-strong);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.button.secondary-outlined-small .icon[data-v-9f038231],.button.secondary-outlined-small e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-secondary-02-500)}.button.secondary-outlined-small .loader[data-v-9f038231],.button.secondary-outlined-small e-loader[data-v-9f038231]{--dot-color: var(--e-c-secondary-02-500)}.button.secondary-outlined-small[data-v-9f038231]:hover{background-color:var(--e-c-secondary-02-50);border-color:var(--e-c-secondary-02-200)}.button.secondary-outlined-small[data-v-9f038231]:active,.button.secondary-outlined-small[loading][data-v-9f038231]{background-color:transparent;border-color:var(--e-c-secondary-02-200)}.button.secondary-outlined-small.disabled[data-v-9f038231]:not([loading]),.button.secondary-outlined-small[data-v-9f038231]:disabled:not([loading]){border-color:var(--e-c-mono-500);background-color:transparent;color:var(--e-c-mono-500)}.button.secondary-outlined-small.disabled:not([loading]) .icon[data-v-9f038231],.button.secondary-outlined-small.disabled:not([loading]) e-icon[data-v-9f038231],.button.secondary-outlined-small:disabled:not([loading]) .icon[data-v-9f038231],.button.secondary-outlined-small:disabled:not([loading]) e-icon[data-v-9f038231]{--icon-fill-color: var(--e-c-mono-500)}@media print{.button.secondary-outlined-small[data-v-9f038231]{font-size:calc(var(--e-type-size-100) * .75);line-height:calc(var(--e-type-line-height-100) * .75)}}.button[loading][data-v-9f038231]{color:transparent}.button[loading] .icon[data-v-9f038231],.button[loading] e-icon[data-v-9f038231]{--icon-fill-color: transparent}[data-v-cc80eb1c]:host{font-family:var(--e-type-font-body),var(--e-type-font-fallback);font-size:var(--e-type-size-300);font-weight:var(--e-type-weight-weak);line-height:var(--e-type-line-height-300);color:var(--e-c-mono-900);box-sizing:border-box}[data-v-cc80eb1c],[data-v-cc80eb1c]:after,[data-v-cc80eb1c]:before{box-sizing:inherit}[data-v-cc80eb1c]{outline:none}[data-v-cc80eb1c]:focus-visible{outline-style:solid;outline-offset:4px;outline-color:#b3b3b3cc}[data-whatintent=mouse][data-v-cc80eb1c] *:focus{outline:none}body[data-v-cc80eb1c]{margin:0;min-height:100vh}h1[data-v-cc80eb1c],h2[data-v-cc80eb1c],h3[data-v-cc80eb1c],h4[data-v-cc80eb1c],h5[data-v-cc80eb1c],h6[data-v-cc80eb1c]{margin:0;text-wrap:balance}p[data-v-cc80eb1c],figure[data-v-cc80eb1c],blockquote[data-v-cc80eb1c]{margin:0}button[data-v-cc80eb1c]{padding:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;font-family:inherit;font-size:inherit;background:none}ul[data-v-cc80eb1c],ol[data-v-cc80eb1c]{list-style:none;padding:0;margin:0}dl[data-v-cc80eb1c],dt[data-v-cc80eb1c],dd[data-v-cc80eb1c]{margin:0}address[data-v-cc80eb1c]{font-style:normal}img[data-v-cc80eb1c],picture[data-v-cc80eb1c]{max-width:100%;display:block}fieldset[data-v-cc80eb1c]{padding:0;margin:0;border:0}.visually-hidden[data-v-cc80eb1c]{position:absolute;display:block;width:1px;height:1px;margin:-1px;padding:0;border:0;clip:rect(0,0,0,0);overflow:hidden;white-space:nowrap}.icon-button[data-v-cc80eb1c]{position:relative;display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:100%;color:transparent;cursor:pointer}.icon-button .icon[data-v-cc80eb1c],.icon-button e-icon[data-v-cc80eb1c]{width:1.5rem;height:1.5rem}.icon-button .icon[data-v-cc80eb1c],.icon-button e-icon[data-v-cc80eb1c]{position:relative}.icon-button[data-v-cc80eb1c]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:100%;border-width:2px;border-style:solid;transition:background-color var(--e-trs-duration-faster) var(--e-trs-easing-default),border-color var(--e-trs-duration-faster) var(--e-trs-easing-default),transform var(--e-trs-duration-faster) var(--e-trs-easing-default)}.icon-button[data-v-cc80eb1c]:hover:not(:disabled):before{transform:scale(1.05)}.icon-button[data-v-cc80eb1c]:active:before{transform:scale(1)}.icon-button[data-v-cc80eb1c]:disabled{cursor:default}.icon-button[data-v-cc80eb1c]:before{background-color:var(--e-c-primary-01-700);border-color:var(--e-c-primary-01-700)}.icon-button .icon[data-v-cc80eb1c],.icon-button e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-mono-00)}.icon-button[data-v-cc80eb1c]:hover:before{background-color:var(--e-c-secondary-01-900);border-color:var(--e-c-secondary-01-900)}.icon-button[data-v-cc80eb1c]:active:before{background-color:var(--e-c-secondary-01-700);border-color:var(--e-c-secondary-01-700)}.icon-button[data-v-cc80eb1c]:disabled:before{background-color:var(--e-c-mono-500);border-color:var(--e-c-mono-500)}.icon-button.outlined[data-v-cc80eb1c]:before{background-color:transparent;border-color:var(--e-c-mono-500)}.icon-button.outlined .icon[data-v-cc80eb1c],.icon-button.outlined e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-mono-900)}.icon-button.outlined[data-v-cc80eb1c]:hover:before{border-color:var(--e-c-primary-01-200)}.icon-button.outlined[data-v-cc80eb1c]:active:before{border-color:var(--e-c-primary-01-500)}.icon-button.outlined[data-v-cc80eb1c]:disabled:before{border-color:var(--e-c-mono-500)}.icon-button.outlined:disabled .icon[data-v-cc80eb1c],.icon-button.outlined:disabled e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-mono-500)}.icon-button.plain[data-v-cc80eb1c]:before{background-color:transparent;border-color:transparent}.icon-button.plain .icon[data-v-cc80eb1c],.icon-button.plain e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-primary-01-700)}.icon-button.plain[data-v-cc80eb1c]:hover:before{background-color:var(--e-c-primary-01-50);border-color:var(--e-c-primary-01-50)}.icon-button.plain[data-v-cc80eb1c]:active:before{background-color:var(--e-c-primary-01-100);border-color:var(--e-c-primary-01-100)}.icon-button.plain:disabled .icon[data-v-cc80eb1c],.icon-button.plain:disabled e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-mono-500)}.icon-button.filled-inverted[data-v-cc80eb1c]:before{background-color:var(--e-c-mono-00);border-color:var(--e-c-mono-00)}.icon-button.filled-inverted .icon[data-v-cc80eb1c],.icon-button.filled-inverted e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-primary-01-700)}.icon-button.filled-inverted[data-v-cc80eb1c]:hover:before{background-color:var(--e-c-primary-01-100);border-color:var(--e-c-primary-01-100)}.icon-button.filled-inverted:hover .icon[data-v-cc80eb1c],.icon-button.filled-inverted:hover e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-secondary-01-700)}.icon-button.filled-inverted[data-v-cc80eb1c]:active:before{background-color:var(--e-c-primary-01-200);border-color:var(--e-c-primary-01-200)}.icon-button.filled-inverted[data-v-cc80eb1c]:disabled:before{background-color:var(--e-c-mono-500);border-color:var(--e-c-mono-500)}.icon-button.filled-inverted:disabled .icon[data-v-cc80eb1c],.icon-button.filled-inverted:disabled e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-mono-700)}.icon-button.outlined-inverted[data-v-cc80eb1c]:before{background-color:transparent;border-color:var(--e-c-mono-00)}.icon-button.outlined-inverted .icon[data-v-cc80eb1c],.icon-button.outlined-inverted e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-mono-00)}.icon-button.outlined-inverted[data-v-cc80eb1c]:hover:before{border-color:var(--e-c-primary-01-200)}.icon-button.outlined-inverted[data-v-cc80eb1c]:active:before{border-color:var(--e-c-primary-01-500)}.icon-button.outlined-inverted[data-v-cc80eb1c]:disabled:before{border-color:var(--e-c-mono-500)}.icon-button.outlined-inverted:disabled .icon[data-v-cc80eb1c],.icon-button.outlined-inverted:disabled e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-mono-500)}.icon-button.plain-inverted[data-v-cc80eb1c]:before{background-color:transparent;border-color:transparent}.icon-button.plain-inverted .icon[data-v-cc80eb1c],.icon-button.plain-inverted e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-mono-00)}.icon-button.plain-inverted[data-v-cc80eb1c]:hover:before{background-color:var(--e-c-secondary-01-700);border-color:var(--e-c-secondary-01-700)}.icon-button.plain-inverted[data-v-cc80eb1c]:active:before{background-color:var(--e-c-secondary-01-900);border-color:var(--e-c-secondary-01-900)}.icon-button.plain-inverted:disabled .icon[data-v-cc80eb1c],.icon-button.plain-inverted:disabled e-icon[data-v-cc80eb1c]{--icon-fill-color: var(--e-c-mono-500)}