diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2020-08-10 21:35:58 +0200 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2020-08-10 21:35:58 +0200 |
| commit | 2cfee78597971b2e3e7e612eb9d7e8805e1aef85 (patch) | |
| tree | b939d48347c7fff48d2a51761cb546c3b9ac6ec0 | |
| parent | 8614d18522441543e08c37c68121fed1fa8d6ae7 (diff) | |
| download | dough-2cfee78597971b2e3e7e612eb9d7e8805e1aef85.tar.xz dough-2cfee78597971b2e3e7e612eb9d7e8805e1aef85.zip | |
add signing credentials
37 files changed, 10228 insertions, 457 deletions
diff --git a/src/browser/package-lock.json b/src/browser/package-lock.json index 2e5511f..ecb17cb 100644 --- a/src/browser/package-lock.json +++ b/src/browser/package-lock.json @@ -1123,6 +1123,11 @@ "to-regex-range": "^5.0.1" } }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" + }, "follow-redirects": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz", @@ -1752,6 +1757,11 @@ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -2919,6 +2929,15 @@ "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.0-beta.4.tgz", "integrity": "sha512-/+4E1dokq5cwbl4mohOqOj8h0vOLOWmLSqlqTf++bfmN9/JKWtwYfsBrzlK0sYrNfuYcpQeX0BVxQHoHXDfYZQ==" }, + "vuex-persist": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vuex-persist/-/vuex-persist-2.2.0.tgz", + "integrity": "sha512-o/qbBeMcKZZqMvCXc7kfIew/5cjHxlP1f53rx5YYp3r2tk2kxXYK/UZumxKn7OXywlurl2r0mgkuBzH6nIWFjw==", + "requires": { + "flatted": "^2.0.0", + "lodash.merge": "^4.6.2" + } + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", diff --git a/src/browser/package.json b/src/browser/package.json index baec9c1..16f440f 100644 --- a/src/browser/package.json +++ b/src/browser/package.json @@ -8,9 +8,10 @@ }, "dependencies": { "oidc-client": "^1.10.1", - "vue-router": "^4.0.0-0", "vue": "^3.0.0-rc.1", - "vuex": "^4.0.0-0" + "vue-router": "^4.0.0-0", + "vuex": "^4.0.0-0", + "vuex-persist": "^2.2.0" }, "devDependencies": { "@vue/compiler-sfc": "^3.0.0-rc.1", diff --git a/src/browser/src/api/account.js b/src/browser/src/api/account.js index 665eb3f..88522d6 100644 --- a/src/browser/src/api/account.js +++ b/src/browser/src/api/account.js @@ -18,8 +18,6 @@ const userManager = new Oidc.UserManager({ Oidc.Log.logger = console; Oidc.Log.level = Oidc.Log.INFO; -let currentUser; -let signedIn = false; userManager.events.addUserLoaded(function (user) { store.commit("setProfileData", user); @@ -48,9 +46,8 @@ userManager.events.addSilentRenewError(function () { }); userManager.events.addUserSignedOut(function () { - alert("Logout"); console.log("UserSignedOut:", arguments); - //userManager.removeUser(); + userManager.removeUser(); userManager .signoutRedirect() .then(function (resp) { @@ -70,39 +67,23 @@ export default { signinRedirectCallback() { userManager.signinRedirectCallback().then( - () => { - console.log("Logged in"); - }, - (error) => { - console.error(error); - } + (res) => console.log(res), + (error) => console.error(error) ); }, signOut() { - var self = this; userManager .signoutRedirect() .then(function (resp) { - self.signedIn = false; - console.log("signed out", resp); + return true; }) .catch(function (err) { - console.log(err); + console.error(err); + return false; }); }, - showTokens() { - userManager.getUser().then(function (user) { - if (user) { - console.log("Profile", user.profile); - console.log("Role", user.profile.role); - } else { - self.signIn(); - } - }); - }, - getUser() { let self = this; return new Promise((resolve, reject) => { @@ -117,50 +98,7 @@ export default { } }) .catch(function (err) { - console.log(err); - return reject(err); - }); - }); - }, - - getSignedIn() { - let self = this; - return new Promise((resolve, reject) => { - userManager - .getUser() - .then(function (user) { - if (user == null) { - self.signIn(); - return resolve(false); - } else { - currentUser = user; - signedIn = true; - return resolve(signedIn); - } - }) - .catch(function (err) { - console.log(err); - return reject(err); - }); - }); - }, - - getRole() { - let self = this; - return new Promise((resolve, reject) => { - userManager - .getUser() - .then(function (user) { - if (user == null) { - self.signIn(); - return resolve(false); - } else { - currentUser = user; - return resolve(user.profile.role); - } - }) - .catch(function (err) { - console.log(err); + console.error(err); return reject(err); }); }); diff --git a/src/browser/src/constants.js b/src/browser/src/constants.js index 471cc92..cb78214 100644 --- a/src/browser/src/constants.js +++ b/src/browser/src/constants.js @@ -1,12 +1,4 @@ export default { api_address: "http://localhost:5001", client_address: "http://localhost:3000", - storageKeys: { - cookie_last_seen: "cookie-last-seen", - }, - types: { - set_profile_data: "set-profile-data", - login_async: "login-async", - download_profile_data: "download-profile-data-async", - }, }; diff --git a/src/browser/src/router.js b/src/browser/src/router.js index 0fd5462..53df01f 100644 --- a/src/browser/src/router.js +++ b/src/browser/src/router.js @@ -66,9 +66,9 @@ const router = createRouter({ }); router.beforeEach((to, from, next) => { - console.log("store.state.profile.isAuthenticated: " + store.state.profile.isAuthenticated); + console.log("store.state.isAuthenticated: " + store.state.isAuthenticated); const publicPaths = routes.filter((r) => r.isPublic); - if (publicPaths.every((c) => c.path !== to.path) && !store.state.profile.isAuthenticated) + if (publicPaths.every((c) => c.path !== to.path) && !store.state.isAuthenticated) next("/login"); else next(); }); diff --git a/src/browser/src/store.js b/src/browser/src/store.js index c775ed8..ba69ba5 100644 --- a/src/browser/src/store.js +++ b/src/browser/src/store.js @@ -1,15 +1,26 @@ import { createStore } from "vuex"; +import VuexPersistence from "vuex-persist"; + +const vuexLocal = new VuexPersistence({ + storage: window.localStorage, +}); export default createStore({ strict: true, state: { + isAuthenticated: false, profile: {}, }, mutations: { setProfileData(state, profile) { state.profile = profile; + state.isAuthenticated = profile.profile != undefined; + }, + checkForAuthState(state) { + state.isAuthenticated = state.profile.profile != undefined; }, }, actions: {}, modules: {}, + plugins: [vuexLocal.plugin], }); diff --git a/src/browser/src/styles/codyframe/_base.scss b/src/browser/src/styles/codyframe/_base.scss index 5b4bdf6..1810765 100644 --- a/src/browser/src/styles/codyframe/_base.scss +++ b/src/browser/src/styles/codyframe/_base.scss @@ -1,23 +1,23 @@ -@import 'base/reset'; -@import 'base/breakpoints'; -@import 'base/mixins'; -@import 'base/colors'; -@import 'base/spacing'; -@import 'base/grid-layout'; -@import 'base/shared-styles'; -@import 'base/typography'; -@import 'base/icons'; -@import 'base/buttons'; -@import 'base/forms'; -@import 'base/z-index'; -@import 'base/visibility'; -@import 'base/accessibility'; +@import "base/reset"; +@import "base/breakpoints"; +@import "base/mixins"; +@import "base/colors"; +@import "base/spacing"; +@import "base/grid-layout"; +@import "base/shared-styles"; +@import "base/typography"; +@import "base/icons"; +@import "base/buttons"; +@import "base/forms"; +@import "base/z-index"; +@import "base/visibility"; +@import "base/accessibility"; +@import "base/util"; -@import 'base/util'; -@import 'custom-style/colors'; -@import 'custom-style/spacing'; -@import 'custom-style/shared-styles'; -@import 'custom-style/typography'; -@import 'custom-style/icons'; -@import 'custom-style/buttons'; -@import 'custom-style/forms'; +@import "custom-style/colors"; +@import "custom-style/spacing"; +@import "custom-style/shared-styles"; +@import "custom-style/typography"; +@import "custom-style/icons"; +@import "custom-style/buttons"; +@import "custom-style/forms"; diff --git a/src/browser/src/styles/codyframe/_btn-states.scss b/src/browser/src/styles/codyframe/_btn-states.scss index bc1498f..fcb2105 100644 --- a/src/browser/src/styles/codyframe/_btn-states.scss +++ b/src/browser/src/styles/codyframe/_btn-states.scss @@ -8,44 +8,43 @@ Usage: codyhouse.co/license -------------------------------- */ .btn .btn__content-a { - display: inline-flex; + display: inline-flex; } - .btn .btn__content-b { - display: none; + display: none; } -.btn__content-a, .btn__content-b { - align-items: center; +.btn__content-a, +.btn__content-b { + align-items: center; } .btn--state-b { - .btn__content-a { - display: none; - } + .btn__content-a { + display: none; + } - .btn__content-b { - display: inline-block; // fallback - display: inline-flex; - } + .btn__content-b { + display: inline-block; // fallback + display: inline-flex; + } } /* preserve button width when switching from state A to state B */ .btn--preserve-width { - .btn__content-b { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - justify-content: center; - } + .btn__content-b { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + justify-content: center; + } - &.btn--state-b .btn__content-a { - display: inline-block; // fallback - display: inline-flex; - visibility: hidden; - } + &.btn--state-b .btn__content-a { + display: inline-block; // fallback + display: inline-flex; + visibility: hidden; + } } - diff --git a/src/browser/src/styles/codyframe/_custom-style.scss b/src/browser/src/styles/codyframe/_custom-style.scss index 67e3481..3882275 100644 --- a/src/browser/src/styles/codyframe/_custom-style.scss +++ b/src/browser/src/styles/codyframe/_custom-style.scss @@ -1,7 +1,7 @@ -@import 'custom-style/colors'; -@import 'custom-style/spacing'; -@import 'custom-style/shared-styles'; -@import 'custom-style/typography'; -@import 'custom-style/icons'; -@import 'custom-style/buttons'; -@import 'custom-style/forms'; +@import "custom-style/colors"; +@import "custom-style/spacing"; +@import "custom-style/shared-styles"; +@import "custom-style/typography"; +@import "custom-style/icons"; +@import "custom-style/buttons"; +@import "custom-style/forms"; diff --git a/src/browser/src/styles/codyframe/_radios-checkboxes.scss b/src/browser/src/styles/codyframe/_radios-checkboxes.scss new file mode 100644 index 0000000..ec16b8e --- /dev/null +++ b/src/browser/src/styles/codyframe/_radios-checkboxes.scss @@ -0,0 +1,149 @@ + + +/* -------------------------------- + +File#: _1_radios-checkboxes +Title: Radios and Checkboxes +Descr: Custom radio and checkbox buttons +Usage: codyhouse.co/license + +-------------------------------- */ + +:root { + // radios and checkboxes + --checkbox-radio-size: 1em; + --checkbox-radio-translate-y: 0.15em; // edit to align buttons with labels + --checkbox-radio-gap: var(--space-xxxs); // gap between button and label + --checkbox-radio-border-width: 2px; + --checkbox-radio-line-height: var(--body-line-height); + + // radio buttons + --radio-marker-size: 8px; + + // checkboxes + --checkbox-marker-size: 12px; + --checkbox-radius: 0.185em; +} + +.radio, +.checkbox { + // hide native buttons + position: absolute; + margin: 0 !important; + padding: 0 !important; + opacity: 0; + height: 0; + width: 0; + pointer-events: none; +} + +.radio + label, +.checkbox + label { // label style + display: inline-block; // fallback + display: inline-flex; + align-items: baseline; + line-height: var(--checkbox-radio-line-height); + user-select: none; + cursor: pointer; +} + +.radio + label::before, +.checkbox + label::before { // custom buttons - basic style + content: ''; + display: inline-block; + vertical-align: middle; // fallback + flex-shrink: 0; + width: var(--checkbox-radio-size); + height: var(--checkbox-radio-size); + background-color: var(--color-bg); + border-width: var(--checkbox-radio-border-width); + border-color: var(--color-contrast-low); + border-style: solid; + margin-right: var(--checkbox-radio-gap); + background-repeat: no-repeat; + background-position: center; + transition: transform .2s, border .2s; +} + +.radio:not(:checked):not(:focus) + label:hover::before, +.checkbox:not(:checked):not(:focus) + label:hover::before { // :hover + border-color: var(--color-contrast-medium); +} + +@supports (grid-area: auto) { + .radio + label::before, + .checkbox + label::before { + position: relative; + top: var(--checkbox-radio-translate-y); + } +} + +.radio + label::before { + border-radius: 50%; // radio button radius +} + +.checkbox + label::before { + border-radius: var(--checkbox-radius); // checkbox button radius +} + +.radio:checked + label::before, +.checkbox:checked + label::before { + // checked state + background-color: var(--color-primary); + box-shadow: none; + border-color: var(--color-primary); + transition: transform .2s; +} + +.radio:active + label::before, +.checkbox:active + label::before { + // active state + transform: scale(0.8); + transition: transform .2s; +} + +.radio:checked:active + label::before, +.checkbox:checked:active + label::before { + transform: none; + transition: none; +} + +.radio:checked + label::before { + // radio button icon + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cg class='nc-icon-wrapper' fill='%23ffffff'%3E%3Ccircle cx='8' cy='8' r='8' fill='%23ffffff'%3E%3C/circle%3E%3C/g%3E%3C/svg%3E"); + background-size: var(--radio-marker-size); +} + +.checkbox:checked + label::before { + // checkbox button icon + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cg class='nc-icon-wrapper' stroke-width='2' fill='%23ffffff' stroke='%23ffffff'%3E%3Cpolyline fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10' points='1,9 5,13 15,3 ' data-cap='butt'%3E%3C/polyline%3E%3C/g%3E%3C/svg%3E"); + background-size: var(--checkbox-marker-size); +} + +.radio:checked:active + label::before, +.checkbox:checked:active + label::before, +.radio:focus + label::before, +.checkbox:focus + label::before { + // focus state + border-color: var(--color-primary); + box-shadow: 0 0 0 3px alpha(var(--color-primary), 0.2); +} + +// --radio--bg, --checkbox--bg +.radio--bg + label, .checkbox--bg + label { + padding: var(--space-xxxxs) var(--space-xxxs); + border-radius: var(--radius-md); + transition: background .2s; +} + +.radio--bg + label:hover, .checkbox--bg + label:hover { + background-color: var(--color-contrast-lower); +} + +.radio--bg:active + label, +.checkbox--bg:active + label, +.radio--bg:focus + label, +.checkbox--bg:focus + label { + background-color: alpha(var(--color-primary), 0.1); +} + diff --git a/src/browser/src/views/Forgot.vue b/src/browser/src/views/Forgot.vue index 0e78904..efe367c 100644 --- a/src/browser/src/views/Forgot.vue +++ b/src/browser/src/views/Forgot.vue @@ -1,18 +1,14 @@ <template> <div class="container max-width-xs padding-y-lg"> - <form @submit.prevent="submitForm()"> + <form @submit.prevent="submitForm()" class="password-reset-form"> <div class="text-component text-center margin-bottom-sm"> <h1>dough - reset password</h1> </div> <Alert v-if="isError" :title="error.title" :message="error.message" type="error" /> + <div class="margin-bottom-sm"> - <div class="flex justify-between"> - <label class="form-label margin-bottom-xxxs" for="username">Email</label> - <span class="text-sm"> - <a href="#0" v-on:click="login()">Log in?</a> - </span> - </div> + <label class="form-label margin-bottom-xxxs" for="input-email">Email</label> <input class="form-control width-100%" type="text" @@ -26,7 +22,7 @@ <div class="margin-bottom-sm"> <button - class="btn btn--primary btn--md btn--preserve-width width-100%" + class="btn btn--primary btn--md width-100%" :class="{ 'btn--state-b': isLoading, }" @@ -35,13 +31,14 @@ <LoadingIcon class="icon icon--is-spinning" /> </span> <span class="btn__content-a"> - Send resetmail + Request reset link </span> </button> </div> + <div class="text-center"> <p class="text-sm"> - Don't have an account? <a href="#0" v-on:click="signup()">Get started</a> + <a href="http://localhost:5001/login">← Back to login</a> </p> </div> </form> @@ -95,12 +92,51 @@ export default { } } - const login = () => router.replace("/login"); - const signup = () => router.replace("/signup"); - - return { ...toRefs(model), submitForm, signup, login }; + return { ...toRefs(model), submitForm }; }, }; </script> -<style lang="scss"></style> +<style lang="scss"> +.btn .btn__content-a { + display: inline-flex; +} + +.btn .btn__content-b { + display: none; +} + +.btn__content-a, +.btn__content-b { + align-items: center; +} + +.btn--state-b { + .btn__content-a { + display: none; + } + + .btn__content-b { + display: inline-block; // fallback + display: inline-flex; + } +} + +/* preserve button width when switching from state A to state B */ +.btn--preserve-width { + .btn__content-b { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + justify-content: center; + } + + &.btn--state-b .btn__content-a { + display: inline-block; // fallback + display: inline-flex; + visibility: hidden; + } +} +</style> diff --git a/src/browser/src/views/Home.vue b/src/browser/src/views/Home.vue index 0038cbc..528e0ed 100644 --- a/src/browser/src/views/Home.vue +++ b/src/browser/src/views/Home.vue @@ -2,12 +2,14 @@ <div id="home"> <h1>Hjem</h1> <p>Hei {{ username }}, din id er {{ id }}</p> + <button v-on:click="logout()">Logout</button> </div> </template> <script> -import store from "../store"; import { reactive, computed, toRefs } from "vue"; +import store from "../store"; +import account from "../api/account"; export default { setup() { @@ -16,7 +18,11 @@ export default { id: computed(() => store.state.profile.id), }); - return { ...toRefs(model) }; + function logout() { + account.signOut(); + } + + return { ...toRefs(model), logout }; }, }; </script> diff --git a/src/browser/src/views/Login.vue b/src/browser/src/views/Login.vue index a94ea9e..c021fca 100644 --- a/src/browser/src/views/Login.vue +++ b/src/browser/src/views/Login.vue @@ -1,193 +1,29 @@ <template> <div class="container max-width-xs padding-y-lg"> - <form @submit.prevent="submitForm()"> - <div class="text-component text-center margin-bottom-sm"> - <h1>dough</h1> - </div> - <Alert v-if="isError" :title="error.title" :message="error.message" type="error" /> - <div class="margin-bottom-sm"> - <label class="form-label margin-bottom-xxxs" for="username">Email</label> - <input - class="form-control width-100%" - type="text" - name="username" - id="username" - :disabled="isLoading == true" - v-model.trim="input.username" - /> - </div> - - <div class="margin-bottom-sm"> - <div class="flex justify-between margin-bottom-xxxs"> - <label class="form-label" for="password">Password</label> - <span class="text-sm"> - <a href="#0" v-on:click="forgotPassword()">Forgot?</a> - </span> - </div> - - <input - type="password" - class="form-control width-100%" - name="password" - id="password" - :disabled="isLoading == true" - v-model.trim="input.password" - autofocus - /> - </div> - - <div class="margin-bottom-sm"> - <button - class="btn btn--primary btn--md btn--preserve-width width-100%" - :class="{ - 'btn--state-b': isLoading, - }" - > - <span class="btn__content-b"> - <LoadingIcon class="icon icon--is-spinning" /> - </span> - <span class="btn__content-a"> - Login - </span> - </button> - </div> - - <div class="text-center"> - <p class="text-sm"> - Don't have an account? <a href="#0" v-on:click="signup()">Get started</a> - </p> - </div> - </form> + <div class="text-component text-center margin-bottom-sm"> + <h1>dough</h1> + </div> </div> </template> <script> -import Alert from "../components/Alert/Alert.vue"; -import constants from "../constants"; -import { VueComponent as LoadingIcon } from "../assets/icons/loading.svg"; -import { reactive, toRefs } from "vue"; import store from "../store"; import router from "../router"; import account from "../api/account"; - export default { - components: { - Alert, - LoadingIcon, - }, - setup() { - const model = reactive({ - isError: false, - isLoading: false, - error: { - title: "", - message: "", - }, - input: { - username: "", - password: "", - }, - }); - - account.signIn() - .then((user) => console.log(user)) - .catch((err) => console.error(err)); - - function submitForm() {} - /* - async function submitForm() { - model.isLoading = true; - return; - document.getElementById("username").required = true; - document.getElementById("password").required = true; - if (model.input.username && model.input.password) { - model.isLoading = true; - model.isError = false; - try { - let loginResponse = await account.loginAsync( - model.input.username, - model.input.password - ); - if (loginResponse.status === 200) { - let profileResponse = await account.getProfileAsync(); - let profileData = await profileResponse.json(); - if (profileResponse.status === 200) { - model.isLoading = false; - store.commit("setProfileData", profileData); - router.replace("/"); - } else { - displayError(profileData.title, profileData.message); - } - } else { - let errorData = await loginResponse.json(); - displayError(errorData.title, errorData.message); - } - } catch (error) { - console.error(error); - displayError(); - } - } - } -*/ - const forgotPassword = () => router.replace("/forgot"); - const signup = () => router.replace("/signup"); - - function displayError( - title = "An unknown error ocurred", - message = "Please try again soon" - ) { - model.isLoading = false; - model.error.title = title; - model.error.message = message; - model.isError = true; + mounted() { + if (!store.state.profile.profile.sub) { + account + .signIn() + .then((user) => console.log(user)) + .catch((err) => console.error(err)); + } else { + account.getUser().then((res) => { + store.commit("checkForAuthState"); + router.replace("/"); + }); } - - return { ...toRefs(model), ...{ submitForm, signup, forgotPassword } }; }, }; </script> - -<style lang="scss"> -.btn .btn__content-a { - display: inline-flex; -} - -.btn .btn__content-b { - display: none; -} - -.btn__content-a, -.btn__content-b { - align-items: center; -} - -.btn--state-b { - .btn__content-a { - display: none; - } - - .btn__content-b { - display: inline-block; // fallback - display: inline-flex; - } -} - -/* preserve button width when switching from state A to state B */ -.btn--preserve-width { - .btn__content-b { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - justify-content: center; - } - - &.btn--state-b .btn__content-a { - display: inline-block; // fallback - display: inline-flex; - visibility: hidden; - } -} -</style> diff --git a/src/browser/src/views/OidcCallback.vue b/src/browser/src/views/OidcCallback.vue index 10ccd52..1735696 100644 --- a/src/browser/src/views/OidcCallback.vue +++ b/src/browser/src/views/OidcCallback.vue @@ -1,8 +1,15 @@ <template> - <h1>callback</h1> + <p>Loading...</p> </template> <script> import account from "../api/account"; -account.signinRedirectCallback(); +import router from "../router"; +import store from "../store"; + +let url = new URL(location.href).searchParams.get("code"); +if (url) { + account.signinRedirectCallback(); + router.replace("/"); +} </script> diff --git a/src/server/AppData/example.crt b/src/server/AppData/example.crt new file mode 100644 index 0000000..a053dd8 --- /dev/null +++ b/src/server/AppData/example.crt @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFPjCCAyagAwIBAgIUFHheP3fA6C1dfBe3eCZeXzpEH3EwDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLZXhhbXBsZS5jb20wHhcNMjAwODEwMTkyODE2WhcNMzAw +ODA4MTkyODE2WjAWMRQwEgYDVQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAPDaGV3wSZmdqD0b83/jLxuzcKpH0yNP9I+uPEL0 +QeGaT5+w6dHaZStaL3W0LYrYuL894uTUF4ZJA3ATQQ1KNJayD8fGUicWXqWOItIa +s2QWqKw2yBMM7O1tckzrD51SGG97c7kxkc9alrmgKyWaw8ZqkYL5f9wftBBhjr9S +1k3H72p/ZB2zrusbNF77XbO+6EYq+HfpE6SgPm5q6bwVXE5mB2mI+M9D4zOgolcn +XL7/OKyUFQQEekGPwxd0a68YxPdP4yE0kR/c5vid44tF2ddQ5+jPoE9qOXSSsFNX +12rfeDluLtYLJgxLnIi1GEkkXUnHW3IggB+bRcVl2PnWrxlXo0N+NH0NCQCKYn3X +Vn9MQf8prFkuN5AH+BMdaBgiDfJF4vM7/eQzJlk9VWGiKvm6GIyDhq2Yty9db/VN +dTiaH9VeoQqojp9e3Z1dHJQZjByb46LI8PgYiO1bvOZKPahmHYoe2jEWGb5/HScQ +W1167yyYVL+u9qEqtBW/lHGezZNESMoZ8JlJDOsygM0avdLYqG8Rr0298vwaIh1e +dHtJdV9LLOzMrdsQvG+G6e/mKjX9odouK3on9fZeC2sPOCyXCTRredB5/SzMVe9o +ixIwst6zM5sEAlaWjJFB089zTsnmPkKAXY99RI39u494x0MXx1Vffc96uyw8H3nf +OiyFAgMBAAGjgYMwgYAwHQYDVR0OBBYEFN/b4pxF4vq4+YvgGI/XC5f6CGRSMB8G +A1UdIwQYMBaAFN/b4pxF4vq4+YvgGI/XC5f6CGRSMA8GA1UdEwEB/wQFMAMBAf8w +LQYDVR0RBCYwJIILZXhhbXBsZS5jb22CD3d3dy5leGFtcGxlLm5ldIcECgAAATAN +BgkqhkiG9w0BAQsFAAOCAgEAjfI03aa+U8MFpDlWK5pZl3ew0OMedhGUD97vG4ps +XSDCOToyck6SfEp4IfMHfyRSu0uKuW93lvIzmDs1Oku2Bys/RHGVgeMtE38jw4/6 +fogXwUohY8OrTtkasOmktInK4wfvAMKZmU21PzuKpJR0SCw3hu+krZkYtJajFVW2 +BTzv1/CDw2SzK6mFTFVBsO/GZ7LMySrWKtq2GIhcGtcJAjF7l6mx2QEEUWSVODwr +j/1VX551WVnmZVOtBRkGT2F4F01+ckuIGBqRKpcpnBA3X+qJhF99M5e0bkzv8gha +LuXJQYijndDCknej9Zq3EfPaBpVP2d4jVMNfJgavdXaFShvWpjaxKlERolKXXtju +BDJMf9g1ZUFFDiRW4t3TUSM63iraxLo6ZKrtVfAtOlS8W9CvCjvlme5+RSVKUhUa +gGwntgsDCScqp505HmjiggwqB24bcWzD9ikLkQNDtyD/lKOjJfIXiLUL1sQc/QQM +5qpUsKSUHyPj+U5JRSywHuByQsVBUr+csT+jikcBbdIuIN1Hv3JOwZixPXR+vFez +8v7VD2mv89DDDZI5rKZsjXD/3EaueZykKgqoWfyNS7nFh8pL3MWQB2hPfrXF7ltk +kWWmA/bRQTBM2XgkfpDjEWhoQZhwCOolcKAEPvrPDUe1LfH+hb60aykcvQyauIzs ++gU= +-----END CERTIFICATE----- diff --git a/src/server/AppData/example.key b/src/server/AppData/example.key new file mode 100644 index 0000000..25c44c1 --- /dev/null +++ b/src/server/AppData/example.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +yggDGIAcVIWL/vYVkIUg6cfdRuWy +-----END PRIVATE KEY----- diff --git a/src/server/AppData/example.pfx b/src/server/AppData/example.pfx Binary files differnew file mode 100644 index 0000000..3b7efee --- /dev/null +++ b/src/server/AppData/example.pfx diff --git a/src/server/AppData/example2.crt b/src/server/AppData/example2.crt new file mode 100644 index 0000000..bbfb026 --- /dev/null +++ b/src/server/AppData/example2.crt @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFPjCCAyagAwIBAgIUSL9BFJQyqc9CCmIloIA5WopEslYwDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLZXhhbXBsZS5jb20wHhcNMjAwODEwMTkzNDQyWhcNMzAw +ODA4MTkzNDQyWjAWMRQwEgYDVQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBALpJdQ9FKXgjGhkfjYRIA19xRZvL2nJGlFmWvtY7 +c5Id7BEiWDeB0VeqzVj4GDFToLNwvNdG6KBP1Yes1bOAjOKs9TJ5rsUi0WS8gZL+ +sS01qdiO5oBLDEn9Y+L+T4CKlvvJ121LipAyQ3I6/dlT5YCmq1WddvlQuFB2ZHN8 +QufafmUPU+ElTz1rgnpD7duM/icos0JW4O+fHz7mL5/5XSskkhSQ14IQsJaUuaoT +1H6efIwAFx6GKrKM5yeAHfn1EUice/NaBzbfqMSeejxEcEnWJTn4sZNqxCMJjG3P +0+WPv/dw+wIVaGHyZsmwXi2s0NGeRvaS3X5QuQNBGI7kdPiMIfUIhcb69Gkxf+TG +ozteG8tg1OT2MiYWtm98xN+xyrk9zxSJoDxSNdbhoQeBwl1jSOgwRx7OqQI40TF9 ++k4Ty9QpjK7byuDcg5JiuTU1vrigzhHUfD9yDnD2rRbfroSfPex7RE6SMISbnzeN +b85QOoYxWa2K4I7+oSoW7Z0p30V10pEJnmhqlpNh5nfzBkkQ2gmnpBgwP5esbR+d +SuPM2ZFQA5lLKNdjIkLQ0WdlTBFGRhdAPZWznnVClmIo1xwG7Erb+rIYBepOCddw +JoOrTTpVIwtC4mENxuOnj0XzUDk7Juul8aFEqmUdeYwJ2bgXj0szOHY5lI6y2GFz +hrrpAgMBAAGjgYMwgYAwHQYDVR0OBBYEFJl+Yl3oKKSk03xqXw+BklAUOSkZMB8G +A1UdIwQYMBaAFJl+Yl3oKKSk03xqXw+BklAUOSkZMA8GA1UdEwEB/wQFMAMBAf8w +LQYDVR0RBCYwJIILZXhhbXBsZS5jb22CD3d3dy5leGFtcGxlLm5ldIcECgAAATAN +BgkqhkiG9w0BAQsFAAOCAgEAUMhIsTy1C+nAzXmHi0LLMiRgM1KyZ8sQRe4pHNra +qovAX+o+4cUw0y3b25p1fkzoudQz4TFbcbMNtDke+XFfvJ+uMMCPAwL4kuZlK2nk +s6r/Z+InQ1+zCzLklROXB4ZrsTlHu5z3vkdiKlq0QNyd2Z0kc2ZS9M/Y5GH2gkvB +LhfUIYL+t7HKOoUUl1RqfnaJ7tKM6EivyOrkgxHWq76vMt2MSHuFL/sidrEJMY9r +cs4p75bnxfj0R+9EWbyfwDuo3+et6AMCFRqRSaeEhKBgjURRHQDSbI00a1HloQYN +cwrBYDm1YdcDUVNZge8ianEyhpMrNS+r4AfwzLGeuU/c8ebmRMuG8rpz8EHxsV9c +UASJB4aFGXFyd7syKm5t1+hgLxKEXsU8nzdiW6ujp52PQK5nekc40PaBABmjpbeF +StGmQPdEtvQ0suRORLfKS4BFcGTVSjRp1IvnUF7zpN6ANDEVBKtOSAKebE2aYiWr +BiwnVdIg4+MByVrUnZY/eX/n38sBbbGkE0l9Ud2ARvKiWsFq89Nl4f/GoUisoDov +nI1N62YXhosZB/ZlQRTBloCgn1Iwa1CkUh/B9iqtVsZJ8akARusxySn39/OI89e7 +xiFEChxb/2Sg+WbT6PlKWSiiwQZNUbmFBvils783A+bYAQF56MpwgpJ3WavxjHq1 +mTs= +-----END CERTIFICATE----- diff --git a/src/server/AppData/example2.key b/src/server/AppData/example2.key new file mode 100644 index 0000000..f73f364 --- /dev/null +++ b/src/server/AppData/example2.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +MLExuY0YQUH/DruS3EDmaDL1StyY +-----END PRIVATE KEY----- diff --git a/src/server/AppData/example2.pfx b/src/server/AppData/example2.pfx Binary files differnew file mode 100644 index 0000000..01d9278 --- /dev/null +++ b/src/server/AppData/example2.pfx diff --git a/src/server/Controllers/AccountController.cs b/src/server/Controllers/AccountController.cs index 5c760e2..5e57201 100644 --- a/src/server/Controllers/AccountController.cs +++ b/src/server/Controllers/AccountController.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -10,7 +7,6 @@ using Dough.Models.Database; using Dough.Models.Payloads; using Dough.Models.Results; using Dough.Services; -using Dough.Utilities; using IdentityServer4; using IdentityServer4.Services; using Microsoft.AspNetCore.Authentication; @@ -34,17 +30,16 @@ namespace Dough.Controllers _emailService = emailService; } - [HttpGet("login")] - public ActionResult GetLogin() + [HttpGet("logout")] + public async Task<ActionResult> Logout(string returnUrl) { - var pathToLoginFile = Path.Combine(Directory.GetCurrentDirectory(), "AppData", "login.html"); - var fileContent = System.IO.File.ReadAllText(pathToLoginFile); - return Content(fileContent, "text/html"); + await HttpContext.SignOutAsync(); + return Redirect("http://localhost:3000"); } [HttpPost("login")] [ValidateAntiForgeryToken] - public async Task<ActionResult> PostLogin(LoginPayload payload) + public async Task<ActionResult> Login(LoginPayload payload) { if (!_interaction.IsValidReturnUrl(payload.ReturnUrl)) return BadRequest(new ErrorResult()); @@ -53,16 +48,18 @@ namespace Dough.Controllers if (user == default) { await Task.Delay(1500); - return BadRequest(new ErrorResult("Username or password is incorrect","Please try again with a different username and/or password")); + return BadRequest(new ErrorResult("Username or password is incorrect", + "Please try again with a different username and/or password")); } if (!user.VerifyPassword(payload.Password)) { await Task.Delay(1000); - return BadRequest(new ErrorResult("Username or password is incorrect","Please try again with a different username and/or password")); + return BadRequest(new ErrorResult("Username or password is incorrect", + "Please try again with a different username and/or password")); } - + var props = new AuthenticationProperties { AllowRefresh = true, @@ -74,7 +71,7 @@ namespace Dough.Controllers props.IsPersistent = true; props.ExpiresUtc = DateTime.UtcNow.AddDays(15); } - + var identityServerUser = new IdentityServerUser(user.Id.ToString()) { DisplayName = user.Username, @@ -82,13 +79,11 @@ namespace Dough.Controllers }; await HttpContext.SignInAsync(identityServerUser, props); - return Ok(payload.ReturnUrl); } - [HttpGet("forgot")] - public async Task<ActionResult> ForgotPassword(string username) + public ActionResult ForgotPassword(string username) { var user = _context.Users.SingleByNameOrDefault(username); if (user == default) return Ok(); diff --git a/src/server/Dough.csproj b/src/server/Dough.csproj index 407dc84..9a5af5b 100644 --- a/src/server/Dough.csproj +++ b/src/server/Dough.csproj @@ -24,8 +24,9 @@ <ExcludeFromSingleFile>true</ExcludeFromSingleFile> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </Content> - </ItemGroup> - <ItemGroup> - <Folder Include="AppData" /> + <Content Update="wwwroot\login.js"> + <ExcludeFromSingleFile>true</ExcludeFromSingleFile> + <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> + </Content> </ItemGroup> </Project>
\ No newline at end of file diff --git a/src/server/IdentityServer/Config.cs b/src/server/IdentityServer/Config.cs index 5b2bf13..c005377 100644 --- a/src/server/IdentityServer/Config.cs +++ b/src/server/IdentityServer/Config.cs @@ -27,6 +27,10 @@ namespace Dough.IdentityServer RefreshTokenExpiration = TokenExpiration.Sliding, AlwaysSendClientClaims = true, AllowOfflineAccess = true, + Claims = new List<ClientClaim> + { + new ClientClaim() + }, AllowedScopes = { diff --git a/src/server/IdentityServer/ProfileService.cs b/src/server/IdentityServer/ProfileService.cs new file mode 100644 index 0000000..197086c --- /dev/null +++ b/src/server/IdentityServer/ProfileService.cs @@ -0,0 +1,30 @@ +using System.Reflection; +using System.Threading.Tasks; +using Dough.Models.Database; +using Dough.Utilities; +using IdentityServer4; +using IdentityServer4.Models; +using IdentityServer4.Services; + +namespace Dough.IdentityServer +{ + public class ProfileService : IProfileService + { + private readonly MainDbContext _context; + + public ProfileService(MainDbContext context) + { + _context = context; + } + + public Task GetProfileDataAsync(ProfileDataRequestContext context) + { + throw new System.NotImplementedException(); + } + + public Task IsActiveAsync(IsActiveContext context) + { + return default; + } + } +}
\ No newline at end of file diff --git a/src/server/Models/Constants.cs b/src/server/Models/Constants.cs index 04e8a2b..1e49323 100644 --- a/src/server/Models/Constants.cs +++ b/src/server/Models/Constants.cs @@ -1,24 +1,31 @@ using System.Collections.Generic; +using System.Security.Claims; namespace Dough.Models { public static class Constants { + public static class ClaimNames + { + public static string Id = "sub"; + } + public static readonly string[] BrowserAppUrls = { "http://localhost:8080", "http://localhost:3000", }; + public static readonly string[] BrowserAppLoginRedirectUrls = { "http://localhost:8080/oidc-callback", "http://localhost:3000/oidc-callback", }; + public static readonly string[] BrowserAppLogoutRedirectUrls = { "http://localhost:8080", "http://localhost:3000", }; - } }
\ No newline at end of file diff --git a/src/server/Models/Database/PasswordReset.cs b/src/server/Models/Database/PasswordReset.cs new file mode 100644 index 0000000..c776d25 --- /dev/null +++ b/src/server/Models/Database/PasswordReset.cs @@ -0,0 +1,10 @@ +using System; + +namespace Dough.Models.Database +{ + public class PasswordResets : BaseModel + { + public Guid UserId { get; set; } + public DateTime Expires { get; set; } + } +}
\ No newline at end of file diff --git a/src/server/Pages/Error.cshtml b/src/server/Pages/Error.cshtml index 6030139..6d78b87 100644 --- a/src/server/Pages/Error.cshtml +++ b/src/server/Pages/Error.cshtml @@ -9,11 +9,12 @@ <html> <head> - <title></title> + <title>Error - dough</title> </head> <body> <div> - + <h1>An error occured</h1> + <p>Please try again soon</p> </div> </body> </html>
\ No newline at end of file diff --git a/src/server/Pages/Login.cshtml b/src/server/Pages/Login.cshtml index d3829a2..fc6ce55 100644 --- a/src/server/Pages/Login.cshtml +++ b/src/server/Pages/Login.cshtml @@ -10,86 +10,100 @@ <head> <meta charset="UTF-8"> <title>Login - dough</title> - <style> - form { - display: flex; - flex-direction: column; - max-width: 350px; - margin: 0 auto; - } - - form label { - padding-top: 15px; - } - - button { - margin-top:15px; - } - </style> + <link rel="stylesheet" href="~/codyframe.css"> + <link rel="stylesheet" href="~/login.css"> </head> <body> -<div id="error" style="display: none"> - <h2 id="title"></h2> - <p id="message"></p> -</div> -<form onsubmit="return false"> - <label for="username">Username: </label> - <input type="text" id="username" name="username" required autofocus> - <label for="password">Password: </label> - <input type="password" id="password" name="password" required> - <label for="persist">Remeber me: <input type="checkbox" id="persist" name="persist"/></label> - @Html.AntiForgeryToken() - <button>Login</button> -</form> +<div class="container max-width-xs padding-y-lg"> + <form onsubmit="return false"> + <div class="text-component text-center margin-bottom-sm"> + <h1>dough</h1> + </div> + <div class="alert js-alert" id="alert" role="alert"> + <div class="flex items-center justify-between"> + <div class="flex items-center"> + <strong id="title">:</strong> + <p id="message"></p> + </div> + + <button class="reset alert__close-btn js-alert__close-btn"> + <svg class="icon" viewBox="0 0 24 24"> + <title>Close alert</title> + <g + stroke-linecap="square" + stroke-linejoin="miter" + stroke-width="3" + stroke="currentColor" + fill="none" + stroke-miterlimit="10"> + <line x1="19" y1="5" x2="5" y2="19"></line> + <line fill="none" x1="19" y1="19" x2="5" y2="5"></line> + </g> + </svg> + </button> + </div> + </div> + <div class="margin-bottom-sm"> + <label class="form-label margin-bottom-xxxs" for="username">Email</label> + <input + class="form-control width-100%" + type="text" + name="username" + id="username" + autofocus/> + </div> -<script> - const form = document.querySelector("form"); - const errorEL = document.querySelector("#error"); - const titleEl = document.querySelector("#title"); - const messageEl =document.querySelector("#message"); - form.addEventListener("submit", () => { - const username = document.querySelector("#username").value; - const password = document.querySelector("#password").value; - const returnUrl = new URL(location.href).searchParams.get("ReturnUrl"); - const persist = document.querySelector("#persist").checked; - let data = { - username, - password, - returnUrl, - persist - }; - errorEL.style.diplay = "none"; + <div class="margin-bottom-sm"> + <div class="flex justify-between margin-bottom-xxxs"> + <label class="form-label" for="password">Password</label> + <span class="text-sm"> + <a href="http://localhost:3000/forgot">Forgot?</a> + </span> + </div> - fetch("/account/login", { - method: "POST", - body: JSON.stringify(data), - credentials: "include", - headers: { - "Content-Type": "application/json;charset=utf-8", - "RequestVerificationToken": document.querySelector("input[name='__RequestVerificationToken']").value - } - }).then(response => { - if(response.status === 400) { - response.json().then(res => { - if(res.title && res.message) { - displayError(res.title, res.message); - } - }) - } else { - location.href = returnUrl; - } - }).catch(error => console.error(error)); - }) - - function displayError(title, message) { - const errorEL = document.querySelector("#error"); - const titleEl = document.querySelector("#title"); - const messageEl =document.querySelector("#message"); - titleEl.innerText = title; - messageEl.innerText = message; - errorEL.style.display = "inline-block"; - } -</script> + <input + type="password" + class="form-control width-100%" + name="password" + id="password"/> + </div> + <div class="margin-bottom-sm"> + <input class="checkbox" type="checkbox" id="persist"> + <label for="persist">Remeber me</label> + </div> + @Html.AntiForgeryToken() + <div class="margin-bottom-sm"> + <button + id="login-btn" + class="btn btn--primary btn--md btn--preserve-width width-100%"> + <span class="btn__content-b"> + <svg aria-hidden="true" viewBox="0 0 16 16" class="icon icon--is-spinning"> + <title>Loading</title> + <g stroke-width="1" fill="currentColor" stroke="currentColor"> + <path + d="M.5,8a7.5,7.5,0,1,1,1.91,5" + fill="none" + stroke="currentColor" + stroke-linecap="round" + stroke-linejoin="round"> + </path> + </g> + </svg> + + </span> + <span class="btn__content-a"> + Login + </span> + </button> + </div> + + <div class="text-center"> + <p class="text-sm">Don't have an account? <a href="http://localhost:3000/signup">Get started</a></p> + </div> + </form> +</div> +<script src="~/codyframe.js"></script> +<script src="~/login.js"></script> </body> </html>
\ No newline at end of file diff --git a/src/server/Services/EmailService.cs b/src/server/Services/EmailService.cs index 9d795d6..e5ef97c 100644 --- a/src/server/Services/EmailService.cs +++ b/src/server/Services/EmailService.cs @@ -1,6 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Net.Http; +using System.Net; +using System.Net.Mail; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; @@ -15,24 +14,24 @@ namespace Dough.Services _configuration = configuration; } - public async Task<bool> Send(string subject, string email) + public async Task<bool> Send(string subject, string message, string recepient) { - var password = _configuration.GetValue<string>(""); - var emailUser = _configuration.GetValue<string>(""); - var emailHost = _configuration.GetValue<string>(""); + var smtpPassword = _configuration.GetValue<string>("SMTP_PASSWORD"); + var smtpUser = _configuration.GetValue<string>("SMTP_USER"); + var smtpHost = _configuration.GetValue<string>("SMTP_HOST"); - var httpClient = new HttpClient(); - - var payload = new FormUrlEncodedContent(new[] + var smtpClient = new SmtpClient { - new KeyValuePair<string, string>("username", emailUser), - new KeyValuePair<string, string>("password", password), - }); - - var requestUri = new Uri(emailHost); - var request = await httpClient.PostAsync(requestUri, payload); - - return request.IsSuccessStatusCode; + Credentials = new NetworkCredential + { + UserName = smtpUser, + Password = smtpPassword, + Domain = smtpHost + }, + Host = smtpHost + }; + await smtpClient.SendMailAsync(smtpUser, recepient, subject, message); + return true; } } } diff --git a/src/server/Startup.cs b/src/server/Startup.cs index 891965b..7ebe86b 100644 --- a/src/server/Startup.cs +++ b/src/server/Startup.cs @@ -1,4 +1,5 @@ using System.IO;
+using System.Security.Cryptography.X509Certificates;
using Dough.IdentityServer;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
@@ -11,8 +12,6 @@ using Dough.Models.Database; using Dough.Services;
using IdentityServer4.Configuration;
using Microsoft.AspNetCore.DataProtection;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc;
namespace Dough
{
@@ -30,13 +29,19 @@ namespace Dough private string GetConnectionStringFromEnvironment()
{
var host = Configuration.GetValue<string>("DB_HOST");
- var port = Configuration.GetValue("DB_PORT", "3306");
+ var port = Configuration.GetValue<string>("DB_PORT");
var user = Configuration.GetValue<string>("DB_USER");
var password = Configuration.GetValue<string>("DB_PASSWORD");
var name = Configuration.GetValue<string>("DB_NAME");
return $"Server={host},{port};Database={name};User={user};Password={password}";
}
+ private X509Certificate2 GetSigningCredentialFromPfx(string fileName)
+ {
+ var path = Path.Combine(Directory.GetCurrentDirectory(), "AppData", fileName);
+ return new X509Certificate2(path, string.Empty);
+ }
+
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
@@ -46,8 +51,7 @@ namespace Dough builder
.WithOrigins(Constants.BrowserAppUrls)
.AllowAnyHeader()
- .AllowAnyMethod()
- .AllowCredentials();
+ .AllowAnyMethod();
});
});
@@ -72,7 +76,9 @@ namespace Dough })
.AddInMemoryIdentityResources(Config.IdentityResources)
.AddInMemoryApiScopes(Config.ApiScopes)
- .AddDeveloperSigningCredential()
+ .AddSigningCredential(GetSigningCredentialFromPfx("example.pfx"))
+ .AddValidationKey(GetSigningCredentialFromPfx("example2.pfx"))
+ .AddProfileService<ProfileService>()
.AddInMemoryClients(Config.Clients);
services.AddSingleton<EmailService>();
@@ -87,6 +93,7 @@ namespace Dough app.UseDeveloperExceptionPage();
app.UseRouting();
+ app.UseStaticFiles();
app.UseCors(DefaultCorsPolicy);
app.UseHealthChecks("/health");
app.UseStatusCodePages();
diff --git a/src/server/Utilities/Random.cs b/src/server/Utilities/Random.cs new file mode 100644 index 0000000..390a69c --- /dev/null +++ b/src/server/Utilities/Random.cs @@ -0,0 +1,59 @@ +using System; +using System.Security.Cryptography; +using System.Text; + +namespace Dough.Utilities +{ + public static class Random + { + private const string RandomStringCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + private static readonly char[] RandomPasswordCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray(); + + public static string String(int length) + { + var stringChars = new char[length]; + var random = new System.Random(); + + for (var i = 0; i < stringChars.Length; i++) + stringChars[i] = RandomStringCharacters[random.Next(RandomStringCharacters.Length)]; + + return new string(stringChars); + } + + public static string Password(int length) + { + var data = new byte[4*length]; + using (var crypto = new RNGCryptoServiceProvider()) + { + crypto.GetBytes(data); + } + var result = new StringBuilder(length); + for (var i = 0; i < length; i++) + { + var rnd = BitConverter.ToUInt32(data, i * 4); + var idx = rnd % RandomPasswordCharacters.Length; + result.Append(RandomPasswordCharacters[idx]); + } + + return result.ToString(); + } + + public static int Number(int length) + { + var random = new System.Random(); + return random.Next(0, length); + } + + public static string NumericalString(int length) + { + var stringChars = new char[length]; + var random = new System.Random(); + + for (var i = 0; i < stringChars.Length; i++) + stringChars[i] = RandomStringCharacters[random.Next(RandomStringCharacters.Length)]; + + return new string(stringChars); + } + + } +}
\ No newline at end of file diff --git a/src/server/tempkey.jwk b/src/server/tempkey.jwk deleted file mode 100644 index 43ef569..0000000 --- a/src/server/tempkey.jwk +++ /dev/null @@ -1 +0,0 @@ -{"alg":"RS256","d":"wWiBhJo4kDImxwFXqpjJNTRgkb8-f0daqMsVghuMyh9U93JI0bcEHvym4tG9yEAEd4dQXXvXG9SMkx-lQ41GKtkd6U6ZDjFa0QQuH-rGt4Q0MCwYAhFIpzeMZwoVtz0811cWg2QattvZW7zaz5SkjX-CaQ5VJFSLHtMlsPzkE5xxqRPddGK83qXkyEAa0EzmOnCqlwVRtXrP2AgvqhkUjJM-vg0wjp_Bd204C_ECvi09EAB04jor2w3a4zXMIqsJFi2LQwy-1tG6HY8msgKeL-zfkE-ilCCLtWbDnsMEmFdFWksnBnqY-T855O7EjoaI7NXnUW6MvX_EEg_Mn21ioQ","dp":"etVHep7VLlt0AMz0dihBayeYUEa3FzpiIB8AqkB94lMWeM5u1xlrRrMt5UzKmXnT80Bn3HGMPxZ22gIbpmBZceQ2rG2fhQwR86en0a5LW2eL9IltmfOILsMYSDGTcUSPYfXjJjxzjhtbVufNtm4UsjgfEUrozAp4vntkWpxBYzE","dq":"gbQ-JWMX1OMpJY8AkzVvpMAysyqO3pb33UqTv6D9Q7vhPzagwpAZDhXu9B2PW3cRUWkjyiSKy7VzlUvNo-t88-lFbKk40k0xs6OSQvS5cWr_gChdytvhZw8HFzwej8oJ2ZKQGI2_nExgxmtlD7JSSI56VnG2JK37GHQXunsCxWE","e":"AQAB","kid":"E8C61E059FD40310181EDCDF860FEFFC","kty":"RSA","n":"zds1h4_ELIOkVouKRe7FJR4IlxHajw_3BSvFv6lRWsLJvP42nT1dkAffvB4JeJHNObtEITY1kKy5mAcWDo_o82ZFkzTAzKnme3F5U9RKJdimuKYBX2fX2zbjFQobKbaG-YWsrOaFzclvw0qn-APgHJ8E-7AAE90bbeDNs7GgGDkYb8pWsdz6xVcGJ4z1gYo-68bCyg4ki60s69b69d-IYlvElvKXX0wRKFokdsfzntHVlb-oXWH58peffOZEDLHlwVgojvUcItXXKTb0_tXTh4XD-Eh3xL7S_s1vPjxK0c8wk_55nQ5ib5EP16rZtCV4ZWpLPk2DSL4prnHDdE2J_w","p":"68iIC3HGTbcL1XpdB5vDJBp6sqhIU4KFooWulIA_mt96rtzFc4wv7cDH0BeiHGBBmff0lEr8c178RP1brOQe6LF_yZDoZqkt9hWmivDJYbElLRqasjF5M5EFYNgnAuydY5G58E-c-_zkQk6GUpj0YVTX1fcq_Hhs4Sdi4ol8Lek","q":"34HGqU-SF-AboSwXD_rZgy0ReEf03GQYee5zvLhcAa1SJCHRNoBY8mxTNgqT7mFyHC4FuunY6DNChcH8Ooq4zpuwBQ1_zu4Kj2HwGsGeQDfm36K4FDRslIT-24MAMBdvfhdT-OCbXohTs2Z_sp1A6GtJl2XcLehOBGkB7dE9f6c","qi":"GxlYgDzfeRT_b99IXLOv4BbVmRe1CmuuJkoY5iP0EENscaaE5Qz5iAh_DDs72TPE7Hwdp957QRkWWr8yDC_T0-ZVpVIBGNdUtl3rB18USmSFYn4aY57cFzY5Qs9O7jKrGp8jbZNiD5BVSExhEKxNUdBbsadEWWJrLKl-YB4yShw"}
\ No newline at end of file diff --git a/src/server/wwwroot/codyframe.css b/src/server/wwwroot/codyframe.css new file mode 100644 index 0000000..ca46021 --- /dev/null +++ b/src/server/wwwroot/codyframe.css @@ -0,0 +1,8901 @@ +*, *::after, *::before { + box-sizing: inherit; +} + +* { + font: inherit; +} + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video, hr { + margin: 0; + padding: 0; + border: 0; +} + +html { + box-sizing: border-box; +} + +body { + background-color: var(--color-bg, white); +} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section, main, form legend { + display: block; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + +button, input, textarea, select { + margin: 0; +} + +.btn, .form-control, .link, .reset { + background-color: transparent; + padding: 0; + border: 0; + border-radius: 0; + color: inherit; + line-height: inherit; + appearance: none; +} + +select.form-control::-ms-expand { + display: none; +} + +textarea { + resize: vertical; + overflow: auto; + vertical-align: top; +} + +input::-ms-clear { + display: none; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +img, video, svg { + max-width: 100%; +} + +[data-theme] { + background-color: var(--color-bg, white); + color: var(--color-contrast-high, #313135); +} + +:root { + --space-unit: 1em; + --space-xxxxs: calc(0.125 * var(--space-unit)); + --space-xxxs: calc(0.25 * var(--space-unit)); + --space-xxs: calc(0.375 * var(--space-unit)); + --space-xs: calc(0.5 * var(--space-unit)); + --space-sm: calc(0.75 * var(--space-unit)); + --space-md: calc(1.25 * var(--space-unit)); + --space-lg: calc(2 * var(--space-unit)); + --space-xl: calc(3.25 * var(--space-unit)); + --space-xxl: calc(5.25 * var(--space-unit)); + --space-xxxl: calc(8.5 * var(--space-unit)); + --space-xxxxl: calc(13.75 * var(--space-unit)); + --component-padding: var(--space-md); +} + +.container { + width: calc(100% - 2*var(--component-padding)); + margin-left: auto; + margin-right: auto; +} + +.grid { + --gap: 0px; + --offset: var(--gap); + display: flex; + flex-wrap: wrap; +} +.grid > * { + flex-basis: 100%; + max-width: 100%; +} +@supports (--css: variables) { + .grid > *[class*=offset-] { + margin-left: var(--offset); + } +} + +[class*=gap-xxxxs], [class*=gap-xxxs], [class*=gap-xxs], [class*=gap-xs], [class*=gap-sm], [class*=gap-md], [class*=gap-lg], [class*=gap-xl], [class*=gap-xxl], [class*=gap-xxxl], [class*=gap-xxxxl], [class*=grid-gap-], [class*=flex-gap-] { + margin-bottom: -0.75em; + margin-left: -0.75em; +} +[class*=gap-xxxxs] > *, [class*=gap-xxxs] > *, [class*=gap-xxs] > *, [class*=gap-xs] > *, [class*=gap-sm] > *, [class*=gap-md] > *, [class*=gap-lg] > *, [class*=gap-xl] > *, [class*=gap-xxl] > *, [class*=gap-xxxl] > *, [class*=gap-xxxxl] > *, [class*=grid-gap-] > *, [class*=flex-gap-] > * { + margin-bottom: 0.75em; + margin-left: 0.75em; +} + +@supports (--css: variables) { + [class*=gap-xxxxs], [class*=gap-xxxs], [class*=gap-xxs], [class*=gap-xs], [class*=gap-sm], [class*=gap-md], [class*=gap-lg], [class*=gap-xl], [class*=gap-xxl], [class*=gap-xxxl], [class*=gap-xxxxl], [class*=grid-gap-], [class*=flex-gap-] { + --gap: 0px; + --offset: var(--gap); + margin-bottom: calc(-1 * var(--gap)); + margin-left: calc(-1 * var(--gap)); + } + [class*=gap-xxxxs] > *, [class*=gap-xxxs] > *, [class*=gap-xxs] > *, [class*=gap-xs] > *, [class*=gap-sm] > *, [class*=gap-md] > *, [class*=gap-lg] > *, [class*=gap-xl] > *, [class*=gap-xxl] > *, [class*=gap-xxxl] > *, [class*=gap-xxxxl] > *, [class*=grid-gap-] > *, [class*=flex-gap-] > * { + margin-bottom: var(--gap); + margin-left: var(--offset); + } + + .gap-xxxxs, .grid-gap-xxxxs, .flex-gap-xxxxs { + --gap: var(--space-xxxxs); + } + + .gap-xxxs, .grid-gap-xxxs, .flex-gap-xxxs { + --gap: var(--space-xxxs); + } + + .gap-xxs, .grid-gap-xxs, .flex-gap-xxs { + --gap: var(--space-xxs); + } + + .gap-xs, .grid-gap-xs, .flex-gap-xs { + --gap: var(--space-xs); + } + + .gap-sm, .grid-gap-sm, .flex-gap-sm { + --gap: var(--space-sm); + } + + .gap-md, .grid-gap-md, .flex-gap-md { + --gap: var(--space-md); + } + + .gap-lg, .grid-gap-lg, .flex-gap-lg { + --gap: var(--space-lg); + } + + .gap-xl, .grid-gap-xl, .flex-gap-xl { + --gap: var(--space-xl); + } + + .gap-xxl, .grid-gap-xxl, .flex-gap-xxl { + --gap: var(--space-xxl); + } + + .gap-xxxl, .grid-gap-xxxl, .flex-gap-xxxl { + --gap: var(--space-xxxl); + } + + .gap-xxxxl, .grid-gap-xxxxl, .flex-gap-xxxxl { + --gap: var(--space-xxxxl); + } +} +.col { + flex-grow: 1; + flex-basis: 0; + max-width: 100%; +} + +.col-1 { + flex-basis: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 8.33% - 0.01px - var(--gap, 0.75em)); +} + +.col-2 { + flex-basis: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 16.66% - 0.01px - var(--gap, 0.75em)); +} + +.col-3 { + flex-basis: calc( 25% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 25% - 0.01px - var(--gap, 0.75em)); +} + +.col-4 { + flex-basis: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 33.33% - 0.01px - var(--gap, 0.75em)); +} + +.col-5 { + flex-basis: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 41.66% - 0.01px - var(--gap, 0.75em)); +} + +.col-6 { + flex-basis: calc( 50% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 50% - 0.01px - var(--gap, 0.75em)); +} + +.col-7 { + flex-basis: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 58.33% - 0.01px - var(--gap, 0.75em)); +} + +.col-8 { + flex-basis: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 66.66% - 0.01px - var(--gap, 0.75em)); +} + +.col-9 { + flex-basis: calc( 75% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 75% - 0.01px - var(--gap, 0.75em)); +} + +.col-10 { + flex-basis: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 83.33% - 0.01px - var(--gap, 0.75em)); +} + +.col-11 { + flex-basis: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 91.66% - 0.01px - var(--gap, 0.75em)); +} + +.col-12 { + flex-basis: calc( 100% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 100% - 0.01px - var(--gap, 0.75em)); +} + +.col-content { + flex-grow: 0; + flex-basis: initial; + max-width: initial; +} + +.offset-1 { + --offset: calc(8.33% + var(--gap, 0.75em)); +} + +.offset-2 { + --offset: calc(16.66% + var(--gap, 0.75em)); +} + +.offset-3 { + --offset: calc(25% + var(--gap, 0.75em)); +} + +.offset-4 { + --offset: calc(33.33% + var(--gap, 0.75em)); +} + +.offset-5 { + --offset: calc(41.66% + var(--gap, 0.75em)); +} + +.offset-6 { + --offset: calc(50% + var(--gap, 0.75em)); +} + +.offset-7 { + --offset: calc(58.33% + var(--gap, 0.75em)); +} + +.offset-8 { + --offset: calc(66.66% + var(--gap, 0.75em)); +} + +.offset-9 { + --offset: calc(75% + var(--gap, 0.75em)); +} + +.offset-10 { + --offset: calc(83.33% + var(--gap, 0.75em)); +} + +.offset-11 { + --offset: calc(91.66% + var(--gap, 0.75em)); +} + +@media (min-width: 32rem) { + .col\@xs { + flex-grow: 1; + flex-basis: 0; + max-width: 100%; + } + + .col-1\@xs { + flex-basis: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-2\@xs { + flex-basis: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-3\@xs { + flex-basis: calc( 25% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 25% - 0.01px - var(--gap, 0.75em)); + } + + .col-4\@xs { + flex-basis: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-5\@xs { + flex-basis: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-6\@xs { + flex-basis: calc( 50% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 50% - 0.01px - var(--gap, 0.75em)); + } + + .col-7\@xs { + flex-basis: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-8\@xs { + flex-basis: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-9\@xs { + flex-basis: calc( 75% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 75% - 0.01px - var(--gap, 0.75em)); + } + + .col-10\@xs { + flex-basis: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-11\@xs { + flex-basis: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-12\@xs { + flex-basis: calc( 100% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 100% - 0.01px - var(--gap, 0.75em)); + } + + .col-content\@xs { + flex-grow: 0; + flex-basis: initial; + max-width: initial; + } + + .offset-1\@xs { + --offset: calc(8.33% + var(--gap, 0.75em)); + } + + .offset-2\@xs { + --offset: calc(16.66% + var(--gap, 0.75em)); + } + + .offset-3\@xs { + --offset: calc(25% + var(--gap, 0.75em)); + } + + .offset-4\@xs { + --offset: calc(33.33% + var(--gap, 0.75em)); + } + + .offset-5\@xs { + --offset: calc(41.66% + var(--gap, 0.75em)); + } + + .offset-6\@xs { + --offset: calc(50% + var(--gap, 0.75em)); + } + + .offset-7\@xs { + --offset: calc(58.33% + var(--gap, 0.75em)); + } + + .offset-8\@xs { + --offset: calc(66.66% + var(--gap, 0.75em)); + } + + .offset-9\@xs { + --offset: calc(75% + var(--gap, 0.75em)); + } + + .offset-10\@xs { + --offset: calc(83.33% + var(--gap, 0.75em)); + } + + .offset-11\@xs { + --offset: calc(91.66% + var(--gap, 0.75em)); + } + + @supports (--css: variables) { + .gap-xxxxs\@xs { + --gap: var(--space-xxxxs); + } + + .gap-xxxs\@xs { + --gap: var(--space-xxxs); + } + + .gap-xxs\@xs { + --gap: var(--space-xxs); + } + + .gap-xs\@xs { + --gap: var(--space-xs); + } + + .gap-sm\@xs { + --gap: var(--space-sm); + } + + .gap-md\@xs { + --gap: var(--space-md); + } + + .gap-lg\@xs { + --gap: var(--space-lg); + } + + .gap-xl\@xs { + --gap: var(--space-xl); + } + + .gap-xxl\@xs { + --gap: var(--space-xxl); + } + + .gap-xxxl\@xs { + --gap: var(--space-xxxl); + } + + .gap-xxxxl\@xs { + --gap: var(--space-xxxxl); + } + + .gap-0\@xs { + --gap: 0px; + } + } +} +@media (min-width: 48rem) { + .col\@sm { + flex-grow: 1; + flex-basis: 0; + max-width: 100%; + } + + .col-1\@sm { + flex-basis: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-2\@sm { + flex-basis: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-3\@sm { + flex-basis: calc( 25% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 25% - 0.01px - var(--gap, 0.75em)); + } + + .col-4\@sm { + flex-basis: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-5\@sm { + flex-basis: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-6\@sm { + flex-basis: calc( 50% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 50% - 0.01px - var(--gap, 0.75em)); + } + + .col-7\@sm { + flex-basis: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-8\@sm { + flex-basis: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-9\@sm { + flex-basis: calc( 75% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 75% - 0.01px - var(--gap, 0.75em)); + } + + .col-10\@sm { + flex-basis: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-11\@sm { + flex-basis: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-12\@sm { + flex-basis: calc( 100% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 100% - 0.01px - var(--gap, 0.75em)); + } + + .col-content\@sm { + flex-grow: 0; + flex-basis: initial; + max-width: initial; + } + + .offset-1\@sm { + --offset: calc(8.33% + var(--gap, 0.75em)); + } + + .offset-2\@sm { + --offset: calc(16.66% + var(--gap, 0.75em)); + } + + .offset-3\@sm { + --offset: calc(25% + var(--gap, 0.75em)); + } + + .offset-4\@sm { + --offset: calc(33.33% + var(--gap, 0.75em)); + } + + .offset-5\@sm { + --offset: calc(41.66% + var(--gap, 0.75em)); + } + + .offset-6\@sm { + --offset: calc(50% + var(--gap, 0.75em)); + } + + .offset-7\@sm { + --offset: calc(58.33% + var(--gap, 0.75em)); + } + + .offset-8\@sm { + --offset: calc(66.66% + var(--gap, 0.75em)); + } + + .offset-9\@sm { + --offset: calc(75% + var(--gap, 0.75em)); + } + + .offset-10\@sm { + --offset: calc(83.33% + var(--gap, 0.75em)); + } + + .offset-11\@sm { + --offset: calc(91.66% + var(--gap, 0.75em)); + } + + @supports (--css: variables) { + .gap-xxxxs\@sm { + --gap: var(--space-xxxxs); + } + + .gap-xxxs\@sm { + --gap: var(--space-xxxs); + } + + .gap-xxs\@sm { + --gap: var(--space-xxs); + } + + .gap-xs\@sm { + --gap: var(--space-xs); + } + + .gap-sm\@sm { + --gap: var(--space-sm); + } + + .gap-md\@sm { + --gap: var(--space-md); + } + + .gap-lg\@sm { + --gap: var(--space-lg); + } + + .gap-xl\@sm { + --gap: var(--space-xl); + } + + .gap-xxl\@sm { + --gap: var(--space-xxl); + } + + .gap-xxxl\@sm { + --gap: var(--space-xxxl); + } + + .gap-xxxxl\@sm { + --gap: var(--space-xxxxl); + } + + .gap-0\@sm { + --gap: 0px; + } + } +} +@media (min-width: 64rem) { + .col\@md { + flex-grow: 1; + flex-basis: 0; + max-width: 100%; + } + + .col-1\@md { + flex-basis: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-2\@md { + flex-basis: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-3\@md { + flex-basis: calc( 25% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 25% - 0.01px - var(--gap, 0.75em)); + } + + .col-4\@md { + flex-basis: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-5\@md { + flex-basis: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-6\@md { + flex-basis: calc( 50% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 50% - 0.01px - var(--gap, 0.75em)); + } + + .col-7\@md { + flex-basis: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-8\@md { + flex-basis: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-9\@md { + flex-basis: calc( 75% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 75% - 0.01px - var(--gap, 0.75em)); + } + + .col-10\@md { + flex-basis: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-11\@md { + flex-basis: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-12\@md { + flex-basis: calc( 100% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 100% - 0.01px - var(--gap, 0.75em)); + } + + .col-content\@md { + flex-grow: 0; + flex-basis: initial; + max-width: initial; + } + + .offset-1\@md { + --offset: calc(8.33% + var(--gap, 0.75em)); + } + + .offset-2\@md { + --offset: calc(16.66% + var(--gap, 0.75em)); + } + + .offset-3\@md { + --offset: calc(25% + var(--gap, 0.75em)); + } + + .offset-4\@md { + --offset: calc(33.33% + var(--gap, 0.75em)); + } + + .offset-5\@md { + --offset: calc(41.66% + var(--gap, 0.75em)); + } + + .offset-6\@md { + --offset: calc(50% + var(--gap, 0.75em)); + } + + .offset-7\@md { + --offset: calc(58.33% + var(--gap, 0.75em)); + } + + .offset-8\@md { + --offset: calc(66.66% + var(--gap, 0.75em)); + } + + .offset-9\@md { + --offset: calc(75% + var(--gap, 0.75em)); + } + + .offset-10\@md { + --offset: calc(83.33% + var(--gap, 0.75em)); + } + + .offset-11\@md { + --offset: calc(91.66% + var(--gap, 0.75em)); + } + + @supports (--css: variables) { + .gap-xxxxs\@md { + --gap: var(--space-xxxxs); + } + + .gap-xxxs\@md { + --gap: var(--space-xxxs); + } + + .gap-xxs\@md { + --gap: var(--space-xxs); + } + + .gap-xs\@md { + --gap: var(--space-xs); + } + + .gap-sm\@md { + --gap: var(--space-sm); + } + + .gap-md\@md { + --gap: var(--space-md); + } + + .gap-lg\@md { + --gap: var(--space-lg); + } + + .gap-xl\@md { + --gap: var(--space-xl); + } + + .gap-xxl\@md { + --gap: var(--space-xxl); + } + + .gap-xxxl\@md { + --gap: var(--space-xxxl); + } + + .gap-xxxxl\@md { + --gap: var(--space-xxxxl); + } + + .gap-0\@md { + --gap: 0px; + } + } +} +@media (min-width: 80rem) { + .col\@lg { + flex-grow: 1; + flex-basis: 0; + max-width: 100%; + } + + .col-1\@lg { + flex-basis: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-2\@lg { + flex-basis: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-3\@lg { + flex-basis: calc( 25% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 25% - 0.01px - var(--gap, 0.75em)); + } + + .col-4\@lg { + flex-basis: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-5\@lg { + flex-basis: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-6\@lg { + flex-basis: calc( 50% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 50% - 0.01px - var(--gap, 0.75em)); + } + + .col-7\@lg { + flex-basis: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-8\@lg { + flex-basis: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-9\@lg { + flex-basis: calc( 75% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 75% - 0.01px - var(--gap, 0.75em)); + } + + .col-10\@lg { + flex-basis: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-11\@lg { + flex-basis: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-12\@lg { + flex-basis: calc( 100% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 100% - 0.01px - var(--gap, 0.75em)); + } + + .col-content\@lg { + flex-grow: 0; + flex-basis: initial; + max-width: initial; + } + + .offset-1\@lg { + --offset: calc(8.33% + var(--gap, 0.75em)); + } + + .offset-2\@lg { + --offset: calc(16.66% + var(--gap, 0.75em)); + } + + .offset-3\@lg { + --offset: calc(25% + var(--gap, 0.75em)); + } + + .offset-4\@lg { + --offset: calc(33.33% + var(--gap, 0.75em)); + } + + .offset-5\@lg { + --offset: calc(41.66% + var(--gap, 0.75em)); + } + + .offset-6\@lg { + --offset: calc(50% + var(--gap, 0.75em)); + } + + .offset-7\@lg { + --offset: calc(58.33% + var(--gap, 0.75em)); + } + + .offset-8\@lg { + --offset: calc(66.66% + var(--gap, 0.75em)); + } + + .offset-9\@lg { + --offset: calc(75% + var(--gap, 0.75em)); + } + + .offset-10\@lg { + --offset: calc(83.33% + var(--gap, 0.75em)); + } + + .offset-11\@lg { + --offset: calc(91.66% + var(--gap, 0.75em)); + } + + @supports (--css: variables) { + .gap-xxxxs\@lg { + --gap: var(--space-xxxxs); + } + + .gap-xxxs\@lg { + --gap: var(--space-xxxs); + } + + .gap-xxs\@lg { + --gap: var(--space-xxs); + } + + .gap-xs\@lg { + --gap: var(--space-xs); + } + + .gap-sm\@lg { + --gap: var(--space-sm); + } + + .gap-md\@lg { + --gap: var(--space-md); + } + + .gap-lg\@lg { + --gap: var(--space-lg); + } + + .gap-xl\@lg { + --gap: var(--space-xl); + } + + .gap-xxl\@lg { + --gap: var(--space-xxl); + } + + .gap-xxxl\@lg { + --gap: var(--space-xxxl); + } + + .gap-xxxxl\@lg { + --gap: var(--space-xxxxl); + } + + .gap-0\@lg { + --gap: 0px; + } + } +} +@media (min-width: 90rem) { + .col\@xl { + flex-grow: 1; + flex-basis: 0; + max-width: 100%; + } + + .col-1\@xl { + flex-basis: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 8.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-2\@xl { + flex-basis: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 16.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-3\@xl { + flex-basis: calc( 25% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 25% - 0.01px - var(--gap, 0.75em)); + } + + .col-4\@xl { + flex-basis: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 33.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-5\@xl { + flex-basis: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 41.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-6\@xl { + flex-basis: calc( 50% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 50% - 0.01px - var(--gap, 0.75em)); + } + + .col-7\@xl { + flex-basis: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 58.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-8\@xl { + flex-basis: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 66.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-9\@xl { + flex-basis: calc( 75% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 75% - 0.01px - var(--gap, 0.75em)); + } + + .col-10\@xl { + flex-basis: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 83.33% - 0.01px - var(--gap, 0.75em)); + } + + .col-11\@xl { + flex-basis: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 91.66% - 0.01px - var(--gap, 0.75em)); + } + + .col-12\@xl { + flex-basis: calc( 100% - 0.01px - var(--gap, 0.75em)); + max-width: calc( 100% - 0.01px - var(--gap, 0.75em)); + } + + .col-content\@xl { + flex-grow: 0; + flex-basis: initial; + max-width: initial; + } + + .offset-1\@xl { + --offset: calc(8.33% + var(--gap, 0.75em)); + } + + .offset-2\@xl { + --offset: calc(16.66% + var(--gap, 0.75em)); + } + + .offset-3\@xl { + --offset: calc(25% + var(--gap, 0.75em)); + } + + .offset-4\@xl { + --offset: calc(33.33% + var(--gap, 0.75em)); + } + + .offset-5\@xl { + --offset: calc(41.66% + var(--gap, 0.75em)); + } + + .offset-6\@xl { + --offset: calc(50% + var(--gap, 0.75em)); + } + + .offset-7\@xl { + --offset: calc(58.33% + var(--gap, 0.75em)); + } + + .offset-8\@xl { + --offset: calc(66.66% + var(--gap, 0.75em)); + } + + .offset-9\@xl { + --offset: calc(75% + var(--gap, 0.75em)); + } + + .offset-10\@xl { + --offset: calc(83.33% + var(--gap, 0.75em)); + } + + .offset-11\@xl { + --offset: calc(91.66% + var(--gap, 0.75em)); + } + + @supports (--css: variables) { + .gap-xxxxs\@xl { + --gap: var(--space-xxxxs); + } + + .gap-xxxs\@xl { + --gap: var(--space-xxxs); + } + + .gap-xxs\@xl { + --gap: var(--space-xxs); + } + + .gap-xs\@xl { + --gap: var(--space-xs); + } + + .gap-sm\@xl { + --gap: var(--space-sm); + } + + .gap-md\@xl { + --gap: var(--space-md); + } + + .gap-lg\@xl { + --gap: var(--space-lg); + } + + .gap-xl\@xl { + --gap: var(--space-xl); + } + + .gap-xxl\@xl { + --gap: var(--space-xxl); + } + + .gap-xxxl\@xl { + --gap: var(--space-xxxl); + } + + .gap-xxxxl\@xl { + --gap: var(--space-xxxxl); + } + + .gap-0\@xl { + --gap: 0px; + } + } +} +:root { + --radius-sm: calc(var(--radius, 0.25em)/2); + --radius-md: var(--radius, 0.25em); + --radius-lg: calc(var(--radius, 0.25em)*2); + --shadow-xs: 0 0.1px 0.3px rgba(0, 0, 0, 0.06), + 0 1px 2px rgba(0, 0, 0, 0.12); + --shadow-sm: 0 0.3px 0.4px rgba(0, 0, 0, 0.025), + 0 0.9px 1.5px rgba(0, 0, 0, 0.05), + 0 3.5px 6px rgba(0, 0, 0, 0.1); + --shadow-md: 0 0.9px 1.5px rgba(0, 0, 0, 0.03), + 0 3.1px 5.5px rgba(0, 0, 0, 0.08), + 0 14px 25px rgba(0, 0, 0, 0.12); + --shadow-lg: 0 1.2px 1.9px -1px rgba(0, 0, 0, 0.014), + 0 3.3px 5.3px -1px rgba(0, 0, 0, 0.038), + 0 8.5px 12.7px -1px rgba(0, 0, 0, 0.085), + 0 30px 42px -1px rgba(0, 0, 0, 0.15); + --shadow-xl: 0 1.5px 2.1px -6px rgba(0, 0, 0, 0.012), + 0 3.6px 5.2px -6px rgba(0, 0, 0, 0.035), + 0 7.3px 10.6px -6px rgba(0, 0, 0, 0.07), + 0 16.2px 21.9px -6px rgba(0, 0, 0, 0.117), + 0 46px 60px -6px rgba(0, 0, 0, 0.2); + --bounce: cubic-bezier(0.175, 0.885, 0.32, 1.275); + --ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1); + --ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19); + --ease-out: cubic-bezier(0.215, 0.61, 0.355, 1); + --ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1); +} + +:root { + --heading-line-height: 1.2; + --body-line-height: 1.4; +} + +body { + font-size: var(--text-base-size, 1em); + font-family: var(--font-primary, sans-serif); + color: var(--color-contrast-high, #313135); +} + +h1, h2, h3, h4 { + color: var(--color-contrast-higher, #1c1c21); + line-height: var(--heading-line-height, 1.2); +} + +h1 { + font-size: var(--text-xxl, 2.074em); +} + +h2 { + font-size: var(--text-xl, 1.728em); +} + +h3 { + font-size: var(--text-lg, 1.44em); +} + +h4 { + font-size: var(--text-md, 1.2em); +} + +small { + font-size: var(--text-sm, 0.833em); +} + +a, .link { + color: var(--color-primary, #2a6df4); + text-decoration: underline; +} + +strong { + font-weight: bold; +} + +s { + text-decoration: line-through; +} + +u { + text-decoration: underline; +} + +.text-component h1, .text-component h2, .text-component h3, .text-component h4 { + line-height: calc(var(--heading-line-height) * var(--line-height-multiplier, 1)); + margin-bottom: calc(var(--space-unit) * 0.25 * var(--text-vspace-multiplier, 1)); +} +.text-component h2, .text-component h3, .text-component h4 { + margin-top: calc(var(--space-unit) * 0.75 * var(--text-vspace-multiplier, 1)); +} +.text-component p, .text-component blockquote, .text-component ul li, .text-component ol li { + line-height: calc(var(--body-line-height) * var(--line-height-multiplier, 1)); +} +.text-component ul, .text-component ol, .text-component p, .text-component blockquote, .text-component .text-component__block { + margin-bottom: calc(var(--space-unit) * 0.75 * var(--text-vspace-multiplier, 1)); +} +.text-component ul, .text-component ol { + list-style-position: inside; +} +.text-component ul { + list-style-type: disc; +} +.text-component ol { + list-style-type: decimal; +} +.text-component img { + display: block; + margin: 0 auto; +} +.text-component figcaption { + text-align: center; + margin-top: calc(var(--space-unit) * 0.5); +} +.text-component em { + font-style: italic; +} +.text-component hr { + margin-top: calc(var(--space-unit) * var(--text-vspace-multiplier, 1)); + margin-bottom: calc(var(--space-unit) * var(--text-vspace-multiplier, 1)); + margin-left: auto; + margin-right: auto; +} +.text-component > *:first-child { + margin-top: 0; +} +.text-component > *:last-child { + margin-bottom: 0; +} + +.text-component__block--full-width { + width: 100vw; + margin-left: calc(50% - 50vw); +} + +@media (min-width: 48rem) { + .text-component__block--left, +.text-component__block--right { + width: 45%; + } + .text-component__block--left img, +.text-component__block--right img { + width: 100%; + } + + .text-component__block--left { + float: left; + margin-right: calc(var(--space-unit) * 0.75 * var(--text-vspace-multiplier, 1)); + } + + .text-component__block--right { + float: right; + margin-left: calc(var(--space-unit) * 0.75 * var(--text-vspace-multiplier, 1)); + } +} +@media (min-width: 90rem) { + .text-component__block--outset { + width: calc(100% + 10.5 * var(--space-unit)); + } + .text-component__block--outset img { + width: 100%; + } + + .text-component__block--outset:not(.text-component__block--right) { + margin-left: calc(-5.25 * var(--space-unit)); + } + + .text-component__block--left, .text-component__block--right { + width: 50%; + } + + .text-component__block--right.text-component__block--outset { + margin-right: calc(-5.25 * var(--space-unit)); + } +} +:root { + --icon-xxxs: 8px; + --icon-xxs: 12px; + --icon-xs: 16px; + --icon-sm: 24px; + --icon-md: 32px; + --icon-lg: 48px; + --icon-xl: 64px; + --icon-xxl: 96px; + --icon-xxxl: 128px; +} + +.icon { + display: inline-block; + color: inherit; + fill: currentColor; + height: 1em; + width: 1em; + line-height: 1; + flex-shrink: 0; + max-width: initial; +} + +.icon--xxxs { + font-size: var(--icon-xxxs); +} + +.icon--xxs { + font-size: var(--icon-xxs); +} + +.icon--xs { + font-size: var(--icon-xs); +} + +.icon--sm { + font-size: var(--icon-sm); +} + +.icon--md { + font-size: var(--icon-md); +} + +.icon--lg { + font-size: var(--icon-lg); +} + +.icon--xl { + font-size: var(--icon-xl); +} + +.icon--xxl { + font-size: var(--icon-xxl); +} + +.icon--xxxl { + font-size: var(--icon-xxxl); +} + +.icon--is-spinning { + animation: icon-spin 1s infinite linear; +} + +@keyframes icon-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +.icon use { + color: inherit; + fill: currentColor; +} + +.btn { + position: relative; + display: inline-flex; + justify-content: center; + align-items: center; + white-space: nowrap; + text-decoration: none; + line-height: 1; + font-size: var(--btn-font-size, 1em); + padding-top: var(--btn-padding-y, 0.5em); + padding-bottom: var(--btn-padding-y, 0.5em); + padding-left: var(--btn-padding-x, 0.75em); + padding-right: var(--btn-padding-x, 0.75em); + border-radius: var(--btn-radius, 0.25em); +} + +.btn--sm { + font-size: var(--btn-font-size-sm, 0.8em); +} + +.btn--md { + font-size: var(--btn-font-size-md, 1.2em); +} + +.btn--lg { + font-size: var(--btn-font-size-lg, 1.4em); +} + +.btn--icon { + padding: var(--btn-padding-y, 0.5em); +} + +.form-control { + padding-top: var(--form-control-padding-y, 0.5em); + padding-bottom: var(--form-control-padding-y, 0.5em); + padding-left: var(--form-control-padding-x, 0.75em); + padding-right: var(--form-control-padding-x, 0.75em); + border-radius: var(--form-control-radius, 0.25em); +} + +.form-legend { + color: var(--color-contrast-higher, #1c1c21); + line-height: var(--heading-line-height, 1.2); + font-size: var(--text-md, 1.2em); + margin-bottom: var(--space-xxs); +} + +.form-label { + display: inline-block; +} + +.form__msg-error, .form-error-msg { + color: var(--color-error, #e02447); + font-size: var(--text-sm, 0.833em); + margin-top: var(--space-xxs); + position: absolute; + clip: rect(1px, 1px, 1px, 1px); +} + +.form__msg-error--is-visible, .form-error-msg--is-visible { + position: relative; + clip: auto; +} + +.radio-list > *, .checkbox-list > * { + position: relative; + display: flex; + align-items: baseline; +} +.radio-list label, .checkbox-list label { + line-height: var(--body-line-height); +} +.radio-list input, .checkbox-list input { + margin-right: var(--space-xxxs); + flex-shrink: 0; +} + +:root { + --zindex-header: 3; + --zindex-popover: 5; + --zindex-fixed-element: 10; + --zindex-overlay: 15; +} + +:root { + --display: block; +} + +.is-visible { + display: var(--display) !important; +} + +.is-hidden { + display: none !important; +} + +html:not(.js) .no-js\:is-hidden { + display: none !important; +} + +@media print { + .print\:is-hidden { + display: none !important; + } +} +.sr-only { + position: absolute; + clip: rect(1px, 1px, 1px, 1px); + clip-path: inset(50%); + width: 1px; + height: 1px; + overflow: hidden; + padding: 0; + border: 0; + white-space: nowrap; +} + +.flex { + display: flex; +} + +.inline-flex { + display: inline-flex; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-column { + flex-direction: column; +} + +.flex-column-reverse { + flex-direction: column-reverse; +} + +.flex-row { + flex-direction: row; +} + +.flex-row-reverse { + flex-direction: row-reverse; +} + +.flex-center { + justify-content: center; + align-items: center; +} + +.flex-grow { + flex-grow: 1; +} + +.flex-shrink-0 { + flex-shrink: 0; +} + +.flex-basis-0 { + flex-basis: 0; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.items-center { + align-items: center; +} + +.items-start { + align-items: flex-start; +} + +.items-end { + align-items: flex-end; +} + +.items-baseline { + align-items: baseline; +} + +.order-1 { + order: 1; +} + +.order-2 { + order: 2; +} + +.order-3 { + order: 3; +} + +.block { + display: block; +} + +.inline-block { + display: inline-block; +} + +.inline { + display: inline; +} + +.margin-xxxxs { + margin: var(--space-xxxxs); +} + +.margin-xxxs { + margin: var(--space-xxxs); +} + +.margin-xxs { + margin: var(--space-xxs); +} + +.margin-xs { + margin: var(--space-xs); +} + +.margin-sm { + margin: var(--space-sm); +} + +.margin-md { + margin: var(--space-md); +} + +.margin-lg { + margin: var(--space-lg); +} + +.margin-xl { + margin: var(--space-xl); +} + +.margin-xxl { + margin: var(--space-xxl); +} + +.margin-xxxl { + margin: var(--space-xxxl); +} + +.margin-xxxxl { + margin: var(--space-xxxxl); +} + +.margin-auto { + margin: auto; +} + +.margin-0 { + margin: 0; +} + +.margin-top-xxxxs { + margin-top: var(--space-xxxxs); +} + +.margin-top-xxxs { + margin-top: var(--space-xxxs); +} + +.margin-top-xxs { + margin-top: var(--space-xxs); +} + +.margin-top-xs { + margin-top: var(--space-xs); +} + +.margin-top-sm { + margin-top: var(--space-sm); +} + +.margin-top-md { + margin-top: var(--space-md); +} + +.margin-top-lg { + margin-top: var(--space-lg); +} + +.margin-top-xl { + margin-top: var(--space-xl); +} + +.margin-top-xxl { + margin-top: var(--space-xxl); +} + +.margin-top-xxxl { + margin-top: var(--space-xxxl); +} + +.margin-top-xxxxl { + margin-top: var(--space-xxxxl); +} + +.margin-top-auto { + margin-top: auto; +} + +.margin-top-0 { + margin-top: 0; +} + +.margin-bottom-xxxxs { + margin-bottom: var(--space-xxxxs); +} + +.margin-bottom-xxxs { + margin-bottom: var(--space-xxxs); +} + +.margin-bottom-xxs { + margin-bottom: var(--space-xxs); +} + +.margin-bottom-xs { + margin-bottom: var(--space-xs); +} + +.margin-bottom-sm { + margin-bottom: var(--space-sm); +} + +.margin-bottom-md { + margin-bottom: var(--space-md); +} + +.margin-bottom-lg { + margin-bottom: var(--space-lg); +} + +.margin-bottom-xl { + margin-bottom: var(--space-xl); +} + +.margin-bottom-xxl { + margin-bottom: var(--space-xxl); +} + +.margin-bottom-xxxl { + margin-bottom: var(--space-xxxl); +} + +.margin-bottom-xxxxl { + margin-bottom: var(--space-xxxxl); +} + +.margin-bottom-auto { + margin-bottom: auto; +} + +.margin-bottom-0 { + margin-bottom: 0; +} + +.margin-right-xxxxs { + margin-right: var(--space-xxxxs); +} + +.margin-right-xxxs { + margin-right: var(--space-xxxs); +} + +.margin-right-xxs { + margin-right: var(--space-xxs); +} + +.margin-right-xs { + margin-right: var(--space-xs); +} + +.margin-right-sm { + margin-right: var(--space-sm); +} + +.margin-right-md { + margin-right: var(--space-md); +} + +.margin-right-lg { + margin-right: var(--space-lg); +} + +.margin-right-xl { + margin-right: var(--space-xl); +} + +.margin-right-xxl { + margin-right: var(--space-xxl); +} + +.margin-right-xxxl { + margin-right: var(--space-xxxl); +} + +.margin-right-xxxxl { + margin-right: var(--space-xxxxl); +} + +.margin-right-auto { + margin-right: auto; +} + +.margin-right-0 { + margin-right: 0; +} + +.margin-left-xxxxs { + margin-left: var(--space-xxxxs); +} + +.margin-left-xxxs { + margin-left: var(--space-xxxs); +} + +.margin-left-xxs { + margin-left: var(--space-xxs); +} + +.margin-left-xs { + margin-left: var(--space-xs); +} + +.margin-left-sm { + margin-left: var(--space-sm); +} + +.margin-left-md { + margin-left: var(--space-md); +} + +.margin-left-lg { + margin-left: var(--space-lg); +} + +.margin-left-xl { + margin-left: var(--space-xl); +} + +.margin-left-xxl { + margin-left: var(--space-xxl); +} + +.margin-left-xxxl { + margin-left: var(--space-xxxl); +} + +.margin-left-xxxxl { + margin-left: var(--space-xxxxl); +} + +.margin-left-auto { + margin-left: auto; +} + +.margin-left-0 { + margin-left: 0; +} + +.margin-x-xxxxs { + margin-left: var(--space-xxxxs); + margin-right: var(--space-xxxxs); +} + +.margin-x-xxxs { + margin-left: var(--space-xxxs); + margin-right: var(--space-xxxs); +} + +.margin-x-xxs { + margin-left: var(--space-xxs); + margin-right: var(--space-xxs); +} + +.margin-x-xs { + margin-left: var(--space-xs); + margin-right: var(--space-xs); +} + +.margin-x-sm { + margin-left: var(--space-sm); + margin-right: var(--space-sm); +} + +.margin-x-md { + margin-left: var(--space-md); + margin-right: var(--space-md); +} + +.margin-x-lg { + margin-left: var(--space-lg); + margin-right: var(--space-lg); +} + +.margin-x-xl { + margin-left: var(--space-xl); + margin-right: var(--space-xl); +} + +.margin-x-xxl { + margin-left: var(--space-xxl); + margin-right: var(--space-xxl); +} + +.margin-x-xxxl { + margin-left: var(--space-xxxl); + margin-right: var(--space-xxxl); +} + +.margin-x-xxxxl { + margin-left: var(--space-xxxxl); + margin-right: var(--space-xxxxl); +} + +.margin-x-auto { + margin-left: auto; + margin-right: auto; +} + +.margin-x-0 { + margin-left: 0; + margin-right: 0; +} + +.margin-y-xxxxs { + margin-top: var(--space-xxxxs); + margin-bottom: var(--space-xxxxs); +} + +.margin-y-xxxs { + margin-top: var(--space-xxxs); + margin-bottom: var(--space-xxxs); +} + +.margin-y-xxs { + margin-top: var(--space-xxs); + margin-bottom: var(--space-xxs); +} + +.margin-y-xs { + margin-top: var(--space-xs); + margin-bottom: var(--space-xs); +} + +.margin-y-sm { + margin-top: var(--space-sm); + margin-bottom: var(--space-sm); +} + +.margin-y-md { + margin-top: var(--space-md); + margin-bottom: var(--space-md); +} + +.margin-y-lg { + margin-top: var(--space-lg); + margin-bottom: var(--space-lg); +} + +.margin-y-xl { + margin-top: var(--space-xl); + margin-bottom: var(--space-xl); +} + +.margin-y-xxl { + margin-top: var(--space-xxl); + margin-bottom: var(--space-xxl); +} + +.margin-y-xxxl { + margin-top: var(--space-xxxl); + margin-bottom: var(--space-xxxl); +} + +.margin-y-xxxxl { + margin-top: var(--space-xxxxl); + margin-bottom: var(--space-xxxxl); +} + +.margin-y-auto { + margin-top: auto; + margin-bottom: auto; +} + +.margin-y-0 { + margin-top: 0; + margin-bottom: 0; +} + +.padding-xxxxs { + padding: var(--space-xxxxs); +} + +.padding-xxxs { + padding: var(--space-xxxs); +} + +.padding-xxs { + padding: var(--space-xxs); +} + +.padding-xs { + padding: var(--space-xs); +} + +.padding-sm { + padding: var(--space-sm); +} + +.padding-md { + padding: var(--space-md); +} + +.padding-lg { + padding: var(--space-lg); +} + +.padding-xl { + padding: var(--space-xl); +} + +.padding-xxl { + padding: var(--space-xxl); +} + +.padding-xxxl { + padding: var(--space-xxxl); +} + +.padding-xxxxl { + padding: var(--space-xxxxl); +} + +.padding-0 { + padding: 0; +} + +.padding-component { + padding: var(--component-padding); +} + +.padding-top-xxxxs { + padding-top: var(--space-xxxxs); +} + +.padding-top-xxxs { + padding-top: var(--space-xxxs); +} + +.padding-top-xxs { + padding-top: var(--space-xxs); +} + +.padding-top-xs { + padding-top: var(--space-xs); +} + +.padding-top-sm { + padding-top: var(--space-sm); +} + +.padding-top-md { + padding-top: var(--space-md); +} + +.padding-top-lg { + padding-top: var(--space-lg); +} + +.padding-top-xl { + padding-top: var(--space-xl); +} + +.padding-top-xxl { + padding-top: var(--space-xxl); +} + +.padding-top-xxxl { + padding-top: var(--space-xxxl); +} + +.padding-top-xxxxl { + padding-top: var(--space-xxxxl); +} + +.padding-top-0 { + padding-top: 0; +} + +.padding-top-component { + padding-top: var(--component-padding); +} + +.padding-bottom-xxxxs { + padding-bottom: var(--space-xxxxs); +} + +.padding-bottom-xxxs { + padding-bottom: var(--space-xxxs); +} + +.padding-bottom-xxs { + padding-bottom: var(--space-xxs); +} + +.padding-bottom-xs { + padding-bottom: var(--space-xs); +} + +.padding-bottom-sm { + padding-bottom: var(--space-sm); +} + +.padding-bottom-md { + padding-bottom: var(--space-md); +} + +.padding-bottom-lg { + padding-bottom: var(--space-lg); +} + +.padding-bottom-xl { + padding-bottom: var(--space-xl); +} + +.padding-bottom-xxl { + padding-bottom: var(--space-xxl); +} + +.padding-bottom-xxxl { + padding-bottom: var(--space-xxxl); +} + +.padding-bottom-xxxxl { + padding-bottom: var(--space-xxxxl); +} + +.padding-bottom-0 { + padding-bottom: 0; +} + +.padding-bottom-component { + padding-bottom: var(--component-padding); +} + +.padding-right-xxxxs { + padding-right: var(--space-xxxxs); +} + +.padding-right-xxxs { + padding-right: var(--space-xxxs); +} + +.padding-right-xxs { + padding-right: var(--space-xxs); +} + +.padding-right-xs { + padding-right: var(--space-xs); +} + +.padding-right-sm { + padding-right: var(--space-sm); +} + +.padding-right-md { + padding-right: var(--space-md); +} + +.padding-right-lg { + padding-right: var(--space-lg); +} + +.padding-right-xl { + padding-right: var(--space-xl); +} + +.padding-right-xxl { + padding-right: var(--space-xxl); +} + +.padding-right-xxxl { + padding-right: var(--space-xxxl); +} + +.padding-right-xxxxl { + padding-right: var(--space-xxxxl); +} + +.padding-right-0 { + padding-right: 0; +} + +.padding-right-component { + padding-right: var(--component-padding); +} + +.padding-left-xxxxs { + padding-left: var(--space-xxxxs); +} + +.padding-left-xxxs { + padding-left: var(--space-xxxs); +} + +.padding-left-xxs { + padding-left: var(--space-xxs); +} + +.padding-left-xs { + padding-left: var(--space-xs); +} + +.padding-left-sm { + padding-left: var(--space-sm); +} + +.padding-left-md { + padding-left: var(--space-md); +} + +.padding-left-lg { + padding-left: var(--space-lg); +} + +.padding-left-xl { + padding-left: var(--space-xl); +} + +.padding-left-xxl { + padding-left: var(--space-xxl); +} + +.padding-left-xxxl { + padding-left: var(--space-xxxl); +} + +.padding-left-xxxxl { + padding-left: var(--space-xxxxl); +} + +.padding-left-0 { + padding-left: 0; +} + +.padding-left-component { + padding-left: var(--component-padding); +} + +.padding-x-xxxxs { + padding-left: var(--space-xxxxs); + padding-right: var(--space-xxxxs); +} + +.padding-x-xxxs { + padding-left: var(--space-xxxs); + padding-right: var(--space-xxxs); +} + +.padding-x-xxs { + padding-left: var(--space-xxs); + padding-right: var(--space-xxs); +} + +.padding-x-xs { + padding-left: var(--space-xs); + padding-right: var(--space-xs); +} + +.padding-x-sm { + padding-left: var(--space-sm); + padding-right: var(--space-sm); +} + +.padding-x-md { + padding-left: var(--space-md); + padding-right: var(--space-md); +} + +.padding-x-lg { + padding-left: var(--space-lg); + padding-right: var(--space-lg); +} + +.padding-x-xl { + padding-left: var(--space-xl); + padding-right: var(--space-xl); +} + +.padding-x-xxl { + padding-left: var(--space-xxl); + padding-right: var(--space-xxl); +} + +.padding-x-xxxl { + padding-left: var(--space-xxxl); + padding-right: var(--space-xxxl); +} + +.padding-x-xxxxl { + padding-left: var(--space-xxxxl); + padding-right: var(--space-xxxxl); +} + +.padding-x-0 { + padding-left: 0; + padding-right: 0; +} + +.padding-x-component { + padding-left: var(--component-padding); + padding-right: var(--component-padding); +} + +.padding-y-xxxxs { + padding-top: var(--space-xxxxs); + padding-bottom: var(--space-xxxxs); +} + +.padding-y-xxxs { + padding-top: var(--space-xxxs); + padding-bottom: var(--space-xxxs); +} + +.padding-y-xxs { + padding-top: var(--space-xxs); + padding-bottom: var(--space-xxs); +} + +.padding-y-xs { + padding-top: var(--space-xs); + padding-bottom: var(--space-xs); +} + +.padding-y-sm { + padding-top: var(--space-sm); + padding-bottom: var(--space-sm); +} + +.padding-y-md { + padding-top: var(--space-md); + padding-bottom: var(--space-md); +} + +.padding-y-lg { + padding-top: var(--space-lg); + padding-bottom: var(--space-lg); +} + +.padding-y-xl { + padding-top: var(--space-xl); + padding-bottom: var(--space-xl); +} + +.padding-y-xxl { + padding-top: var(--space-xxl); + padding-bottom: var(--space-xxl); +} + +.padding-y-xxxl { + padding-top: var(--space-xxxl); + padding-bottom: var(--space-xxxl); +} + +.padding-y-xxxxl { + padding-top: var(--space-xxxxl); + padding-bottom: var(--space-xxxxl); +} + +.padding-y-0 { + padding-top: 0; + padding-bottom: 0; +} + +.padding-y-component { + padding-top: var(--component-padding); + padding-bottom: var(--component-padding); +} + +.align-baseline { + vertical-align: baseline; +} + +.align-top { + vertical-align: top; +} + +.align-middle { + vertical-align: middle; +} + +.align-bottom { + vertical-align: bottom; +} + +.truncate, .text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-replace { + overflow: hidden; + color: transparent; + text-indent: 100%; + white-space: nowrap; +} + +.text-xs { + font-size: var(--text-xs, 0.694em); +} + +.text-sm { + font-size: var(--text-sm, 0.833em); +} + +.text-base { + font-size: 1em; +} + +.text-md { + font-size: var(--text-md, 1.2em); +} + +.text-lg { + font-size: var(--text-lg, 1.44em); +} + +.text-xl { + font-size: var(--text-xl, 1.728em); +} + +.text-xxl { + font-size: var(--text-xxl, 2.074em); +} + +.text-xxxl { + font-size: var(--text-xxxl, 2.488em); +} + +.text-xxxxl { + font-size: var(--text-xxxxl, 2.985em); +} + +.text-uppercase { + text-transform: uppercase; +} + +.text-capitalize { + text-transform: capitalize; +} + +.letter-spacing-sm { + letter-spacing: -0.05em; +} + +.letter-spacing-md { + letter-spacing: 0.05em; +} + +.letter-spacing-lg { + letter-spacing: 0.1em; +} + +.font-light { + font-weight: 300; +} + +.font-normal { + font-weight: 400; +} + +.font-medium { + font-weight: 500; +} + +.font-semibold { + font-weight: 600; +} + +.font-bold, .text-bold { + font-weight: 700; +} + +.font-italic { + font-style: italic; +} + +.font-smooth { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.font-primary { + font-family: var(--font-primary); +} + +.text-center { + text-align: center; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-justify { + text-align: justify; +} + +.text-line-through { + text-decoration: line-through; +} + +.text-underline { + text-decoration: underline; +} + +.text-decoration-none { + text-decoration: none; +} + +.v-space-xxs { + --text-vspace-multiplier: 0.25 !important; +} + +.v-space-xs { + --text-vspace-multiplier: 0.5 !important; +} + +.v-space-sm { + --text-vspace-multiplier: 0.75 !important; +} + +.v-space-md { + --text-vspace-multiplier: 1.25 !important; +} + +.v-space-lg { + --text-vspace-multiplier: 1.5 !important; +} + +.v-space-xl { + --text-vspace-multiplier: 1.75 !important; +} + +.v-space-xxl { + --text-vspace-multiplier: 2 !important; +} + +.line-height-xs { + --heading-line-height: 1; + --body-line-height: 1; +} +.line-height-xs:not(.text-component) { + line-height: 1; +} + +.line-height-sm { + --heading-line-height: 1.1; + --body-line-height: 1.2; +} +.line-height-sm:not(.text-component) { + line-height: 1.2; +} + +.line-height-md { + --heading-line-height: 1.15; + --body-line-height: 1.4; +} +.line-height-md:not(.text-component) { + line-height: 1.4; +} + +.line-height-lg { + --heading-line-height: 1.22; + --body-line-height: 1.58; +} +.line-height-lg:not(.text-component) { + line-height: 1.58; +} + +.line-height-xl { + --heading-line-height: 1.3; + --body-line-height: 1.72; +} +.line-height-xl:not(.text-component) { + line-height: 1.72; +} + +.line-height-body { + line-height: var(--body-line-height); +} + +.line-height-heading { + line-height: var(--heading-line-height); +} + +.ws-nowrap, .text-nowrap { + white-space: nowrap; +} + +.cursor-pointer { + cursor: pointer; +} + +.cursor-default { + cursor: default; +} + +.pointer-events-auto { + pointer-events: auto; +} + +.pointer-events-none { + pointer-events: none; +} + +.user-select-none { + user-select: none; +} + +.user-select-all { + user-select: all; +} + +[class*=color-] { + --color-o: 1; +} + +.color-inherit { + color: inherit; +} + +.color-bg { + color: hsla(var(--color-bg-h), var(--color-bg-s), var(--color-bg-l), var(--color-o, 1)); +} + +.color-contrast-lower { + color: hsla(var(--color-contrast-lower-h), var(--color-contrast-lower-s), var(--color-contrast-lower-l), var(--color-o, 1)); +} + +.color-contrast-low { + color: hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), var(--color-o, 1)); +} + +.color-contrast-medium { + color: hsla(var(--color-contrast-medium-h), var(--color-contrast-medium-s), var(--color-contrast-medium-l), var(--color-o, 1)); +} + +.color-contrast-high { + color: hsla(var(--color-contrast-high-h), var(--color-contrast-high-s), var(--color-contrast-high-l), var(--color-o, 1)); +} + +.color-contrast-higher { + color: hsla(var(--color-contrast-higher-h), var(--color-contrast-higher-s), var(--color-contrast-higher-l), var(--color-o, 1)); +} + +.color-primary-darker { + color: hsla(var(--color-primary-darker-h), var(--color-primary-darker-s), var(--color-primary-darker-l), var(--color-o, 1)); +} + +.color-primary-dark { + color: hsla(var(--color-primary-dark-h), var(--color-primary-dark-s), var(--color-primary-dark-l), var(--color-o, 1)); +} + +.color-primary { + color: hsla(var(--color-primary-h), var(--color-primary-s), var(--color-primary-l), var(--color-o, 1)); +} + +.color-primary-light { + color: hsla(var(--color-primary-light-h), var(--color-primary-light-s), var(--color-primary-light-l), var(--color-o, 1)); +} + +.color-primary-lighter { + color: hsla(var(--color-primary-lighter-h), var(--color-primary-lighter-s), var(--color-primary-lighter-l), var(--color-o, 1)); +} + +.color-accent-darker { + color: hsla(var(--color-accent-darker-h), var(--color-accent-darker-s), var(--color-accent-darker-l), var(--color-o, 1)); +} + +.color-accent-dark { + color: hsla(var(--color-accent-dark-h), var(--color-accent-dark-s), var(--color-accent-dark-l), var(--color-o, 1)); +} + +.color-accent { + color: hsla(var(--color-accent-h), var(--color-accent-s), var(--color-accent-l), var(--color-o, 1)); +} + +.color-accent-light { + color: hsla(var(--color-accent-light-h), var(--color-accent-light-s), var(--color-accent-light-l), var(--color-o, 1)); +} + +.color-accent-lighter { + color: hsla(var(--color-accent-lighter-h), var(--color-accent-lighter-s), var(--color-accent-lighter-l), var(--color-o, 1)); +} + +.color-success-darker { + color: hsla(var(--color-success-darker-h), var(--color-success-darker-s), var(--color-success-darker-l), var(--color-o, 1)); +} + +.color-success-dark { + color: hsla(var(--color-success-dark-h), var(--color-success-dark-s), var(--color-success-dark-l), var(--color-o, 1)); +} + +.color-success { + color: hsla(var(--color-success-h), var(--color-success-s), var(--color-success-l), var(--color-o, 1)); +} + +.color-success-light { + color: hsla(var(--color-success-light-h), var(--color-success-light-s), var(--color-success-light-l), var(--color-o, 1)); +} + +.color-success-lighter { + color: hsla(var(--color-success-lighter-h), var(--color-success-lighter-s), var(--color-success-lighter-l), var(--color-o, 1)); +} + +.color-warning-darker { + color: hsla(var(--color-warning-darker-h), var(--color-warning-darker-s), var(--color-warning-darker-l), var(--color-o, 1)); +} + +.color-warning-dark { + color: hsla(var(--color-warning-dark-h), var(--color-warning-dark-s), var(--color-warning-dark-l), var(--color-o, 1)); +} + +.color-warning { + color: hsla(var(--color-warning-h), var(--color-warning-s), var(--color-warning-l), var(--color-o, 1)); +} + +.color-warning-light { + color: hsla(var(--color-warning-light-h), var(--color-warning-light-s), var(--color-warning-light-l), var(--color-o, 1)); +} + +.color-warning-lighter { + color: hsla(var(--color-warning-lighter-h), var(--color-warning-lighter-s), var(--color-warning-lighter-l), var(--color-o, 1)); +} + +.color-error-darker { + color: hsla(var(--color-error-darker-h), var(--color-error-darker-s), var(--color-error-darker-l), var(--color-o, 1)); +} + +.color-error-dark { + color: hsla(var(--color-error-dark-h), var(--color-error-dark-s), var(--color-error-dark-l), var(--color-o, 1)); +} + +.color-error { + color: hsla(var(--color-error-h), var(--color-error-s), var(--color-error-l), var(--color-o, 1)); +} + +.color-error-light { + color: hsla(var(--color-error-light-h), var(--color-error-light-s), var(--color-error-light-l), var(--color-o, 1)); +} + +.color-error-lighter { + color: hsla(var(--color-error-lighter-h), var(--color-error-lighter-s), var(--color-error-lighter-l), var(--color-o, 1)); +} + +.color-white { + color: hsla(var(--color-white-h), var(--color-white-s), var(--color-white-l), var(--color-o, 1)); +} + +.color-black { + color: hsla(var(--color-black-h), var(--color-black-s), var(--color-black-l), var(--color-o, 1)); +} + +@supports (--css: variables) { + .color-opacity-0 { + --color-o: 0; + } + + .color-opacity-10\% { + --color-o: 0.1; + } + + .color-opacity-20\% { + --color-o: 0.2; + } + + .color-opacity-30\% { + --color-o: 0.3; + } + + .color-opacity-40\% { + --color-o: 0.4; + } + + .color-opacity-50\% { + --color-o: 0.5; + } + + .color-opacity-60\% { + --color-o: 0.6; + } + + .color-opacity-70\% { + --color-o: 0.7; + } + + .color-opacity-80\% { + --color-o: 0.8; + } + + .color-opacity-90\% { + --color-o: 0.9; + } +} +.width-xxxxs { + width: var(--size-xxxxs, 0.25rem); +} + +.width-xxxs { + width: var(--size-xxxs, 0.5rem); +} + +.width-xxs { + width: var(--size-xxs, 0.75rem); +} + +.width-xs { + width: var(--size-xs, 1rem); +} + +.width-sm { + width: var(--size-sm, 1.5rem); +} + +.width-md { + width: var(--size-md, 2rem); +} + +.width-lg { + width: var(--size-lg, 3rem); +} + +.width-xl { + width: var(--size-xl, 4rem); +} + +.width-xxl { + width: var(--size-xxl, 6rem); +} + +.width-xxxl { + width: var(--size-xxxl, 8rem); +} + +.width-xxxxl { + width: var(--size-xxxxl, 16rem); +} + +.width-0 { + width: 0; +} + +.width-10\% { + width: 10%; +} + +.width-20\% { + width: 20%; +} + +.width-25\% { + width: 25%; +} + +.width-30\% { + width: 30%; +} + +.width-33\% { + width: calc(100% / 3); +} + +.width-40\% { + width: 40%; +} + +.width-50\% { + width: 50%; +} + +.width-60\% { + width: 60%; +} + +.width-66\% { + width: calc(100% / 1.5); +} + +.width-70\% { + width: 70%; +} + +.width-75\% { + width: 75%; +} + +.width-80\% { + width: 80%; +} + +.width-90\% { + width: 90%; +} + +.width-100\% { + width: 100%; +} + +.width-100vw { + width: 100vw; +} + +.width-auto { + width: auto; +} + +.height-xxxxs { + height: var(--size-xxxxs, 0.25rem); +} + +.height-xxxs { + height: var(--size-xxxs, 0.5rem); +} + +.height-xxs { + height: var(--size-xxs, 0.75rem); +} + +.height-xs { + height: var(--size-xs, 1rem); +} + +.height-sm { + height: var(--size-sm, 1.5rem); +} + +.height-md { + height: var(--size-md, 2rem); +} + +.height-lg { + height: var(--size-lg, 3rem); +} + +.height-xl { + height: var(--size-xl, 4rem); +} + +.height-xxl { + height: var(--size-xxl, 6rem); +} + +.height-xxxl { + height: var(--size-xxxl, 8rem); +} + +.height-xxxxl { + height: var(--size-xxxxl, 16rem); +} + +.height-0 { + height: 0; +} + +.height-10\% { + height: 10%; +} + +.height-20\% { + height: 20%; +} + +.height-25\% { + height: 25%; +} + +.height-30\% { + height: 30%; +} + +.height-33\% { + height: calc(100% / 3); +} + +.height-40\% { + height: 40%; +} + +.height-50\% { + height: 50%; +} + +.height-60\% { + height: 60%; +} + +.height-66\% { + height: calc(100% / 1.5); +} + +.height-70\% { + height: 70%; +} + +.height-75\% { + height: 75%; +} + +.height-80\% { + height: 80%; +} + +.height-90\% { + height: 90%; +} + +.height-100\% { + height: 100%; +} + +.height-100vh { + height: 100vh; +} + +.height-auto { + height: auto; +} + +.min-width-0 { + min-width: 0; +} + +.min-width-25\% { + min-width: 25%; +} + +.min-width-33\% { + min-width: calc(100% / 3); +} + +.min-width-50\% { + min-width: 50%; +} + +.min-width-66\% { + min-width: calc(100% / 1.5); +} + +.min-width-75\% { + min-width: 75%; +} + +.min-width-100\% { + min-width: 100%; +} + +.min-width-100vw { + min-width: 100vw; +} + +.min-height-100\% { + min-height: 100%; +} + +.min-height-100vh { + min-height: 100vh; +} + +:root { + --max-width-xxxxs: 20rem; + --max-width-xxxs: 26rem; + --max-width-xxs: 32rem; + --max-width-xs: 38rem; + --max-width-sm: 48rem; + --max-width-md: 64rem; + --max-width-lg: 80rem; + --max-width-xl: 90rem; + --max-width-xxl: 100rem; + --max-width-xxxl: 120rem; + --max-width-xxxxl: 150rem; +} + +.max-width-xxxxs { + max-width: var(--max-width-xxxxs); +} + +.max-width-xxxs { + max-width: var(--max-width-xxxs); +} + +.max-width-xxs { + max-width: var(--max-width-xxs); +} + +.max-width-xs { + max-width: var(--max-width-xs); +} + +.max-width-sm { + max-width: var(--max-width-sm); +} + +.max-width-md { + max-width: var(--max-width-md); +} + +.max-width-lg { + max-width: var(--max-width-lg); +} + +.max-width-xl { + max-width: var(--max-width-xl); +} + +.max-width-xxl { + max-width: var(--max-width-xxl); +} + +.max-width-xxxl { + max-width: var(--max-width-xxxl); +} + +.max-width-xxxxl { + max-width: var(--max-width-xxxxl); +} + +.max-width-100\% { + max-width: 100%; +} + +[class*=max-width-adaptive] { + max-width: 32rem; +} + +@media (min-width: 48rem) { + .max-width-adaptive-sm, .max-width-adaptive-md, .max-width-adaptive-lg, .max-width-adaptive-xl, .max-width-adaptive { + max-width: 48rem; + } +} +@media (min-width: 64rem) { + .max-width-adaptive-md, .max-width-adaptive-lg, .max-width-adaptive-xl, .max-width-adaptive { + max-width: 64rem; + } +} +@media (min-width: 80rem) { + .max-width-adaptive-lg, .max-width-adaptive-xl, .max-width-adaptive { + max-width: 80rem; + } +} +@media (min-width: 90rem) { + .max-width-adaptive-xl { + max-width: 90rem; + } +} +.max-height-100\% { + max-height: 100%; +} + +.max-height-100vh { + max-height: 100vh; +} + +.position-relative { + position: relative; +} + +.position-absolute { + position: absolute; +} + +.position-fixed { + position: fixed; +} + +.position-sticky { + position: sticky; +} + +.top-0 { + top: 0; +} + +.bottom-0 { + bottom: 0; +} + +.left-0 { + left: 0; +} + +.right-0 { + right: 0; +} + +.z-index-header { + z-index: var(--zindex-header); +} + +.z-index-popover { + z-index: var(--zindex-popover); +} + +.z-index-fixed-element { + z-index: var(--zindex-fixed-element); +} + +.z-index-overlay { + z-index: var(--zindex-overlay); +} + +.zindex-1, .z-index-1 { + z-index: 1; +} + +.zindex-2, .z-index-2 { + z-index: 2; +} + +.zindex-3, .z-index-3 { + z-index: 3; +} + +.overflow-hidden { + overflow: hidden; +} + +.overflow-auto { + overflow: auto; +} + +.momentum-scrolling { + -webkit-overflow-scrolling: touch; +} + +.overscroll-contain { + overscroll-behavior: contain; +} + +.opacity-0 { + opacity: 0; +} + +.opacity-10\% { + opacity: 0.1; +} + +.opacity-20\% { + opacity: 0.2; +} + +.opacity-30\% { + opacity: 0.3; +} + +.opacity-40\% { + opacity: 0.4; +} + +.opacity-50\% { + opacity: 0.5; +} + +.opacity-60\% { + opacity: 0.6; +} + +.opacity-70\% { + opacity: 0.7; +} + +.opacity-80\% { + opacity: 0.8; +} + +.opacity-90\% { + opacity: 0.9; +} + +.media-wrapper { + position: relative; + height: 0; + padding-bottom: 56.25%; +} +.media-wrapper > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; +} + +.media-wrapper--4\:3 { + padding-bottom: calc((3 / 4) * 100%); +} + +.media-wrapper--1\:1 { + padding-bottom: calc((1 / 1) * 100%); +} + +.float-left { + float: left; +} + +.float-right { + float: right; +} + +.clearfix::after { + content: ""; + display: table; + clear: both; +} + +[class*=border-] { + --border-o: 1; +} + +.border { + border: 1px solid hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), var(--border-o, 1)); +} + +.border-top { + border-top: 1px solid hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), var(--border-o, 1)); +} + +.border-bottom { + border-bottom: 1px solid hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), var(--border-o, 1)); +} + +.border-left { + border-left: 1px solid hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), var(--border-o, 1)); +} + +.border-right { + border-right: 1px solid hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), var(--border-o, 1)); +} + +.border-2 { + border-width: 2px; +} + +.border-3 { + border-width: 3px; +} + +.border-4 { + border-width: 4px; +} + +.border-bg { + border-color: hsla(var(--color-bg-h), var(--color-bg-s), var(--color-bg-l), var(--border-o, 1)); +} + +.border-contrast-lower { + border-color: hsla(var(--color-contrast-lower-h), var(--color-contrast-lower-s), var(--color-contrast-lower-l), var(--border-o, 1)); +} + +.border-contrast-low { + border-color: hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), var(--border-o, 1)); +} + +.border-contrast-medium { + border-color: hsla(var(--color-contrast-medium-h), var(--color-contrast-medium-s), var(--color-contrast-medium-l), var(--border-o, 1)); +} + +.border-contrast-high { + border-color: hsla(var(--color-contrast-high-h), var(--color-contrast-high-s), var(--color-contrast-high-l), var(--border-o, 1)); +} + +.border-contrast-higher { + border-color: hsla(var(--color-contrast-higher-h), var(--color-contrast-higher-s), var(--color-contrast-higher-l), var(--border-o, 1)); +} + +.border-primary-darker { + border-color: hsla(var(--color-primary-darker-h), var(--color-primary-darker-s), var(--color-primary-darker-l), var(--border-o, 1)); +} + +.border-primary-dark { + border-color: hsla(var(--color-primary-dark-h), var(--color-primary-dark-s), var(--color-primary-dark-l), var(--border-o, 1)); +} + +.border-primary { + border-color: hsla(var(--color-primary-h), var(--color-primary-s), var(--color-primary-l), var(--border-o, 1)); +} + +.border-primary-light { + border-color: hsla(var(--color-primary-light-h), var(--color-primary-light-s), var(--color-primary-light-l), var(--border-o, 1)); +} + +.border-primary-lighter { + border-color: hsla(var(--color-primary-lighter-h), var(--color-primary-lighter-s), var(--color-primary-lighter-l), var(--border-o, 1)); +} + +.border-accent-darker { + border-color: hsla(var(--color-accent-darker-h), var(--color-accent-darker-s), var(--color-accent-darker-l), var(--border-o, 1)); +} + +.border-accent-dark { + border-color: hsla(var(--color-accent-dark-h), var(--color-accent-dark-s), var(--color-accent-dark-l), var(--border-o, 1)); +} + +.border-accent { + border-color: hsla(var(--color-accent-h), var(--color-accent-s), var(--color-accent-l), var(--border-o, 1)); +} + +.border-accent-light { + border-color: hsla(var(--color-accent-light-h), var(--color-accent-light-s), var(--color-accent-light-l), var(--border-o, 1)); +} + +.border-accent-lighter { + border-color: hsla(var(--color-accent-lighter-h), var(--color-accent-lighter-s), var(--color-accent-lighter-l), var(--border-o, 1)); +} + +.border-success-darker { + border-color: hsla(var(--color-success-darker-h), var(--color-success-darker-s), var(--color-success-darker-l), var(--border-o, 1)); +} + +.border-success-dark { + border-color: hsla(var(--color-success-dark-h), var(--color-success-dark-s), var(--color-success-dark-l), var(--border-o, 1)); +} + +.border-success { + border-color: hsla(var(--color-success-h), var(--color-success-s), var(--color-success-l), var(--border-o, 1)); +} + +.border-success-light { + border-color: hsla(var(--color-success-light-h), var(--color-success-light-s), var(--color-success-light-l), var(--border-o, 1)); +} + +.border-success-lighter { + border-color: hsla(var(--color-success-lighter-h), var(--color-success-lighter-s), var(--color-success-lighter-l), var(--border-o, 1)); +} + +.border-warning-darker { + border-color: hsla(var(--color-warning-darker-h), var(--color-warning-darker-s), var(--color-warning-darker-l), var(--border-o, 1)); +} + +.border-warning-dark { + border-color: hsla(var(--color-warning-dark-h), var(--color-warning-dark-s), var(--color-warning-dark-l), var(--border-o, 1)); +} + +.border-warning { + border-color: hsla(var(--color-warning-h), var(--color-warning-s), var(--color-warning-l), var(--border-o, 1)); +} + +.border-warning-light { + border-color: hsla(var(--color-warning-light-h), var(--color-warning-light-s), var(--color-warning-light-l), var(--border-o, 1)); +} + +.border-warning-lighter { + border-color: hsla(var(--color-warning-lighter-h), var(--color-warning-lighter-s), var(--color-warning-lighter-l), var(--border-o, 1)); +} + +.border-error-darker { + border-color: hsla(var(--color-error-darker-h), var(--color-error-darker-s), var(--color-error-darker-l), var(--border-o, 1)); +} + +.border-error-dark { + border-color: hsla(var(--color-error-dark-h), var(--color-error-dark-s), var(--color-error-dark-l), var(--border-o, 1)); +} + +.border-error { + border-color: hsla(var(--color-error-h), var(--color-error-s), var(--color-error-l), var(--border-o, 1)); +} + +.border-error-light { + border-color: hsla(var(--color-error-light-h), var(--color-error-light-s), var(--color-error-light-l), var(--border-o, 1)); +} + +.border-error-lighter { + border-color: hsla(var(--color-error-lighter-h), var(--color-error-lighter-s), var(--color-error-lighter-l), var(--border-o, 1)); +} + +.border-white { + border-color: hsla(var(--color-white-h), var(--color-white-s), var(--color-white-l), var(--border-o, 1)); +} + +.border-black { + border-color: hsla(var(--color-black-h), var(--color-black-s), var(--color-black-l), var(--border-o, 1)); +} + +@supports (--css: variables) { + .border-opacity-0 { + --border-o: 0; + } + + .border-opacity-10\% { + --border-o: 0.1; + } + + .border-opacity-20\% { + --border-o: 0.2; + } + + .border-opacity-30\% { + --border-o: 0.3; + } + + .border-opacity-40\% { + --border-o: 0.4; + } + + .border-opacity-50\% { + --border-o: 0.5; + } + + .border-opacity-60\% { + --border-o: 0.6; + } + + .border-opacity-70\% { + --border-o: 0.7; + } + + .border-opacity-80\% { + --border-o: 0.8; + } + + .border-opacity-90\% { + --border-o: 0.9; + } +} +.radius-sm { + border-radius: var(--radius-sm); +} + +.radius-md { + border-radius: var(--radius-md); +} + +.radius-lg { + border-radius: var(--radius-lg); +} + +.radius-50\% { + border-radius: 50%; +} + +.radius-full { + border-radius: 50em; +} + +.shadow-xs { + box-shadow: var(--shadow-xs); +} + +.shadow-sm { + box-shadow: var(--shadow-sm); +} + +.shadow-md { + box-shadow: var(--shadow-md); +} + +.shadow-lg { + box-shadow: var(--shadow-lg); +} + +.shadow-xl { + box-shadow: var(--shadow-xl); +} + +.bg, [class*=bg-] { + --bg-o: 1; +} + +.bg-transparent { + background-color: transparent; +} + +.bg-inherit { + background-color: inherit; +} + +.bg { + background-color: hsla(var(--color-bg-h), var(--color-bg-s), var(--color-bg-l), var(--bg-o)); +} + +.bg-contrast-lower { + background-color: hsla(var(--color-contrast-lower-h), var(--color-contrast-lower-s), var(--color-contrast-lower-l), var(--bg-o, 1)); +} + +.bg-contrast-low { + background-color: hsla(var(--color-contrast-low-h), var(--color-contrast-low-s), var(--color-contrast-low-l), var(--bg-o, 1)); +} + +.bg-contrast-medium { + background-color: hsla(var(--color-contrast-medium-h), var(--color-contrast-medium-s), var(--color-contrast-medium-l), var(--bg-o, 1)); +} + +.bg-contrast-high { + background-color: hsla(var(--color-contrast-high-h), var(--color-contrast-high-s), var(--color-contrast-high-l), var(--bg-o, 1)); +} + +.bg-contrast-higher { + background-color: hsla(var(--color-contrast-higher-h), var(--color-contrast-higher-s), var(--color-contrast-higher-l), var(--bg-o, 1)); +} + +.bg-primary-darker { + background-color: hsla(var(--color-primary-darker-h), var(--color-primary-darker-s), var(--color-primary-darker-l), var(--bg-o, 1)); +} + +.bg-primary-dark { + background-color: hsla(var(--color-primary-dark-h), var(--color-primary-dark-s), var(--color-primary-dark-l), var(--bg-o, 1)); +} + +.bg-primary { + background-color: hsla(var(--color-primary-h), var(--color-primary-s), var(--color-primary-l), var(--bg-o, 1)); +} + +.bg-primary-light { + background-color: hsla(var(--color-primary-light-h), var(--color-primary-light-s), var(--color-primary-light-l), var(--bg-o, 1)); +} + +.bg-primary-lighter { + background-color: hsla(var(--color-primary-lighter-h), var(--color-primary-lighter-s), var(--color-primary-lighter-l), var(--bg-o, 1)); +} + +.bg-accent-darker { + background-color: hsla(var(--color-accent-darker-h), var(--color-accent-darker-s), var(--color-accent-darker-l), var(--bg-o, 1)); +} + +.bg-accent-dark { + background-color: hsla(var(--color-accent-dark-h), var(--color-accent-dark-s), var(--color-accent-dark-l), var(--bg-o, 1)); +} + +.bg-accent { + background-color: hsla(var(--color-accent-h), var(--color-accent-s), var(--color-accent-l), var(--bg-o, 1)); +} + +.bg-accent-light { + background-color: hsla(var(--color-accent-light-h), var(--color-accent-light-s), var(--color-accent-light-l), var(--bg-o, 1)); +} + +.bg-accent-lighter { + background-color: hsla(var(--color-accent-lighter-h), var(--color-accent-lighter-s), var(--color-accent-lighter-l), var(--bg-o, 1)); +} + +.bg-success-darker { + background-color: hsla(var(--color-success-darker-h), var(--color-success-darker-s), var(--color-success-darker-l), var(--bg-o, 1)); +} + +.bg-success-dark { + background-color: hsla(var(--color-success-dark-h), var(--color-success-dark-s), var(--color-success-dark-l), var(--bg-o, 1)); +} + +.bg-success { + background-color: hsla(var(--color-success-h), var(--color-success-s), var(--color-success-l), var(--bg-o, 1)); +} + +.bg-success-light { + background-color: hsla(var(--color-success-light-h), var(--color-success-light-s), var(--color-success-light-l), var(--bg-o, 1)); +} + +.bg-success-lighter { + background-color: hsla(var(--color-success-lighter-h), var(--color-success-lighter-s), var(--color-success-lighter-l), var(--bg-o, 1)); +} + +.bg-warning-darker { + background-color: hsla(var(--color-warning-darker-h), var(--color-warning-darker-s), var(--color-warning-darker-l), var(--bg-o, 1)); +} + +.bg-warning-dark { + background-color: hsla(var(--color-warning-dark-h), var(--color-warning-dark-s), var(--color-warning-dark-l), var(--bg-o, 1)); +} + +.bg-warning { + background-color: hsla(var(--color-warning-h), var(--color-warning-s), var(--color-warning-l), var(--bg-o, 1)); +} + +.bg-warning-light { + background-color: hsla(var(--color-warning-light-h), var(--color-warning-light-s), var(--color-warning-light-l), var(--bg-o, 1)); +} + +.bg-warning-lighter { + background-color: hsla(var(--color-warning-lighter-h), var(--color-warning-lighter-s), var(--color-warning-lighter-l), var(--bg-o, 1)); +} + +.bg-error-darker { + background-color: hsla(var(--color-error-darker-h), var(--color-error-darker-s), var(--color-error-darker-l), var(--bg-o, 1)); +} + +.bg-error-dark { + background-color: hsla(var(--color-error-dark-h), var(--color-error-dark-s), var(--color-error-dark-l), var(--bg-o, 1)); +} + +.bg-error { + background-color: hsla(var(--color-error-h), var(--color-error-s), var(--color-error-l), var(--bg-o, 1)); +} + +.bg-error-light { + background-color: hsla(var(--color-error-light-h), var(--color-error-light-s), var(--color-error-light-l), var(--bg-o, 1)); +} + +.bg-error-lighter { + background-color: hsla(var(--color-error-lighter-h), var(--color-error-lighter-s), var(--color-error-lighter-l), var(--bg-o, 1)); +} + +.bg-white { + background-color: hsla(var(--color-white-h), var(--color-white-s), var(--color-white-l), var(--bg-o, 1)); +} + +.bg-black { + background-color: hsla(var(--color-black-h), var(--color-black-s), var(--color-black-l), var(--bg-o, 1)); +} + +@supports (--css: variables) { + .bg-opacity-0 { + --bg-o: 0; + } + + .bg-opacity-10\% { + --bg-o: 0.1; + } + + .bg-opacity-20\% { + --bg-o: 0.2; + } + + .bg-opacity-30\% { + --bg-o: 0.3; + } + + .bg-opacity-40\% { + --bg-o: 0.4; + } + + .bg-opacity-50\% { + --bg-o: 0.5; + } + + .bg-opacity-60\% { + --bg-o: 0.6; + } + + .bg-opacity-70\% { + --bg-o: 0.7; + } + + .bg-opacity-80\% { + --bg-o: 0.8; + } + + .bg-opacity-90\% { + --bg-o: 0.9; + } +} +.bg-cover { + background-size: cover; +} + +.bg-center { + background-position: center; +} + +.bg-no-repeat { + background-repeat: no-repeat; +} + +.backdrop-blur-10 { + backdrop-filter: blur(10px); +} + +.backdrop-blur-20 { + backdrop-filter: blur(20px); +} + +.isolate { + isolation: isolate; +} + +.blend-multiply { + mix-blend-mode: multiply; +} + +.blend-overlay { + mix-blend-mode: overlay; +} + +.object-contain { + object-fit: contain; +} + +.object-cover { + object-fit: cover; +} + +.flip { + transform: scale(-1); +} + +.flip-x { + transform: scaleX(-1); +} + +.flip-y { + transform: scaleY(-1); +} + +@media (min-width: 32rem) { + .flex\@xs { + display: flex; + } + + .inline-flex\@xs { + display: inline-flex; + } + + .flex-wrap\@xs { + flex-wrap: wrap; + } + + .flex-column\@xs { + flex-direction: column; + } + + .flex-column-reverse\@xs { + flex-direction: column-reverse; + } + + .flex-row\@xs { + flex-direction: row; + } + + .flex-row-reverse\@xs { + flex-direction: row-reverse; + } + + .flex-center\@xs { + justify-content: center; + align-items: center; + } + + .flex-grow-0\@xs { + flex-grow: 0; + } + + .flex-grow\@xs { + flex-grow: 1; + } + + .flex-shrink-0\@xs { + flex-shrink: 0; + } + + .flex-shrink\@xs { + flex-shrink: 1; + } + + .justify-start\@xs { + justify-content: flex-start; + } + + .justify-end\@xs { + justify-content: flex-end; + } + + .justify-center\@xs { + justify-content: center; + } + + .justify-between\@xs { + justify-content: space-between; + } + + .items-center\@xs { + align-items: center; + } + + .items-start\@xs { + align-items: flex-start; + } + + .items-end\@xs { + align-items: flex-end; + } + + .items-baseline\@xs { + align-items: baseline; + } + + .order-1\@xs { + order: 1; + } + + .order-2\@xs { + order: 2; + } + + .order-3\@xs { + order: 3; + } + + .block\@xs { + display: block; + } + + .inline-block\@xs { + display: inline-block; + } + + .inline\@xs { + display: inline; + } + + @supports (--css: variables) { + .margin-xxxxs\@xs { + margin: var(--space-xxxxs); + } + + .margin-xxxs\@xs { + margin: var(--space-xxxs); + } + + .margin-xxs\@xs { + margin: var(--space-xxs); + } + + .margin-xs\@xs { + margin: var(--space-xs); + } + + .margin-sm\@xs { + margin: var(--space-sm); + } + + .margin-md\@xs { + margin: var(--space-md); + } + + .margin-lg\@xs { + margin: var(--space-lg); + } + + .margin-xl\@xs { + margin: var(--space-xl); + } + + .margin-xxl\@xs { + margin: var(--space-xxl); + } + + .margin-xxxl\@xs { + margin: var(--space-xxxl); + } + + .margin-xxxxl\@xs { + margin: var(--space-xxxxl); + } + + .margin-auto\@xs { + margin: auto; + } + + .margin-0\@xs { + margin: 0; + } + + .margin-top-xxxxs\@xs { + margin-top: var(--space-xxxxs); + } + + .margin-top-xxxs\@xs { + margin-top: var(--space-xxxs); + } + + .margin-top-xxs\@xs { + margin-top: var(--space-xxs); + } + + .margin-top-xs\@xs { + margin-top: var(--space-xs); + } + + .margin-top-sm\@xs { + margin-top: var(--space-sm); + } + + .margin-top-md\@xs { + margin-top: var(--space-md); + } + + .margin-top-lg\@xs { + margin-top: var(--space-lg); + } + + .margin-top-xl\@xs { + margin-top: var(--space-xl); + } + + .margin-top-xxl\@xs { + margin-top: var(--space-xxl); + } + + .margin-top-xxxl\@xs { + margin-top: var(--space-xxxl); + } + + .margin-top-xxxxl\@xs { + margin-top: var(--space-xxxxl); + } + + .margin-top-auto\@xs { + margin-top: auto; + } + + .margin-top-0\@xs { + margin-top: 0; + } + + .margin-bottom-xxxxs\@xs { + margin-bottom: var(--space-xxxxs); + } + + .margin-bottom-xxxs\@xs { + margin-bottom: var(--space-xxxs); + } + + .margin-bottom-xxs\@xs { + margin-bottom: var(--space-xxs); + } + + .margin-bottom-xs\@xs { + margin-bottom: var(--space-xs); + } + + .margin-bottom-sm\@xs { + margin-bottom: var(--space-sm); + } + + .margin-bottom-md\@xs { + margin-bottom: var(--space-md); + } + + .margin-bottom-lg\@xs { + margin-bottom: var(--space-lg); + } + + .margin-bottom-xl\@xs { + margin-bottom: var(--space-xl); + } + + .margin-bottom-xxl\@xs { + margin-bottom: var(--space-xxl); + } + + .margin-bottom-xxxl\@xs { + margin-bottom: var(--space-xxxl); + } + + .margin-bottom-xxxxl\@xs { + margin-bottom: var(--space-xxxxl); + } + + .margin-bottom-auto\@xs { + margin-bottom: auto; + } + + .margin-bottom-0\@xs { + margin-bottom: 0; + } + + .margin-right-xxxxs\@xs { + margin-right: var(--space-xxxxs); + } + + .margin-right-xxxs\@xs { + margin-right: var(--space-xxxs); + } + + .margin-right-xxs\@xs { + margin-right: var(--space-xxs); + } + + .margin-right-xs\@xs { + margin-right: var(--space-xs); + } + + .margin-right-sm\@xs { + margin-right: var(--space-sm); + } + + .margin-right-md\@xs { + margin-right: var(--space-md); + } + + .margin-right-lg\@xs { + margin-right: var(--space-lg); + } + + .margin-right-xl\@xs { + margin-right: var(--space-xl); + } + + .margin-right-xxl\@xs { + margin-right: var(--space-xxl); + } + + .margin-right-xxxl\@xs { + margin-right: var(--space-xxxl); + } + + .margin-right-xxxxl\@xs { + margin-right: var(--space-xxxxl); + } + + .margin-right-auto\@xs { + margin-right: auto; + } + + .margin-right-0\@xs { + margin-right: 0; + } + + .margin-left-xxxxs\@xs { + margin-left: var(--space-xxxxs); + } + + .margin-left-xxxs\@xs { + margin-left: var(--space-xxxs); + } + + .margin-left-xxs\@xs { + margin-left: var(--space-xxs); + } + + .margin-left-xs\@xs { + margin-left: var(--space-xs); + } + + .margin-left-sm\@xs { + margin-left: var(--space-sm); + } + + .margin-left-md\@xs { + margin-left: var(--space-md); + } + + .margin-left-lg\@xs { + margin-left: var(--space-lg); + } + + .margin-left-xl\@xs { + margin-left: var(--space-xl); + } + + .margin-left-xxl\@xs { + margin-left: var(--space-xxl); + } + + .margin-left-xxxl\@xs { + margin-left: var(--space-xxxl); + } + + .margin-left-xxxxl\@xs { + margin-left: var(--space-xxxxl); + } + + .margin-left-auto\@xs { + margin-left: auto; + } + + .margin-left-0\@xs { + margin-left: 0; + } + + .margin-x-xxxxs\@xs { + margin-left: var(--space-xxxxs); + margin-right: var(--space-xxxxs); + } + + .margin-x-xxxs\@xs { + margin-left: var(--space-xxxs); + margin-right: var(--space-xxxs); + } + + .margin-x-xxs\@xs { + margin-left: var(--space-xxs); + margin-right: var(--space-xxs); + } + + .margin-x-xs\@xs { + margin-left: var(--space-xs); + margin-right: var(--space-xs); + } + + .margin-x-sm\@xs { + margin-left: var(--space-sm); + margin-right: var(--space-sm); + } + + .margin-x-md\@xs { + margin-left: var(--space-md); + margin-right: var(--space-md); + } + + .margin-x-lg\@xs { + margin-left: var(--space-lg); + margin-right: var(--space-lg); + } + + .margin-x-xl\@xs { + margin-left: var(--space-xl); + margin-right: var(--space-xl); + } + + .margin-x-xxl\@xs { + margin-left: var(--space-xxl); + margin-right: var(--space-xxl); + } + + .margin-x-xxxl\@xs { + margin-left: var(--space-xxxl); + margin-right: var(--space-xxxl); + } + + .margin-x-xxxxl\@xs { + margin-left: var(--space-xxxxl); + margin-right: var(--space-xxxxl); + } + + .margin-x-auto\@xs { + margin-left: auto; + margin-right: auto; + } + + .margin-x-0\@xs { + margin-left: 0; + margin-right: 0; + } + + .margin-y-xxxxs\@xs { + margin-top: var(--space-xxxxs); + margin-bottom: var(--space-xxxxs); + } + + .margin-y-xxxs\@xs { + margin-top: var(--space-xxxs); + margin-bottom: var(--space-xxxs); + } + + .margin-y-xxs\@xs { + margin-top: var(--space-xxs); + margin-bottom: var(--space-xxs); + } + + .margin-y-xs\@xs { + margin-top: var(--space-xs); + margin-bottom: var(--space-xs); + } + + .margin-y-sm\@xs { + margin-top: var(--space-sm); + margin-bottom: var(--space-sm); + } + + .margin-y-md\@xs { + margin-top: var(--space-md); + margin-bottom: var(--space-md); + } + + .margin-y-lg\@xs { + margin-top: var(--space-lg); + margin-bottom: var(--space-lg); + } + + .margin-y-xl\@xs { + margin-top: var(--space-xl); + margin-bottom: var(--space-xl); + } + + .margin-y-xxl\@xs { + margin-top: var(--space-xxl); + margin-bottom: var(--space-xxl); + } + + .margin-y-xxxl\@xs { + margin-top: var(--space-xxxl); + margin-bottom: var(--space-xxxl); + } + + .margin-y-xxxxl\@xs { + margin-top: var(--space-xxxxl); + margin-bottom: var(--space-xxxxl); + } + + .margin-y-auto\@xs { + margin-top: auto; + margin-bottom: auto; + } + + .margin-y-0\@xs { + margin-top: 0; + margin-bottom: 0; + } + } + @supports (--css: variables) { + .padding-xxxxs\@xs { + padding: var(--space-xxxxs); + } + + .padding-xxxs\@xs { + padding: var(--space-xxxs); + } + + .padding-xxs\@xs { + padding: var(--space-xxs); + } + + .padding-xs\@xs { + padding: var(--space-xs); + } + + .padding-sm\@xs { + padding: var(--space-sm); + } + + .padding-md\@xs { + padding: var(--space-md); + } + + .padding-lg\@xs { + padding: var(--space-lg); + } + + .padding-xl\@xs { + padding: var(--space-xl); + } + + .padding-xxl\@xs { + padding: var(--space-xxl); + } + + .padding-xxxl\@xs { + padding: var(--space-xxxl); + } + + .padding-xxxxl\@xs { + padding: var(--space-xxxxl); + } + + .padding-0\@xs { + padding: 0; + } + + .padding-component\@xs { + padding: var(--component-padding); + } + + .padding-top-xxxxs\@xs { + padding-top: var(--space-xxxxs); + } + + .padding-top-xxxs\@xs { + padding-top: var(--space-xxxs); + } + + .padding-top-xxs\@xs { + padding-top: var(--space-xxs); + } + + .padding-top-xs\@xs { + padding-top: var(--space-xs); + } + + .padding-top-sm\@xs { + padding-top: var(--space-sm); + } + + .padding-top-md\@xs { + padding-top: var(--space-md); + } + + .padding-top-lg\@xs { + padding-top: var(--space-lg); + } + + .padding-top-xl\@xs { + padding-top: var(--space-xl); + } + + .padding-top-xxl\@xs { + padding-top: var(--space-xxl); + } + + .padding-top-xxxl\@xs { + padding-top: var(--space-xxxl); + } + + .padding-top-xxxxl\@xs { + padding-top: var(--space-xxxxl); + } + + .padding-top-0\@xs { + padding-top: 0; + } + + .padding-top-component\@xs { + padding-top: var(--component-padding); + } + + .padding-bottom-xxxxs\@xs { + padding-bottom: var(--space-xxxxs); + } + + .padding-bottom-xxxs\@xs { + padding-bottom: var(--space-xxxs); + } + + .padding-bottom-xxs\@xs { + padding-bottom: var(--space-xxs); + } + + .padding-bottom-xs\@xs { + padding-bottom: var(--space-xs); + } + + .padding-bottom-sm\@xs { + padding-bottom: var(--space-sm); + } + + .padding-bottom-md\@xs { + padding-bottom: var(--space-md); + } + + .padding-bottom-lg\@xs { + padding-bottom: var(--space-lg); + } + + .padding-bottom-xl\@xs { + padding-bottom: var(--space-xl); + } + + .padding-bottom-xxl\@xs { + padding-bottom: var(--space-xxl); + } + + .padding-bottom-xxxl\@xs { + padding-bottom: var(--space-xxxl); + } + + .padding-bottom-xxxxl\@xs { + padding-bottom: var(--space-xxxxl); + } + + .padding-bottom-0\@xs { + padding-bottom: 0; + } + + .padding-bottom-component\@xs { + padding-bottom: var(--component-padding); + } + + .padding-right-xxxxs\@xs { + padding-right: var(--space-xxxxs); + } + + .padding-right-xxxs\@xs { + padding-right: var(--space-xxxs); + } + + .padding-right-xxs\@xs { + padding-right: var(--space-xxs); + } + + .padding-right-xs\@xs { + padding-right: var(--space-xs); + } + + .padding-right-sm\@xs { + padding-right: var(--space-sm); + } + + .padding-right-md\@xs { + padding-right: var(--space-md); + } + + .padding-right-lg\@xs { + padding-right: var(--space-lg); + } + + .padding-right-xl\@xs { + padding-right: var(--space-xl); + } + + .padding-right-xxl\@xs { + padding-right: var(--space-xxl); + } + + .padding-right-xxxl\@xs { + padding-right: var(--space-xxxl); + } + + .padding-right-xxxxl\@xs { + padding-right: var(--space-xxxxl); + } + + .padding-right-0\@xs { + padding-right: 0; + } + + .padding-right-component\@xs { + padding-right: var(--component-padding); + } + + .padding-left-xxxxs\@xs { + padding-left: var(--space-xxxxs); + } + + .padding-left-xxxs\@xs { + padding-left: var(--space-xxxs); + } + + .padding-left-xxs\@xs { + padding-left: var(--space-xxs); + } + + .padding-left-xs\@xs { + padding-left: var(--space-xs); + } + + .padding-left-sm\@xs { + padding-left: var(--space-sm); + } + + .padding-left-md\@xs { + padding-left: var(--space-md); + } + + .padding-left-lg\@xs { + padding-left: var(--space-lg); + } + + .padding-left-xl\@xs { + padding-left: var(--space-xl); + } + + .padding-left-xxl\@xs { + padding-left: var(--space-xxl); + } + + .padding-left-xxxl\@xs { + padding-left: var(--space-xxxl); + } + + .padding-left-xxxxl\@xs { + padding-left: var(--space-xxxxl); + } + + .padding-left-0\@xs { + padding-left: 0; + } + + .padding-left-component\@xs { + padding-left: var(--component-padding); + } + + .padding-x-xxxxs\@xs { + padding-left: var(--space-xxxxs); + padding-right: var(--space-xxxxs); + } + + .padding-x-xxxs\@xs { + padding-left: var(--space-xxxs); + padding-right: var(--space-xxxs); + } + + .padding-x-xxs\@xs { + padding-left: var(--space-xxs); + padding-right: var(--space-xxs); + } + + .padding-x-xs\@xs { + padding-left: var(--space-xs); + padding-right: var(--space-xs); + } + + .padding-x-sm\@xs { + padding-left: var(--space-sm); + padding-right: var(--space-sm); + } + + .padding-x-md\@xs { + padding-left: var(--space-md); + padding-right: var(--space-md); + } + + .padding-x-lg\@xs { + padding-left: var(--space-lg); + padding-right: var(--space-lg); + } + + .padding-x-xl\@xs { + padding-left: var(--space-xl); + padding-right: var(--space-xl); + } + + .padding-x-xxl\@xs { + padding-left: var(--space-xxl); + padding-right: var(--space-xxl); + } + + .padding-x-xxxl\@xs { + padding-left: var(--space-xxxl); + padding-right: var(--space-xxxl); + } + + .padding-x-xxxxl\@xs { + padding-left: var(--space-xxxxl); + padding-right: var(--space-xxxxl); + } + + .padding-x-0\@xs { + padding-left: 0; + padding-right: 0; + } + + .padding-x-component\@xs { + padding-left: var(--component-padding); + padding-right: var(--component-padding); + } + + .padding-y-xxxxs\@xs { + padding-top: var(--space-xxxxs); + padding-bottom: var(--space-xxxxs); + } + + .padding-y-xxxs\@xs { + padding-top: var(--space-xxxs); + padding-bottom: var(--space-xxxs); + } + + .padding-y-xxs\@xs { + padding-top: var(--space-xxs); + padding-bottom: var(--space-xxs); + } + + .padding-y-xs\@xs { + padding-top: var(--space-xs); + padding-bottom: var(--space-xs); + } + + .padding-y-sm\@xs { + padding-top: var(--space-sm); + padding-bottom: var(--space-sm); + } + + .padding-y-md\@xs { + padding-top: var(--space-md); + padding-bottom: var(--space-md); + } + + .padding-y-lg\@xs { + padding-top: var(--space-lg); + padding-bottom: var(--space-lg); + } + + .padding-y-xl\@xs { + padding-top: var(--space-xl); + padding-bottom: var(--space-xl); + } + + .padding-y-xxl\@xs { + padding-top: var(--space-xxl); + padding-bottom: var(--space-xxl); + } + + .padding-y-xxxl\@xs { + padding-top: var(--space-xxxl); + padding-bottom: var(--space-xxxl); + } + + .padding-y-xxxxl\@xs { + padding-top: var(--space-xxxxl); + padding-bottom: var(--space-xxxxl); + } + + .padding-y-0\@xs { + padding-top: 0; + padding-bottom: 0; + } + + .padding-y-component\@xs { + padding-top: var(--component-padding); + padding-bottom: var(--component-padding); + } + } + .text-center\@xs { + text-align: center; + } + + .text-left\@xs { + text-align: left; + } + + .text-right\@xs { + text-align: right; + } + + .text-justify\@xs { + text-align: justify; + } + + @supports (--css: variables) { + .text-xs\@xs { + font-size: var(--text-xs, 0.694em); + } + + .text-sm\@xs { + font-size: var(--text-sm, 0.833em); + } + + .text-base\@xs { + font-size: 1em; + } + + .text-md\@xs { + font-size: var(--text-md, 1.2em); + } + + .text-lg\@xs { + font-size: var(--text-lg, 1.44em); + } + + .text-xl\@xs { + font-size: var(--text-xl, 1.728em); + } + + .text-xxl\@xs { + font-size: var(--text-xxl, 2.074em); + } + + .text-xxxl\@xs { + font-size: var(--text-xxxl, 2.488em); + } + + .text-xxxxl\@xs { + font-size: var(--text-xxxxl, 2.985em); + } + } + .hide\@xs { + display: none !important; + } +} +@media not all and (min-width: 32rem) { + .has-margin\@xs { + margin: 0 !important; + } + + .has-padding\@xs { + padding: 0 !important; + } + + .display\@xs { + display: none !important; + } +} +@media (min-width: 48rem) { + .flex\@sm { + display: flex; + } + + .inline-flex\@sm { + display: inline-flex; + } + + .flex-wrap\@sm { + flex-wrap: wrap; + } + + .flex-column\@sm { + flex-direction: column; + } + + .flex-column-reverse\@sm { + flex-direction: column-reverse; + } + + .flex-row\@sm { + flex-direction: row; + } + + .flex-row-reverse\@sm { + flex-direction: row-reverse; + } + + .flex-center\@sm { + justify-content: center; + align-items: center; + } + + .flex-grow-0\@sm { + flex-grow: 0; + } + + .flex-grow\@sm { + flex-grow: 1; + } + + .flex-shrink-0\@sm { + flex-shrink: 0; + } + + .flex-shrink\@sm { + flex-shrink: 1; + } + + .justify-start\@sm { + justify-content: flex-start; + } + + .justify-end\@sm { + justify-content: flex-end; + } + + .justify-center\@sm { + justify-content: center; + } + + .justify-between\@sm { + justify-content: space-between; + } + + .items-center\@sm { + align-items: center; + } + + .items-start\@sm { + align-items: flex-start; + } + + .items-end\@sm { + align-items: flex-end; + } + + .items-baseline\@sm { + align-items: baseline; + } + + .order-1\@sm { + order: 1; + } + + .order-2\@sm { + order: 2; + } + + .order-3\@sm { + order: 3; + } + + .block\@sm { + display: block; + } + + .inline-block\@sm { + display: inline-block; + } + + .inline\@sm { + display: inline; + } + + @supports (--css: variables) { + .margin-xxxxs\@sm { + margin: var(--space-xxxxs); + } + + .margin-xxxs\@sm { + margin: var(--space-xxxs); + } + + .margin-xxs\@sm { + margin: var(--space-xxs); + } + + .margin-xs\@sm { + margin: var(--space-xs); + } + + .margin-sm\@sm { + margin: var(--space-sm); + } + + .margin-md\@sm { + margin: var(--space-md); + } + + .margin-lg\@sm { + margin: var(--space-lg); + } + + .margin-xl\@sm { + margin: var(--space-xl); + } + + .margin-xxl\@sm { + margin: var(--space-xxl); + } + + .margin-xxxl\@sm { + margin: var(--space-xxxl); + } + + .margin-xxxxl\@sm { + margin: var(--space-xxxxl); + } + + .margin-auto\@sm { + margin: auto; + } + + .margin-0\@sm { + margin: 0; + } + + .margin-top-xxxxs\@sm { + margin-top: var(--space-xxxxs); + } + + .margin-top-xxxs\@sm { + margin-top: var(--space-xxxs); + } + + .margin-top-xxs\@sm { + margin-top: var(--space-xxs); + } + + .margin-top-xs\@sm { + margin-top: var(--space-xs); + } + + .margin-top-sm\@sm { + margin-top: var(--space-sm); + } + + .margin-top-md\@sm { + margin-top: var(--space-md); + } + + .margin-top-lg\@sm { + margin-top: var(--space-lg); + } + + .margin-top-xl\@sm { + margin-top: var(--space-xl); + } + + .margin-top-xxl\@sm { + margin-top: var(--space-xxl); + } + + .margin-top-xxxl\@sm { + margin-top: var(--space-xxxl); + } + + .margin-top-xxxxl\@sm { + margin-top: var(--space-xxxxl); + } + + .margin-top-auto\@sm { + margin-top: auto; + } + + .margin-top-0\@sm { + margin-top: 0; + } + + .margin-bottom-xxxxs\@sm { + margin-bottom: var(--space-xxxxs); + } + + .margin-bottom-xxxs\@sm { + margin-bottom: var(--space-xxxs); + } + + .margin-bottom-xxs\@sm { + margin-bottom: var(--space-xxs); + } + + .margin-bottom-xs\@sm { + margin-bottom: var(--space-xs); + } + + .margin-bottom-sm\@sm { + margin-bottom: var(--space-sm); + } + + .margin-bottom-md\@sm { + margin-bottom: var(--space-md); + } + + .margin-bottom-lg\@sm { + margin-bottom: var(--space-lg); + } + + .margin-bottom-xl\@sm { + margin-bottom: var(--space-xl); + } + + .margin-bottom-xxl\@sm { + margin-bottom: var(--space-xxl); + } + + .margin-bottom-xxxl\@sm { + margin-bottom: var(--space-xxxl); + } + + .margin-bottom-xxxxl\@sm { + margin-bottom: var(--space-xxxxl); + } + + .margin-bottom-auto\@sm { + margin-bottom: auto; + } + + .margin-bottom-0\@sm { + margin-bottom: 0; + } + + .margin-right-xxxxs\@sm { + margin-right: var(--space-xxxxs); + } + + .margin-right-xxxs\@sm { + margin-right: var(--space-xxxs); + } + + .margin-right-xxs\@sm { + margin-right: var(--space-xxs); + } + + .margin-right-xs\@sm { + margin-right: var(--space-xs); + } + + .margin-right-sm\@sm { + margin-right: var(--space-sm); + } + + .margin-right-md\@sm { + margin-right: var(--space-md); + } + + .margin-right-lg\@sm { + margin-right: var(--space-lg); + } + + .margin-right-xl\@sm { + margin-right: var(--space-xl); + } + + .margin-right-xxl\@sm { + margin-right: var(--space-xxl); + } + + .margin-right-xxxl\@sm { + margin-right: var(--space-xxxl); + } + + .margin-right-xxxxl\@sm { + margin-right: var(--space-xxxxl); + } + + .margin-right-auto\@sm { + margin-right: auto; + } + + .margin-right-0\@sm { + margin-right: 0; + } + + .margin-left-xxxxs\@sm { + margin-left: var(--space-xxxxs); + } + + .margin-left-xxxs\@sm { + margin-left: var(--space-xxxs); + } + + .margin-left-xxs\@sm { + margin-left: var(--space-xxs); + } + + .margin-left-xs\@sm { + margin-left: var(--space-xs); + } + + .margin-left-sm\@sm { + margin-left: var(--space-sm); + } + + .margin-left-md\@sm { + margin-left: var(--space-md); + } + + .margin-left-lg\@sm { + margin-left: var(--space-lg); + } + + .margin-left-xl\@sm { + margin-left: var(--space-xl); + } + + .margin-left-xxl\@sm { + margin-left: var(--space-xxl); + } + + .margin-left-xxxl\@sm { + margin-left: var(--space-xxxl); + } + + .margin-left-xxxxl\@sm { + margin-left: var(--space-xxxxl); + } + + .margin-left-auto\@sm { + margin-left: auto; + } + + .margin-left-0\@sm { + margin-left: 0; + } + + .margin-x-xxxxs\@sm { + margin-left: var(--space-xxxxs); + margin-right: var(--space-xxxxs); + } + + .margin-x-xxxs\@sm { + margin-left: var(--space-xxxs); + margin-right: var(--space-xxxs); + } + + .margin-x-xxs\@sm { + margin-left: var(--space-xxs); + margin-right: var(--space-xxs); + } + + .margin-x-xs\@sm { + margin-left: var(--space-xs); + margin-right: var(--space-xs); + } + + .margin-x-sm\@sm { + margin-left: var(--space-sm); + margin-right: var(--space-sm); + } + + .margin-x-md\@sm { + margin-left: var(--space-md); + margin-right: var(--space-md); + } + + .margin-x-lg\@sm { + margin-left: var(--space-lg); + margin-right: var(--space-lg); + } + + .margin-x-xl\@sm { + margin-left: var(--space-xl); + margin-right: var(--space-xl); + } + + .margin-x-xxl\@sm { + margin-left: var(--space-xxl); + margin-right: var(--space-xxl); + } + + .margin-x-xxxl\@sm { + margin-left: var(--space-xxxl); + margin-right: var(--space-xxxl); + } + + .margin-x-xxxxl\@sm { + margin-left: var(--space-xxxxl); + margin-right: var(--space-xxxxl); + } + + .margin-x-auto\@sm { + margin-left: auto; + margin-right: auto; + } + + .margin-x-0\@sm { + margin-left: 0; + margin-right: 0; + } + + .margin-y-xxxxs\@sm { + margin-top: var(--space-xxxxs); + margin-bottom: var(--space-xxxxs); + } + + .margin-y-xxxs\@sm { + margin-top: var(--space-xxxs); + margin-bottom: var(--space-xxxs); + } + + .margin-y-xxs\@sm { + margin-top: var(--space-xxs); + margin-bottom: var(--space-xxs); + } + + .margin-y-xs\@sm { + margin-top: var(--space-xs); + margin-bottom: var(--space-xs); + } + + .margin-y-sm\@sm { + margin-top: var(--space-sm); + margin-bottom: var(--space-sm); + } + + .margin-y-md\@sm { + margin-top: var(--space-md); + margin-bottom: var(--space-md); + } + + .margin-y-lg\@sm { + margin-top: var(--space-lg); + margin-bottom: var(--space-lg); + } + + .margin-y-xl\@sm { + margin-top: var(--space-xl); + margin-bottom: var(--space-xl); + } + + .margin-y-xxl\@sm { + margin-top: var(--space-xxl); + margin-bottom: var(--space-xxl); + } + + .margin-y-xxxl\@sm { + margin-top: var(--space-xxxl); + margin-bottom: var(--space-xxxl); + } + + .margin-y-xxxxl\@sm { + margin-top: var(--space-xxxxl); + margin-bottom: var(--space-xxxxl); + } + + .margin-y-auto\@sm { + margin-top: auto; + margin-bottom: auto; + } + + .margin-y-0\@sm { + margin-top: 0; + margin-bottom: 0; + } + } + @supports (--css: variables) { + .padding-xxxxs\@sm { + padding: var(--space-xxxxs); + } + + .padding-xxxs\@sm { + padding: var(--space-xxxs); + } + + .padding-xxs\@sm { + padding: var(--space-xxs); + } + + .padding-xs\@sm { + padding: var(--space-xs); + } + + .padding-sm\@sm { + padding: var(--space-sm); + } + + .padding-md\@sm { + padding: var(--space-md); + } + + .padding-lg\@sm { + padding: var(--space-lg); + } + + .padding-xl\@sm { + padding: var(--space-xl); + } + + .padding-xxl\@sm { + padding: var(--space-xxl); + } + + .padding-xxxl\@sm { + padding: var(--space-xxxl); + } + + .padding-xxxxl\@sm { + padding: var(--space-xxxxl); + } + + .padding-0\@sm { + padding: 0; + } + + .padding-component\@sm { + padding: var(--component-padding); + } + + .padding-top-xxxxs\@sm { + padding-top: var(--space-xxxxs); + } + + .padding-top-xxxs\@sm { + padding-top: var(--space-xxxs); + } + + .padding-top-xxs\@sm { + padding-top: var(--space-xxs); + } + + .padding-top-xs\@sm { + padding-top: var(--space-xs); + } + + .padding-top-sm\@sm { + padding-top: var(--space-sm); + } + + .padding-top-md\@sm { + padding-top: var(--space-md); + } + + .padding-top-lg\@sm { + padding-top: var(--space-lg); + } + + .padding-top-xl\@sm { + padding-top: var(--space-xl); + } + + .padding-top-xxl\@sm { + padding-top: var(--space-xxl); + } + + .padding-top-xxxl\@sm { + padding-top: var(--space-xxxl); + } + + .padding-top-xxxxl\@sm { + padding-top: var(--space-xxxxl); + } + + .padding-top-0\@sm { + padding-top: 0; + } + + .padding-top-component\@sm { + padding-top: var(--component-padding); + } + + .padding-bottom-xxxxs\@sm { + padding-bottom: var(--space-xxxxs); + } + + .padding-bottom-xxxs\@sm { + padding-bottom: var(--space-xxxs); + } + + .padding-bottom-xxs\@sm { + padding-bottom: var(--space-xxs); + } + + .padding-bottom-xs\@sm { + padding-bottom: var(--space-xs); + } + + .padding-bottom-sm\@sm { + padding-bottom: var(--space-sm); + } + + .padding-bottom-md\@sm { + padding-bottom: var(--space-md); + } + + .padding-bottom-lg\@sm { + padding-bottom: var(--space-lg); + } + + .padding-bottom-xl\@sm { + padding-bottom: var(--space-xl); + } + + .padding-bottom-xxl\@sm { + padding-bottom: var(--space-xxl); + } + + .padding-bottom-xxxl\@sm { + padding-bottom: var(--space-xxxl); + } + + .padding-bottom-xxxxl\@sm { + padding-bottom: var(--space-xxxxl); + } + + .padding-bottom-0\@sm { + padding-bottom: 0; + } + + .padding-bottom-component\@sm { + padding-bottom: var(--component-padding); + } + + .padding-right-xxxxs\@sm { + padding-right: var(--space-xxxxs); + } + + .padding-right-xxxs\@sm { + padding-right: var(--space-xxxs); + } + + .padding-right-xxs\@sm { + padding-right: var(--space-xxs); + } + + .padding-right-xs\@sm { + padding-right: var(--space-xs); + } + + .padding-right-sm\@sm { + padding-right: var(--space-sm); + } + + .padding-right-md\@sm { + padding-right: var(--space-md); + } + + .padding-right-lg\@sm { + padding-right: var(--space-lg); + } + + .padding-right-xl\@sm { + padding-right: var(--space-xl); + } + + .padding-right-xxl\@sm { + padding-right: var(--space-xxl); + } + + .padding-right-xxxl\@sm { + padding-right: var(--space-xxxl); + } + + .padding-right-xxxxl\@sm { + padding-right: var(--space-xxxxl); + } + + .padding-right-0\@sm { + padding-right: 0; + } + + .padding-right-component\@sm { + padding-right: var(--component-padding); + } + + .padding-left-xxxxs\@sm { + padding-left: var(--space-xxxxs); + } + + .padding-left-xxxs\@sm { + padding-left: var(--space-xxxs); + } + + .padding-left-xxs\@sm { + padding-left: var(--space-xxs); + } + + .padding-left-xs\@sm { + padding-left: var(--space-xs); + } + + .padding-left-sm\@sm { + padding-left: var(--space-sm); + } + + .padding-left-md\@sm { + padding-left: var(--space-md); + } + + .padding-left-lg\@sm { + padding-left: var(--space-lg); + } + + .padding-left-xl\@sm { + padding-left: var(--space-xl); + } + + .padding-left-xxl\@sm { + padding-left: var(--space-xxl); + } + + .padding-left-xxxl\@sm { + padding-left: var(--space-xxxl); + } + + .padding-left-xxxxl\@sm { + padding-left: var(--space-xxxxl); + } + + .padding-left-0\@sm { + padding-left: 0; + } + + .padding-left-component\@sm { + padding-left: var(--component-padding); + } + + .padding-x-xxxxs\@sm { + padding-left: var(--space-xxxxs); + padding-right: var(--space-xxxxs); + } + + .padding-x-xxxs\@sm { + padding-left: var(--space-xxxs); + padding-right: var(--space-xxxs); + } + + .padding-x-xxs\@sm { + padding-left: var(--space-xxs); + padding-right: var(--space-xxs); + } + + .padding-x-xs\@sm { + padding-left: var(--space-xs); + padding-right: var(--space-xs); + } + + .padding-x-sm\@sm { + padding-left: var(--space-sm); + padding-right: var(--space-sm); + } + + .padding-x-md\@sm { + padding-left: var(--space-md); + padding-right: var(--space-md); + } + + .padding-x-lg\@sm { + padding-left: var(--space-lg); + padding-right: var(--space-lg); + } + + .padding-x-xl\@sm { + padding-left: var(--space-xl); + padding-right: var(--space-xl); + } + + .padding-x-xxl\@sm { + padding-left: var(--space-xxl); + padding-right: var(--space-xxl); + } + + .padding-x-xxxl\@sm { + padding-left: var(--space-xxxl); + padding-right: var(--space-xxxl); + } + + .padding-x-xxxxl\@sm { + padding-left: var(--space-xxxxl); + padding-right: var(--space-xxxxl); + } + + .padding-x-0\@sm { + padding-left: 0; + padding-right: 0; + } + + .padding-x-component\@sm { + padding-left: var(--component-padding); + padding-right: var(--component-padding); + } + + .padding-y-xxxxs\@sm { + padding-top: var(--space-xxxxs); + padding-bottom: var(--space-xxxxs); + } + + .padding-y-xxxs\@sm { + padding-top: var(--space-xxxs); + padding-bottom: var(--space-xxxs); + } + + .padding-y-xxs\@sm { + padding-top: var(--space-xxs); + padding-bottom: var(--space-xxs); + } + + .padding-y-xs\@sm { + padding-top: var(--space-xs); + padding-bottom: var(--space-xs); + } + + .padding-y-sm\@sm { + padding-top: var(--space-sm); + padding-bottom: var(--space-sm); + } + + .padding-y-md\@sm { + padding-top: var(--space-md); + padding-bottom: var(--space-md); + } + + .padding-y-lg\@sm { + padding-top: var(--space-lg); + padding-bottom: var(--space-lg); + } + + .padding-y-xl\@sm { + padding-top: var(--space-xl); + padding-bottom: var(--space-xl); + } + + .padding-y-xxl\@sm { + padding-top: var(--space-xxl); + padding-bottom: var(--space-xxl); + } + + .padding-y-xxxl\@sm { + padding-top: var(--space-xxxl); + padding-bottom: var(--space-xxxl); + } + + .padding-y-xxxxl\@sm { + padding-top: var(--space-xxxxl); + padding-bottom: var(--space-xxxxl); + } + + .padding-y-0\@sm { + padding-top: 0; + padding-bottom: 0; + } + + .padding-y-component\@sm { + padding-top: var(--component-padding); + padding-bottom: var(--component-padding); + } + } + .text-center\@sm { + text-align: center; + } + + .text-left\@sm { + text-align: left; + } + + .text-right\@sm { + text-align: right; + } + + .text-justify\@sm { + text-align: justify; + } + + @supports (--css: variables) { + .text-xs\@sm { + font-size: var(--text-xs, 0.694em); + } + + .text-sm\@sm { + font-size: var(--text-sm, 0.833em); + } + + .text-base\@sm { + font-size: 1em; + } + + .text-md\@sm { + font-size: var(--text-md, 1.2em); + } + + .text-lg\@sm { + font-size: var(--text-lg, 1.44em); + } + + .text-xl\@sm { + font-size: var(--text-xl, 1.728em); + } + + .text-xxl\@sm { + font-size: var(--text-xxl, 2.074em); + } + + .text-xxxl\@sm { + font-size: var(--text-xxxl, 2.488em); + } + + .text-xxxxl\@sm { + font-size: var(--text-xxxxl, 2.985em); + } + } + .hide\@sm { + display: none !important; + } +} +@media not all and (min-width: 48rem) { + .has-margin\@sm { + margin: 0 !important; + } + + .has-padding\@sm { + padding: 0 !important; + } + + .display\@sm { + display: none !important; + } +} +@media (min-width: 64rem) { + .flex\@md { + display: flex; + } + + .inline-flex\@md { + display: inline-flex; + } + + .flex-wrap\@md { + flex-wrap: wrap; + } + + .flex-column\@md { + flex-direction: column; + } + + .flex-column-reverse\@md { + flex-direction: column-reverse; + } + + .flex-row\@md { + flex-direction: row; + } + + .flex-row-reverse\@md { + flex-direction: row-reverse; + } + + .flex-center\@md { + justify-content: center; + align-items: center; + } + + .flex-grow-0\@md { + flex-grow: 0; + } + + .flex-grow\@md { + flex-grow: 1; + } + + .flex-shrink-0\@md { + flex-shrink: 0; + } + + .flex-shrink\@md { + flex-shrink: 1; + } + + .justify-start\@md { + justify-content: flex-start; + } + + .justify-end\@md { + justify-content: flex-end; + } + + .justify-center\@md { + justify-content: center; + } + + .justify-between\@md { + justify-content: space-between; + } + + .items-center\@md { + align-items: center; + } + + .items-start\@md { + align-items: flex-start; + } + + .items-end\@md { + align-items: flex-end; + } + + .items-baseline\@md { + align-items: baseline; + } + + .order-1\@md { + order: 1; + } + + .order-2\@md { + order: 2; + } + + .order-3\@md { + order: 3; + } + + .block\@md { + display: block; + } + + .inline-block\@md { + display: inline-block; + } + + .inline\@md { + display: inline; + } + + @supports (--css: variables) { + .margin-xxxxs\@md { + margin: var(--space-xxxxs); + } + + .margin-xxxs\@md { + margin: var(--space-xxxs); + } + + .margin-xxs\@md { + margin: var(--space-xxs); + } + + .margin-xs\@md { + margin: var(--space-xs); + } + + .margin-sm\@md { + margin: var(--space-sm); + } + + .margin-md\@md { + margin: var(--space-md); + } + + .margin-lg\@md { + margin: var(--space-lg); + } + + .margin-xl\@md { + margin: var(--space-xl); + } + + .margin-xxl\@md { + margin: var(--space-xxl); + } + + .margin-xxxl\@md { + margin: var(--space-xxxl); + } + + .margin-xxxxl\@md { + margin: var(--space-xxxxl); + } + + .margin-auto\@md { + margin: auto; + } + + .margin-0\@md { + margin: 0; + } + + .margin-top-xxxxs\@md { + margin-top: var(--space-xxxxs); + } + + .margin-top-xxxs\@md { + margin-top: var(--space-xxxs); + } + + .margin-top-xxs\@md { + margin-top: var(--space-xxs); + } + + .margin-top-xs\@md { + margin-top: var(--space-xs); + } + + .margin-top-sm\@md { + margin-top: var(--space-sm); + } + + .margin-top-md\@md { + margin-top: var(--space-md); + } + + .margin-top-lg\@md { + margin-top: var(--space-lg); + } + + .margin-top-xl\@md { + margin-top: var(--space-xl); + } + + .margin-top-xxl\@md { + margin-top: var(--space-xxl); + } + + .margin-top-xxxl\@md { + margin-top: var(--space-xxxl); + } + + .margin-top-xxxxl\@md { + margin-top: var(--space-xxxxl); + } + + .margin-top-auto\@md { + margin-top: auto; + } + + .margin-top-0\@md { + margin-top: 0; + } + + .margin-bottom-xxxxs\@md { + margin-bottom: var(--space-xxxxs); + } + + .margin-bottom-xxxs\@md { + margin-bottom: var(--space-xxxs); + } + + .margin-bottom-xxs\@md { + margin-bottom: var(--space-xxs); + } + + .margin-bottom-xs\@md { + margin-bottom: var(--space-xs); + } + + .margin-bottom-sm\@md { + margin-bottom: var(--space-sm); + } + + .margin-bottom-md\@md { + margin-bottom: var(--space-md); + } + + .margin-bottom-lg\@md { + margin-bottom: var(--space-lg); + } + + .margin-bottom-xl\@md { + margin-bottom: var(--space-xl); + } + + .margin-bottom-xxl\@md { + margin-bottom: var(--space-xxl); + } + + .margin-bottom-xxxl\@md { + margin-bottom: var(--space-xxxl); + } + + .margin-bottom-xxxxl\@md { + margin-bottom: var(--space-xxxxl); + } + + .margin-bottom-auto\@md { + margin-bottom: auto; + } + + .margin-bottom-0\@md { + margin-bottom: 0; + } + + .margin-right-xxxxs\@md { + margin-right: var(--space-xxxxs); + } + + .margin-right-xxxs\@md { + margin-right: var(--space-xxxs); + } + + .margin-right-xxs\@md { + margin-right: var(--space-xxs); + } + + .margin-right-xs\@md { + margin-right: var(--space-xs); + } + + .margin-right-sm\@md { + margin-right: var(--space-sm); + } + + .margin-right-md\@md { + margin-right: var(--space-md); + } + + .margin-right-lg\@md { + margin-right: var(--space-lg); + } + + .margin-right-xl\@md { + margin-right: var(--space-xl); + } + + .margin-right-xxl\@md { + margin-right: var(--space-xxl); + } + + .margin-right-xxxl\@md { + margin-right: var(--space-xxxl); + } + + .margin-right-xxxxl\@md { + margin-right: var(--space-xxxxl); + } + + .margin-right-auto\@md { + margin-right: auto; + } + + .margin-right-0\@md { + margin-right: 0; + } + + .margin-left-xxxxs\@md { + margin-left: var(--space-xxxxs); + } + + .margin-left-xxxs\@md { + margin-left: var(--space-xxxs); + } + + .margin-left-xxs\@md { + margin-left: var(--space-xxs); + } + + .margin-left-xs\@md { + margin-left: var(--space-xs); + } + + .margin-left-sm\@md { + margin-left: var(--space-sm); + } + + .margin-left-md\@md { + margin-left: var(--space-md); + } + + .margin-left-lg\@md { + margin-left: var(--space-lg); + } + + .margin-left-xl\@md { + margin-left: var(--space-xl); + } + + .margin-left-xxl\@md { + margin-left: var(--space-xxl); + } + + .margin-left-xxxl\@md { + margin-left: var(--space-xxxl); + } + + .margin-left-xxxxl\@md { + margin-left: var(--space-xxxxl); + } + + .margin-left-auto\@md { + margin-left: auto; + } + + .margin-left-0\@md { + margin-left: 0; + } + + .margin-x-xxxxs\@md { + margin-left: var(--space-xxxxs); + margin-right: var(--space-xxxxs); + } + + .margin-x-xxxs\@md { + margin-left: var(--space-xxxs); + margin-right: var(--space-xxxs); + } + + .margin-x-xxs\@md { + margin-left: var(--space-xxs); + margin-right: var(--space-xxs); + } + + .margin-x-xs\@md { + margin-left: var(--space-xs); + margin-right: var(--space-xs); + } + + .margin-x-sm\@md { + margin-left: var(--space-sm); + margin-right: var(--space-sm); + } + + .margin-x-md\@md { + margin-left: var(--space-md); + margin-right: var(--space-md); + } + + .margin-x-lg\@md { + margin-left: var(--space-lg); + margin-right: var(--space-lg); + } + + .margin-x-xl\@md { + margin-left: var(--space-xl); + margin-right: var(--space-xl); + } + + .margin-x-xxl\@md { + margin-left: var(--space-xxl); + margin-right: var(--space-xxl); + } + + .margin-x-xxxl\@md { + margin-left: var(--space-xxxl); + margin-right: var(--space-xxxl); + } + + .margin-x-xxxxl\@md { + margin-left: var(--space-xxxxl); + margin-right: var(--space-xxxxl); + } + + .margin-x-auto\@md { + margin-left: auto; + margin-right: auto; + } + + .margin-x-0\@md { + margin-left: 0; + margin-right: 0; + } + + .margin-y-xxxxs\@md { + margin-top: var(--space-xxxxs); + margin-bottom: var(--space-xxxxs); + } + + .margin-y-xxxs\@md { + margin-top: var(--space-xxxs); + margin-bottom: var(--space-xxxs); + } + + .margin-y-xxs\@md { + margin-top: var(--space-xxs); + margin-bottom: var(--space-xxs); + } + + .margin-y-xs\@md { + margin-top: var(--space-xs); + margin-bottom: var(--space-xs); + } + + .margin-y-sm\@md { + margin-top: var(--space-sm); + margin-bottom: var(--space-sm); + } + + .margin-y-md\@md { + margin-top: var(--space-md); + margin-bottom: var(--space-md); + } + + .margin-y-lg\@md { + margin-top: var(--space-lg); + margin-bottom: var(--space-lg); + } + + .margin-y-xl\@md { + margin-top: var(--space-xl); + margin-bottom: var(--space-xl); + } + + .margin-y-xxl\@md { + margin-top: var(--space-xxl); + margin-bottom: var(--space-xxl); + } + + .margin-y-xxxl\@md { + margin-top: var(--space-xxxl); + margin-bottom: var(--space-xxxl); + } + + .margin-y-xxxxl\@md { + margin-top: var(--space-xxxxl); + margin-bottom: var(--space-xxxxl); + } + + .margin-y-auto\@md { + margin-top: auto; + margin-bottom: auto; + } + + .margin-y-0\@md { + margin-top: 0; + margin-bottom: 0; + } + } + @supports (--css: variables) { + .padding-xxxxs\@md { + padding: var(--space-xxxxs); + } + + .padding-xxxs\@md { + padding: var(--space-xxxs); + } + + .padding-xxs\@md { + padding: var(--space-xxs); + } + + .padding-xs\@md { + padding: var(--space-xs); + } + + .padding-sm\@md { + padding: var(--space-sm); + } + + .padding-md\@md { + padding: var(--space-md); + } + + .padding-lg\@md { + padding: var(--space-lg); + } + + .padding-xl\@md { + padding: var(--space-xl); + } + + .padding-xxl\@md { + padding: var(--space-xxl); + } + + .padding-xxxl\@md { + padding: var(--space-xxxl); + } + + .padding-xxxxl\@md { + padding: var(--space-xxxxl); + } + + .padding-0\@md { + padding: 0; + } + + .padding-component\@md { + padding: var(--component-padding); + } + + .padding-top-xxxxs\@md { + padding-top: var(--space-xxxxs); + } + + .padding-top-xxxs\@md { + padding-top: var(--space-xxxs); + } + + .padding-top-xxs\@md { + padding-top: var(--space-xxs); + } + + .padding-top-xs\@md { + padding-top: var(--space-xs); + } + + .padding-top-sm\@md { + padding-top: var(--space-sm); + } + + .padding-top-md\@md { + padding-top: var(--space-md); + } + + .padding-top-lg\@md { + padding-top: var(--space-lg); + } + + .padding-top-xl\@md { + padding-top: var(--space-xl); + } + + .padding-top-xxl\@md { + padding-top: var(--space-xxl); + } + + .padding-top-xxxl\@md { + padding-top: var(--space-xxxl); + } + + .padding-top-xxxxl\@md { + padding-top: var(--space-xxxxl); + } + + .padding-top-0\@md { + padding-top: 0; + } + + .padding-top-component\@md { + padding-top: var(--component-padding); + } + + .padding-bottom-xxxxs\@md { + padding-bottom: var(--space-xxxxs); + } + + .padding-bottom-xxxs\@md { + padding-bottom: var(--space-xxxs); + } + + .padding-bottom-xxs\@md { + padding-bottom: var(--space-xxs); + } + + .padding-bottom-xs\@md { + padding-bottom: var(--space-xs); + } + + .padding-bottom-sm\@md { + padding-bottom: var(--space-sm); + } + + .padding-bottom-md\@md { + padding-bottom: var(--space-md); + } + + .padding-bottom-lg\@md { + padding-bottom: var(--space-lg); + } + + .padding-bottom-xl\@md { + padding-bottom: var(--space-xl); + } + + .padding-bottom-xxl\@md { + padding-bottom: var(--space-xxl); + } + + .padding-bottom-xxxl\@md { + padding-bottom: var(--space-xxxl); + } + + .padding-bottom-xxxxl\@md { + padding-bottom: var(--space-xxxxl); + } + + .padding-bottom-0\@md { + padding-bottom: 0; + } + + .padding-bottom-component\@md { + padding-bottom: var(--component-padding); + } + + .padding-right-xxxxs\@md { + padding-right: var(--space-xxxxs); + } + + .padding-right-xxxs\@md { + padding-right: var(--space-xxxs); + } + + .padding-right-xxs\@md { + padding-right: var(--space-xxs); + } + + .padding-right-xs\@md { + padding-right: var(--space-xs); + } + + .padding-right-sm\@md { + padding-right: var(--space-sm); + } + + .padding-right-md\@md { + padding-right: var(--space-md); + } + + .padding-right-lg\@md { + padding-right: var(--space-lg); + } + + .padding-right-xl\@md { + padding-right: var(--space-xl); + } + + .padding-right-xxl\@md { + padding-right: var(--space-xxl); + } + + .padding-right-xxxl\@md { + padding-right: var(--space-xxxl); + } + + .padding-right-xxxxl\@md { + padding-right: var(--space-xxxxl); + } + + .padding-right-0\@md { + padding-right: 0; + } + + .padding-right-component\@md { + padding-right: var(--component-padding); + } + + .padding-left-xxxxs\@md { + padding-left: var(--space-xxxxs); + } + + .padding-left-xxxs\@md { + padding-left: var(--space-xxxs); + } + + .padding-left-xxs\@md { + padding-left: var(--space-xxs); + } + + .padding-left-xs\@md { + padding-left: var(--space-xs); + } + + .padding-left-sm\@md { + padding-left: var(--space-sm); + } + + .padding-left-md\@md { + padding-left: var(--space-md); + } + + .padding-left-lg\@md { + padding-left: var(--space-lg); + } + + .padding-left-xl\@md { + padding-left: var(--space-xl); + } + + .padding-left-xxl\@md { + padding-left: var(--space-xxl); + } + + .padding-left-xxxl\@md { + padding-left: var(--space-xxxl); + } + + .padding-left-xxxxl\@md { + padding-left: var(--space-xxxxl); + } + + .padding-left-0\@md { + padding-left: 0; + } + + .padding-left-component\@md { + padding-left: var(--component-padding); + } + + .padding-x-xxxxs\@md { + padding-left: var(--space-xxxxs); + padding-right: var(--space-xxxxs); + } + + .padding-x-xxxs\@md { + padding-left: var(--space-xxxs); + padding-right: var(--space-xxxs); + } + + .padding-x-xxs\@md { + padding-left: var(--space-xxs); + padding-right: var(--space-xxs); + } + + .padding-x-xs\@md { + padding-left: var(--space-xs); + padding-right: var(--space-xs); + } + + .padding-x-sm\@md { + padding-left: var(--space-sm); + padding-right: var(--space-sm); + } + + .padding-x-md\@md { + padding-left: var(--space-md); + padding-right: var(--space-md); + } + + .padding-x-lg\@md { + padding-left: var(--space-lg); + padding-right: var(--space-lg); + } + + .padding-x-xl\@md { + padding-left: var(--space-xl); + padding-right: var(--space-xl); + } + + .padding-x-xxl\@md { + padding-left: var(--space-xxl); + padding-right: var(--space-xxl); + } + + .padding-x-xxxl\@md { + padding-left: var(--space-xxxl); + padding-right: var(--space-xxxl); + } + + .padding-x-xxxxl\@md { + padding-left: var(--space-xxxxl); + padding-right: var(--space-xxxxl); + } + + .padding-x-0\@md { + padding-left: 0; + padding-right: 0; + } + + .padding-x-component\@md { + padding-left: var(--component-padding); + padding-right: var(--component-padding); + } + + .padding-y-xxxxs\@md { + padding-top: var(--space-xxxxs); + padding-bottom: var(--space-xxxxs); + } + + .padding-y-xxxs\@md { + padding-top: var(--space-xxxs); + padding-bottom: var(--space-xxxs); + } + + .padding-y-xxs\@md { + padding-top: var(--space-xxs); + padding-bottom: var(--space-xxs); + } + + .padding-y-xs\@md { + padding-top: var(--space-xs); + padding-bottom: var(--space-xs); + } + + .padding-y-sm\@md { + padding-top: var(--space-sm); + padding-bottom: var(--space-sm); + } + + .padding-y-md\@md { + padding-top: var(--space-md); + padding-bottom: var(--space-md); + } + + .padding-y-lg\@md { + padding-top: var(--space-lg); + padding-bottom: var(--space-lg); + } + + .padding-y-xl\@md { + padding-top: var(--space-xl); + padding-bottom: var(--space-xl); + } + + .padding-y-xxl\@md { + padding-top: var(--space-xxl); + padding-bottom: var(--space-xxl); + } + + .padding-y-xxxl\@md { + padding-top: var(--space-xxxl); + padding-bottom: var(--space-xxxl); + } + + .padding-y-xxxxl\@md { + padding-top: var(--space-xxxxl); + padding-bottom: var(--space-xxxxl); + } + + .padding-y-0\@md { + padding-top: 0; + padding-bottom: 0; + } + + .padding-y-component\@md { + padding-top: var(--component-padding); + padding-bottom: var(--component-padding); + } + } + .text-center\@md { + text-align: center; + } + + .text-left\@md { + text-align: left; + } + + .text-right\@md { + text-align: right; + } + + .text-justify\@md { + text-align: justify; + } + + @supports (--css: variables) { + .text-xs\@md { + font-size: var(--text-xs, 0.694em); + } + + .text-sm\@md { + font-size: var(--text-sm, 0.833em); + } + + .text-base\@md { + font-size: 1em; + } + + .text-md\@md { + font-size: var(--text-md, 1.2em); + } + + .text-lg\@md { + font-size: var(--text-lg, 1.44em); + } + + .text-xl\@md { + font-size: var(--text-xl, 1.728em); + } + + .text-xxl\@md { + font-size: var(--text-xxl, 2.074em); + } + + .text-xxxl\@md { + font-size: var(--text-xxxl, 2.488em); + } + + .text-xxxxl\@md { + font-size: var(--text-xxxxl, 2.985em); + } + } + .hide\@md { + display: none !important; + } +} +@media not all and (min-width: 64rem) { + .has-margin\@md { + margin: 0 !important; + } + + .has-padding\@md { + padding: 0 !important; + } + + .display\@md { + display: none !important; + } +} +@media (min-width: 80rem) { + .flex\@lg { + display: flex; + } + + .inline-flex\@lg { + display: inline-flex; + } + + .flex-wrap\@lg { + flex-wrap: wrap; + } + + .flex-column\@lg { + flex-direction: column; + } + + .flex-column-reverse\@lg { + flex-direction: column-reverse; + } + + .flex-row\@lg { + flex-direction: row; + } + + .flex-row-reverse\@lg { + flex-direction: row-reverse; + } + + .flex-center\@lg { + justify-content: center; + align-items: center; + } + + .flex-grow-0\@lg { + flex-grow: 0; + } + + .flex-grow\@lg { + flex-grow: 1; + } + + .flex-shrink-0\@lg { + flex-shrink: 0; + } + + .flex-shrink\@lg { + flex-shrink: 1; + } + + .justify-start\@lg { + justify-content: flex-start; + } + + .justify-end\@lg { + justify-content: flex-end; + } + + .justify-center\@lg { + justify-content: center; + } + + .justify-between\@lg { + justify-content: space-between; + } + + .items-center\@lg { + align-items: center; + } + + .items-start\@lg { + align-items: flex-start; + } + + .items-end\@lg { + align-items: flex-end; + } + + .items-baseline\@lg { + align-items: baseline; + } + + .order-1\@lg { + order: 1; + } + + .order-2\@lg { + order: 2; + } + + .order-3\@lg { + order: 3; + } + + .block\@lg { + display: block; + } + + .inline-block\@lg { + display: inline-block; + } + + .inline\@lg { + display: inline; + } + + @supports (--css: variables) { + .margin-xxxxs\@lg { + margin: var(--space-xxxxs); + } + + .margin-xxxs\@lg { + margin: var(--space-xxxs); + } + + .margin-xxs\@lg { + margin: var(--space-xxs); + } + + .margin-xs\@lg { + margin: var(--space-xs); + } + + .margin-sm\@lg { + margin: var(--space-sm); + } + + .margin-md\@lg { + margin: var(--space-md); + } + + .margin-lg\@lg { + margin: var(--space-lg); + } + + .margin-xl\@lg { + margin: var(--space-xl); + } + + .margin-xxl\@lg { + margin: var(--space-xxl); + } + + .margin-xxxl\@lg { + margin: var(--space-xxxl); + } + + .margin-xxxxl\@lg { + margin: var(--space-xxxxl); + } + + .margin-auto\@lg { + margin: auto; + } + + .margin-0\@lg { + margin: 0; + } + + .margin-top-xxxxs\@lg { + margin-top: var(--space-xxxxs); + } + + .margin-top-xxxs\@lg { + margin-top: var(--space-xxxs); + } + + .margin-top-xxs\@lg { + margin-top: var(--space-xxs); + } + + .margin-top-xs\@lg { + margin-top: var(--space-xs); + } + + .margin-top-sm\@lg { + margin-top: var(--space-sm); + } + + .margin-top-md\@lg { + margin-top: var(--space-md); + } + + .margin-top-lg\@lg { + margin-top: var(--space-lg); + } + + .margin-top-xl\@lg { + margin-top: var(--space-xl); + } + + .margin-top-xxl\@lg { + margin-top: var(--space-xxl); + } + + .margin-top-xxxl\@lg { + margin-top: var(--space-xxxl); + } + + .margin-top-xxxxl\@lg { + margin-top: var(--space-xxxxl); + } + + .margin-top-auto\@lg { + margin-top: auto; + } + + .margin-top-0\@lg { + margin-top: 0; + } + + .margin-bottom-xxxxs\@lg { + margin-bottom: var(--space-xxxxs); + } + + .margin-bottom-xxxs\@lg { + margin-bottom: var(--space-xxxs); + } + + .margin-bottom-xxs\@lg { + margin-bottom: var(--space-xxs); + } + + .margin-bottom-xs\@lg { + margin-bottom: var(--space-xs); + } + + .margin-bottom-sm\@lg { + margin-bottom: var(--space-sm); + } + + .margin-bottom-md\@lg { + margin-bottom: var(--space-md); + } + + .margin-bottom-lg\@lg { + margin-bottom: var(--space-lg); + } + + .margin-bottom-xl\@lg { + margin-bottom: var(--space-xl); + } + + .margin-bottom-xxl\@lg { + margin-bottom: var(--space-xxl); + } + + .margin-bottom-xxxl\@lg { + margin-bottom: var(--space-xxxl); + } + + .margin-bottom-xxxxl\@lg { + margin-bottom: var(--space-xxxxl); + } + + .margin-bottom-auto\@lg { + margin-bottom: auto; + } + + .margin-bottom-0\@lg { + margin-bottom: 0; + } + + .margin-right-xxxxs\@lg { + margin-right: var(--space-xxxxs); + } + + .margin-right-xxxs\@lg { + margin-right: var(--space-xxxs); + } + + .margin-right-xxs\@lg { + margin-right: var(--space-xxs); + } + + .margin-right-xs\@lg { + margin-right: var(--space-xs); + } + + .margin-right-sm\@lg { + margin-right: var(--space-sm); + } + + .margin-right-md\@lg { + margin-right: var(--space-md); + } + + .margin-right-lg\@lg { + margin-right: var(--space-lg); + } + + .margin-right-xl\@lg { + margin-right: var(--space-xl); + } + + .margin-right-xxl\@lg { + margin-right: var(--space-xxl); + } + + .margin-right-xxxl\@lg { + margin-right: var(--space-xxxl); + } + + .margin-right-xxxxl\@lg { + margin-right: var(--space-xxxxl); + } + + .margin-right-auto\@lg { + margin-right: auto; + } + + .margin-right-0\@lg { + margin-right: 0; + } + + .margin-left-xxxxs\@lg { + margin-left: var(--space-xxxxs); + } + + .margin-left-xxxs\@lg { + margin-left: var(--space-xxxs); + } + + .margin-left-xxs\@lg { + margin-left: var(--space-xxs); + } + + .margin-left-xs\@lg { + margin-left: var(--space-xs); + } + + .margin-left-sm\@lg { + margin-left: var(--space-sm); + } + + .margin-left-md\@lg { + margin-left: var(--space-md); + } + + .margin-left-lg\@lg { + margin-left: var(--space-lg); + } + + .margin-left-xl\@lg { + margin-left: var(--space-xl); + } + + .margin-left-xxl\@lg { + margin-left: var(--space-xxl); + } + + .margin-left-xxxl\@lg { + margin-left: var(--space-xxxl); + } + + .margin-left-xxxxl\@lg { + margin-left: var(--space-xxxxl); + } + + .margin-left-auto\@lg { + margin-left: auto; + } + + .margin-left-0\@lg { + margin-left: 0; + } + + .margin-x-xxxxs\@lg { + margin-left: var(--space-xxxxs); + margin-right: var(--space-xxxxs); + } + + .margin-x-xxxs\@lg { + margin-left: var(--space-xxxs); + margin-right: var(--space-xxxs); + } + + .margin-x-xxs\@lg { + margin-left: var(--space-xxs); + margin-right: var(--space-xxs); + } + + .margin-x-xs\@lg { + margin-left: var(--space-xs); + margin-right: var(--space-xs); + } + + .margin-x-sm\@lg { + margin-left: var(--space-sm); + margin-right: var(--space-sm); + } + + .margin-x-md\@lg { + margin-left: var(--space-md); + margin-right: var(--space-md); + } + + .margin-x-lg\@lg { + margin-left: var(--space-lg); + margin-right: var(--space-lg); + } + + .margin-x-xl\@lg { + margin-left: var(--space-xl); + margin-right: var(--space-xl); + } + + .margin-x-xxl\@lg { + margin-left: var(--space-xxl); + margin-right: var(--space-xxl); + } + + .margin-x-xxxl\@lg { + margin-left: var(--space-xxxl); + margin-right: var(--space-xxxl); + } + + .margin-x-xxxxl\@lg { + margin-left: var(--space-xxxxl); + margin-right: var(--space-xxxxl); + } + + .margin-x-auto\@lg { + margin-left: auto; + margin-right: auto; + } + + .margin-x-0\@lg { + margin-left: 0; + margin-right: 0; + } + + .margin-y-xxxxs\@lg { + margin-top: var(--space-xxxxs); + margin-bottom: var(--space-xxxxs); + } + + .margin-y-xxxs\@lg { + margin-top: var(--space-xxxs); + margin-bottom: var(--space-xxxs); + } + + .margin-y-xxs\@lg { + margin-top: var(--space-xxs); + margin-bottom: var(--space-xxs); + } + + .margin-y-xs\@lg { + margin-top: var(--space-xs); + margin-bottom: var(--space-xs); + } + + .margin-y-sm\@lg { + margin-top: var(--space-sm); + margin-bottom: var(--space-sm); + } + + .margin-y-md\@lg { + margin-top: var(--space-md); + margin-bottom: var(--space-md); + } + + .margin-y-lg\@lg { + margin-top: var(--space-lg); + margin-bottom: var(--space-lg); + } + + .margin-y-xl\@lg { + margin-top: var(--space-xl); + margin-bottom: var(--space-xl); + } + + .margin-y-xxl\@lg { + margin-top: var(--space-xxl); + margin-bottom: var(--space-xxl); + } + + .margin-y-xxxl\@lg { + margin-top: var(--space-xxxl); + margin-bottom: var(--space-xxxl); + } + + .margin-y-xxxxl\@lg { + margin-top: var(--space-xxxxl); + margin-bottom: var(--space-xxxxl); + } + + .margin-y-auto\@lg { + margin-top: auto; + margin-bottom: auto; + } + + .margin-y-0\@lg { + margin-top: 0; + margin-bottom: 0; + } + } + @supports (--css: variables) { + .padding-xxxxs\@lg { + padding: var(--space-xxxxs); + } + + .padding-xxxs\@lg { + padding: var(--space-xxxs); + } + + .padding-xxs\@lg { + padding: var(--space-xxs); + } + + .padding-xs\@lg { + padding: var(--space-xs); + } + + .padding-sm\@lg { + padding: var(--space-sm); + } + + .padding-md\@lg { + padding: var(--space-md); + } + + .padding-lg\@lg { + padding: var(--space-lg); + } + + .padding-xl\@lg { + padding: var(--space-xl); + } + + .padding-xxl\@lg { + padding: var(--space-xxl); + } + + .padding-xxxl\@lg { + padding: var(--space-xxxl); + } + + .padding-xxxxl\@lg { + padding: var(--space-xxxxl); + } + + .padding-0\@lg { + padding: 0; + } + + .padding-component\@lg { + padding: var(--component-padding); + } + + .padding-top-xxxxs\@lg { + padding-top: var(--space-xxxxs); + } + + .padding-top-xxxs\@lg { + padding-top: var(--space-xxxs); + } + + .padding-top-xxs\@lg { + padding-top: var(--space-xxs); + } + + .padding-top-xs\@lg { + padding-top: var(--space-xs); + } + + .padding-top-sm\@lg { + padding-top: var(--space-sm); + } + + .padding-top-md\@lg { + padding-top: var(--space-md); + } + + .padding-top-lg\@lg { + padding-top: var(--space-lg); + } + + .padding-top-xl\@lg { + padding-top: var(--space-xl); + } + + .padding-top-xxl\@lg { + padding-top: var(--space-xxl); + } + + .padding-top-xxxl\@lg { + padding-top: var(--space-xxxl); + } + + .padding-top-xxxxl\@lg { + padding-top: var(--space-xxxxl); + } + + .padding-top-0\@lg { + padding-top: 0; + } + + .padding-top-component\@lg { + padding-top: var(--component-padding); + } + + .padding-bottom-xxxxs\@lg { + padding-bottom: var(--space-xxxxs); + } + + .padding-bottom-xxxs\@lg { + padding-bottom: var(--space-xxxs); + } + + .padding-bottom-xxs\@lg { + padding-bottom: var(--space-xxs); + } + + .padding-bottom-xs\@lg { + padding-bottom: var(--space-xs); + } + + .padding-bottom-sm\@lg { + padding-bottom: var(--space-sm); + } + + .padding-bottom-md\@lg { + padding-bottom: var(--space-md); + } + + .padding-bottom-lg\@lg { + padding-bottom: var(--space-lg); + } + + .padding-bottom-xl\@lg { + padding-bottom: var(--space-xl); + } + + .padding-bottom-xxl\@lg { + padding-bottom: var(--space-xxl); + } + + .padding-bottom-xxxl\@lg { + padding-bottom: var(--space-xxxl); + } + + .padding-bottom-xxxxl\@lg { + padding-bottom: var(--space-xxxxl); + } + + .padding-bottom-0\@lg { + padding-bottom: 0; + } + + .padding-bottom-component\@lg { + padding-bottom: var(--component-padding); + } + + .padding-right-xxxxs\@lg { + padding-right: var(--space-xxxxs); + } + + .padding-right-xxxs\@lg { + padding-right: var(--space-xxxs); + } + + .padding-right-xxs\@lg { + padding-right: var(--space-xxs); + } + + .padding-right-xs\@lg { + padding-right: var(--space-xs); + } + + .padding-right-sm\@lg { + padding-right: var(--space-sm); + } + + .padding-right-md\@lg { + padding-right: var(--space-md); + } + + .padding-right-lg\@lg { + padding-right: var(--space-lg); + } + + .padding-right-xl\@lg { + padding-right: var(--space-xl); + } + + .padding-right-xxl\@lg { + padding-right: var(--space-xxl); + } + + .padding-right-xxxl\@lg { + padding-right: var(--space-xxxl); + } + + .padding-right-xxxxl\@lg { + padding-right: var(--space-xxxxl); + } + + .padding-right-0\@lg { + padding-right: 0; + } + + .padding-right-component\@lg { + padding-right: var(--component-padding); + } + + .padding-left-xxxxs\@lg { + padding-left: var(--space-xxxxs); + } + + .padding-left-xxxs\@lg { + padding-left: var(--space-xxxs); + } + + .padding-left-xxs\@lg { + padding-left: var(--space-xxs); + } + + .padding-left-xs\@lg { + padding-left: var(--space-xs); + } + + .padding-left-sm\@lg { + padding-left: var(--space-sm); + } + + .padding-left-md\@lg { + padding-left: var(--space-md); + } + + .padding-left-lg\@lg { + padding-left: var(--space-lg); + } + + .padding-left-xl\@lg { + padding-left: var(--space-xl); + } + + .padding-left-xxl\@lg { + padding-left: var(--space-xxl); + } + + .padding-left-xxxl\@lg { + padding-left: var(--space-xxxl); + } + + .padding-left-xxxxl\@lg { + padding-left: var(--space-xxxxl); + } + + .padding-left-0\@lg { + padding-left: 0; + } + + .padding-left-component\@lg { + padding-left: var(--component-padding); + } + + .padding-x-xxxxs\@lg { + padding-left: var(--space-xxxxs); + padding-right: var(--space-xxxxs); + } + + .padding-x-xxxs\@lg { + padding-left: var(--space-xxxs); + padding-right: var(--space-xxxs); + } + + .padding-x-xxs\@lg { + padding-left: var(--space-xxs); + padding-right: var(--space-xxs); + } + + .padding-x-xs\@lg { + padding-left: var(--space-xs); + padding-right: var(--space-xs); + } + + .padding-x-sm\@lg { + padding-left: var(--space-sm); + padding-right: var(--space-sm); + } + + .padding-x-md\@lg { + padding-left: var(--space-md); + padding-right: var(--space-md); + } + + .padding-x-lg\@lg { + padding-left: var(--space-lg); + padding-right: var(--space-lg); + } + + .padding-x-xl\@lg { + padding-left: var(--space-xl); + padding-right: var(--space-xl); + } + + .padding-x-xxl\@lg { + padding-left: var(--space-xxl); + padding-right: var(--space-xxl); + } + + .padding-x-xxxl\@lg { + padding-left: var(--space-xxxl); + padding-right: var(--space-xxxl); + } + + .padding-x-xxxxl\@lg { + padding-left: var(--space-xxxxl); + padding-right: var(--space-xxxxl); + } + + .padding-x-0\@lg { + padding-left: 0; + padding-right: 0; + } + + .padding-x-component\@lg { + padding-left: var(--component-padding); + padding-right: var(--component-padding); + } + + .padding-y-xxxxs\@lg { + padding-top: var(--space-xxxxs); + padding-bottom: var(--space-xxxxs); + } + + .padding-y-xxxs\@lg { + padding-top: var(--space-xxxs); + padding-bottom: var(--space-xxxs); + } + + .padding-y-xxs\@lg { + padding-top: var(--space-xxs); + padding-bottom: var(--space-xxs); + } + + .padding-y-xs\@lg { + padding-top: var(--space-xs); + padding-bottom: var(--space-xs); + } + + .padding-y-sm\@lg { + padding-top: var(--space-sm); + padding-bottom: var(--space-sm); + } + + .padding-y-md\@lg { + padding-top: var(--space-md); + padding-bottom: var(--space-md); + } + + .padding-y-lg\@lg { + padding-top: var(--space-lg); + padding-bottom: var(--space-lg); + } + + .padding-y-xl\@lg { + padding-top: var(--space-xl); + padding-bottom: var(--space-xl); + } + + .padding-y-xxl\@lg { + padding-top: var(--space-xxl); + padding-bottom: var(--space-xxl); + } + + .padding-y-xxxl\@lg { + padding-top: var(--space-xxxl); + padding-bottom: var(--space-xxxl); + } + + .padding-y-xxxxl\@lg { + padding-top: var(--space-xxxxl); + padding-bottom: var(--space-xxxxl); + } + + .padding-y-0\@lg { + padding-top: 0; + padding-bottom: 0; + } + + .padding-y-component\@lg { + padding-top: var(--component-padding); + padding-bottom: var(--component-padding); + } + } + .text-center\@lg { + text-align: center; + } + + .text-left\@lg { + text-align: left; + } + + .text-right\@lg { + text-align: right; + } + + .text-justify\@lg { + text-align: justify; + } + + @supports (--css: variables) { + .text-xs\@lg { + font-size: var(--text-xs, 0.694em); + } + + .text-sm\@lg { + font-size: var(--text-sm, 0.833em); + } + + .text-base\@lg { + font-size: 1em; + } + + .text-md\@lg { + font-size: var(--text-md, 1.2em); + } + + .text-lg\@lg { + font-size: var(--text-lg, 1.44em); + } + + .text-xl\@lg { + font-size: var(--text-xl, 1.728em); + } + + .text-xxl\@lg { + font-size: var(--text-xxl, 2.074em); + } + + .text-xxxl\@lg { + font-size: var(--text-xxxl, 2.488em); + } + + .text-xxxxl\@lg { + font-size: var(--text-xxxxl, 2.985em); + } + } + .hide\@lg { + display: none !important; + } +} +@media not all and (min-width: 80rem) { + .has-margin\@lg { + margin: 0 !important; + } + + .has-padding\@lg { + padding: 0 !important; + } + + .display\@lg { + display: none !important; + } +} +@media (min-width: 90rem) { + .flex\@xl { + display: flex; + } + + .inline-flex\@xl { + display: inline-flex; + } + + .flex-wrap\@xl { + flex-wrap: wrap; + } + + .flex-column\@xl { + flex-direction: column; + } + + .flex-column-reverse\@xl { + flex-direction: column-reverse; + } + + .flex-row\@xl { + flex-direction: row; + } + + .flex-row-reverse\@xl { + flex-direction: row-reverse; + } + + .flex-center\@xl { + justify-content: center; + align-items: center; + } + + .flex-grow-0\@xl { + flex-grow: 0; + } + + .flex-grow\@xl { + flex-grow: 1; + } + + .flex-shrink-0\@xl { + flex-shrink: 0; + } + + .flex-shrink\@xl { + flex-shrink: 1; + } + + .justify-start\@xl { + justify-content: flex-start; + } + + .justify-end\@xl { + justify-content: flex-end; + } + + .justify-center\@xl { + justify-content: center; + } + + .justify-between\@xl { + justify-content: space-between; + } + + .items-center\@xl { + align-items: center; + } + + .items-start\@xl { + align-items: flex-start; + } + + .items-end\@xl { + align-items: flex-end; + } + + .items-baseline\@xl { + align-items: baseline; + } + + .order-1\@xl { + order: 1; + } + + .order-2\@xl { + order: 2; + } + + .order-3\@xl { + order: 3; + } + + .block\@xl { + display: block; + } + + .inline-block\@xl { + display: inline-block; + } + + .inline\@xl { + display: inline; + } + + @supports (--css: variables) { + .margin-xxxxs\@xl { + margin: var(--space-xxxxs); + } + + .margin-xxxs\@xl { + margin: var(--space-xxxs); + } + + .margin-xxs\@xl { + margin: var(--space-xxs); + } + + .margin-xs\@xl { + margin: var(--space-xs); + } + + .margin-sm\@xl { + margin: var(--space-sm); + } + + .margin-md\@xl { + margin: var(--space-md); + } + + .margin-lg\@xl { + margin: var(--space-lg); + } + + .margin-xl\@xl { + margin: var(--space-xl); + } + + .margin-xxl\@xl { + margin: var(--space-xxl); + } + + .margin-xxxl\@xl { + margin: var(--space-xxxl); + } + + .margin-xxxxl\@xl { + margin: var(--space-xxxxl); + } + + .margin-auto\@xl { + margin: auto; + } + + .margin-0\@xl { + margin: 0; + } + + .margin-top-xxxxs\@xl { + margin-top: var(--space-xxxxs); + } + + .margin-top-xxxs\@xl { + margin-top: var(--space-xxxs); + } + + .margin-top-xxs\@xl { + margin-top: var(--space-xxs); + } + + .margin-top-xs\@xl { + margin-top: var(--space-xs); + } + + .margin-top-sm\@xl { + margin-top: var(--space-sm); + } + + .margin-top-md\@xl { + margin-top: var(--space-md); + } + + .margin-top-lg\@xl { + margin-top: var(--space-lg); + } + + .margin-top-xl\@xl { + margin-top: var(--space-xl); + } + + .margin-top-xxl\@xl { + margin-top: var(--space-xxl); + } + + .margin-top-xxxl\@xl { + margin-top: var(--space-xxxl); + } + + .margin-top-xxxxl\@xl { + margin-top: var(--space-xxxxl); + } + + .margin-top-auto\@xl { + margin-top: auto; + } + + .margin-top-0\@xl { + margin-top: 0; + } + + .margin-bottom-xxxxs\@xl { + margin-bottom: var(--space-xxxxs); + } + + .margin-bottom-xxxs\@xl { + margin-bottom: var(--space-xxxs); + } + + .margin-bottom-xxs\@xl { + margin-bottom: var(--space-xxs); + } + + .margin-bottom-xs\@xl { + margin-bottom: var(--space-xs); + } + + .margin-bottom-sm\@xl { + margin-bottom: var(--space-sm); + } + + .margin-bottom-md\@xl { + margin-bottom: var(--space-md); + } + + .margin-bottom-lg\@xl { + margin-bottom: var(--space-lg); + } + + .margin-bottom-xl\@xl { + margin-bottom: var(--space-xl); + } + + .margin-bottom-xxl\@xl { + margin-bottom: var(--space-xxl); + } + + .margin-bottom-xxxl\@xl { + margin-bottom: var(--space-xxxl); + } + + .margin-bottom-xxxxl\@xl { + margin-bottom: var(--space-xxxxl); + } + + .margin-bottom-auto\@xl { + margin-bottom: auto; + } + + .margin-bottom-0\@xl { + margin-bottom: 0; + } + + .margin-right-xxxxs\@xl { + margin-right: var(--space-xxxxs); + } + + .margin-right-xxxs\@xl { + margin-right: var(--space-xxxs); + } + + .margin-right-xxs\@xl { + margin-right: var(--space-xxs); + } + + .margin-right-xs\@xl { + margin-right: var(--space-xs); + } + + .margin-right-sm\@xl { + margin-right: var(--space-sm); + } + + .margin-right-md\@xl { + margin-right: var(--space-md); + } + + .margin-right-lg\@xl { + margin-right: var(--space-lg); + } + + .margin-right-xl\@xl { + margin-right: var(--space-xl); + } + + .margin-right-xxl\@xl { + margin-right: var(--space-xxl); + } + + .margin-right-xxxl\@xl { + margin-right: var(--space-xxxl); + } + + .margin-right-xxxxl\@xl { + margin-right: var(--space-xxxxl); + } + + .margin-right-auto\@xl { + margin-right: auto; + } + + .margin-right-0\@xl { + margin-right: 0; + } + + .margin-left-xxxxs\@xl { + margin-left: var(--space-xxxxs); + } + + .margin-left-xxxs\@xl { + margin-left: var(--space-xxxs); + } + + .margin-left-xxs\@xl { + margin-left: var(--space-xxs); + } + + .margin-left-xs\@xl { + margin-left: var(--space-xs); + } + + .margin-left-sm\@xl { + margin-left: var(--space-sm); + } + + .margin-left-md\@xl { + margin-left: var(--space-md); + } + + .margin-left-lg\@xl { + margin-left: var(--space-lg); + } + + .margin-left-xl\@xl { + margin-left: var(--space-xl); + } + + .margin-left-xxl\@xl { + margin-left: var(--space-xxl); + } + + .margin-left-xxxl\@xl { + margin-left: var(--space-xxxl); + } + + .margin-left-xxxxl\@xl { + margin-left: var(--space-xxxxl); + } + + .margin-left-auto\@xl { + margin-left: auto; + } + + .margin-left-0\@xl { + margin-left: 0; + } + + .margin-x-xxxxs\@xl { + margin-left: var(--space-xxxxs); + margin-right: var(--space-xxxxs); + } + + .margin-x-xxxs\@xl { + margin-left: var(--space-xxxs); + margin-right: var(--space-xxxs); + } + + .margin-x-xxs\@xl { + margin-left: var(--space-xxs); + margin-right: var(--space-xxs); + } + + .margin-x-xs\@xl { + margin-left: var(--space-xs); + margin-right: var(--space-xs); + } + + .margin-x-sm\@xl { + margin-left: var(--space-sm); + margin-right: var(--space-sm); + } + + .margin-x-md\@xl { + margin-left: var(--space-md); + margin-right: var(--space-md); + } + + .margin-x-lg\@xl { + margin-left: var(--space-lg); + margin-right: var(--space-lg); + } + + .margin-x-xl\@xl { + margin-left: var(--space-xl); + margin-right: var(--space-xl); + } + + .margin-x-xxl\@xl { + margin-left: var(--space-xxl); + margin-right: var(--space-xxl); + } + + .margin-x-xxxl\@xl { + margin-left: var(--space-xxxl); + margin-right: var(--space-xxxl); + } + + .margin-x-xxxxl\@xl { + margin-left: var(--space-xxxxl); + margin-right: var(--space-xxxxl); + } + + .margin-x-auto\@xl { + margin-left: auto; + margin-right: auto; + } + + .margin-x-0\@xl { + margin-left: 0; + margin-right: 0; + } + + .margin-y-xxxxs\@xl { + margin-top: var(--space-xxxxs); + margin-bottom: var(--space-xxxxs); + } + + .margin-y-xxxs\@xl { + margin-top: var(--space-xxxs); + margin-bottom: var(--space-xxxs); + } + + .margin-y-xxs\@xl { + margin-top: var(--space-xxs); + margin-bottom: var(--space-xxs); + } + + .margin-y-xs\@xl { + margin-top: var(--space-xs); + margin-bottom: var(--space-xs); + } + + .margin-y-sm\@xl { + margin-top: var(--space-sm); + margin-bottom: var(--space-sm); + } + + .margin-y-md\@xl { + margin-top: var(--space-md); + margin-bottom: var(--space-md); + } + + .margin-y-lg\@xl { + margin-top: var(--space-lg); + margin-bottom: var(--space-lg); + } + + .margin-y-xl\@xl { + margin-top: var(--space-xl); + margin-bottom: var(--space-xl); + } + + .margin-y-xxl\@xl { + margin-top: var(--space-xxl); + margin-bottom: var(--space-xxl); + } + + .margin-y-xxxl\@xl { + margin-top: var(--space-xxxl); + margin-bottom: var(--space-xxxl); + } + + .margin-y-xxxxl\@xl { + margin-top: var(--space-xxxxl); + margin-bottom: var(--space-xxxxl); + } + + .margin-y-auto\@xl { + margin-top: auto; + margin-bottom: auto; + } + + .margin-y-0\@xl { + margin-top: 0; + margin-bottom: 0; + } + } + @supports (--css: variables) { + .padding-xxxxs\@xl { + padding: var(--space-xxxxs); + } + + .padding-xxxs\@xl { + padding: var(--space-xxxs); + } + + .padding-xxs\@xl { + padding: var(--space-xxs); + } + + .padding-xs\@xl { + padding: var(--space-xs); + } + + .padding-sm\@xl { + padding: var(--space-sm); + } + + .padding-md\@xl { + padding: var(--space-md); + } + + .padding-lg\@xl { + padding: var(--space-lg); + } + + .padding-xl\@xl { + padding: var(--space-xl); + } + + .padding-xxl\@xl { + padding: var(--space-xxl); + } + + .padding-xxxl\@xl { + padding: var(--space-xxxl); + } + + .padding-xxxxl\@xl { + padding: var(--space-xxxxl); + } + + .padding-0\@xl { + padding: 0; + } + + .padding-component\@xl { + padding: var(--component-padding); + } + + .padding-top-xxxxs\@xl { + padding-top: var(--space-xxxxs); + } + + .padding-top-xxxs\@xl { + padding-top: var(--space-xxxs); + } + + .padding-top-xxs\@xl { + padding-top: var(--space-xxs); + } + + .padding-top-xs\@xl { + padding-top: var(--space-xs); + } + + .padding-top-sm\@xl { + padding-top: var(--space-sm); + } + + .padding-top-md\@xl { + padding-top: var(--space-md); + } + + .padding-top-lg\@xl { + padding-top: var(--space-lg); + } + + .padding-top-xl\@xl { + padding-top: var(--space-xl); + } + + .padding-top-xxl\@xl { + padding-top: var(--space-xxl); + } + + .padding-top-xxxl\@xl { + padding-top: var(--space-xxxl); + } + + .padding-top-xxxxl\@xl { + padding-top: var(--space-xxxxl); + } + + .padding-top-0\@xl { + padding-top: 0; + } + + .padding-top-component\@xl { + padding-top: var(--component-padding); + } + + .padding-bottom-xxxxs\@xl { + padding-bottom: var(--space-xxxxs); + } + + .padding-bottom-xxxs\@xl { + padding-bottom: var(--space-xxxs); + } + + .padding-bottom-xxs\@xl { + padding-bottom: var(--space-xxs); + } + + .padding-bottom-xs\@xl { + padding-bottom: var(--space-xs); + } + + .padding-bottom-sm\@xl { + padding-bottom: var(--space-sm); + } + + .padding-bottom-md\@xl { + padding-bottom: var(--space-md); + } + + .padding-bottom-lg\@xl { + padding-bottom: var(--space-lg); + } + + .padding-bottom-xl\@xl { + padding-bottom: var(--space-xl); + } + + .padding-bottom-xxl\@xl { + padding-bottom: var(--space-xxl); + } + + .padding-bottom-xxxl\@xl { + padding-bottom: var(--space-xxxl); + } + + .padding-bottom-xxxxl\@xl { + padding-bottom: var(--space-xxxxl); + } + + .padding-bottom-0\@xl { + padding-bottom: 0; + } + + .padding-bottom-component\@xl { + padding-bottom: var(--component-padding); + } + + .padding-right-xxxxs\@xl { + padding-right: var(--space-xxxxs); + } + + .padding-right-xxxs\@xl { + padding-right: var(--space-xxxs); + } + + .padding-right-xxs\@xl { + padding-right: var(--space-xxs); + } + + .padding-right-xs\@xl { + padding-right: var(--space-xs); + } + + .padding-right-sm\@xl { + padding-right: var(--space-sm); + } + + .padding-right-md\@xl { + padding-right: var(--space-md); + } + + .padding-right-lg\@xl { + padding-right: var(--space-lg); + } + + .padding-right-xl\@xl { + padding-right: var(--space-xl); + } + + .padding-right-xxl\@xl { + padding-right: var(--space-xxl); + } + + .padding-right-xxxl\@xl { + padding-right: var(--space-xxxl); + } + + .padding-right-xxxxl\@xl { + padding-right: var(--space-xxxxl); + } + + .padding-right-0\@xl { + padding-right: 0; + } + + .padding-right-component\@xl { + padding-right: var(--component-padding); + } + + .padding-left-xxxxs\@xl { + padding-left: var(--space-xxxxs); + } + + .padding-left-xxxs\@xl { + padding-left: var(--space-xxxs); + } + + .padding-left-xxs\@xl { + padding-left: var(--space-xxs); + } + + .padding-left-xs\@xl { + padding-left: var(--space-xs); + } + + .padding-left-sm\@xl { + padding-left: var(--space-sm); + } + + .padding-left-md\@xl { + padding-left: var(--space-md); + } + + .padding-left-lg\@xl { + padding-left: var(--space-lg); + } + + .padding-left-xl\@xl { + padding-left: var(--space-xl); + } + + .padding-left-xxl\@xl { + padding-left: var(--space-xxl); + } + + .padding-left-xxxl\@xl { + padding-left: var(--space-xxxl); + } + + .padding-left-xxxxl\@xl { + padding-left: var(--space-xxxxl); + } + + .padding-left-0\@xl { + padding-left: 0; + } + + .padding-left-component\@xl { + padding-left: var(--component-padding); + } + + .padding-x-xxxxs\@xl { + padding-left: var(--space-xxxxs); + padding-right: var(--space-xxxxs); + } + + .padding-x-xxxs\@xl { + padding-left: var(--space-xxxs); + padding-right: var(--space-xxxs); + } + + .padding-x-xxs\@xl { + padding-left: var(--space-xxs); + padding-right: var(--space-xxs); + } + + .padding-x-xs\@xl { + padding-left: var(--space-xs); + padding-right: var(--space-xs); + } + + .padding-x-sm\@xl { + padding-left: var(--space-sm); + padding-right: var(--space-sm); + } + + .padding-x-md\@xl { + padding-left: var(--space-md); + padding-right: var(--space-md); + } + + .padding-x-lg\@xl { + padding-left: var(--space-lg); + padding-right: var(--space-lg); + } + + .padding-x-xl\@xl { + padding-left: var(--space-xl); + padding-right: var(--space-xl); + } + + .padding-x-xxl\@xl { + padding-left: var(--space-xxl); + padding-right: var(--space-xxl); + } + + .padding-x-xxxl\@xl { + padding-left: var(--space-xxxl); + padding-right: var(--space-xxxl); + } + + .padding-x-xxxxl\@xl { + padding-left: var(--space-xxxxl); + padding-right: var(--space-xxxxl); + } + + .padding-x-0\@xl { + padding-left: 0; + padding-right: 0; + } + + .padding-x-component\@xl { + padding-left: var(--component-padding); + padding-right: var(--component-padding); + } + + .padding-y-xxxxs\@xl { + padding-top: var(--space-xxxxs); + padding-bottom: var(--space-xxxxs); + } + + .padding-y-xxxs\@xl { + padding-top: var(--space-xxxs); + padding-bottom: var(--space-xxxs); + } + + .padding-y-xxs\@xl { + padding-top: var(--space-xxs); + padding-bottom: var(--space-xxs); + } + + .padding-y-xs\@xl { + padding-top: var(--space-xs); + padding-bottom: var(--space-xs); + } + + .padding-y-sm\@xl { + padding-top: var(--space-sm); + padding-bottom: var(--space-sm); + } + + .padding-y-md\@xl { + padding-top: var(--space-md); + padding-bottom: var(--space-md); + } + + .padding-y-lg\@xl { + padding-top: var(--space-lg); + padding-bottom: var(--space-lg); + } + + .padding-y-xl\@xl { + padding-top: var(--space-xl); + padding-bottom: var(--space-xl); + } + + .padding-y-xxl\@xl { + padding-top: var(--space-xxl); + padding-bottom: var(--space-xxl); + } + + .padding-y-xxxl\@xl { + padding-top: var(--space-xxxl); + padding-bottom: var(--space-xxxl); + } + + .padding-y-xxxxl\@xl { + padding-top: var(--space-xxxxl); + padding-bottom: var(--space-xxxxl); + } + + .padding-y-0\@xl { + padding-top: 0; + padding-bottom: 0; + } + + .padding-y-component\@xl { + padding-top: var(--component-padding); + padding-bottom: var(--component-padding); + } + } + .text-center\@xl { + text-align: center; + } + + .text-left\@xl { + text-align: left; + } + + .text-right\@xl { + text-align: right; + } + + .text-justify\@xl { + text-align: justify; + } + + @supports (--css: variables) { + .text-xs\@xl { + font-size: var(--text-xs, 0.694em); + } + + .text-sm\@xl { + font-size: var(--text-sm, 0.833em); + } + + .text-base\@xl { + font-size: 1em; + } + + .text-md\@xl { + font-size: var(--text-md, 1.2em); + } + + .text-lg\@xl { + font-size: var(--text-lg, 1.44em); + } + + .text-xl\@xl { + font-size: var(--text-xl, 1.728em); + } + + .text-xxl\@xl { + font-size: var(--text-xxl, 2.074em); + } + + .text-xxxl\@xl { + font-size: var(--text-xxxl, 2.488em); + } + + .text-xxxxl\@xl { + font-size: var(--text-xxxxl, 2.985em); + } + } + .hide\@xl { + display: none !important; + } +} +@media not all and (min-width: 90rem) { + .has-margin\@xl { + margin: 0 !important; + } + + .has-padding\@xl { + padding: 0 !important; + } + + .display\@xl { + display: none !important; + } +} +:root, [data-theme=default] { + --color-primary-darker:hsl(220, 90%, 42%); + --color-primary-darker-h:220; + --color-primary-darker-s:90%; + --color-primary-darker-l:42%; + --color-primary-dark:hsl(220, 90%, 49%); + --color-primary-dark-h:220; + --color-primary-dark-s:90%; + --color-primary-dark-l:49%; + --color-primary:hsl(220, 90%, 56%); + --color-primary-h:220; + --color-primary-s:90%; + --color-primary-l:56%; + --color-primary-light:hsl(220, 90%, 63%); + --color-primary-light-h:220; + --color-primary-light-s:90%; + --color-primary-light-l:63%; + --color-primary-lighter:hsl(220, 90%, 70%); + --color-primary-lighter-h:220; + --color-primary-lighter-s:90%; + --color-primary-lighter-l:70%; + --color-accent-darker:hsl(349, 75%, 36%); + --color-accent-darker-h:349; + --color-accent-darker-s:75%; + --color-accent-darker-l:36%; + --color-accent-dark:hsl(349, 75%, 44%); + --color-accent-dark-h:349; + --color-accent-dark-s:75%; + --color-accent-dark-l:44%; + --color-accent:hsl(349, 75%, 51%); + --color-accent-h:349; + --color-accent-s:75%; + --color-accent-l:51%; + --color-accent-light:hsl(349, 75%, 59%); + --color-accent-light-h:349; + --color-accent-light-s:75%; + --color-accent-light-l:59%; + --color-accent-lighter:hsl(349, 75%, 67%); + --color-accent-lighter-h:349; + --color-accent-lighter-s:75%; + --color-accent-lighter-l:67%; + --color-black:hsl(240, 8%, 12%); + --color-black-h:240; + --color-black-s:8%; + --color-black-l:12%; + --color-white:hsl(0, 0%, 100%); + --color-white-h:0; + --color-white-s:0%; + --color-white-l:100%; + --color-success-darker:hsl(94, 48%, 42%); + --color-success-darker-h:94; + --color-success-darker-s:48%; + --color-success-darker-l:42%; + --color-success-dark:hsl(94, 48%, 48%); + --color-success-dark-h:94; + --color-success-dark-s:48%; + --color-success-dark-l:48%; + --color-success:hsl(94, 48%, 56%); + --color-success-h:94; + --color-success-s:48%; + --color-success-l:56%; + --color-success-light:hsl(94, 48%, 65%); + --color-success-light-h:94; + --color-success-light-s:48%; + --color-success-light-l:65%; + --color-success-lighter:hsl(94, 48%, 74%); + --color-success-lighter-h:94; + --color-success-lighter-s:48%; + --color-success-lighter-l:74%; + --color-error-darker:hsl(349, 75%, 36%); + --color-error-darker-h:349; + --color-error-darker-s:75%; + --color-error-darker-l:36%; + --color-error-dark:hsl(349, 75%, 44%); + --color-error-dark-h:349; + --color-error-dark-s:75%; + --color-error-dark-l:44%; + --color-error:hsl(349, 75%, 51%); + --color-error-h:349; + --color-error-s:75%; + --color-error-l:51%; + --color-error-light:hsl(349, 75%, 59%); + --color-error-light-h:349; + --color-error-light-s:75%; + --color-error-light-l:59%; + --color-error-lighter:hsl(349, 75%, 67%); + --color-error-lighter-h:349; + --color-error-lighter-s:75%; + --color-error-lighter-l:67%; + --color-warning-darker:hsl(46, 100%, 47%); + --color-warning-darker-h:46; + --color-warning-darker-s:100%; + --color-warning-darker-l:47%; + --color-warning-dark:hsl(46, 100%, 50%); + --color-warning-dark-h:46; + --color-warning-dark-s:100%; + --color-warning-dark-l:50%; + --color-warning:hsl(46, 100%, 61%); + --color-warning-h:46; + --color-warning-s:100%; + --color-warning-l:61%; + --color-warning-light:hsl(46, 100%, 71%); + --color-warning-light-h:46; + --color-warning-light-s:100%; + --color-warning-light-l:71%; + --color-warning-lighter:hsl(46, 100%, 80%); + --color-warning-lighter-h:46; + --color-warning-lighter-s:100%; + --color-warning-lighter-l:80%; + --color-bg:hsl(0, 0%, 100%); + --color-bg-h:0; + --color-bg-s:0%; + --color-bg-l:100%; + --color-contrast-lower:hsl(0, 0%, 95%); + --color-contrast-lower-h:0; + --color-contrast-lower-s:0%; + --color-contrast-lower-l:95%; + --color-contrast-low:hsl(240, 1%, 83%); + --color-contrast-low-h:240; + --color-contrast-low-s:1%; + --color-contrast-low-l:83%; + --color-contrast-medium:hsl(240, 1%, 48%); + --color-contrast-medium-h:240; + --color-contrast-medium-s:1%; + --color-contrast-medium-l:48%; + --color-contrast-high:hsl(240, 4%, 20%); + --color-contrast-high-h:240; + --color-contrast-high-s:4%; + --color-contrast-high-l:20%; + --color-contrast-higher:hsl(240, 8%, 12%); + --color-contrast-higher-h:240; + --color-contrast-higher-s:8%; + --color-contrast-higher-l:12%; +} + +@supports (--css: variables) { + @media (min-width: 64rem) { + :root { + --space-unit: 1.25em; + } + } +} +:root { + --radius: 0.25em; +} + +:root { + --font-primary: system-ui, sans-serif; + --text-base-size: 1em; + --text-scale-ratio: 1.2; + --text-xs: calc((1em / var(--text-scale-ratio)) / var(--text-scale-ratio)); + --text-sm: calc(var(--text-xs) * var(--text-scale-ratio)); + --text-md: calc(var(--text-sm) * var(--text-scale-ratio) * var(--text-scale-ratio)); + --text-lg: calc(var(--text-md) * var(--text-scale-ratio)); + --text-xl: calc(var(--text-lg) * var(--text-scale-ratio)); + --text-xxl: calc(var(--text-xl) * var(--text-scale-ratio)); + --text-xxxl: calc(var(--text-xxl) * var(--text-scale-ratio)); + --text-xxxxl: calc(var(--text-xxxl) * var(--text-scale-ratio)); + --body-line-height: 1.4; + --heading-line-height: 1.2; + --font-primary-capital-letter: 1; +} + +@supports (--css: variables) { + @media (min-width: 64rem) { + :root { + --text-base-size: 1.25em; + --text-scale-ratio: 1.25; + } + } +} +h1, h2, h3, h4 { + font-weight: 600; +} + +mark { + background-color: hsla(var(--color-accent-h), var(--color-accent-s), var(--color-accent-l), 0.2); + color: inherit; +} + +.text-component { + --line-height-multiplier: 1; + --text-vspace-multiplier: 1; +} +.text-component blockquote { + padding-left: 1em; + border-left: 4px solid var(--color-contrast-low); +} +.text-component hr { + background: var(--color-contrast-low); + height: 1px; +} +.text-component figcaption { + font-size: var(--text-sm); + color: var(--color-contrast-medium); +} + +.article { + --body-line-height: 1.58; + --text-vspace-multiplier: 1.2; +} + +:root { + --btn-font-size: 1em; + --btn-font-size-sm: calc(var(--btn-font-size) - 0.2em); + --btn-font-size-md: calc(var(--btn-font-size) + 0.2em); + --btn-font-size-lg: calc(var(--btn-font-size) + 0.4em); + --btn-padding-x: var(--space-sm); + --btn-padding-y: var(--space-xs); + --btn-radius: 0.25em; +} + +.btn { + box-shadow: var(--shadow-xs); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transition: 0.3s; +} +.btn:hover { + cursor: pointer; + box-shadow: var(--shadow-sm); +} +.btn:focus { + outline: none; + box-shadow: 0px 0px 0px 2px hsla(var(--color-contrast-higher-h), var(--color-contrast-higher-s), var(--color-contrast-higher-l), 0.15); +} +.btn:active { + transform: translateY(2px); +} + +.btn--primary { + background-color: var(--color-primary); + color: var(--color-white); +} +.btn--primary:hover { + background-color: var(--color-primary-dark); +} +.btn--primary:focus { + box-shadow: 0px 0px 0px 2px hsla(var(--color-primary-h), var(--color-primary-s), var(--color-primary-l), 0.2); +} + +.btn--subtle { + background-color: var(--color-contrast-lower); + color: var(--color-contrast-higher); +} + +.btn--accent { + background-color: var(--color-accent); + color: var(--color-white); +} +.btn--accent:hover { + background-color: var(--color-accent-dark); +} +.btn--accent:focus { + box-shadow: 0px 0px 0px 2px hsla(var(--color-accent-h), var(--color-accent-s), var(--color-accent-l), 0.2); +} + +.btn--disabled { + opacity: 0.6; + cursor: not-allowed; +} + +:root { + --form-control-padding-x: var(--space-sm); + --form-control-padding-y: var(--space-xs); + --form-control-radius: 0.25em; +} + +.form-control { + background-color: var(--color-bg); + border: 2px solid var(--color-contrast-low); + transition: 0.3s; +} +.form-control::placeholder { + opacity: 1; + color: var(--color-contrast-medium); +} +.form-control:focus { + outline: none; + border-color: var(--color-primary); + box-shadow: 0 0 0 2px hsla(var(--color-primary-h), var(--color-primary-s), var(--color-primary-l), 0.2); +} + +.form-control[aria-invalid=true] { + border-color: var(--color-error); +} +.form-control[aria-invalid=true]:focus { + box-shadow: 0 0 0 2px hsla(var(--color-error-h), var(--color-error-s), var(--color-error-l), 0.2); +} + +.form-control[disabled], .form-control[readonly] { + cursor: not-allowed; +} + +/*# sourceMappingURL=codyframe.css.map */ diff --git a/src/server/wwwroot/codyframe.css.map b/src/server/wwwroot/codyframe.css.map new file mode 100644 index 0000000..81d518f --- /dev/null +++ b/src/server/wwwroot/codyframe.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["codyframe/base/_reset.scss","codyframe/base/_colors.scss","codyframe/base/_spacing.scss","codyframe/base/_grid-layout.scss","codyframe/base/_mixins.scss","codyframe/base/_breakpoints.scss","codyframe/base/_shared-styles.scss","codyframe/base/_typography.scss","codyframe/base/_icons.scss","codyframe/base/_buttons.scss","codyframe/base/_forms.scss","codyframe/base/_z-index.scss","codyframe/base/_visibility.scss","codyframe/base/_accessibility.scss","codyframe/base/_util.scss","codyframe/custom-style/_colors.scss","codyframe/custom-style/_spacing.scss","codyframe/custom-style/_shared-styles.scss","codyframe/custom-style/_typography.scss","codyframe/custom-style/_buttons.scss","codyframe/custom-style/_forms.scss"],"names":[],"mappings":"AACE;EACE;;;AAGF;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAaE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;EAEE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AC/EF;EACE;EACA;;;ACDF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACVF;EACE;EACA;EACA;;;AASF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;IACE;;;;AAKN;EACE;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;;;EAIJ;IAA+C;;;EAC/C;IAA+C;;;EAC/C;IAA+C;;;EAC/C;IAA+C;;;EAC/C;IAA+C;;;EAC/C;IAA+C;;;EAC/C;IAA+C;;;EAC/C;IAA+C;;;EAC/C;IAA+C;;;EAC/C;IAA+C;;;EAC/C;IAA+C;;;AAGjD;ECgFA;EACA;EACA;;;AD7EE;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;;;AAIA;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AE7EF;EFmFE;ICuDJ;IACA;IACA;;;EDpDM;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAIJ;IACE;IACA;IACA;;;EAIA;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EAIJ;IACE;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;;AEtHjC;EFmFE;ICuDJ;IACA;IACA;;;EDpDM;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAIJ;IACE;IACA;IACA;;;EAIA;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EAIJ;IACE;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;;AEtHjC;EFmFE;ICuDJ;IACA;IACA;;;EDpDM;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAIJ;IACE;IACA;IACA;;;EAIA;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EAIJ;IACE;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;;AEtHjC;EFmFE;ICuDJ;IACA;IACA;;;EDpDM;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAIJ;IACE;IACA;IACA;;;EAIA;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EAIJ;IACE;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;;AEtHjC;EFmFE;ICuDJ;IACA;IACA;;;EDpDM;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAFF;IACE;IACA;;;EAIJ;IACE;IACA;IACA;;;EAIA;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EADF;IACE;;;EAIJ;IACE;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;;AGjInC;EAEE;EACA;EACA;EAGA;AAAA;EAEA;AAAA;AAAA;EAGA;AAAA;AAAA;EAGA;AAAA;AAAA;AAAA;EAIA;AAAA;AAAA;AAAA;AAAA;EAQA;EACA;EACA;EACA;EACA;;;AC/BF;EAEE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AASF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAUA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;;AAKJ;EACE;EACA;;;AFtHA;EE0HA;AAAA;IAEE;;EAEA;AAAA;IACE;;;EAIJ;IACE;IACA;;;EAGF;IACE;IACA;;;AF1IF;EEgJA;IACE;;EAEA;IACE;;;EAIJ;IACE;;;EAGF;IACE;;;EAGF;IACE;;;AC5KJ;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AAEd;EACE;;;AAGF;EACE;IACE;;EAEF;IACE;;;AAOJ;EACE;EACA;;;ACrDF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AAGX;EAAa;;;ACtBb;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAIF;EACE;EACA;EACA;EAGA;EACA;;;AAGF;EACE;EACA;;;AAKA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACpDJ;EACE;EACA;EACA;EACA;;;ACJF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAIA;EACE;;;AAIJ;EACE;IACE;;;ACpBJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACHF;EAAQ;;;AACR;EAAe;;;AACf;EAAa;;;AACb;EAAe;;;AACf;EAAuB;;;AACvB;EAAY;;;AACZ;EAAoB;;;AACpB;EAAe;EAAyB;;;AAGxC;EAAa;;;AACb;EAAiB;;;AACjB;EAAgB;;;AAQhB;EAAiB;;;AACjB;EAAe;;;AACf;EAAkB;;;AAClB;EAAmB;;;AAQnB;EAAgB;;;AAChB;EAAe;;;AACf;EAAa;;;AACb;EAAkB;;;AAQlB;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AAQX;EAAS;;;AACT;EAAgB;;;AAChB;EAAU;;;AAQV;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAEhB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AACpB;EAAoB;;;AAEpB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AAEvB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AAEtB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AAErB;EAAkB;EAAiC;;;AACnD;EAAkB;EAAgC;;;AAClD;EAAkB;EAA+B;;;AACjD;EAAkB;EAA8B;;;AAChD;EAAkB;EAA8B;;;AAChD;EAAkB;EAA8B;;;AAChD;EAAkB;EAA8B;;;AAChD;EAAkB;EAA8B;;;AAChD;EAAkB;EAA+B;;;AACjD;EAAkB;EAAgC;;;AAClD;EAAkB;EAAiC;;;AACnD;EAAkB;EAAmB;;;AACrC;EAAkB;EAAgB;;;AAElC;EAAkB;EAAgC;;;AAClD;EAAkB;EAA+B;;;AACjD;EAAkB;EAA8B;;;AAChD;EAAkB;EAA6B;;;AAC/C;EAAkB;EAA6B;;;AAC/C;EAAkB;EAA6B;;;AAC/C;EAAkB;EAA6B;;;AAC/C;EAAkB;EAA6B;;;AAC/C;EAAkB;EAA8B;;;AAChD;EAAkB;EAA+B;;;AACjD;EAAkB;EAAgC;;;AAClD;EAAkB;EAAkB;;;AACpC;EAAkB;EAAe;;;AAQjC;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAqB;;;AAErB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAyB;;;AAEzB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAA4B;;;AAE5B;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAAuB;;;AACvB;EAA2B;;;AAE3B;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAA0B;;;AAE1B;EAAmB;EAAkC;;;AACrD;EAAmB;EAAiC;;;AACpD;EAAmB;EAAgC;;;AACnD;EAAmB;EAA+B;;;AAClD;EAAmB;EAA+B;;;AAClD;EAAmB;EAA+B;;;AAClD;EAAmB;EAA+B;;;AAClD;EAAmB;EAA+B;;;AAClD;EAAmB;EAAgC;;;AACnD;EAAmB;EAAiC;;;AACpD;EAAmB;EAAkC;;;AACrD;EAAmB;EAAiB;;;AACpC;EAAuB;EAAwC;;;AAE/D;EAAmB;EAAiC;;;AACpD;EAAmB;EAAgC;;;AACnD;EAAmB;EAA+B;;;AAClD;EAAmB;EAA8B;;;AACjD;EAAmB;EAA8B;;;AACjD;EAAmB;EAA8B;;;AACjD;EAAmB;EAA8B;;;AACjD;EAAmB;EAA8B;;;AACjD;EAAmB;EAA+B;;;AAClD;EAAmB;EAAgC;;;AACnD;EAAmB;EAAiC;;;AACpD;EAAmB;EAAgB;;;AACnC;EAAuB;EAAuC;;;AAQ9D;EAAkB;;;AAClB;EAAkB;;;AAClB;EAAkB;;;AAClB;EAAkB;;;AAQlB;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AASF;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AACd;EAAc;;;AAQd;EAAmB;;;AACnB;EAAmB;;;AAQnB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AAQrB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAiB;;;AACjB;EAAyB;;;AAQzB;EAAe;;;AAQf;EACE;EACA;;;AASF;EAAgB;;;AAQhB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAQhB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AAQxB;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AAQf;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EAAuB;;;AACvB;EAAuB;;;AAQvB;EAA2B;;;AAQ3B;EAAkB;;;AAClB;EAAkB;;;AAQlB;EAAuB;;;AACvB;EAAuB;;;AAQvB;EAAoB;;;AACpB;EAAoB;;;AAQpB;EAAoB;;;AAEpB;EAAiB;;;AACjB;EAAY;;;AACZ;EAAwB;;;AACxB;EAAsB;;;AACtB;EAAyB;;;AACzB;EAAuB;;;AACvB;EAAyB;;;AACzB;EAAwB;;;AACxB;EAAsB;;;AACtB;EAAiB;;;AACjB;EAAuB;;;AACvB;EAAyB;;;AACzB;EAAuB;;;AACvB;EAAqB;;;AACrB;EAAgB;;;AAChB;EAAsB;;;AACtB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAsB;;;AACtB;EAAiB;;;AACjB;EAAuB;;;AACvB;EAAyB;;;AACzB;EAAwB;;;AACxB;EAAsB;;;AACtB;EAAiB;;;AACjB;EAAuB;;;AACvB;EAAyB;;;AACzB;EAAsB;;;AACtB;EAAoB;;;AACpB;EAAe;;;AACf;EAAqB;;;AACrB;EAAuB;;;AACvB;EAAe;;;AACf;EAAe;;;AAEf;EACE;IAAsB;;;EACtB;IAAsB;;;EACtB;IAAsB;;;EACtB;IAAsB;;;EACtB;IAAsB;;;EACtB;IAAsB;;;EACtB;IAAsB;;;EACtB;IAAsB;;;EACtB;IAAsB;;;EACtB;IAAsB;;;AASxB;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AACf;EAAe;;;AAQf;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAQhB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AAQnB;EAAoB;;;AACpB;EAAoB;;;AAQpB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AAOf;EACE;;;ATjqBJ;ESirBI;IACE;;;ATlrBN;ESirBI;IACE;;;ATlrBN;ESirBI;IACE;;;ATlrBN;ESirBI;IACE;;;AAYR;EAAoB;;;AACpB;EAAoB;;;AAQpB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAqB;;;AAErB;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAQZ;EAAkB;;;AAClB;EAAmB;;;AACnB;EAAyB;;;AACzB;EAAmB;;;AAEnB;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;AAQxB;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAsB;;;AAGtB;EAAsB;;;AAQtB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAChB;EAAgB;;;AAahB;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAQF;EACE;;;AADF;EACE;;;AAUJ;EAAe;;;AACf;EAAe;;;AAEf;EACE;EACA;EACA;;;AAUF;EAAqB;;;AAErB;EAAU;;;AACV;EAAc;;;AACd;EAAiB;;;AACjB;EAAe;;;AACf;EAAgB;;;AAChB;EAAY;;;AACZ;EAAY;;;AACZ;EAAY;;;AAEZ;EAAa;;;AACb;EAAyB;;;AACzB;EAAuB;;;AACvB;EAA0B;;;AAC1B;EAAwB;;;AACxB;EAA0B;;;AAC1B;EAAyB;;;AACzB;EAAuB;;;AACvB;EAAkB;;;AAClB;EAAwB;;;AACxB;EAA0B;;;AAC1B;EAAwB;;;AACxB;EAAsB;;;AACtB;EAAiB;;;AACjB;EAAuB;;;AACvB;EAAyB;;;AACzB;EAAyB;;;AACzB;EAAuB;;;AACvB;EAAkB;;;AAClB;EAAwB;;;AACxB;EAA0B;;;AAC1B;EAAyB;;;AACzB;EAAuB;;;AACvB;EAAkB;;;AAClB;EAAwB;;;AACxB;EAA0B;;;AAC1B;EAAuB;;;AACvB;EAAqB;;;AACrB;EAAgB;;;AAChB;EAAsB;;;AACtB;EAAwB;;;AACxB;EAAgB;;;AAChB;EAAgB;;;AAEhB;EACE;IAAuB;;;EACvB;IAAuB;;;EACvB;IAAuB;;;EACvB;IAAuB;;;EACvB;IAAuB;;;EACvB;IAAuB;;;EACvB;IAAuB;;;EACvB;IAAuB;;;EACvB;IAAuB;;;EACvB;IAAuB;;;AASzB;EAAa;;;AACb;EAAa;;;AACb;EAAa;;;AACb;EAAe;;;AACf;EAAe;;;AAQf;EAAa;;;AACb;EAAa;;;AACb;EAAa;;;AACb;EAAa;;;AACb;EAAa;;;AAQb;EAAsB;;;AAEtB;EAAkB;;;AAClB;EAAc;;;AACd;EAAM;;;AACN;EAAqB;;;AACrB;EAAmB;;;AACnB;EAAsB;;;AACtB;EAAoB;;;AACpB;EAAsB;;;AACtB;EAAqB;;;AACrB;EAAmB;;;AACnB;EAAc;;;AACd;EAAoB;;;AACpB;EAAsB;;;AACtB;EAAoB;;;AACpB;EAAkB;;;AAClB;EAAa;;;AACb;EAAmB;;;AACnB;EAAqB;;;AACrB;EAAqB;;;AACrB;EAAmB;;;AACnB;EAAc;;;AACd;EAAoB;;;AACpB;EAAsB;;;AACtB;EAAqB;;;AACrB;EAAmB;;;AACnB;EAAc;;;AACd;EAAoB;;;AACpB;EAAsB;;;AACtB;EAAmB;;;AACnB;EAAiB;;;AACjB;EAAY;;;AACZ;EAAkB;;;AAClB;EAAoB;;;AACpB;EAAY;;;AACZ;EAAY;;;AAEZ;EACE;IAAmB;;;EACnB;IAAmB;;;EACnB;IAAmB;;;EACnB;IAAmB;;;EACnB;IAAmB;;;EACnB;IAAmB;;;EACnB;IAAmB;;;EACnB;IAAmB;;;EACnB;IAAmB;;;EACnB;IAAmB;;;AAGrB;EAAY;;;AACZ;EAAa;;;AACb;EAAgB;;;AAQhB;EAAoB;;;AACpB;EAAoB;;;AAQpB;EAAW;;;AACX;EAAkB;;;AAClB;EAAkB;;;AAQlB;EAAkB;;;AAClB;EAAkB;;;AAQlB;EAAU;;;AACV;EAAU;;;AACV;EAAU;;;AT1+BR;ESq/BE;IAAwB;;;EACxB;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAA+B;;;EAC/B;IAAuC;;;EACvC;IAA4B;;;EAC5B;IAAoC;;;EACpC;IAA+B;IAAyB;;;EAExD;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAAiC;;;EACjC;IAA+B;;;EAG/B;IAAiC;;;EACjC;IAA+B;;;EAC/B;IAAkC;;;EAClC;IAAmC;;;EAGnC;IAAgC;;;EAChC;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAAkC;;;EAGlC;IAA4B;;;EAC5B;IAA4B;;;EAC5B;IAA4B;;;EAG5B;IAAyB;;;EACzB;IAAgC;;;EAChC;IAA0B;;;EAG1B;IACE;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAEhC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IAEpC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IAEvC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IAEtC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IAErC;MAAkC;MAAiC;;;IACnE;MAAkC;MAAgC;;;IAClE;MAAkC;MAA+B;;;IACjE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA+B;;;IACjE;MAAkC;MAAgC;;;IAClE;MAAkC;MAAiC;;;IACnE;MAAkC;MAAmB;;;IACrD;MAAkC;MAAgB;;;IAElD;MAAkC;MAAgC;;;IAClE;MAAkC;MAA+B;;;IACjE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA8B;;;IAChE;MAAkC;MAA+B;;;IACjE;MAAkC;MAAgC;;;IAClE;MAAkC;MAAkB;;;IACpD;MAAkC;MAAe;;;EAInD;IACE;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAqC;;;IAErC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAyC;;;IAEzC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAA4C;;;IAE5C;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAA2C;;;IAE3C;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAA0C;;;IAE1C;MAAmC;MAAkC;;;IACrE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgC;;;IACnE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAAgC;;;IACnE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAkC;;;IACrE;MAAmC;MAAiB;;;IACpD;MAAuC;MAAwC;;;IAE/E;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgC;;;IACnE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA+B;;;IAClE;MAAmC;MAAgC;;;IACnE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgB;;;IACnD;MAAuC;MAAuC;;;EAIhF;IAA+B;;;EAC/B;IAA+B;;;EAC/B;IAA+B;;;EAC/B;IAAiC;;;EAGjC;IACE;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA8B;;;EAIhC;IAAwB;;;ATzvC1B;ES6vCE;IAA8B;;;EAC9B;IAA+B;;;EAC/B;IAA2B;;;AT7vC7B;ESq/BE;IAAwB;;;EACxB;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAA+B;;;EAC/B;IAAuC;;;EACvC;IAA4B;;;EAC5B;IAAoC;;;EACpC;IAA+B;IAAyB;;;EAExD;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAAiC;;;EACjC;IAA+B;;;EAG/B;IAAiC;;;EACjC;IAA+B;;;EAC/B;IAAkC;;;EAClC;IAAmC;;;EAGnC;IAAgC;;;EAChC;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAAkC;;;EAGlC;IAA4B;;;EAC5B;IAA4B;;;EAC5B;IAA4B;;;EAG5B;IAAyB;;;EACzB;IAAgC;;;EAChC;IAA0B;;;EAG1B;IACE;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAEhC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IAEpC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IAEvC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IAEtC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IAErC;MAAkC;MAAiC;;;IACnE;MAAkC;MAAgC;;;IAClE;MAAkC;MAA+B;;;IACjE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA+B;;;IACjE;MAAkC;MAAgC;;;IAClE;MAAkC;MAAiC;;;IACnE;MAAkC;MAAmB;;;IACrD;MAAkC;MAAgB;;;IAElD;MAAkC;MAAgC;;;IAClE;MAAkC;MAA+B;;;IACjE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA8B;;;IAChE;MAAkC;MAA+B;;;IACjE;MAAkC;MAAgC;;;IAClE;MAAkC;MAAkB;;;IACpD;MAAkC;MAAe;;;EAInD;IACE;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAqC;;;IAErC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAyC;;;IAEzC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAA4C;;;IAE5C;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAA2C;;;IAE3C;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAA0C;;;IAE1C;MAAmC;MAAkC;;;IACrE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgC;;;IACnE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAAgC;;;IACnE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAkC;;;IACrE;MAAmC;MAAiB;;;IACpD;MAAuC;MAAwC;;;IAE/E;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgC;;;IACnE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA+B;;;IAClE;MAAmC;MAAgC;;;IACnE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgB;;;IACnD;MAAuC;MAAuC;;;EAIhF;IAA+B;;;EAC/B;IAA+B;;;EAC/B;IAA+B;;;EAC/B;IAAiC;;;EAGjC;IACE;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA8B;;;EAIhC;IAAwB;;;ATzvC1B;ES6vCE;IAA8B;;;EAC9B;IAA+B;;;EAC/B;IAA2B;;;AT7vC7B;ESq/BE;IAAwB;;;EACxB;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAA+B;;;EAC/B;IAAuC;;;EACvC;IAA4B;;;EAC5B;IAAoC;;;EACpC;IAA+B;IAAyB;;;EAExD;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAAiC;;;EACjC;IAA+B;;;EAG/B;IAAiC;;;EACjC;IAA+B;;;EAC/B;IAAkC;;;EAClC;IAAmC;;;EAGnC;IAAgC;;;EAChC;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAAkC;;;EAGlC;IAA4B;;;EAC5B;IAA4B;;;EAC5B;IAA4B;;;EAG5B;IAAyB;;;EACzB;IAAgC;;;EAChC;IAA0B;;;EAG1B;IACE;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAEhC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IAEpC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IAEvC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IAEtC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IAErC;MAAkC;MAAiC;;;IACnE;MAAkC;MAAgC;;;IAClE;MAAkC;MAA+B;;;IACjE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA+B;;;IACjE;MAAkC;MAAgC;;;IAClE;MAAkC;MAAiC;;;IACnE;MAAkC;MAAmB;;;IACrD;MAAkC;MAAgB;;;IAElD;MAAkC;MAAgC;;;IAClE;MAAkC;MAA+B;;;IACjE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA8B;;;IAChE;MAAkC;MAA+B;;;IACjE;MAAkC;MAAgC;;;IAClE;MAAkC;MAAkB;;;IACpD;MAAkC;MAAe;;;EAInD;IACE;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAqC;;;IAErC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAyC;;;IAEzC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAA4C;;;IAE5C;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAA2C;;;IAE3C;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAA0C;;;IAE1C;MAAmC;MAAkC;;;IACrE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgC;;;IACnE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAAgC;;;IACnE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAkC;;;IACrE;MAAmC;MAAiB;;;IACpD;MAAuC;MAAwC;;;IAE/E;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgC;;;IACnE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA+B;;;IAClE;MAAmC;MAAgC;;;IACnE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgB;;;IACnD;MAAuC;MAAuC;;;EAIhF;IAA+B;;;EAC/B;IAA+B;;;EAC/B;IAA+B;;;EAC/B;IAAiC;;;EAGjC;IACE;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA8B;;;EAIhC;IAAwB;;;ATzvC1B;ES6vCE;IAA8B;;;EAC9B;IAA+B;;;EAC/B;IAA2B;;;AT7vC7B;ESq/BE;IAAwB;;;EACxB;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAA+B;;;EAC/B;IAAuC;;;EACvC;IAA4B;;;EAC5B;IAAoC;;;EACpC;IAA+B;IAAyB;;;EAExD;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAAiC;;;EACjC;IAA+B;;;EAG/B;IAAiC;;;EACjC;IAA+B;;;EAC/B;IAAkC;;;EAClC;IAAmC;;;EAGnC;IAAgC;;;EAChC;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAAkC;;;EAGlC;IAA4B;;;EAC5B;IAA4B;;;EAC5B;IAA4B;;;EAG5B;IAAyB;;;EACzB;IAAgC;;;EAChC;IAA0B;;;EAG1B;IACE;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAEhC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IAEpC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IAEvC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IAEtC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IAErC;MAAkC;MAAiC;;;IACnE;MAAkC;MAAgC;;;IAClE;MAAkC;MAA+B;;;IACjE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA+B;;;IACjE;MAAkC;MAAgC;;;IAClE;MAAkC;MAAiC;;;IACnE;MAAkC;MAAmB;;;IACrD;MAAkC;MAAgB;;;IAElD;MAAkC;MAAgC;;;IAClE;MAAkC;MAA+B;;;IACjE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA8B;;;IAChE;MAAkC;MAA+B;;;IACjE;MAAkC;MAAgC;;;IAClE;MAAkC;MAAkB;;;IACpD;MAAkC;MAAe;;;EAInD;IACE;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAqC;;;IAErC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAyC;;;IAEzC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAA4C;;;IAE5C;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAA2C;;;IAE3C;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAA0C;;;IAE1C;MAAmC;MAAkC;;;IACrE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgC;;;IACnE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAAgC;;;IACnE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAkC;;;IACrE;MAAmC;MAAiB;;;IACpD;MAAuC;MAAwC;;;IAE/E;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgC;;;IACnE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA+B;;;IAClE;MAAmC;MAAgC;;;IACnE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgB;;;IACnD;MAAuC;MAAuC;;;EAIhF;IAA+B;;;EAC/B;IAA+B;;;EAC/B;IAA+B;;;EAC/B;IAAiC;;;EAGjC;IACE;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA8B;;;EAIhC;IAAwB;;;ATzvC1B;ES6vCE;IAA8B;;;EAC9B;IAA+B;;;EAC/B;IAA2B;;;AT7vC7B;ESq/BE;IAAwB;;;EACxB;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAA+B;;;EAC/B;IAAuC;;;EACvC;IAA4B;;;EAC5B;IAAoC;;;EACpC;IAA+B;IAAyB;;;EAExD;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAAiC;;;EACjC;IAA+B;;;EAG/B;IAAiC;;;EACjC;IAA+B;;;EAC/B;IAAkC;;;EAClC;IAAmC;;;EAGnC;IAAgC;;;EAChC;IAA+B;;;EAC/B;IAA6B;;;EAC7B;IAAkC;;;EAGlC;IAA4B;;;EAC5B;IAA4B;;;EAC5B;IAA4B;;;EAG5B;IAAyB;;;EACzB;IAAgC;;;EAChC;IAA0B;;;EAG1B;IACE;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAChC;MAAgC;;;IAEhC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IACpC;MAAoC;;;IAEpC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IAEvC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IAEtC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IAErC;MAAkC;MAAiC;;;IACnE;MAAkC;MAAgC;;;IAClE;MAAkC;MAA+B;;;IACjE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA+B;;;IACjE;MAAkC;MAAgC;;;IAClE;MAAkC;MAAiC;;;IACnE;MAAkC;MAAmB;;;IACrD;MAAkC;MAAgB;;;IAElD;MAAkC;MAAgC;;;IAClE;MAAkC;MAA+B;;;IACjE;MAAkC;MAA8B;;;IAChE;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA6B;;;IAC/D;MAAkC;MAA8B;;;IAChE;MAAkC;MAA+B;;;IACjE;MAAkC;MAAgC;;;IAClE;MAAkC;MAAkB;;;IACpD;MAAkC;MAAe;;;EAInD;IACE;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAiC;;;IACjC;MAAqC;;;IAErC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAqC;;;IACrC;MAAyC;;;IAEzC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAAwC;;;IACxC;MAA4C;;;IAE5C;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAAuC;;;IACvC;MAA2C;;;IAE3C;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAAsC;;;IACtC;MAA0C;;;IAE1C;MAAmC;MAAkC;;;IACrE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgC;;;IACnE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA+B;;;IAClE;MAAmC;MAAgC;;;IACnE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAkC;;;IACrE;MAAmC;MAAiB;;;IACpD;MAAuC;MAAwC;;;IAE/E;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgC;;;IACnE;MAAmC;MAA+B;;;IAClE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA8B;;;IACjE;MAAmC;MAA+B;;;IAClE;MAAmC;MAAgC;;;IACnE;MAAmC;MAAiC;;;IACpE;MAAmC;MAAgB;;;IACnD;MAAuC;MAAuC;;;EAIhF;IAA+B;;;EAC/B;IAA+B;;;EAC/B;IAA+B;;;EAC/B;IAAiC;;;EAGjC;IACE;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA6B;;;IAC7B;MAA8B;;;EAIhC;IAAwB;;;ATzvC1B;ES6vCE;IAA8B;;;EAC9B;IAA+B;;;EAC/B;IAA2B;;;ACtwCjC;EX8EE;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;EAAnH;EAAkE;EAAqB;EAA4B;;;AY7DrH;EXRI;IWSF;MAEI;;;;AC1BN;EAEE;;;ACIF;EAEE;EAGA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EAGA;;;AAGF;EbjBI;IakBF;MAEI;MACA;;;;AAKN;EACE;;;AAYF;EACE;EACA;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;;AC3EF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;;AAKJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAKJ;EACE;EACA;;;AClEF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;;AAEA;EACE;;;AAIJ;EACE","file":"codyframe.css"}
\ No newline at end of file diff --git a/src/server/wwwroot/codyframe.js b/src/server/wwwroot/codyframe.js new file mode 100644 index 0000000..68e22d7 --- /dev/null +++ b/src/server/wwwroot/codyframe.js @@ -0,0 +1,296 @@ +// Utility function +function Util () {}; + +/* + class manipulation functions +*/ +Util.hasClass = function(el, className) { + if (el.classList) return el.classList.contains(className); + else return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)')); +}; + +Util.addClass = function(el, className) { + var classList = className.split(' '); + if (el.classList) el.classList.add(classList[0]); + else if (!Util.hasClass(el, classList[0])) el.className += " " + classList[0]; + if (classList.length > 1) Util.addClass(el, classList.slice(1).join(' ')); +}; + +Util.removeClass = function(el, className) { + var classList = className.split(' '); + if (el.classList) el.classList.remove(classList[0]); + else if(Util.hasClass(el, classList[0])) { + var reg = new RegExp('(\\s|^)' + classList[0] + '(\\s|$)'); + el.className=el.className.replace(reg, ' '); + } + if (classList.length > 1) Util.removeClass(el, classList.slice(1).join(' ')); +}; + +Util.toggleClass = function(el, className, bool) { + if(bool) Util.addClass(el, className); + else Util.removeClass(el, className); +}; + +Util.setAttributes = function(el, attrs) { + for(var key in attrs) { + el.setAttribute(key, attrs[key]); + } +}; + +/* + DOM manipulation +*/ +Util.getChildrenByClassName = function(el, className) { + var children = el.children, + childrenByClass = []; + for (var i = 0; i < el.children.length; i++) { + if (Util.hasClass(el.children[i], className)) childrenByClass.push(el.children[i]); + } + return childrenByClass; +}; + +Util.is = function(elem, selector) { + if(selector.nodeType){ + return elem === selector; + } + + var qa = (typeof(selector) === 'string' ? document.querySelectorAll(selector) : selector), + length = qa.length, + returnArr = []; + + while(length--){ + if(qa[length] === elem){ + return true; + } + } + + return false; +}; + +/* + Animate height of an element +*/ +Util.setHeight = function(start, to, element, duration, cb) { + var change = to - start, + currentTime = null; + + var animateHeight = function(timestamp){ + if (!currentTime) currentTime = timestamp; + var progress = timestamp - currentTime; + var val = parseInt((progress/duration)*change + start); + element.style.height = val+"px"; + if(progress < duration) { + window.requestAnimationFrame(animateHeight); + } else { + cb(); + } + }; + + //set the height of the element before starting animation -> fix bug on Safari + element.style.height = start+"px"; + window.requestAnimationFrame(animateHeight); +}; + +/* + Smooth Scroll +*/ + +Util.scrollTo = function(final, duration, cb, scrollEl) { + var element = scrollEl || window; + var start = element.scrollTop || document.documentElement.scrollTop, + currentTime = null; + + if(!scrollEl) start = window.scrollY || document.documentElement.scrollTop; + + var animateScroll = function(timestamp){ + if (!currentTime) currentTime = timestamp; + var progress = timestamp - currentTime; + if(progress > duration) progress = duration; + var val = Math.easeInOutQuad(progress, start, final-start, duration); + element.scrollTo(0, val); + if(progress < duration) { + window.requestAnimationFrame(animateScroll); + } else { + cb && cb(); + } + }; + + window.requestAnimationFrame(animateScroll); +}; + +/* + Focus utility classes +*/ + +//Move focus to an element +Util.moveFocus = function (element) { + if( !element ) element = document.getElementsByTagName("body")[0]; + element.focus(); + if (document.activeElement !== element) { + element.setAttribute('tabindex','-1'); + element.focus(); + } +}; + +/* + Misc +*/ + +Util.getIndexInArray = function(array, el) { + return Array.prototype.indexOf.call(array, el); +}; + +Util.cssSupports = function(property, value) { + if('CSS' in window) { + return CSS.supports(property, value); + } else { + var jsProperty = property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase();}); + return jsProperty in document.body.style; + } +}; + +// merge a set of user options into plugin defaults +// https://gomakethings.com/vanilla-javascript-version-of-jquery-extend/ +Util.extend = function() { + // Variables + var extended = {}; + var deep = false; + var i = 0; + var length = arguments.length; + + // Check if a deep merge + if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) { + deep = arguments[0]; + i++; + } + + // Merge the object into the extended object + var merge = function (obj) { + for ( var prop in obj ) { + if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) { + // If deep merge and property is an object, merge properties + if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) { + extended[prop] = extend( true, extended[prop], obj[prop] ); + } else { + extended[prop] = obj[prop]; + } + } + } + }; + + // Loop through each object and conduct a merge + for ( ; i < length; i++ ) { + var obj = arguments[i]; + merge(obj); + } + + return extended; +}; + +// Check if Reduced Motion is enabled +Util.osHasReducedMotion = function() { + if(!window.matchMedia) return false; + var matchMediaObj = window.matchMedia('(prefers-reduced-motion: reduce)'); + if(matchMediaObj) return matchMediaObj.matches; + return false; // return false if not supported +}; + +/* + Polyfills +*/ +//Closest() method +if (!Element.prototype.matches) { + Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; +} + +if (!Element.prototype.closest) { + Element.prototype.closest = function(s) { + var el = this; + if (!document.documentElement.contains(el)) return null; + do { + if (el.matches(s)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + }; +} + +//Custom Event() constructor +if ( typeof window.CustomEvent !== "function" ) { + + function CustomEvent ( event, params ) { + params = params || { bubbles: false, cancelable: false, detail: undefined }; + var evt = document.createEvent( 'CustomEvent' ); + evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail ); + return evt; + } + + CustomEvent.prototype = window.Event.prototype; + + window.CustomEvent = CustomEvent; +} + +/* + Animation curves +*/ +Math.easeInOutQuad = function (t, b, c, d) { + t /= d/2; + if (t < 1) return c/2*t*t + b; + t--; + return -c/2 * (t*(t-2) - 1) + b; +}; + +Math.easeInQuart = function (t, b, c, d) { + t /= d; + return c*t*t*t*t + b; +}; + +Math.easeOutQuart = function (t, b, c, d) { + t /= d; + t--; + return -c * (t*t*t*t - 1) + b; +}; + +Math.easeInOutQuart = function (t, b, c, d) { + t /= d/2; + if (t < 1) return c/2*t*t*t*t + b; + t -= 2; + return -c/2 * (t*t*t*t - 2) + b; +}; + +Math.easeOutElastic = function (t, b, c, d) { + var s=1.70158;var p=d*0.7;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; +}; + + +/* JS Utility Classes */ +(function() { + // make focus ring visible only for keyboard navigation (i.e., tab key) + var focusTab = document.getElementsByClassName('js-tab-focus'); + function detectClick() { + if(focusTab.length > 0) { + resetFocusTabs(false); + window.addEventListener('keydown', detectTab); + } + window.removeEventListener('mousedown', detectClick); + }; + + function detectTab(event) { + if(event.keyCode !== 9) return; + resetFocusTabs(true); + window.removeEventListener('keydown', detectTab); + window.addEventListener('mousedown', detectClick); + }; + + function resetFocusTabs(bool) { + var outlineStyle = bool ? '' : 'none'; + for(var i = 0; i < focusTab.length; i++) { + focusTab[i].style.setProperty('outline', outlineStyle); + } + }; + window.addEventListener('mousedown', detectClick); +}());
\ No newline at end of file diff --git a/src/server/wwwroot/login.css b/src/server/wwwroot/login.css new file mode 100644 index 0000000..102af37 --- /dev/null +++ b/src/server/wwwroot/login.css @@ -0,0 +1,214 @@ +:root { + --form-control-padding-x: var(--space-sm); + --form-control-padding-y: var(--space-xs); + --form-control-radius: 0.25em; + --checkbox-radio-size: 1em; + --checkbox-radio-translate-y: 0.15em; + --checkbox-radio-gap: var(--space-xxxs); + --checkbox-radio-border-width: 2px; + --checkbox-radio-line-height: var(--body-line-height); + --radio-marker-size: 8px; + --checkbox-marker-size: 12px; + --checkbox-radius: 0.185em; +} +.form-control { + background-color: var(--color-bg); + border: 2px solid var(--color-contrast-low); + transition: 0.3s; +} +.form-control::placeholder { + opacity: 1; + color: var(--color-contrast-medium); +} +.form-control:focus { + outline: none; + border-color: var(--color-primary); + box-shadow: 0 0 0 2px alpha(var(--color-primary), 0.2); +} +.form-control[aria-invalid="true"] { + border-color: var(--color-error); +} +.form-control[aria-invalid="true"]:focus { + box-shadow: 0 0 0 2px alpha(var(--color-error), 0.2); +} +.form-control[disabled] { + filter: opacity(0.8); +} +.form-control[disabled], +.form-control[readonly] { + cursor: not-allowed; +} +.form-legend { + font-size: var(--text-md); +} +.form-label { + font-size: var(--text-sm); +} + +.radio, +.checkbox { + position: absolute; + margin: 0 !important; + padding: 0 !important; + opacity: 0; + height: 0; + width: 0; + pointer-events: none; +} +.radio + label, +.checkbox + label { + display: inline-block; + display: inline-flex; + align-items: baseline; + line-height: var(--checkbox-radio-line-height); + user-select: none; + cursor: pointer; +} +.radio + label::before, +.checkbox + label::before { + content: ""; + display: inline-block; + vertical-align: middle; + flex-shrink: 0; + width: var(--checkbox-radio-size); + height: var(--checkbox-radio-size); + background-color: var(--color-bg); + border-width: var(--checkbox-radio-border-width); + border-color: var(--color-contrast-low); + border-style: solid; + margin-right: var(--checkbox-radio-gap); + background-repeat: no-repeat; + background-position: center; + transition: transform 0.2s, border 0.2s; +} +.radio:not(:checked):not(:focus) + label:hover::before, +.checkbox:not(:checked):not(:focus) + label:hover::before { + border-color: var(--color-contrast-medium); +} +@supports (grid-area: auto) { + .radio + label::before, + .checkbox + label::before { + position: relative; + top: var(--checkbox-radio-translate-y); + } +} +.radio + label::before { + border-radius: 50%; +} +.checkbox + label::before { + border-radius: var(--checkbox-radius); +} +.radio:checked + label::before, +.checkbox:checked + label::before { + background-color: var(--color-primary); + box-shadow: none; + border-color: var(--color-primary); + transition: transform 0.2s; +} +.radio:active + label::before, +.checkbox:active + label::before { + transform: scale(0.8); + transition: transform 0.2s; +} +.radio:checked:active + label::before, +.checkbox:checked:active + label::before { + transform: none; + transition: none; +} +.radio:checked + label::before { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cg class='nc-icon-wrapper' fill='%23ffffff'%3E%3Ccircle cx='8' cy='8' r='8' fill='%23ffffff'%3E%3C/circle%3E%3C/g%3E%3C/svg%3E"); + background-size: var(--radio-marker-size); +} +.checkbox:checked + label::before { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cg class='nc-icon-wrapper' stroke-width='2' fill='%23ffffff' stroke='%23ffffff'%3E%3Cpolyline fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10' points='1,9 5,13 15,3 ' data-cap='butt'%3E%3C/polyline%3E%3C/g%3E%3C/svg%3E"); + background-size: var(--checkbox-marker-size); +} +.radio:checked:active + label::before, +.checkbox:checked:active + label::before, +.radio:focus + label::before, +.checkbox:focus + label::before { + border-color: var(--color-primary); + box-shadow: 0 0 0 3px alpha(var(--color-primary), 0.2); +} +.radio--bg + label, +.checkbox--bg + label { + padding: var(--space-xxxxs) var(--space-xxxs); + border-radius: var(--radius-md); + transition: background 0.2s; +} +.radio--bg + label:hover, +.checkbox--bg + label:hover { + background-color: var(--color-contrast-lower); +} +.radio--bg:active + label, +.checkbox--bg:active + label, +.radio--bg:focus + label, +.checkbox--bg:focus + label { + background-color: alpha(var(--color-primary), 0.1); +} +.alert { + padding: var(--space-xs) var(--space-sm); + background-color: alpha(var(--color-primary), 0.2); + border-radius: var(--radius-md); + color: var(--color-contrast-higher); + margin: var(--space-sm) 0; + position: absolute; + clip: rect(1px, 1px, 1px, 1px); + clip-path: inset(50%); +} +.alert__link { + color: inherit; + text-decoration: underline; +} +.alert__close-btn { + display: inline-block; + flex-shrink: 0; + margin-left: var(--space-sm); +} +.alert__close-btn .icon { + display: block; +} +.alert--success { + background-color: alpha(var(--color-success), 0.2); +} +.alert--error { + background-color: alpha(var(--color-error), 0.2); +} +.alert--warning { + background-color: alpha(var(--color-warning), 0.2); +} +.alert--is-visible { + position: static; + clip: auto; + clip-path: none; +} +.btn .btn__content-a { + display: inline-flex; +} +.btn .btn__content-b { + display: none; +} +.btn__content-a, .btn__content-b { + align-items: center; +} +.btn--state-b .btn__content-a { + display: none; +} +.btn--state-b .btn__content-b { + display: inline-block; + display: inline-flex; +} +/* preserve button width when switching from state A to state B */ +.btn--preserve-width .btn__content-b { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + justify-content: center; +} +.btn--preserve-width.btn--state-b .btn__content-a { + display: inline-block; + display: inline-flex; + visibility: hidden; +} diff --git a/src/server/wwwroot/login.js b/src/server/wwwroot/login.js new file mode 100644 index 0000000..6f80a3f --- /dev/null +++ b/src/server/wwwroot/login.js @@ -0,0 +1,73 @@ +const form = document.querySelector("form"); +let errorEL = document.querySelector("#error"); +let titleEl = document.querySelector("#title"); +let messageEl = document.querySelector("#message"); +const loginBtn = document.querySelector("#login-btn"); +let returnUrl = new URL(location.href).searchParams.get("ReturnUrl"); +if(!returnUrl) location.href = "http://localhost:3000"; +form.addEventListener("submit", () => { + const username = document.querySelector("#username").value; + const password = document.querySelector("#password").value; + const persist = document.querySelector("#persist").checked; + + let data = { + username, + password, + returnUrl, + persist, + }; + + Util.addClass(loginBtn, "btn--state-b"); + + fetch("/account/login", { + method: "POST", + body: JSON.stringify(data), + credentials: "include", + headers: { + "Content-Type": "application/json;charset=utf-8", + RequestVerificationToken: document.querySelector( + "input[name='__RequestVerificationToken']" + ).value, + }, + }) + .then((response) => { + if (response.status === 400) { + response.json().then((res) => { + if (res.title && res.message) { + displayError(res.title, res.message); + } + }); + } else { + location.href = returnUrl; + } + }) + .catch((error) => console.error(error)); +}); + +function displayError(title, message) { + titleEl.innerText = title; + messageEl.innerText = message; + Util.addClass(errorEL, "alert--is-visible"); + Util.addClass(errorEL, "alert--error"); +} + +function hideError() { + Util.removeClass(errorEL, "alert--is-visible"); + Util.removeClass(errorEL, "alert--error"); +} + +let alertClose = document.getElementsByClassName("js-alert__close-btn"); +if (alertClose.length > 0) { + for (let i = 0; i < alertClose.length; i++) { + (function (i) { + initAlertEvent(alertClose[i]); + })(i); + } +} + +function initAlertEvent(element) { + element.addEventListener("click", function (event) { + event.preventDefault(); + Util.removeClass(element.closest(".js-alert"), "alert--is-visible"); + }); +}
\ No newline at end of file |
