cloudcommerce 0.0.95 → 0.0.97

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 (101) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/package.json +3 -3
  3. package/packages/api/package.json +1 -1
  4. package/packages/apps/correios/lib-mjs/correios-ws.mjs +2 -1
  5. package/packages/apps/correios/package.json +1 -1
  6. package/packages/apps/custom-shipping/package.json +1 -1
  7. package/packages/apps/discounts/package.json +1 -1
  8. package/packages/apps/frenet/package.json +1 -1
  9. package/packages/apps/tiny-erp/package.json +2 -2
  10. package/packages/cli/package.json +1 -1
  11. package/packages/config/package.json +1 -1
  12. package/packages/events/package.json +2 -2
  13. package/packages/firebase/lib/config.js +25 -27
  14. package/packages/firebase/lib/const.js +2 -3
  15. package/packages/firebase/lib/env.js +1 -2
  16. package/packages/firebase/lib/handlers/check-store-events.js +145 -146
  17. package/packages/firebase/lib/helpers/pubsub.js +18 -20
  18. package/packages/firebase/lib/helpers/update-app-data.js +38 -38
  19. package/packages/firebase/lib/index.js +7 -9
  20. package/packages/firebase/lib/init.js +1 -2
  21. package/packages/firebase/package.json +3 -3
  22. package/packages/modules/package.json +2 -2
  23. package/packages/passport/package.json +2 -2
  24. package/packages/ssr/lib/firebase.js +1 -1
  25. package/packages/ssr/lib/firebase.js.map +1 -1
  26. package/packages/ssr/package.json +2 -2
  27. package/packages/ssr/src/firebase.ts +1 -1
  28. package/packages/storefront/.eslintrc.cjs +1 -0
  29. package/packages/storefront/astro.config.mjs +11 -1
  30. package/packages/storefront/example.env +1 -1
  31. package/packages/storefront/package.json +6 -5
  32. package/packages/storefront/src/assets/pico.css +0 -1
  33. package/packages/storefront/src/env.d.ts +1 -1
  34. package/packages/storefront/src/lib/components/AOffcanvas.vue +98 -0
  35. package/packages/storefront/src/lib/components/LoginForm.vue +54 -0
  36. package/packages/storefront/src/lib/components/LoginOffcanvas.vue +41 -0
  37. package/packages/storefront/src/lib/components/TheHeader.vue +37 -3
  38. package/packages/storefront/src/lib/components/TopBar.vue +13 -21
  39. package/packages/storefront/src/lib/layouts/BaseBody.astro +41 -38
  40. package/packages/storefront/src/lib/layouts/BaseHead.astro +0 -5
  41. package/packages/storefront/src/lib/layouts/BaseStateJson.astro +12 -11
  42. package/packages/storefront/src/lib/layouts/PagesHeader.astro +28 -20
  43. package/packages/storefront/src/lib/scripts/firebase-app.ts +16 -0
  44. package/packages/storefront/src/lib/{helpers → ssr}/image.ts +4 -2
  45. package/packages/storefront/src/pages/app/account.astro +0 -0
  46. package/packages/storefront/storefront.config.mjs +6 -7
  47. package/packages/storefront/tsconfig.json +4 -1
  48. package/packages/types/package.json +1 -1
  49. package/store.renovate.json +55 -0
  50. package/packages/storefront/dist/client/admin/config.json +0 -1
  51. package/packages/storefront/dist/client/assets/_...73e01db2.css +0 -4
  52. package/packages/storefront/dist/client/assets/_...ee104f19.css +0 -1
  53. package/packages/storefront/dist/client/assets/cms-preview.css +0 -274
  54. package/packages/storefront/dist/client/assets/cms.css +0 -114
  55. package/packages/storefront/dist/client/assets/cvv.png +0 -0
  56. package/packages/storefront/dist/client/assets/icons/bootstrap-icons/font/storefront-icons.woff2 +0 -0
  57. package/packages/storefront/dist/client/assets/icons/feather-icons/font/storefront-icons.woff2 +0 -0
  58. package/packages/storefront/dist/client/assets/icons/font-awesome/font/storefront-icons.woff2 +0 -0
  59. package/packages/storefront/dist/client/assets/icons/line-awesome/font/storefront-icons.woff2 +0 -0
  60. package/packages/storefront/dist/client/assets/icons/tabler-icons/font/storefront-icons.woff2 +0 -0
  61. package/packages/storefront/dist/client/assets/img-placeholder.png +0 -0
  62. package/packages/storefront/dist/client/assets/payments.png +0 -0
  63. package/packages/storefront/dist/client/assets/ssl-safe.png +0 -0
  64. package/packages/storefront/dist/client/chunks/workbox-window.prod.es5.4b654ae6.js +0 -2
  65. package/packages/storefront/dist/client/client.80baece3.js +0 -1
  66. package/packages/storefront/dist/client/hoisted.46e058d2.js +0 -271
  67. package/packages/storefront/dist/client/img/icon.png +0 -0
  68. package/packages/storefront/dist/client/img/large-icon.png +0 -0
  69. package/packages/storefront/dist/client/img/uploads/banner1.png +0 -0
  70. package/packages/storefront/dist/client/img/uploads/banner2.png +0 -0
  71. package/packages/storefront/dist/client/img/uploads/banner2.webp +0 -0
  72. package/packages/storefront/dist/client/img/uploads/favicon.png +0 -0
  73. package/packages/storefront/dist/client/img/uploads/headless.png +0 -0
  74. package/packages/storefront/dist/client/img/uploads/headphone.png +0 -0
  75. package/packages/storefront/dist/client/img/uploads/headphone.webp +0 -0
  76. package/packages/storefront/dist/client/img/uploads/icon.png +0 -0
  77. package/packages/storefront/dist/client/img/uploads/large-icon.png +0 -0
  78. package/packages/storefront/dist/client/img/uploads/logo.png +0 -0
  79. package/packages/storefront/dist/client/img/uploads/logo.webp +0 -0
  80. package/packages/storefront/dist/client/img/uploads/og-image.png +0 -0
  81. package/packages/storefront/dist/client/img/uploads/passion.png +0 -0
  82. package/packages/storefront/dist/client/img/uploads/passion.webp +0 -0
  83. package/packages/storefront/dist/client/img/uploads/pwa-reliable.png +0 -0
  84. package/packages/storefront/dist/client/img/uploads/rect8589.png +0 -0
  85. package/packages/storefront/dist/client/img/uploads/rect859.png +0 -0
  86. package/packages/storefront/dist/client/img/uploads/rect89.png +0 -0
  87. package/packages/storefront/dist/client/img/uploads/rect89.webp +0 -0
  88. package/packages/storefront/dist/client/img/uploads/ssl-safe.png +0 -0
  89. package/packages/storefront/dist/client/manifest.webmanifest +0 -1
  90. package/packages/storefront/dist/client/page.3aa82516.js +0 -1
  91. package/packages/storefront/dist/client/robots.txt +0 -8
  92. package/packages/storefront/dist/client/sw.js +0 -1
  93. package/packages/storefront/dist/client/workbox-6f0d1f78.js +0 -1
  94. package/packages/storefront/dist/client/~partytown/partytown-atomics.js +0 -2
  95. package/packages/storefront/dist/client/~partytown/partytown-media.js +0 -2
  96. package/packages/storefront/dist/client/~partytown/partytown-sw.js +0 -2
  97. package/packages/storefront/dist/client/~partytown/partytown.js +0 -2
  98. package/packages/storefront/dist/server/entry.mjs +0 -2662
  99. package/packages/storefront/dist/server/manifest.webmanifest +0 -1
  100. package/packages/storefront/dist/server/registerSW.js +0 -1
  101. package/packages/storefront/src/lib/components/LoginModal.vue +0 -82
@@ -10,10 +10,6 @@ export interface Props {
10
10
  hasPhoneLinks?: boolean;
11
11
  hasNetworkLinks?: boolean;
12
12
  socialNetworks?: string[];
13
- countdownClass?: string;
14
- pageLinksClass?: string;
15
- contactLinksClass?: string;
16
- socialNetworksClass?: string;
17
13
  }
18
14
 
19
15
  withDefaults(defineProps<Props>(), {
@@ -28,23 +24,19 @@ withDefaults(defineProps<Props>(), {
28
24
 
29
25
  <template>
30
26
  <div class="top-bar w-full bg-surface">
31
- <slot
32
- name="countdown"
33
- v-bind="{ marketingStripe, countdownClass }"
34
- >
27
+ <slot name="countdown" v-bind="{ marketingStripe }">
35
28
  <template v-if="marketingStripe && marketingStripe.text">
36
29
  <component
37
30
  :is="marketingStripe.link ? 'a' : 'div'"
38
31
  class="top-bar__countdown block text-sm text-center p-1
39
32
  whitespace-nowrap overflow-x-auto"
40
- :class="[countdownClass, marketingStripe.link ? 'primary' : 'secondary']"
33
+ :class="marketingStripe.link ? 'primary' : 'secondary'"
41
34
  :href="marketingStripe.link"
42
35
  >
43
36
  {{ marketingStripe.text }}
44
37
  </component>
45
38
  </template>
46
39
  </slot>
47
-
48
40
  <div
49
41
  v-if="hasNavbar"
50
42
  class="top-bar__nav hidden md:block py-2"
@@ -52,14 +44,10 @@ withDefaults(defineProps<Props>(), {
52
44
  <div class="container">
53
45
  <div class="flex items-center lg:px-2 xl:px-4">
54
46
  <div class="grow text-xs">
55
- <slot
56
- name="contacts-container"
57
- v-bind="{ pageLinks, pageLinksClass }"
58
- >
47
+ <slot name="page-links" v-bind="{ pageLinks }">
59
48
  <nav
60
49
  v-if="pageLinks"
61
50
  class="top-bar__page-links inline-block mr-4 font-semibold"
62
- :class="pageLinksClass"
63
51
  >
64
52
  <a
65
53
  v-for="({ link, title }, i) in pageLinks"
@@ -71,15 +59,13 @@ withDefaults(defineProps<Props>(), {
71
59
  </a>
72
60
  </nav>
73
61
  </slot>
74
-
75
62
  <slot
76
63
  name="contact-links"
77
- v-bind="{ contacts, hasPhoneLinks, contactLinksClass }"
64
+ v-bind="{ contacts, hasPhoneLinks }"
78
65
  >
79
66
  <div
80
67
  v-if="hasPhoneLinks"
81
68
  class="top-bar__contact-links inline-block"
82
- :class="contactLinksClass"
83
69
  >
84
70
  <a
85
71
  v-if="contacts.whatsapp"
@@ -93,7 +79,7 @@ withDefaults(defineProps<Props>(), {
93
79
  {{ contacts.whatsapp }}
94
80
  </a>
95
81
  <a
96
- v-if="contacts.phone"
82
+ v-if="contacts.phone && contacts.phone !== contacts.whatsapp"
97
83
  :href="`tel:+${contacts.phone.replace(/\D/g, '')}`"
98
84
  target="_blank"
99
85
  rel="noopener"
@@ -105,10 +91,9 @@ withDefaults(defineProps<Props>(), {
105
91
  </div>
106
92
  </slot>
107
93
  </div>
108
-
109
94
  <slot
110
95
  name="social-networks"
111
- v-bind="{ contacts, hasNetworkLinks, socialNetworksClass }"
96
+ v-bind="{ contacts, hasNetworkLinks }"
112
97
  >
113
98
  <div
114
99
  v-if="hasNetworkLinks"
@@ -122,6 +107,7 @@ withDefaults(defineProps<Props>(), {
122
107
  target="_blank"
123
108
  rel="noopener"
124
109
  class="ml-1"
110
+ :aria-label="`Follow on ${network}`"
125
111
  >
126
112
  <i v-if="network === 'facebook'" class="i-facebook"></i>
127
113
  <i v-else-if="network === 'youtube'" class="i-youtube"></i>
@@ -139,3 +125,9 @@ withDefaults(defineProps<Props>(), {
139
125
  </div>
140
126
  </div>
141
127
  </template>
128
+
129
+ <style>
130
+ .top-bar__nav a:not(:hover) {
131
+ color: var(--gray);
132
+ }
133
+ </style>
@@ -9,7 +9,6 @@ export interface Props {
9
9
 
10
10
  const { pageContext } = Astro.props as Props;
11
11
  const { primaryColor, secondaryColor } = pageContext;
12
-
13
12
  const brandColors = {
14
13
  primary: primaryColor,
15
14
  secondary: secondaryColor,
@@ -65,44 +64,48 @@ Object.keys(brandColors).forEach((colorName) => {
65
64
  </body>
66
65
 
67
66
  <style is:global define:vars={colorCSSVars}>
68
- :root {
69
- --content-max-width: 80rem;
70
- --white: #fff;
71
- --gray-50: #f9fafb;
72
- --gray-200: #e5e7eb;
73
- --gray-700: #374151;
74
- --gray-800: #1f2937;
75
- --gray-900: #111827;
76
- --surface-color: var(--gray-50);
77
- --surface-border-color: var(--gray-200);
78
- --yiq-text-light: var(--white);
79
- --yiq-text-dark: var(--gray-900);
67
+ :root {
68
+ --content-max-width: 80rem;
69
+ --white: #fff;
70
+ --gray-50: #f9fafb;
71
+ --gray-200: #e5e7eb;
72
+ --gray-400: #94a3b8;
73
+ --gray-600: #4b5563;
74
+ --gray-700: #374151;
75
+ --gray-800: #1f2937;
76
+ --gray-900: #111827;
77
+ --gray: var(--gray-600);
78
+ --gray-accent: var(--gray-800);
79
+ --surface-color: var(--gray-50);
80
+ --surface-border-color: var(--gray-200);
81
+ --yiq-text-light: var(--white);
82
+ --yiq-text-dark: var(--gray-900);
83
+ }
84
+ body {
85
+ --primary: var(--primary-500);
86
+ --primary-hover: var(--primary-700);
87
+ --primary-focus: rgba(var(--primary-200-rgb), 0.2);
88
+ --primary-inverse: var(--primary-500-yiq);
89
+ --secondary: var(--secondary-500);
90
+ --secondary-hover: var(--secondary-700);
91
+ --secondary-focus: rgba(var(--secondary-200-rgb), 0.2);
92
+ --secondary-inverse: var(--secondary-500-yiq);
93
+ }
94
+ @media only screen and (prefers-color-scheme: dark) {
95
+ :root:not([data-theme=light]) {
96
+ --gray: var(--gray-400);
97
+ --gray-accent: var(--gray-200);
98
+ --surface-color: var(--gray-800);
99
+ --surface-border-color: var(--gray-700);
80
100
  }
81
- body,
82
- body [data-theme=light],
83
- body [data-theme=dark] {
84
- --primary: var(--primary-500);
85
- --primary-hover: var(--primary-700);
86
- --primary-focus: rgba(var(--primary-200-rgb), 0.2);
87
- --primary-inverse: var(--primary-500-yiq);
88
- --secondary: var(--secondary-500);
89
- --secondary-hover: var(--secondary-700);
90
- --secondary-focus: rgba(var(--secondary-200-rgb), 0.2);
91
- --secondary-inverse: var(--secondary-500-yiq);
101
+ :root:not([data-theme=light]) a:not([role=button]) {
102
+ --color: var(--primary-100);
92
103
  }
93
- @media only screen and (prefers-color-scheme: dark) {
94
- :root:not([data-theme=light]) {
95
- --surface-color: var(--gray-800);
96
- --surface-border-color: var(--gray-700);
97
- }
98
- :root:not([data-theme=light]) a {
99
- --color: var(--primary-200);
100
- }
101
- :root:not([data-theme=light]) a:is([aria-current], :hover, :active, :focus) {
102
- --color: var(--primary-400);
103
- }
104
- }
105
- body {
106
- overflow-x: hidden;
104
+ :root:not([data-theme=light]) a:not([role=button]):is([aria-current], :hover, :active, :focus) {
105
+ --color: var(--primary-300);
107
106
  }
107
+ }
108
+ body {
109
+ overflow-x: hidden;
110
+ }
108
111
  </style>
@@ -21,7 +21,6 @@ const {
21
21
  const state = apiDoc || cmsContent || {};
22
22
  const title = state.meta_title || state.name || state.title || Astro.props.title || settings.name;
23
23
  const description = state.meta_description || state.short_description || settings.description;
24
-
25
24
  const canonicalUrl = new URL(Astro.url.pathname, Astro.site || `https://${domain}`);
26
25
  const cmsSocial = cms('social') as CmsSocial;
27
26
  const ogLocale = lang.length === 2 ? lang : lang.substring(0, 2) + lang.slice(3).toUpperCase();
@@ -53,7 +52,6 @@ if (!ogImage) {
53
52
  <link rel="apple-touch-icon" href={settings.icon} />
54
53
  <meta name="apple-mobile-web-app-capable" content="yes">
55
54
  <meta name="apple-mobile-web-app-status-bar-style" content="default">
56
-
57
55
  <meta property="og:site_name" content={settings.name}>
58
56
  <meta property="og:url" content={canonicalUrl}>
59
57
  <meta property="og:title" content={title}>
@@ -64,7 +62,4 @@ if (!ogImage) {
64
62
  {cmsSocial.fb_app_id && <meta property="fb:app_id" content={cmsSocial.fb_app_id} />}
65
63
  <meta name="twitter:card" content="summary">
66
64
  {cmsSocial.twitter_username && <meta name="twitter:site" content={cmsSocial.twitter_username} />}
67
-
68
- <link rel="preconnect" href="https://ecomplus.io/" crossorigin />
69
- <link rel="dns-prefetch" href="https://ecomplus.io/" />
70
65
  <meta name="ecom-store-id" content={String(storeId)}>
@@ -6,18 +6,19 @@ export interface Props {
6
6
  pageContext: PageContext;
7
7
  }
8
8
 
9
- const { pageContext } = Astro.props as Props;
10
9
  const {
11
- storeId,
12
- apiResource,
13
- apiDoc,
14
- lang,
15
- countryCode,
16
- currency,
17
- currencySymbol,
18
- domain,
19
- settings,
20
- } = pageContext;
10
+ pageContext: {
11
+ storeId,
12
+ apiResource,
13
+ apiDoc,
14
+ lang,
15
+ countryCode,
16
+ currency,
17
+ currencySymbol,
18
+ domain,
19
+ settings,
20
+ },
21
+ } = Astro.props as Props;
21
22
 
22
23
  let inlineClientJS = `
23
24
  window.storefront = ${JSON.stringify({
@@ -3,22 +3,16 @@ import type { Categories } from '@cloudcommerce/api/types';
3
3
  import type CmsHeader from '../../types/cms-header';
4
4
  import type CmsContacts from '../../types/cms-contacts';
5
5
  import type { PageContext } from '../ssr-context';
6
- import { getImageAttrs } from '../helpers/image';
6
+ import { getImageAttrs } from '../ssr/image';
7
7
  import TopBar, { Props as TopBarProps } from '../components/TopBar.vue';
8
- import TheHeader from '../components/TheHeader.vue';
8
+ import TheHeader, { Props as TheHeaderProps } from '../components/TheHeader.vue';
9
+ import LoginOffcanvas, { Props as LoginOffcanvasProps } from '../components/LoginOffcanvas.vue';
9
10
 
10
11
  export interface Props {
11
12
  pageContext: PageContext;
12
13
  topBarProps?: Partial<TopBarProps>;
13
- logoTransform?: {
14
- width?: number;
15
- height?: number;
16
- quality?: number;
17
- };
18
- }
19
-
20
- declare global {
21
- var TopBarProps: TopBarProps;
14
+ theHeaderProps?: Partial<TheHeaderProps>;
15
+ loginOffcanvasProps?: Partial<LoginOffcanvasProps>;
22
16
  }
23
17
 
24
18
  const {
@@ -28,12 +22,11 @@ const {
28
22
  cms,
29
23
  },
30
24
  topBarProps,
31
- logoTransform,
25
+ theHeaderProps,
32
26
  } = Astro.props as Props;
33
27
  const header = cms('header') as CmsHeader;
34
28
  const contacts = cms('contacts') as CmsContacts;
35
29
  const customThemeName = settings.theme.custom || '';
36
-
37
30
  let headerCategories: Array<{ slug: string, name: string }> = [];
38
31
  let isCategoriesNavFull: boolean | undefined;
39
32
  if (header.categories_list) {
@@ -64,6 +57,11 @@ const hasMegamenu: boolean | undefined = header.desktop_megamenu;
64
57
  const isAlphabeticalOrderSubmenu: boolean | undefined = header.alphabetical_order_submenu;
65
58
  const isFullWidthSubmenu: boolean | undefined = header.full_width_submenu;
66
59
 
60
+ declare global {
61
+ var TopBarProps: TopBarProps;
62
+ var TheHeaderProps: TheHeaderProps;
63
+ var LoginOffcanvasProps: LoginOffcanvasProps;
64
+ }
67
65
  globalThis.TopBarProps = {
68
66
  marketingStripe: header.marketing_stripe,
69
67
  pageLinks: header.contacts_stripe.pages,
@@ -72,18 +70,28 @@ globalThis.TopBarProps = {
72
70
  contacts,
73
71
  ...topBarProps,
74
72
  };
75
-
76
- const logoWebpAttrs = await getImageAttrs({
77
- src: settings.logo,
78
- width: 150,
79
- });
73
+ globalThis.TheHeaderProps = {
74
+ logo: {
75
+ ...getImageAttrs({
76
+ src: settings.logo,
77
+ width: 150,
78
+ }),
79
+ alt: settings.name,
80
+ },
81
+ ...theHeaderProps,
82
+ };
83
+ globalThis.LoginOffcanvasProps = {
84
+ ...LoginOffcanvasProps,
85
+ };
80
86
  ---
81
87
 
82
88
  <slot name="top-bar">
83
89
  <TopBar {...globalThis.TopBarProps} />
84
90
  </slot>
85
91
  <slot name="header">
86
- <TheHeader>
87
- <img slot="logo" {...logoWebpAttrs} alt={`${settings.name} (logo)`} />
92
+ <TheHeader {...globalThis.TheHeaderProps}>
93
+ <Fragment slot="buttons">
94
+ <LoginOffcanvas client:idle {...globalThis.LoginOffcanvasProps} />
95
+ </Fragment>
88
96
  </TheHeader>
89
97
  </slot>
@@ -0,0 +1,16 @@
1
+ import { initializeApp } from 'firebase/app';
2
+
3
+ const firebaseConfig = window.firebaseConfig || {
4
+ apiKey: 'AIzaSyCrVzemDgpyp9i6ni7Yc5ZuEVfXYwl-4J0',
5
+ authDomain: 'ecom2-002.firebaseapp.com',
6
+ projectId: 'ecom2-002',
7
+ storageBucket: 'ecom2-002.appspot.com',
8
+ messagingSenderId: '402807248219',
9
+ appId: '1:402807248219:web:cf7d57759751e74776367e',
10
+ measurementId: 'G-SC592CE0GB',
11
+ };
12
+ const app = initializeApp(firebaseConfig);
13
+
14
+ export default app;
15
+
16
+ export const firebaseApp = app;
@@ -1,10 +1,12 @@
1
+ import { resolve as resolvePath } from 'path';
1
2
  import imageSize from 'image-size';
2
3
 
3
4
  const tryImageSize = (src: string) => {
4
5
  let dimensions: { width?: number, height?: number } = {};
5
6
  if (typeof src === 'string' && src.startsWith('/')) {
7
+ const { STOREFRONT_BASE_DIR } = import.meta.env;
6
8
  try {
7
- dimensions = imageSize(`public${src}`);
9
+ dimensions = imageSize(resolvePath(STOREFRONT_BASE_DIR, `public${src}`));
8
10
  } catch (e) {
9
11
  dimensions = {};
10
12
  }
@@ -12,7 +14,7 @@ const tryImageSize = (src: string) => {
12
14
  return dimensions;
13
15
  };
14
16
 
15
- const getImageAttrs = async (attrs: {
17
+ const getImageAttrs = (attrs: {
16
18
  src: string,
17
19
  width?: number,
18
20
  height?: number,
@@ -2,13 +2,11 @@ import fs from 'fs';
2
2
  import { resolve as resolvePath } from 'path';
3
3
  import config from '@cloudcommerce/config';
4
4
 
5
- const getEnvVar = (name) => {
6
- return import.meta.env?.[name] || process.env[name];
7
- };
8
-
9
5
  export default () => {
10
- const STOREFRONT_BASE_DIR = getEnvVar('STOREFRONT_BASE_DIR');
11
- const VITE_ECOM_STORE_ID = getEnvVar('VITE_ECOM_STORE_ID');
6
+ const {
7
+ STOREFRONT_BASE_DIR,
8
+ VITE_ECOM_STORE_ID,
9
+ } = import.meta.env || process.env;
12
10
 
13
11
  let baseDir;
14
12
  if (STOREFRONT_BASE_DIR) {
@@ -16,6 +14,7 @@ export default () => {
16
14
  } else {
17
15
  baseDir = process.cwd();
18
16
  }
17
+ process.env.STOREFRONT_BASE_DIR = baseDir;
19
18
  const dirContent = resolvePath(baseDir, 'content');
20
19
  if (VITE_ECOM_STORE_ID) {
21
20
  config.set({ storeId: Number(VITE_ECOM_STORE_ID) });
@@ -40,7 +39,7 @@ export default () => {
40
39
 
41
40
  const settings = cms('settings');
42
41
  const { domain } = settings;
43
- const primaryColor = settings.primary_color || '#20c997';
42
+ const primaryColor = settings.primary_color || '#137c5c';
44
43
  const secondaryColor = settings.secondary_color || '#343a40';
45
44
 
46
45
  return {
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "extends": "astro/tsconfigs/base",
3
3
  "compilerOptions": {
4
- "jsx": "preserve"
4
+ "jsx": "preserve",
5
+ "paths": {
6
+ "@i18n": ["./node_modules/@ecomplus/i18n/src/en_us/index.js"],
7
+ }
5
8
  }
6
9
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/types",
3
3
  "type": "module",
4
- "version": "0.0.95",
4
+ "version": "0.0.97",
5
5
  "description": "E-Com Plus Cloud Commerce reusable type definitions",
6
6
  "main": "index.ts",
7
7
  "repository": {
@@ -0,0 +1,55 @@
1
+ {
2
+ "extends": [
3
+ "config:base"
4
+ ],
5
+ "schedule": [
6
+ "after 6am and before 10am on monday"
7
+ ],
8
+ "labels": [
9
+ "dependencies"
10
+ ],
11
+ "rangeStrategy": "bump",
12
+ "packageRules": [
13
+ {
14
+ "excludePackagePrefixes": [
15
+ "@ecomplus",
16
+ "@cloudcommerce"
17
+ ],
18
+ "matchUpdateTypes": [
19
+ "minor",
20
+ "patch",
21
+ "lockFileMaintenance"
22
+ ],
23
+ "groupName": "Many non-major"
24
+ },
25
+ {
26
+ "matchPackagePrefixes": [
27
+ "@cloudcommerce"
28
+ ],
29
+ "matchUpdateTypes": [
30
+ "minor",
31
+ "patch"
32
+ ],
33
+ "schedule": [
34
+ "after 11am and before 4pm every weekday"
35
+ ],
36
+ "semanticCommitType": "fix",
37
+ "automerge": true,
38
+ "groupName": "Cloud Commerce bump non-major"
39
+ },
40
+ {
41
+ "matchPackagePrefixes": [
42
+ "@ecomplus"
43
+ ],
44
+ "matchUpdateTypes": [
45
+ "minor",
46
+ "patch"
47
+ ],
48
+ "schedule": [
49
+ "after 11am and before 4pm every weekday"
50
+ ],
51
+ "semanticCommitType": "fix",
52
+ "groupName": "@ecomplus non-major"
53
+ }
54
+ ]
55
+ }
@@ -1,4 +0,0 @@
1
- @charset "UTF-8";:root{--content-max-width: 80rem;--white: #fff;--gray-50: #f9fafb;--gray-200: #e5e7eb;--gray-700: #374151;--gray-800: #1f2937;--gray-900: #111827;--surface-color: var(--gray-50);--surface-border-color: var(--gray-200);--yiq-text-light: var(--white);--yiq-text-dark: var(--gray-900)}body,body [data-theme=light],body [data-theme=dark]{--primary: var(--primary-500);--primary-hover: var(--primary-700);--primary-focus: rgba(var(--primary-200-rgb), .2);--primary-inverse: var(--primary-500-yiq);--secondary: var(--secondary-500);--secondary-hover: var(--secondary-700);--secondary-focus: rgba(var(--secondary-200-rgb), .2);--secondary-inverse: var(--secondary-500-yiq)}@media only screen and (prefers-color-scheme: dark){:root:not([data-theme=light]){--surface-color: var(--gray-800);--surface-border-color: var(--gray-700)}:root:not([data-theme=light]) a{--color: var(--primary-200)}:root:not([data-theme=light]) a:is([aria-current],:hover,:active,:focus){--color: var(--primary-400)}}body{overflow-x:hidden}/*!
2
- * Pico.css v1.5.5 (https://picocss.com)
3
- * Copyright 2019-2022 - Licensed under MIT
4
- */:root{--font-family: system-ui, -apple-system, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--line-height: 1.5;--font-weight: 400;--font-size: 16px;--border-radius: .25rem;--border-width: 1px;--outline-width: 3px;--spacing: 1rem;--typography-spacing-vertical: 1.5rem;--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing);--grid-spacing-vertical: 0;--grid-spacing-horizontal: var(--spacing);--form-element-spacing-vertical: .75rem;--form-element-spacing-horizontal: 1rem;--nav-element-spacing-vertical: 1rem;--nav-element-spacing-horizontal: .5rem;--nav-link-spacing-vertical: .5rem;--nav-link-spacing-horizontal: .5rem;--form-label-font-weight: var(--font-weight);--transition: .2s ease-in-out;--modal-overlay-backdrop-filter: blur(.25rem);--icon-checkbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(65, 84, 98)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(115, 130, 140)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");--icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(198, 40, 40)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");--icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(56, 142, 60)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E")}@media (min-width: 576px){:root{--font-size: 17px}}@media (min-width: 768px){:root{--font-size: 18px}}@media (min-width: 992px){:root{--font-size: 19px}}@media (min-width: 1200px){:root{--font-size: 20px}}@media (min-width: 576px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 2.5)}}@media (min-width: 768px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 3)}}@media (min-width: 992px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 3.5)}}@media (min-width: 1200px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 4)}}@media (min-width: 576px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.25)}}@media (min-width: 768px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.5)}}@media (min-width: 992px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.75)}}@media (min-width: 1200px){article{--block-spacing-horizontal: calc(var(--spacing) * 2)}}dialog>article{--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing)}@media (min-width: 576px){dialog>article{--block-spacing-vertical: calc(var(--spacing) * 2.5);--block-spacing-horizontal: calc(var(--spacing) * 1.25)}}@media (min-width: 768px){dialog>article{--block-spacing-vertical: calc(var(--spacing) * 3);--block-spacing-horizontal: calc(var(--spacing) * 1.5)}}a{--text-decoration: none}a.secondary,a.contrast{--text-decoration: underline}small{--font-size: .875em}h1,h2,h3,h4,h5,h6{--font-weight: 700}h1{--font-size: 2rem;--typography-spacing-vertical: 3rem}h2{--font-size: 1.75rem;--typography-spacing-vertical: 2.625rem}h3{--font-size: 1.5rem;--typography-spacing-vertical: 2.25rem}h4{--font-size: 1.25rem;--typography-spacing-vertical: 1.874rem}h5{--font-size: 1.125rem;--typography-spacing-vertical: 1.6875rem}[type=checkbox],[type=radio]{--border-width: 2px}[type=checkbox][role=switch],thead th,thead td,tfoot th,tfoot td{--border-width: 3px}:not(thead,tfoot)>*>td{--font-size: .875em}pre,code,kbd,samp{--font-family: "Menlo", "Consolas", "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}kbd{--font-weight: bolder}:root:not([data-theme=dark]){--background-color: #fff;--color: hsl(205deg, 20%, 32%);--h1-color: hsl(205deg, 30%, 15%);--h2-color: #24333e;--h3-color: hsl(205deg, 25%, 23%);--h4-color: #374956;--h5-color: hsl(205deg, 20%, 32%);--h6-color: #4d606d;--muted-color: hsl(205deg, 10%, 50%);--muted-border-color: hsl(205deg, 20%, 94%);--primary: hsl(195deg, 85%, 41%);--primary-hover: hsl(195deg, 90%, 32%);--primary-focus: rgba(16, 149, 193, .125);--primary-inverse: #fff;--secondary: hsl(205deg, 15%, 41%);--secondary-hover: hsl(205deg, 20%, 32%);--secondary-focus: rgba(89, 107, 120, .125);--secondary-inverse: #fff;--contrast: hsl(205deg, 30%, 15%);--contrast-hover: #000;--contrast-focus: rgba(89, 107, 120, .125);--contrast-inverse: #fff;--mark-background-color: #fff2ca;--mark-color: #543a26;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: transparent;--form-element-border-color: hsl(205deg, 14%, 68%);--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: transparent;--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: hsl(205deg, 18%, 86%);--form-element-disabled-border-color: hsl(205deg, 14%, 68%);--form-element-disabled-opacity: .5;--form-element-invalid-border-color: #c62828;--form-element-invalid-active-border-color: #d32f2f;--form-element-invalid-focus-color: rgba(211, 47, 47, .125);--form-element-valid-border-color: #388e3c;--form-element-valid-active-border-color: #43a047;--form-element-valid-focus-color: rgba(67, 160, 71, .125);--switch-background-color: hsl(205deg, 16%, 77%);--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: hsl(205deg, 18%, 86%);--range-active-border-color: hsl(205deg, 16%, 77%);--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: #f6f8f9;--code-background-color: hsl(205deg, 20%, 94%);--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: hsl(330deg, 40%, 50%);--code-property-color: hsl(185deg, 40%, 40%);--code-value-color: hsl(40deg, 20%, 50%);--code-comment-color: hsl(205deg, 14%, 68%);--accordion-border-color: var(--muted-border-color);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: var(--background-color);--card-border-color: var(--muted-border-color);--card-box-shadow: .0145rem .029rem .174rem rgba(27, 40, 50, .01698), .0335rem .067rem .402rem rgba(27, 40, 50, .024), .0625rem .125rem .75rem rgba(27, 40, 50, .03), .1125rem .225rem 1.35rem rgba(27, 40, 50, .036), .2085rem .417rem 2.502rem rgba(27, 40, 50, .04302), .5rem 1rem 6rem rgba(27, 40, 50, .06), 0 0 0 .0625rem rgba(27, 40, 50, .015);--card-sectionning-background-color: #fbfbfc;--dropdown-background-color: #fbfbfc;--dropdown-border-color: #e1e6eb;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: hsl(205deg, 20%, 94%);--modal-overlay-background-color: rgba(213, 220, 226, .7);--progress-background-color: hsl(205deg, 18%, 86%);--progress-color: var(--primary);--loading-spinner-opacity: .5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);color-scheme:light}@media only screen and (prefers-color-scheme: dark){:root:not([data-theme=light]){--background-color: #11191f;--color: hsl(205deg, 16%, 77%);--h1-color: hsl(205deg, 20%, 94%);--h2-color: #e1e6eb;--h3-color: hsl(205deg, 18%, 86%);--h4-color: #c8d1d8;--h5-color: hsl(205deg, 16%, 77%);--h6-color: #afbbc4;--muted-color: hsl(205deg, 10%, 50%);--muted-border-color: #1f2d38;--primary: hsl(195deg, 85%, 41%);--primary-hover: hsl(195deg, 80%, 50%);--primary-focus: rgba(16, 149, 193, .25);--primary-inverse: #fff;--secondary: hsl(205deg, 15%, 41%);--secondary-hover: hsl(205deg, 10%, 50%);--secondary-focus: rgba(115, 130, 140, .25);--secondary-inverse: #fff;--contrast: hsl(205deg, 20%, 94%);--contrast-hover: #fff;--contrast-focus: rgba(115, 130, 140, .25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: hsl(205deg, 25%, 23%);--form-element-disabled-border-color: hsl(205deg, 20%, 32%);--form-element-disabled-opacity: .5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198, 40, 40, .25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56, 142, 60, .25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: hsl(205deg, 25%, 23%);--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115, 130, 140, .05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: hsl(330deg, 30%, 50%);--code-property-color: hsl(185deg, 30%, 50%);--code-value-color: hsl(40deg, 10%, 50%);--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0, 0, 0, .01698), .0335rem .067rem .402rem rgba(0, 0, 0, .024), .0625rem .125rem .75rem rgba(0, 0, 0, .03), .1125rem .225rem 1.35rem rgba(0, 0, 0, .036), .2085rem .417rem 2.502rem rgba(0, 0, 0, .04302), .5rem 1rem 6rem rgba(0, 0, 0, .06), 0 0 0 .0625rem rgba(0, 0, 0, .015);--card-sectionning-background-color: #18232c;--dropdown-background-color: hsl(205deg, 30%, 15%);--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36, 51, 62, .75);--modal-overlay-background-color: rgba(36, 51, 62, .8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: .5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);color-scheme:dark}}progress,[type=checkbox],[type=radio],[type=range]{accent-color:var(--primary)}*,*:before,*:after{box-sizing:border-box;background-repeat:no-repeat}:before,:after{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--background-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--line-height);font-family:var(--font-family);text-rendering:optimizeLegibility;overflow-wrap:break-word;cursor:default;-moz-tab-size:4;-o-tab-size:4;tab-size:4}main{display:block}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--block-spacing-vertical) 0}.container,.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:var(--spacing);padding-left:var(--spacing)}section{margin-bottom:var(--block-spacing-vertical)}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:calc(var(--spacing) * .5) 0;color:var(--muted-color)}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-style:normal;font-weight:var(--font-weight);font-size:var(--font-size)}a,[role=link]{--color: var(--primary);--background-color: transparent;outline:none;background-color:var(--background-color);color:var(--color);-webkit-text-decoration:var(--text-decoration);text-decoration:var(--text-decoration);transition:background-color var(--transition),color var(--transition),box-shadow var(--transition),-webkit-text-decoration var(--transition);transition:background-color var(--transition),color var(--transition),text-decoration var(--transition),box-shadow var(--transition);transition:background-color var(--transition),color var(--transition),text-decoration var(--transition),box-shadow var(--transition),-webkit-text-decoration var(--transition)}a:is([aria-current],:hover,:active,:focus),[role=link]:is([aria-current],:hover,:active,:focus){--color: var(--primary-hover);--text-decoration: underline}a:focus,[role=link]:focus{--background-color: var(--primary-focus)}a.secondary,[role=link].secondary{--color: var(--secondary)}a.secondary:is([aria-current],:hover,:active,:focus),[role=link].secondary:is([aria-current],:hover,:active,:focus){--color: var(--secondary-hover)}a.secondary:focus,[role=link].secondary:focus{--background-color: var(--secondary-focus)}a.contrast,[role=link].contrast{--color: var(--contrast)}a.contrast:is([aria-current],:hover,:active,:focus),[role=link].contrast:is([aria-current],:hover,:active,:focus){--color: var(--contrast-hover)}a.contrast:focus,[role=link].contrast:focus{--background-color: var(--contrast-focus)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);font-family:var(--font-family)}h1{--color: var(--h1-color)}h2{--color: var(--h2-color)}h3{--color: var(--h3-color)}h4{--color: var(--h4-color)}h5{--color: var(--h5-color)}h6{--color: var(--h6-color)}:where(address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--typography-spacing-vertical)}hgroup,.headings{margin-bottom:var(--typography-spacing-vertical)}hgroup>*,.headings>*{margin-bottom:0}hgroup>*:last-child,.headings>*:last-child{--color: var(--muted-color);--font-weight: unset;font-size:1rem;font-family:unset}p{margin-bottom:var(--typography-spacing-vertical)}small{font-size:var(--font-size)}:where(dl,ol,ul){padding-right:0;padding-left:var(--spacing);-webkit-padding-start:var(--spacing);padding-inline-start:var(--spacing);-webkit-padding-end:0;padding-inline-end:0}:where(dl,ol,ul) li{margin-bottom:calc(var(--typography-spacing-vertical) * .25)}:where(dl,ol,ul) :is(dl,ol,ul){margin:0;margin-top:calc(var(--typography-spacing-vertical) * .25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--mark-background-color);color:var(--mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--typography-spacing-vertical) 0;padding:var(--spacing);border-right:none;border-left:.25rem solid var(--blockquote-border-color);-webkit-border-start:.25rem solid var(--blockquote-border-color);border-inline-start:.25rem solid var(--blockquote-border-color);-webkit-border-end:none;border-inline-end:none}blockquote footer{margin-top:calc(var(--typography-spacing-vertical) * .5);color:var(--blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--ins-color);text-decoration:none}del{color:var(--del-color)}::-moz-selection{background-color:var(--primary-focus)}::selection{background-color:var(--primary-focus)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:root){overflow:hidden}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button{display:block;width:100%;margin-bottom:var(--spacing)}[role=button]{display:inline-block;text-decoration:none}button,input[type=submit],input[type=button],input[type=reset],[role=button]{--background-color: var(--primary);--border-color: var(--primary);--color: var(--primary-inverse);--box-shadow: var(--button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}button:is([aria-current],:hover,:active,:focus),input[type=submit]:is([aria-current],:hover,:active,:focus),input[type=button]:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus),[role=button]:is([aria-current],:hover,:active,:focus){--background-color: var(--primary-hover);--border-color: var(--primary-hover);--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--color: var(--primary-inverse)}button:focus,input[type=submit]:focus,input[type=button]:focus,input[type=reset]:focus,[role=button]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--primary-focus)}:is(button,input[type=submit],input[type=button],[role=button]).secondary,input[type=reset]{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);cursor:pointer}:is(button,input[type=submit],input[type=button],[role=button]).secondary:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover);--color: var(--secondary-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).secondary:focus,input[type=reset]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--secondary-focus)}:is(button,input[type=submit],input[type=button],[role=button]).contrast{--background-color: var(--contrast);--border-color: var(--contrast);--color: var(--contrast-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).contrast:is([aria-current],:hover,:active,:focus){--background-color: var(--contrast-hover);--border-color: var(--contrast-hover);--color: var(--contrast-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).contrast:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--contrast-focus)}:is(button,input[type=submit],input[type=button],[role=button]).outline,input[type=reset].outline{--background-color: transparent;--color: var(--primary)}:is(button,input[type=submit],input[type=button],[role=button]).outline:is([aria-current],:hover,:active,:focus),input[type=reset].outline:is([aria-current],:hover,:active,:focus){--background-color: transparent;--color: var(--primary-hover)}:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary,input[type=reset].outline{--color: var(--secondary)}:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary:is([aria-current],:hover,:active,:focus),input[type=reset].outline:is([aria-current],:hover,:active,:focus){--color: var(--secondary-hover)}:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast{--color: var(--contrast)}:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast:is([aria-current],:hover,:active,:focus){--color: var(--contrast-hover)}:where(button,[type=submit],[type=button],[type=reset],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]),a[role=button]:not([href]){opacity:.5;pointer-events:none}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:none}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2)}fieldset{margin:0;margin-bottom:var(--spacing);padding:0;border:0}label,fieldset legend{display:block;margin-bottom:calc(var(--spacing) * .25);font-weight:var(--form-label-font-weight, var(--font-weight))}input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal)}input,select,textarea{--background-color: var(--form-element-background-color);--border-color: var(--form-element-border-color);--color: var(--form-element-color);--box-shadow: none;border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--background-color: var(--form-element-active-background-color)}input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--border-color: var(--form-element-active-border-color)}input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus,select:focus,textarea:focus{--box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color)}input:not([type=submit],[type=button],[type=reset])[disabled],select[disabled],textarea[disabled],:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea){--background-color: var(--form-element-disabled-background-color);--border-color: var(--form-element-disabled-border-color);opacity:var(--form-element-disabled-opacity);pointer-events:none}:where(input,select,textarea):not([type=checkbox],[type=radio])[aria-invalid]{padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem)!important;padding-left:var(--form-element-spacing-horizontal);-webkit-padding-start:var(--form-element-spacing-horizontal)!important;padding-inline-start:var(--form-element-spacing-horizontal)!important;-webkit-padding-end:calc(var(--form-element-spacing-horizontal) + 1.5rem)!important;padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem)!important;background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio])[aria-invalid=false]{background-image:var(--icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio])[aria-invalid=true]{background-image:var(--icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--border-color: var(--form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--border-color: var(--form-element-valid-active-border-color) !important;--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important}:where(input,select,textarea)[aria-invalid=true]{--border-color: var(--form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--border-color: var(--form-element-invalid-active-border-color) !important;--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::placeholder,input::-webkit-input-placeholder,textarea::placeholder,textarea::-webkit-input-placeholder,select:invalid{color:var(--form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--spacing)}select::-ms-expand{border:0;background-color:transparent}select:not([multiple],[size]){padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-left:var(--form-element-spacing-horizontal);-webkit-padding-start:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal);-webkit-padding-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);background-image:var(--icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}:where(input,select,textarea)+small{display:block;width:100%;margin-top:calc(var(--spacing) * -.75);margin-bottom:var(--spacing);color:var(--muted-color)}label>:where(input,select,textarea){margin-top:calc(var(--spacing) * .25)}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25em;height:1.25em;margin-top:-.125em;margin-right:.375em;margin-left:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:.375em;margin-inline-end:.375em;border-width:var(--border-width);font-size:inherit;vertical-align:middle;cursor:pointer}[type=checkbox]::-ms-check,[type=radio]::-ms-check{display:none}[type=checkbox]:checked,[type=checkbox]:checked:active,[type=checkbox]:checked:focus,[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--background-color: var(--primary);--border-color: var(--primary);background-image:var(--icon-checkbox);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=checkbox]~label,[type=radio]~label{display:inline-block;margin-right:.375em;margin-bottom:0;cursor:pointer}[type=radio]{border-radius:50%}[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--background-color: var(--primary-inverse);border-width:.35em;background-image:none}[type=checkbox][role=switch]{--background-color: var(--switch-background-color);--border-color: var(--switch-background-color);--color: var(--switch-color);width:2.25em;height:1.25em;border:var(--border-width) solid var(--border-color);border-radius:1.25em;background-color:var(--background-color);line-height:1.25em}[type=checkbox][role=switch]:focus{--background-color: var(--switch-background-color);--border-color: var(--switch-background-color)}[type=checkbox][role=switch]:checked{--background-color: var(--switch-checked-background-color);--border-color: var(--switch-checked-background-color)}[type=checkbox][role=switch]:before{display:block;width:calc(1.25em - (var(--border-width) * 2));height:100%;border-radius:50%;background-color:var(--color);content:"";transition:margin .1s ease-in-out}[type=checkbox][role=switch]:checked{background-image:none}[type=checkbox][role=switch]:checked:before{margin-left:calc(1.125em - var(--border-width));-webkit-margin-start:calc(1.125em - var(--border-width));margin-inline-start:calc(1.125em - var(--border-width))}[type=checkbox][aria-invalid=false],[type=checkbox]:checked[aria-invalid=false],[type=radio][aria-invalid=false],[type=radio]:checked[aria-invalid=false],[type=checkbox][role=switch][aria-invalid=false],[type=checkbox][role=switch]:checked[aria-invalid=false]{--border-color: var(--form-element-valid-border-color)}[type=checkbox][aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=radio][aria-invalid=true],[type=radio]:checked[aria-invalid=true],[type=checkbox][role=switch][aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true]{--border-color: var(--form-element-invalid-border-color)}[type=color]::-webkit-color-swatch-wrapper{padding:0}[type=color]::-moz-focus-inner{padding:0}[type=color]::-webkit-color-swatch{border:0;border-radius:calc(var(--border-radius) * .5)}[type=color]::-moz-color-swatch{border:0;border-radius:calc(var(--border-radius) * .5)}[type=date]::-webkit-calendar-picker-indicator,[type=datetime-local]::-webkit-calendar-picker-indicator,[type=month]::-webkit-calendar-picker-indicator,[type=time]::-webkit-calendar-picker-indicator,[type=week]::-webkit-calendar-picker-indicator{width:var(--icon-width);margin-right:calc(var(--icon-width) * -1);margin-left:var(--icon-position);opacity:0}[dir=rtl] :is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){text-align:right}[type=file]{--color: var(--muted-color);padding:calc(var(--form-element-spacing-vertical) * .5) 0;border:0;border-radius:0;background:none}[type=file]::file-selector-button{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing) / 2);margin-left:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:calc(var(--spacing) / 2);margin-inline-end:calc(var(--spacing) / 2);padding:calc(var(--form-element-spacing-vertical) * .5) calc(var(--form-element-spacing-horizontal) * .5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::file-selector-button:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=file]::-webkit-file-upload-button{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing) / 2);margin-left:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:calc(var(--spacing) / 2);margin-inline-end:calc(var(--spacing) / 2);padding:calc(var(--form-element-spacing-vertical) * .5) calc(var(--form-element-spacing-horizontal) * .5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;-webkit-transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition);transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::-webkit-file-upload-button:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=file]::-ms-browse{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing) / 2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing) / 2);padding:calc(var(--form-element-spacing-vertical) * .5) calc(var(--form-element-spacing-horizontal) * .5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;-ms-transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition);transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::-ms-browse:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:1.25rem;background:none}[type=range]::-webkit-slider-runnable-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);-webkit-transition:background-color var(--transition),box-shadow var(--transition);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-moz-range-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);-moz-transition:background-color var(--transition),box-shadow var(--transition);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-ms-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);-ms-transition:background-color var(--transition),box-shadow var(--transition);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;-webkit-transition:background-color var(--transition),transform var(--transition);transition:background-color var(--transition),transform var(--transition)}[type=range]::-moz-range-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;-moz-transition:background-color var(--transition),transform var(--transition);transition:background-color var(--transition),transform var(--transition)}[type=range]::-ms-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;-ms-transition:background-color var(--transition),transform var(--transition);transition:background-color var(--transition),transform var(--transition)}[type=range]:hover,[type=range]:focus{--range-border-color: var(--range-active-border-color);--range-thumb-color: var(--range-thumb-hover-color)}[type=range]:active{--range-thumb-color: var(--range-thumb-active-color)}[type=range]:active::-webkit-slider-thumb{transform:scale(1.25)}[type=range]:active::-moz-range-thumb{transform:scale(1.25)}[type=range]:active::-ms-thumb{transform:scale(1.25)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{-webkit-padding-start:calc(var(--form-element-spacing-horizontal) + 1.75rem)!important;padding-inline-start:calc(var(--form-element-spacing-horizontal) + 1.75rem)!important;background-position:center left 1.125rem,center right .75rem}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=false]{background-image:var(--icon-search),var(--icon-valid)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=true]{background-image:var(--icon-search),var(--icon-invalid)}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;display:none}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{background-position:center right 1.125rem}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{background-position:center right 1.125rem,center left .75rem}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}th,td{padding:calc(var(--spacing) / 2) var(--spacing);border-bottom:var(--border-width) solid var(--table-border-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);text-align:left;text-align:start}tfoot th,tfoot td{border-top:var(--border-width) solid var(--table-border-color);border-bottom:0}table[role=grid] tbody tr:nth-child(odd){background-color:var(--table-row-stripped-background-color)}pre,code,kbd,samp{font-size:.875em;font-family:var(--font-family)}pre{-ms-overflow-style:scrollbar;overflow:auto}pre,code,kbd{border-radius:var(--border-radius);background:var(--code-background-color);color:var(--code-color);font-weight:var(--font-weight);line-height:initial}code,kbd{display:inline-block;padding:.375rem .5rem}pre{display:block;margin-bottom:var(--spacing);overflow-x:auto}pre>code{display:block;padding:var(--spacing);background:none;font-size:14px;line-height:var(--line-height)}code b{color:var(--code-tag-color);font-weight:var(--font-weight)}code i{color:var(--code-property-color);font-style:normal}code u{color:var(--code-value-color);text-decoration:none}code em{color:var(--code-comment-color);font-style:normal}kbd{background-color:var(--code-kbd-background-color);color:var(--code-kbd-color);vertical-align:baseline}hr{height:0;border:0;border-top:1px solid var(--muted-border-color);color:inherit}[hidden],template{display:none!important}canvas{display:inline-block}details{display:block;margin-bottom:var(--spacing);padding-bottom:var(--spacing);border-bottom:var(--border-width) solid var(--accordion-border-color)}details summary{line-height:1rem;list-style-type:none;cursor:pointer;transition:color var(--transition)}details summary:not([role]){color:var(--accordion-close-summary-color)}details summary::-webkit-details-marker{display:none}details summary::marker{display:none}details summary::-moz-list-bullet{list-style-type:none}details summary:after{display:block;width:1rem;height:1rem;-webkit-margin-start:calc(var(--spacing, 1rem) * .5);margin-inline-start:calc(var(--spacing, 1rem) * .5);float:right;transform:rotate(-90deg);background-image:var(--icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:"";transition:transform var(--transition)}details summary:focus{outline:none}details summary:focus:not([role=button]){color:var(--accordion-active-summary-color)}details summary[role=button]{width:100%;text-align:left}details summary[role=button]:after{height:calc(1rem * var(--line-height, 1.5));background-image:var(--icon-chevron-button)}details summary[role=button]:not(.outline).contrast:after{background-image:var(--icon-chevron-button-inverse)}details[open]>summary{margin-bottom:calc(var(--spacing))}details[open]>summary:not([role]):not(:focus){color:var(--accordion-open-summary-color)}details[open]>summary:after{transform:rotate(0)}[dir=rtl] details summary{text-align:right}[dir=rtl] details summary:after{float:left;background-position:left center}article{margin:var(--block-spacing-vertical) 0;padding:var(--block-spacing-vertical) var(--block-spacing-horizontal);border-radius:var(--border-radius);background:var(--card-background-color);box-shadow:var(--card-box-shadow)}article>header,article>footer{margin-right:calc(var(--block-spacing-horizontal) * -1);margin-left:calc(var(--block-spacing-horizontal) * -1);padding:calc(var(--block-spacing-vertical) * .66) var(--block-spacing-horizontal);background-color:var(--card-sectionning-background-color)}article>header{margin-top:calc(var(--block-spacing-vertical) * -1);margin-bottom:var(--block-spacing-vertical);border-bottom:var(--border-width) solid var(--card-border-color);border-top-right-radius:var(--border-radius);border-top-left-radius:var(--border-radius)}article>footer{margin-top:var(--block-spacing-vertical);margin-bottom:calc(var(--block-spacing-vertical) * -1);border-top:var(--border-width) solid var(--card-border-color);border-bottom-right-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}:root{--scrollbar-width: 0px}dialog{display:flex;z-index:999;position:fixed;inset:0;align-items:center;justify-content:center;width:inherit;min-width:100%;height:inherit;min-height:100%;padding:var(--spacing);border:0;-webkit-backdrop-filter:var(--modal-overlay-backdrop-filter);backdrop-filter:var(--modal-overlay-backdrop-filter);background-color:var(--modal-overlay-background-color);color:var(--color)}dialog article{max-height:calc(100vh - var(--spacing) * 2);overflow:auto}@media (min-width: 576px){dialog article{max-width:510px}}@media (min-width: 768px){dialog article{max-width:700px}}dialog article>header,dialog article>footer{padding:calc(var(--block-spacing-vertical) * .5) var(--block-spacing-horizontal)}dialog article>header .close{margin:0;margin-left:var(--spacing);float:right}dialog article>footer{text-align:right}dialog article>footer [role=button]{margin-bottom:0}dialog article>footer [role=button]:not(:first-of-type){margin-left:calc(var(--spacing) * .5)}dialog article p:last-of-type{margin:0}dialog article .close{display:block;width:1rem;height:1rem;margin-top:calc(var(--block-spacing-vertical) * -.5);margin-bottom:var(--typography-spacing-vertical);margin-left:auto;background-image:var(--icon-close);background-position:center;background-size:auto 1rem;background-repeat:no-repeat;opacity:.5;transition:opacity var(--transition)}dialog article .close:is([aria-current],:hover,:active,:focus){opacity:1}dialog:not([open]),dialog[open=false]{display:none}.modal-is-open{padding-right:var(--scrollbar-width, 0px);overflow:hidden;pointer-events:none}.modal-is-open dialog{pointer-events:auto}:where(.modal-is-opening,.modal-is-closing) dialog,:where(.modal-is-opening,.modal-is-closing) dialog>article{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}:where(.modal-is-opening,.modal-is-closing) dialog{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-name:modal-overlay;animation-name:modal-overlay}:where(.modal-is-opening,.modal-is-closing) dialog>article{-webkit-animation-delay:.2s;animation-delay:.2s;-webkit-animation-name:modal;animation-name:modal}.modal-is-closing dialog,.modal-is-closing dialog>article{-webkit-animation-delay:0s;animation-delay:0s;animation-direction:reverse}@-webkit-keyframes modal-overlay{0%{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:transparent}}@keyframes modal-overlay{0%{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:transparent}}@-webkit-keyframes modal{0%{transform:translateY(-100%);opacity:0}}@keyframes modal{0%{transform:translateY(-100%);opacity:0}}:where(nav li):before{float:left;content:"\200b"}nav,nav ul{display:flex}nav{justify-content:space-between}nav ol,nav ul{align-items:center;margin-bottom:0;padding:0;list-style:none}nav ol:first-of-type,nav ul:first-of-type{margin-left:calc(var(--nav-element-spacing-horizontal) * -1)}nav ol:last-of-type,nav ul:last-of-type{margin-right:calc(var(--nav-element-spacing-horizontal) * -1)}nav li{display:inline-block;margin:0;padding:var(--nav-element-spacing-vertical) var(--nav-element-spacing-horizontal)}nav li>*{--spacing: 0}nav :where(a,[role=link]){display:inline-block;margin:calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1);padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);border-radius:var(--border-radius);text-decoration:none}nav :where(a,[role=link]):is([aria-current],:hover,:active,:focus){text-decoration:none}nav[aria-label=breadcrumb]{align-items:center;justify-content:start}nav[aria-label=breadcrumb] ul li:not(:first-child){-webkit-margin-start:var(--nav-link-spacing-horizontal);margin-inline-start:var(--nav-link-spacing-horizontal)}nav[aria-label=breadcrumb] ul li:not(:last-child) :after{position:absolute;width:calc(var(--nav-link-spacing-horizontal) * 2);-webkit-margin-start:calc(var(--nav-link-spacing-horizontal) / 2);margin-inline-start:calc(var(--nav-link-spacing-horizontal) / 2);content:"/";color:var(--muted-color);text-align:center}nav[aria-label=breadcrumb] a[aria-current]{background-color:transparent;color:inherit;text-decoration:none;pointer-events:none}nav [role=button]{margin-right:inherit;margin-left:inherit;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}aside nav,aside ol,aside ul,aside li{display:block}aside li{padding:calc(var(--nav-element-spacing-vertical) * .5) var(--nav-element-spacing-horizontal)}aside li a{display:block}aside li [role=button]{margin:inherit}[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) :after{content:"\\"}progress{display:inline-block;vertical-align:baseline}progress{-webkit-appearance:none;-moz-appearance:none;display:inline-block;appearance:none;width:100%;height:.5rem;margin-bottom:calc(var(--spacing) * .5);overflow:hidden;border:0;border-radius:var(--border-radius);background-color:var(--progress-background-color);color:var(--progress-color)}progress::-webkit-progress-bar{border-radius:var(--border-radius);background:none}progress[value]::-webkit-progress-value{background-color:var(--progress-color)}progress::-moz-progress-bar{background-color:var(--progress-color)}@media (prefers-reduced-motion: no-preference){progress:indeterminate{background:var(--progress-background-color) linear-gradient(to right,var(--progress-color) 30%,var(--progress-background-color) 30%) top left/150% 150% no-repeat;-webkit-animation:progress-indeterminate 1s linear infinite;animation:progress-indeterminate 1s linear infinite}progress:indeterminate[value]::-webkit-progress-value{background-color:transparent}progress:indeterminate::-moz-progress-bar{background-color:transparent}}@media (prefers-reduced-motion: no-preference){[dir=rtl] progress:indeterminate{animation-direction:reverse}}@-webkit-keyframes progress-indeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes progress-indeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}details[role=list],li[role=list]{position:relative}details[role=list] summary+ul,li[role=list]>ul{display:flex;z-index:99;position:absolute;top:auto;right:0;left:0;flex-direction:column;margin:0;padding:0;border:var(--border-width) solid var(--dropdown-border-color);border-radius:var(--border-radius);border-top-right-radius:0;border-top-left-radius:0;background-color:var(--dropdown-background-color);box-shadow:var(--card-box-shadow);color:var(--dropdown-color);white-space:nowrap}details[role=list] summary+ul li,li[role=list]>ul li{width:100%;margin-bottom:0;padding:calc(var(--form-element-spacing-vertical) * .5) var(--form-element-spacing-horizontal);list-style:none}details[role=list] summary+ul li:first-of-type,li[role=list]>ul li:first-of-type{margin-top:calc(var(--form-element-spacing-vertical) * .5)}details[role=list] summary+ul li:last-of-type,li[role=list]>ul li:last-of-type{margin-bottom:calc(var(--form-element-spacing-vertical) * .5)}details[role=list] summary+ul li a,li[role=list]>ul li a{display:block;margin:calc(var(--form-element-spacing-vertical) * -.5) calc(var(--form-element-spacing-horizontal) * -1);padding:calc(var(--form-element-spacing-vertical) * .5) var(--form-element-spacing-horizontal);overflow:hidden;color:var(--dropdown-color);text-decoration:none;text-overflow:ellipsis}details[role=list] summary+ul li a:hover,li[role=list]>ul li a:hover{background-color:var(--dropdown-hover-background-color)}details[role=list] summary:after,li[role=list]>a:after{display:block;width:1rem;height:calc(1rem * var(--line-height, 1.5));-webkit-margin-start:.5rem;margin-inline-start:.5rem;float:right;transform:rotate(0);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:""}details[role=list]{padding:0;border-bottom:none}details[role=list] summary{margin-bottom:0}details[role=list] summary:not([role]){height:calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2);padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--form-element-border-color);border-radius:var(--border-radius);background-color:var(--form-element-background-color);color:var(--form-element-placeholder-color);line-height:inherit;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}details[role=list] summary:not([role]):active,details[role=list] summary:not([role]):focus{border-color:var(--form-element-active-border-color);background-color:var(--form-element-active-background-color)}details[role=list] summary:not([role]):focus{box-shadow:0 0 0 var(--outline-width) var(--form-element-focus-color)}details[role=list][open] summary{border-bottom-right-radius:0;border-bottom-left-radius:0}details[role=list][open] summary:before{display:block;z-index:1;position:fixed;inset:0;background:none;content:"";cursor:default}nav details[role=list] summary,nav li[role=list] a{display:flex;direction:ltr}nav details[role=list] summary+ul,nav li[role=list]>ul{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;border-radius:var(--border-radius)}nav details[role=list] summary+ul li a,nav li[role=list]>ul li a{border-radius:0}nav details[role=list] summary,nav details[role=list] summary:not([role]){height:auto;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}nav details[role=list][open] summary{border-radius:var(--border-radius)}nav details[role=list] summary+ul{margin-top:var(--outline-width);-webkit-margin-start:0;margin-inline-start:0}nav details[role=list] summary[role=link]{margin-bottom:calc(var(--nav-link-spacing-vertical) * -1);line-height:var(--line-height)}nav details[role=list] summary[role=link]+ul{margin-top:calc(var(--nav-link-spacing-vertical) + var(--outline-width));-webkit-margin-start:calc(var(--nav-link-spacing-horizontal) * -1);margin-inline-start:calc(var(--nav-link-spacing-horizontal) * -1)}li[role=list]:hover>ul,li[role=list] a:active~ul,li[role=list] a:focus~ul{display:flex}li[role=list]>ul{display:none;margin-top:calc(var(--nav-link-spacing-vertical) + var(--outline-width));-webkit-margin-start:calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal));margin-inline-start:calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal))}li[role=list]>a:after{background-image:var(--icon-chevron)}[aria-busy=true]{cursor:progress}[aria-busy=true]:not(input,select,textarea):before{display:inline-block;width:1em;height:1em;border:.1875em solid currentColor;border-radius:1em;border-right-color:transparent;content:"";vertical-align:text-bottom;vertical-align:-.125em;-webkit-animation:spinner .75s linear infinite;animation:spinner .75s linear infinite;opacity:var(--loading-spinner-opacity)}[aria-busy=true]:not(input,select,textarea):not(:empty):before{margin-right:calc(var(--spacing) * .5);margin-left:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:calc(var(--spacing) * .5);margin-inline-end:calc(var(--spacing) * .5)}[aria-busy=true]:not(input,select,textarea):empty{text-align:center}button[aria-busy=true],input[type=submit][aria-busy=true],input[type=button][aria-busy=true],input[type=reset][aria-busy=true],a[aria-busy=true]{pointer-events:none}@-webkit-keyframes spinner{to{transform:rotate(360deg)}}@keyframes spinner{to{transform:rotate(360deg)}}[data-tooltip]{position:relative}[data-tooltip]:not(a,button,input){border-bottom:1px dotted;text-decoration:none;cursor:help}[data-tooltip][data-placement=top]:before,[data-tooltip][data-placement=top]:after,[data-tooltip]:before,[data-tooltip]:after{display:block;z-index:99;position:absolute;bottom:100%;left:50%;padding:.25rem .5rem;overflow:hidden;transform:translate(-50%,-.25rem);border-radius:var(--border-radius);background:var(--tooltip-background-color);content:attr(data-tooltip);color:var(--tooltip-color);font-style:normal;font-weight:var(--font-weight);font-size:.875rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none}[data-tooltip][data-placement=top]:after,[data-tooltip]:after{padding:0;transform:translate(-50%);border-top:.3rem solid;border-right:.3rem solid transparent;border-left:.3rem solid transparent;border-radius:0;background-color:transparent;content:"";color:var(--tooltip-background-color)}[data-tooltip][data-placement=bottom]:before,[data-tooltip][data-placement=bottom]:after{top:100%;bottom:auto;transform:translate(-50%,.25rem)}[data-tooltip][data-placement=bottom]:after{transform:translate(-50%,-.3rem);border:.3rem solid transparent;border-bottom:.3rem solid}[data-tooltip][data-placement=left]:before,[data-tooltip][data-placement=left]:after{inset:50% 100% auto auto;transform:translate(-.25rem,-50%)}[data-tooltip][data-placement=left]:after{transform:translate(.3rem,-50%);border:.3rem solid transparent;border-left:.3rem solid}[data-tooltip][data-placement=right]:before,[data-tooltip][data-placement=right]:after{inset:50% auto auto 100%;transform:translate(.25rem,-50%)}[data-tooltip][data-placement=right]:after{transform:translate(-.3rem,-50%);border:.3rem solid transparent;border-right:.3rem solid}[data-tooltip]:focus:before,[data-tooltip]:focus:after,[data-tooltip]:hover:before,[data-tooltip]:hover:after{opacity:1}@media (hover: hover) and (pointer: fine){[data-tooltip][data-placement=bottom]:focus:before,[data-tooltip][data-placement=bottom]:focus:after,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus:before,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus:after,[data-tooltip]:hover:before,[data-tooltip]:hover:after{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-name:tooltip-slide-top;animation-name:tooltip-slide-top}[data-tooltip][data-placement=bottom]:focus:after,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus:after,[data-tooltip]:hover:after{-webkit-animation-name:tooltip-caret-slide-top;animation-name:tooltip-caret-slide-top}[data-tooltip][data-placement=bottom]:focus:before,[data-tooltip][data-placement=bottom]:focus:after,[data-tooltip][data-placement=bottom]:hover:before,[data-tooltip][data-placement=bottom]:hover:after{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-name:tooltip-slide-bottom;animation-name:tooltip-slide-bottom}[data-tooltip][data-placement=bottom]:focus:after,[data-tooltip][data-placement=bottom]:hover:after{-webkit-animation-name:tooltip-caret-slide-bottom;animation-name:tooltip-caret-slide-bottom}[data-tooltip][data-placement=left]:focus:before,[data-tooltip][data-placement=left]:focus:after,[data-tooltip][data-placement=left]:hover:before,[data-tooltip][data-placement=left]:hover:after{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-name:tooltip-slide-left;animation-name:tooltip-slide-left}[data-tooltip][data-placement=left]:focus:after,[data-tooltip][data-placement=left]:hover:after{-webkit-animation-name:tooltip-caret-slide-left;animation-name:tooltip-caret-slide-left}[data-tooltip][data-placement=right]:focus:before,[data-tooltip][data-placement=right]:focus:after,[data-tooltip][data-placement=right]:hover:before,[data-tooltip][data-placement=right]:hover:after{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-name:tooltip-slide-right;animation-name:tooltip-slide-right}[data-tooltip][data-placement=right]:focus:after,[data-tooltip][data-placement=right]:hover:after{-webkit-animation-name:tooltip-caret-slide-right;animation-name:tooltip-caret-slide-right}}@-webkit-keyframes tooltip-slide-top{0%{transform:translate(-50%,.75rem);opacity:0}to{transform:translate(-50%,-.25rem);opacity:1}}@keyframes tooltip-slide-top{0%{transform:translate(-50%,.75rem);opacity:0}to{transform:translate(-50%,-.25rem);opacity:1}}@-webkit-keyframes tooltip-caret-slide-top{0%{opacity:0}50%{transform:translate(-50%,-.25rem);opacity:0}to{transform:translate(-50%);opacity:1}}@keyframes tooltip-caret-slide-top{0%{opacity:0}50%{transform:translate(-50%,-.25rem);opacity:0}to{transform:translate(-50%);opacity:1}}@-webkit-keyframes tooltip-slide-bottom{0%{transform:translate(-50%,-.75rem);opacity:0}to{transform:translate(-50%,.25rem);opacity:1}}@keyframes tooltip-slide-bottom{0%{transform:translate(-50%,-.75rem);opacity:0}to{transform:translate(-50%,.25rem);opacity:1}}@-webkit-keyframes tooltip-caret-slide-bottom{0%{opacity:0}50%{transform:translate(-50%,-.5rem);opacity:0}to{transform:translate(-50%,-.3rem);opacity:1}}@keyframes tooltip-caret-slide-bottom{0%{opacity:0}50%{transform:translate(-50%,-.5rem);opacity:0}to{transform:translate(-50%,-.3rem);opacity:1}}@-webkit-keyframes tooltip-slide-left{0%{transform:translate(.75rem,-50%);opacity:0}to{transform:translate(-.25rem,-50%);opacity:1}}@keyframes tooltip-slide-left{0%{transform:translate(.75rem,-50%);opacity:0}to{transform:translate(-.25rem,-50%);opacity:1}}@-webkit-keyframes tooltip-caret-slide-left{0%{opacity:0}50%{transform:translate(.05rem,-50%);opacity:0}to{transform:translate(.3rem,-50%);opacity:1}}@keyframes tooltip-caret-slide-left{0%{opacity:0}50%{transform:translate(.05rem,-50%);opacity:0}to{transform:translate(.3rem,-50%);opacity:1}}@-webkit-keyframes tooltip-slide-right{0%{transform:translate(-.75rem,-50%);opacity:0}to{transform:translate(.25rem,-50%);opacity:1}}@keyframes tooltip-slide-right{0%{transform:translate(-.75rem,-50%);opacity:0}to{transform:translate(.25rem,-50%);opacity:1}}@-webkit-keyframes tooltip-caret-slide-right{0%{opacity:0}50%{transform:translate(-.05rem,-50%);opacity:0}to{transform:translate(-.3rem,-50%);opacity:1}}@keyframes tooltip-caret-slide-right{0%{opacity:0}50%{transform:translate(-.05rem,-50%);opacity:0}to{transform:translate(-.3rem,-50%);opacity:1}}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);position:absolute}[dir=rtl]{direction:rtl}@media (prefers-reduced-motion: reduce){*:not([aria-busy=true]),:not([aria-busy=true]):before,:not([aria-busy=true]):after{background-attachment:initial!important;-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-animation-delay:-1ms!important;animation-delay:-1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-delay:0s!important;transition-duration:0s!important}}