@charset "UTF-8";
/* ================================================== */
/* Reset */
/* ================================================== */
/* Use box-sizing model */
*, *::before, *::after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

/* Kill margin with fire */
* {
  margin: 0;
}

/* Improve text rendering */
body {
  -webkit-font-smoothing: antialiased;
}

/* Remove list styles */
ol,
ul {
  list-style: none;
}

/* Prevent text overflow */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
}

/* Remove padding */
a,
ul,
ol,
li,
dl,
dt,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hgroup,
p,
blockquote,
figure,
form,
fieldset,
input,
legend,
pre,
abbr,
button,
body,
textarea,
select {
  padding: 0;
}

/* Reset interactive elements */
a,
input,
button,
textarea,
fieldset,
select {
  font: inherit;
  margin: 0;
  padding: 0;
  margin-inline-start: 0;
  margin-inline-end: 0;
  padding-block-start: 0;
  padding-inline-start: 0;
  padding-inline-end: 0;
  padding-block-end: 0;
  background-color: transparent;
  border: 0;
  border-style: none;
  text-decoration: none;
  appearance: none;
  cursor: pointer;
  pointer-events: auto;
}

/* debug */
/* Utils */
/* ================================================== */
/* Grid | Flex-box | Gap */
/* ================================================== */
/* Mixins */
/* ================================================== */
/* Space */
/* ================================================== */
/* Mobile 1st breakpoints */
/* ================================================== */
/* Breakpoints MAP ✨ Config these values */
/* ================================================== */
/* Breakpoint mixin */
/* ================================================== */
/* Breakpoint variables */
/* ================================================== */
/* ================================================== */
/* How to use */
/* ================================================== */
/* add this ⬇︎ to the very top of the document */
/* 💠 example */
/* ================================================== */
/* Container queries */
/* ================================================== */
/* Background container query */
/* ================================================== */
/* Used by _card, _accordion, and _glass */
.bg-container {
  container: bg/inline-size;
  width: 100%;
}

/* ================================================== */
/* z-index */
/* ================================================== */
/* ================================================== */
/* ================================================== */
/* Dynamic T-shirt sizes ✨ Config these values */
/* ================================================== */
:root {
  /* 4px */
  --5xs: 0.25rem;
  /* 8px */
  --4xs: 0.5rem;
  /* 12px */
  --3xs: 0.75rem;
  /* 14px */
  --2xs: 0.875rem;
  /* 16px */
  --xs: 1rem;
  /* 16px → 24px */
  --sm: clamp(1rem, calc(2vw + 0.5rem), 1.5rem);
  /* 20px → 32px */
  --md: clamp(1.25rem, calc(2vw + 0.85rem), 2rem);
  /* 24px → 40px */
  --lg: clamp(1.5rem, calc(2vw + 1rem), 2.5rem);
  /* 28px → 48px */
  --xl: clamp(1.75rem, calc(2vw + 1.4rem), 3rem);
  /* 32px → 56px */
  --2xl: clamp(2rem, calc(2vw + 1.6rem), 3.5rem);
  /* 48px → 72px */
  --3xl: clamp(3rem, calc(2vw + 2.6rem), 4.5rem);
  /* 64px → 96px */
  --4xl: clamp(4rem, calc(2vw + 3.6rem), 6rem);
  /* 80px → 120px */
  --5xl: clamp(5rem, calc(2vw + 4.6rem), 7.5rem);
}

/* T-shirt Size MAP */
/* ================================================== */
/* Update if you add/remove/edit names of fluid sizes above */
/* Gutters ✨ Config these values */
/* ================================================== */
/* ================================================== */
/* Responsive spacing/sizing ✨ Config these values */
/* ================================================== */
html {
  --gutter: 1rem;
  --w-layout-inner-base: calc(100% - (var(--gutter) * 2));
  /* Container query value for padding / margin / gap */
  --space-q-sm: 7cqw;
  --space-q-md: 7cqw;
  --space-q-lg: 11cqw;
  /* ui height */
  --ui-h-xs: 1.375rem; /* 22px */
  --ui-h-sm: 1.75rem; /* 28px */
  --ui-h-md: 1.9rem; /* 32px */
  --ui-h-lg: 2.5rem; /* 40px */
  --ui-h-xl: 3.25rem; /* 52px */
}
@media only screen and (min-width: 22.5rem) {
  html {
    --ui-h-xs: 1.4rem; /* 24px */
    --ui-h-sm: 1.9rem;
    --ui-h-md: 2.5rem; /* 36px */
    --ui-h-lg: 2.75rem; /* 44px */
  }
}
@media only screen and (min-width: 30rem) {
  html {
    --gutter: 1rem;
    --space-q-sm: 7cqw;
    --space-q-md: 6cqw;
    --space-q-lg: min(10cqw, 5rem);
    --ui-h-xs: 1.4rem; /* 24px */
    --ui-h-sm: 2.2rem;
    --ui-h-md: 2.5rem; /* 36px */
    --ui-h-lg: 2.75rem; /* 44px */
  }
}
@media only screen and (min-width: 48rem) {
  html {
    --gutter: 2rem;
  }
}
@media only screen and (min-width: 64rem) {
  html {
    --gutter: 4rem;
  }
}
@media only screen and (min-width: 90rem) {
  html {
    --gutter: 9rem;
  }
}

/* ================================================== */
/* Moats */
/* ================================================== */
/* ℹ️ Moats are parent classes that: */
/* • give their child/children a left-right gutter that adapts to viewport width */
/* • take up 100% width and center their children using grid */
/* • add a moat starting from the breakpoint that matches their suffix */
/* This is useful for things like text with a background that should span edge-to-edge on mobile then become a card at larger screen sizes. */
/* 💠 example */
/* Adds a moat at every screen size */
/* Adds a moat at xs breakpoint and bigger */
/* ================================================== */
/* Gutters */
/* ================================================== */
.gutter-all {
  background-color: rgba(232, 141, 30, 0.44);
  width: var(--w-layout-inner-base);
  max-width: 44rem;
  margin: 0 auto;
}
@media only screen and (min-width: 48rem) {
  .gutter-all {
    max-width: 56rem;
  }
}
@media only screen and (min-width: 64rem) {
  .gutter-all {
    max-width: 72rem;
  }
}
@media only screen and (min-width: 90rem) {
  .gutter-all {
    max-width: 1500px;
  }
}

.gutter-from-sm {
  background-color: rgba(50, 30, 232, 0.44);
  width: 100%;
  margin: 0 auto;
}
@media only screen and (min-width: 30rem) {
  .gutter-from-sm {
    width: var(--w-layout-inner-base);
    max-width: 44rem;
  }
}
@media only screen and (min-width: 48rem) {
  .gutter-from-sm {
    max-width: 56rem;
  }
}
@media only screen and (min-width: 64rem) {
  .gutter-from-sm {
    max-width: 72rem;
  }
}
@media only screen and (min-width: 90rem) {
  .gutter-from-sm {
    max-width: 1500px;
  }
}

.gutter-from-md {
  background-color: rgba(30, 232, 37, 0.44);
  width: 100%;
  margin: 0 auto;
}
@media only screen and (min-width: 48rem) {
  .gutter-from-md {
    width: var(--w-layout-inner-base);
    max-width: 56rem;
  }
}
@media only screen and (min-width: 64rem) {
  .gutter-from-md {
    max-width: 72rem;
  }
}
@media only screen and (min-width: 90rem) {
  .gutter-from-md {
    max-width: 1500px;
  }
}

/* ================================================== */
/* Width */
/* ================================================== */
/* ℹ️ .w- classes limit the width of elements to their suffix breakpoint */
/* e.g. .w-md takes up 100% width at $bp-sm & won't get bigger than the value of $bp-md */
.w-xs {
  width: min(100%, 22.5rem);
}

.w-sm {
  width: min(100%, 30rem);
}

.w-md {
  width: min(100%, 48rem);
}

.w-lg {
  width: min(100%, 64rem);
}

.w-xl {
  width: min(100%, 90rem);
}

.w-2xl {
  width: min(100%, 107rem);
}

/* ================================================== */
/* Large spacing */
/* ================================================== */
.page-gap {
  z-index: 1;
  display: grid;
  gap: 8rem;
}
@media only screen and (min-width: 22.5rem) {
  .page-gap {
    gap: 10rem;
  }
}
@media only screen and (min-width: 30rem) {
  .page-gap {
    gap: 12rem;
  }
}
@media only screen and (min-width: 48rem) {
  .page-gap {
    gap: 14rem;
  }
}
@media only screen and (min-width: 64rem) {
  .page-gap {
    gap: 16rem;
  }
}
@media only screen and (min-width: 90rem) {
  .page-gap {
    gap: 18rem;
  }
}

.section-gap {
  z-index: 2;
  display: grid;
  gap: 5rem;
}
@media only screen and (min-width: 22.5rem) {
  .section-gap {
    gap: 8rem;
  }
}
@media only screen and (min-width: 30rem) {
  .section-gap {
    gap: 9rem;
  }
}
@media only screen and (min-width: 48rem) {
  .section-gap {
    gap: 10rem;
  }
}
@media only screen and (min-width: 64rem) {
  .section-gap {
    gap: 11rem;
  }
}
@media only screen and (min-width: 90rem) {
  .section-gap {
    gap: 12rem;
  }
}

/* Edge-to-edge classes */
/* ================================================== */
.e2e {
  --_space: var(--space, 1rem);
  --neg-space: calc(-1 * var(--_space));
  --_neg-space: var(--neg-space, -1rem);
  width: calc(100% + var(--_space) * 2);
  display: grid;
  margin-left: var(--_neg-space);
  margin-right: var(--_neg-space);
  padding: var(--_space);
}
.e2e.p-0 {
  padding: 0;
}

.e2e-no-t {
  --_space: var(--space, 1rem);
  --neg-space: calc(-1 * var(--_space));
  --_neg-space: var(--neg-space, -1rem);
  width: calc(100% + var(--_space) * 2);
  display: grid;
  margin-left: var(--_neg-space);
  margin-right: var(--_neg-space);
  padding: var(--_space);
  margin-top: var(--neg-space);
}
.e2e-no-t.p-0 {
  padding: 0;
}

.e2e-no-b {
  --_space: var(--space, 1rem);
  --neg-space: calc(-1 * var(--_space));
  --_neg-space: var(--neg-space, -1rem);
  width: calc(100% + var(--_space) * 2);
  display: grid;
  margin-left: var(--_neg-space);
  margin-right: var(--_neg-space);
  padding: var(--_space);
  margin-bottom: var(--neg-space);
}
.e2e-no-b.p-0 {
  padding: 0;
}

.e2e-no-y {
  --_space: var(--space, 1rem);
  --neg-space: calc(-1 * var(--_space));
  --_neg-space: var(--neg-space, -1rem);
  width: calc(100% + var(--_space) * 2);
  display: grid;
  margin-left: var(--_neg-space);
  margin-right: var(--_neg-space);
  padding: var(--_space);
  margin-top: var(--neg-space);
  margin-bottom: var(--neg-space);
}
.e2e-no-y.p-0 {
  padding: 0;
}

.e2e-inset {
  --_space: var(--space, 1rem);
  --neg-space: calc(-1 * var(--_space));
  --_neg-space: var(--neg-space, -1rem);
  width: calc(100% + var(--_space) * 2);
  display: grid;
  margin-left: var(--_neg-space);
  margin-right: var(--_neg-space);
  padding: var(--_space);
  margin-left: calc(var(--neg-space) + 1px);
  margin-right: var(--neg-space);
  background-color: var(--inset-bg-deep);
  box-shadow: var(--inset-flat-md);
}
.e2e-inset.p-0 {
  padding: 0;
}

/* Remove margin-left offset at 100vw or bigger */
/* the -16px prevents issues with scrollbars cutting into 100vw */
@container card (width >= calc(100vw - 16px)) {
  .e2e-inset {
    margin-left: var(--neg-space);
  }
}
/* ================================================== */
/* Generic class generating mixin */
/* ================================================== */
/* Size modifier mixin */
/* ================================================== */
/* Generates classes using the $sizes map from _space.scss */
/* 2 property size modifier mixin */
/* ================================================== */
/* HSL lightness values */
/* ================================================== */
/* Color lightness generating mixin */
/* ================================================== */
/* Color generating mixin */
/* ================================================== */
/* ================================================== */
/* ================================================== */
/* Gap classes */
/* ================================================== */
.gap-5xs {
  gap: var(--5xs);
}
.gap-4xs {
  gap: var(--4xs);
}
.gap-3xs {
  gap: var(--3xs);
}
.gap-2xs {
  gap: var(--2xs);
}
.gap-xs {
  gap: var(--xs);
}
.gap-sm {
  gap: var(--sm);
}
.gap-md {
  gap: var(--md);
}
.gap-lg {
  gap: var(--lg);
}
.gap-xl {
  gap: var(--xl);
}
.gap-2xl {
  gap: var(--2xl);
}
.gap-3xl {
  gap: var(--3xl);
}
.gap-4xl {
  gap: var(--4xl);
}
.gap-5xl {
  gap: var(--5xl);
}

/* ================================================== */
/* flex-box */
/* ================================================== */
.flex {
  display: flex;
}

/* flex center x & y */
.flex-c {
  display: flex;
  justify-content: center;
  align-items: center;
}

.flex-column-c {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}

/* flex-direction: */
/* ================================================== */
.flex-column {
  display: flex;
  flex-direction: column;
}

.flex-column-rev {
  display: flex;
  flex-direction: column-reverse;
}

.flex-row {
  display: flex;
  flex-direction: row;
}

.flex-row-rev {
  display: flex;
  flex-direction: row-reverse;
}

/* flex-wrap: */
/* ================================================== */
.flex-wrap {
  display: flex;
  flex-wrap: wrap;
}

.flex-wrap-rev {
  display: flex;
  flex-wrap: wrap-reverse;
}

.flex-nowrap {
  display: flex;
  flex-wrap: nowrap;
}

/* justify-content: */
/* ================================================== */
.justify-l {
  display: flex;
  justify-content: flex-start;
}

.justify-r {
  display: flex;
  justify-content: flex-end;
}

.justify-c {
  display: flex;
  justify-content: center;
}

.justify-sb {
  display: flex;
  justify-content: space-between;
}

.justify-sa {
  display: flex;
  justify-content: space-around;
}

.justify-se {
  display: flex;
  justify-content: space-evenly;
}

/* align-items: */
/* ================================================== */
.align-items-t {
  display: flex;
  align-items: flex-start;
}

.align-items-c {
  display: flex;
  align-items: center;
}

.align-items-b {
  display: flex;
  align-items: flex-end;
}

.align-items-s {
  display: flex;
  align-items: stretch;
}

/* For multi-line flex-wrap */
/* ================================================== */
.align-content-c {
  display: flex;
  align-content: center;
}

.align-content-sb {
  display: flex;
  align-content: space-between;
}

.align-content-sa {
  display: flex;
  align-content: space-around;
}

.align-content-se {
  display: flex;
  align-content: space-evenly;
}

/* For flex items */
/* ================================================== */
.align-self-t {
  align-self: flex-start;
}

.align-self-c {
  align-self: center;
}

.align-self-b {
  align-self: flex-end;
}

.align-self-s {
  align-self: stretch;
}

.flex-100 {
  display: flex;
  flex: 0 1 100px;
}

/* ================================================== */
/* Grid */
/* ================================================== */
.grid {
  display: grid;
}

/* grid center x & y */
.grid-c {
  display: grid;
  place-items: center;
}

.grid-content-c {
  display: grid;
  place-content: center;
}

.grid-12 {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
}

/* auto-fill */
/* Fills the row with as many columns as it can fit. So it creates implicit columns. */
.grid-auto-fill {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}

/* auto-fit */
/* Fits the columns it has into the space by expanding them. */
.grid-auto-fit {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
}

.grid-auto-fit-300 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

/* Properties for Grid Items */
/* ================================================== */
.place-self-c {
  place-self: center;
}

.place-self-s {
  place-self: stretch;
}

/* ================================================== */
/* Layout helpers */
/* ================================================== */
/* width */
/* ================================================== */
.w-100 {
  width: 100%;
}

.w-fit {
  width: fit-content;
}

.w-fit-max {
  width: max-content;
}

.w-fit-min {
  width: min-content;
}

/* Display */
/* ================================================== */
.block {
  display: block;
}

.inline {
  display: inline;
}

.inlineblock {
  display: inline-block;
}

.hidden {
  display: none;
}

.visually-hidden {
  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;
}

/* Aspect-ratio */
/* ================================================== */
.ratio-1 {
  aspect-ratio: 1;
}

.ratio-4-3 {
  aspect-ratio: 4/3;
}

.ratio-16-9 {
  aspect-ratio: 16/9;
}

/* Sidescroll */
/* ================================================== */
.sidescroll-bin {
  width: 100%;
  display: flex;
  flex-wrap: nowrap;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.sidescroll-bin::-webkit-scrollbar {
  display: none;
}
.sidescroll-bin:hover {
  overflow-x: scroll;
}

.sidescroll {
  flex: 0 0 auto;
}

/* Other */
/* ================================================== */
.no-pointer {
  pointer-events: none;
}

.overflow-hidden {
  overflow: hidden;
}

/* ================================================== */
/* Margins & Padding */
/* ================================================== */
/* ================================================== */
/* Margins */
/* ================================================== */
.m-5xs {
  margin: var(--5xs);
}
.m-4xs {
  margin: var(--4xs);
}
.m-3xs {
  margin: var(--3xs);
}
.m-2xs {
  margin: var(--2xs);
}
.m-xs {
  margin: var(--xs);
}
.m-sm {
  margin: var(--sm);
}
.m-md {
  margin: var(--md);
}
.m-lg {
  margin: var(--lg);
}
.m-xl {
  margin: var(--xl);
}
.m-2xl {
  margin: var(--2xl);
}
.m-3xl {
  margin: var(--3xl);
}
.m-4xl {
  margin: var(--4xl);
}
.m-5xl {
  margin: var(--5xl);
}

.m-t-5xs {
  margin-top: var(--5xs);
}
.m-t-4xs {
  margin-top: var(--4xs);
}
.m-t-3xs {
  margin-top: var(--3xs);
}
.m-t-2xs {
  margin-top: var(--2xs);
}
.m-t-xs {
  margin-top: var(--xs);
}
.m-t-sm {
  margin-top: var(--sm);
}
.m-t-md {
  margin-top: var(--md);
}
.m-t-lg {
  margin-top: var(--lg);
}
.m-t-xl {
  margin-top: var(--xl);
}
.m-t-2xl {
  margin-top: var(--2xl);
}
.m-t-3xl {
  margin-top: var(--3xl);
}
.m-t-4xl {
  margin-top: var(--4xl);
}
.m-t-5xl {
  margin-top: var(--5xl);
}

.m-b-5xs {
  margin-bottom: var(--5xs);
}
.m-b-4xs {
  margin-bottom: var(--4xs);
}
.m-b-3xs {
  margin-bottom: var(--3xs);
}
.m-b-2xs {
  margin-bottom: var(--2xs);
}
.m-b-xs {
  margin-bottom: var(--xs);
}
.m-b-sm {
  margin-bottom: var(--sm);
}
.m-b-md {
  margin-bottom: var(--md);
}
.m-b-lg {
  margin-bottom: var(--lg);
}
.m-b-xl {
  margin-bottom: var(--xl);
}
.m-b-2xl {
  margin-bottom: var(--2xl);
}
.m-b-3xl {
  margin-bottom: var(--3xl);
}
.m-b-4xl {
  margin-bottom: var(--4xl);
}
.m-b-5xl {
  margin-bottom: var(--5xl);
}

.m-l-5xs {
  margin-left: var(--5xs);
}
.m-l-4xs {
  margin-left: var(--4xs);
}
.m-l-3xs {
  margin-left: var(--3xs);
}
.m-l-2xs {
  margin-left: var(--2xs);
}
.m-l-xs {
  margin-left: var(--xs);
}
.m-l-sm {
  margin-left: var(--sm);
}
.m-l-md {
  margin-left: var(--md);
}
.m-l-lg {
  margin-left: var(--lg);
}
.m-l-xl {
  margin-left: var(--xl);
}
.m-l-2xl {
  margin-left: var(--2xl);
}
.m-l-3xl {
  margin-left: var(--3xl);
}
.m-l-4xl {
  margin-left: var(--4xl);
}
.m-l-5xl {
  margin-left: var(--5xl);
}

.m-r-5xs {
  margin-right: var(--5xs);
}
.m-r-4xs {
  margin-right: var(--4xs);
}
.m-r-3xs {
  margin-right: var(--3xs);
}
.m-r-2xs {
  margin-right: var(--2xs);
}
.m-r-xs {
  margin-right: var(--xs);
}
.m-r-sm {
  margin-right: var(--sm);
}
.m-r-md {
  margin-right: var(--md);
}
.m-r-lg {
  margin-right: var(--lg);
}
.m-r-xl {
  margin-right: var(--xl);
}
.m-r-2xl {
  margin-right: var(--2xl);
}
.m-r-3xl {
  margin-right: var(--3xl);
}
.m-r-4xl {
  margin-right: var(--4xl);
}
.m-r-5xl {
  margin-right: var(--5xl);
}

.m-x-5xs {
  margin-right: var(--5xs);
  margin-left: var(--5xs);
}
.m-x-4xs {
  margin-right: var(--4xs);
  margin-left: var(--4xs);
}
.m-x-3xs {
  margin-right: var(--3xs);
  margin-left: var(--3xs);
}
.m-x-2xs {
  margin-right: var(--2xs);
  margin-left: var(--2xs);
}
.m-x-xs {
  margin-right: var(--xs);
  margin-left: var(--xs);
}
.m-x-sm {
  margin-right: var(--sm);
  margin-left: var(--sm);
}
.m-x-md {
  margin-right: var(--md);
  margin-left: var(--md);
}
.m-x-lg {
  margin-right: var(--lg);
  margin-left: var(--lg);
}
.m-x-xl {
  margin-right: var(--xl);
  margin-left: var(--xl);
}
.m-x-2xl {
  margin-right: var(--2xl);
  margin-left: var(--2xl);
}
.m-x-3xl {
  margin-right: var(--3xl);
  margin-left: var(--3xl);
}
.m-x-4xl {
  margin-right: var(--4xl);
  margin-left: var(--4xl);
}
.m-x-5xl {
  margin-right: var(--5xl);
  margin-left: var(--5xl);
}

.m-y-5xs {
  margin-top: var(--5xs);
  margin-bottom: var(--5xs);
}
.m-y-4xs {
  margin-top: var(--4xs);
  margin-bottom: var(--4xs);
}
.m-y-3xs {
  margin-top: var(--3xs);
  margin-bottom: var(--3xs);
}
.m-y-2xs {
  margin-top: var(--2xs);
  margin-bottom: var(--2xs);
}
.m-y-xs {
  margin-top: var(--xs);
  margin-bottom: var(--xs);
}
.m-y-sm {
  margin-top: var(--sm);
  margin-bottom: var(--sm);
}
.m-y-md {
  margin-top: var(--md);
  margin-bottom: var(--md);
}
.m-y-lg {
  margin-top: var(--lg);
  margin-bottom: var(--lg);
}
.m-y-xl {
  margin-top: var(--xl);
  margin-bottom: var(--xl);
}
.m-y-2xl {
  margin-top: var(--2xl);
  margin-bottom: var(--2xl);
}
.m-y-3xl {
  margin-top: var(--3xl);
  margin-bottom: var(--3xl);
}
.m-y-4xl {
  margin-top: var(--4xl);
  margin-bottom: var(--4xl);
}
.m-y-5xl {
  margin-top: var(--5xl);
  margin-bottom: var(--5xl);
}

/* Margin left-right auto centering */
/* ================================================== */
.m-auto-x {
  margin-top: 0;
  margin-bottom: 0;
  margin-left: auto;
  margin-right: auto;
}

/* ================================================== */
/* Padding */
/* ================================================== */
.p-5xs {
  padding: var(--5xs);
}
.p-4xs {
  padding: var(--4xs);
}
.p-3xs {
  padding: var(--3xs);
}
.p-2xs {
  padding: var(--2xs);
}
.p-xs {
  padding: var(--xs);
}
.p-sm {
  padding: var(--sm);
}
.p-md {
  padding: var(--md);
}
.p-lg {
  padding: var(--lg);
}
.p-xl {
  padding: var(--xl);
}
.p-2xl {
  padding: var(--2xl);
}
.p-3xl {
  padding: var(--3xl);
}
.p-4xl {
  padding: var(--4xl);
}
.p-5xl {
  padding: var(--5xl);
}

.p-t-5xs {
  padding-top: var(--5xs);
}
.p-t-4xs {
  padding-top: var(--4xs);
}
.p-t-3xs {
  padding-top: var(--3xs);
}
.p-t-2xs {
  padding-top: var(--2xs);
}
.p-t-xs {
  padding-top: var(--xs);
}
.p-t-sm {
  padding-top: var(--sm);
}
.p-t-md {
  padding-top: var(--md);
}
.p-t-lg {
  padding-top: var(--lg);
}
.p-t-xl {
  padding-top: var(--xl);
}
.p-t-2xl {
  padding-top: var(--2xl);
}
.p-t-3xl {
  padding-top: var(--3xl);
}
.p-t-4xl {
  padding-top: var(--4xl);
}
.p-t-5xl {
  padding-top: var(--5xl);
}

.p-b-5xs {
  padding-bottom: var(--5xs);
}
.p-b-4xs {
  padding-bottom: var(--4xs);
}
.p-b-3xs {
  padding-bottom: var(--3xs);
}
.p-b-2xs {
  padding-bottom: var(--2xs);
}
.p-b-xs {
  padding-bottom: var(--xs);
}
.p-b-sm {
  padding-bottom: var(--sm);
}
.p-b-md {
  padding-bottom: var(--md);
}
.p-b-lg {
  padding-bottom: var(--lg);
}
.p-b-xl {
  padding-bottom: var(--xl);
}
.p-b-2xl {
  padding-bottom: var(--2xl);
}
.p-b-3xl {
  padding-bottom: var(--3xl);
}
.p-b-4xl {
  padding-bottom: var(--4xl);
}
.p-b-5xl {
  padding-bottom: var(--5xl);
}

.p-l-5xs {
  padding-left: var(--5xs);
}
.p-l-4xs {
  padding-left: var(--4xs);
}
.p-l-3xs {
  padding-left: var(--3xs);
}
.p-l-2xs {
  padding-left: var(--2xs);
}
.p-l-xs {
  padding-left: var(--xs);
}
.p-l-sm {
  padding-left: var(--sm);
}
.p-l-md {
  padding-left: var(--md);
}
.p-l-lg {
  padding-left: var(--lg);
}
.p-l-xl {
  padding-left: var(--xl);
}
.p-l-2xl {
  padding-left: var(--2xl);
}
.p-l-3xl {
  padding-left: var(--3xl);
}
.p-l-4xl {
  padding-left: var(--4xl);
}
.p-l-5xl {
  padding-left: var(--5xl);
}

.p-r-5xs {
  padding-right: var(--5xs);
}
.p-r-4xs {
  padding-right: var(--4xs);
}
.p-r-3xs {
  padding-right: var(--3xs);
}
.p-r-2xs {
  padding-right: var(--2xs);
}
.p-r-xs {
  padding-right: var(--xs);
}
.p-r-sm {
  padding-right: var(--sm);
}
.p-r-md {
  padding-right: var(--md);
}
.p-r-lg {
  padding-right: var(--lg);
}
.p-r-xl {
  padding-right: var(--xl);
}
.p-r-2xl {
  padding-right: var(--2xl);
}
.p-r-3xl {
  padding-right: var(--3xl);
}
.p-r-4xl {
  padding-right: var(--4xl);
}
.p-r-5xl {
  padding-right: var(--5xl);
}

.p-x-5xs {
  padding-right: var(--5xs);
  padding-left: var(--5xs);
}
.p-x-4xs {
  padding-right: var(--4xs);
  padding-left: var(--4xs);
}
.p-x-3xs {
  padding-right: var(--3xs);
  padding-left: var(--3xs);
}
.p-x-2xs {
  padding-right: var(--2xs);
  padding-left: var(--2xs);
}
.p-x-xs {
  padding-right: var(--xs);
  padding-left: var(--xs);
}
.p-x-sm {
  padding-right: var(--sm);
  padding-left: var(--sm);
}
.p-x-md {
  padding-right: var(--md);
  padding-left: var(--md);
}
.p-x-lg {
  padding-right: var(--lg);
  padding-left: var(--lg);
}
.p-x-xl {
  padding-right: var(--xl);
  padding-left: var(--xl);
}
.p-x-2xl {
  padding-right: var(--2xl);
  padding-left: var(--2xl);
}
.p-x-3xl {
  padding-right: var(--3xl);
  padding-left: var(--3xl);
}
.p-x-4xl {
  padding-right: var(--4xl);
  padding-left: var(--4xl);
}
.p-x-5xl {
  padding-right: var(--5xl);
  padding-left: var(--5xl);
}

.p-y-5xs {
  padding-top: var(--5xs);
  padding-bottom: var(--5xs);
}
.p-y-4xs {
  padding-top: var(--4xs);
  padding-bottom: var(--4xs);
}
.p-y-3xs {
  padding-top: var(--3xs);
  padding-bottom: var(--3xs);
}
.p-y-2xs {
  padding-top: var(--2xs);
  padding-bottom: var(--2xs);
}
.p-y-xs {
  padding-top: var(--xs);
  padding-bottom: var(--xs);
}
.p-y-sm {
  padding-top: var(--sm);
  padding-bottom: var(--sm);
}
.p-y-md {
  padding-top: var(--md);
  padding-bottom: var(--md);
}
.p-y-lg {
  padding-top: var(--lg);
  padding-bottom: var(--lg);
}
.p-y-xl {
  padding-top: var(--xl);
  padding-bottom: var(--xl);
}
.p-y-2xl {
  padding-top: var(--2xl);
  padding-bottom: var(--2xl);
}
.p-y-3xl {
  padding-top: var(--3xl);
  padding-bottom: var(--3xl);
}
.p-y-4xl {
  padding-top: var(--4xl);
  padding-bottom: var(--4xl);
}
.p-y-5xl {
  padding-top: var(--5xl);
  padding-bottom: var(--5xl);
}

.p-0 {
  padding: 0;
}

/* ================================================== */
/* Border Radius */
/* ================================================== */
/* Conditional border-radius */
/* ================================================== */
/* Nested border radius */
/* ================================================== */
/* Top or bottom radius only */
/* ================================================== */
.top-radius {
  border-top-left-radius: inherit;
  border-top-right-radius: inherit;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
  overflow: hidden;
}

.bottom-radius {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  border-bottom-right-radius: inherit;
  border-bottom-left-radius: inherit;
  overflow: hidden;
}

/* Border radius classes */
/* ================================================== */
/* Generates classes using the $sizes map from _space.scss */
.radius-5xs {
  border-radius: var(--5xs);
}
.radius-4xs {
  border-radius: var(--4xs);
}
.radius-3xs {
  border-radius: var(--3xs);
}
.radius-2xs {
  border-radius: var(--2xs);
}
.radius-xs {
  border-radius: var(--xs);
}
.radius-sm {
  border-radius: var(--sm);
}
.radius-md {
  border-radius: var(--md);
}
.radius-lg {
  border-radius: var(--lg);
}
.radius-xl {
  border-radius: var(--xl);
}
.radius-2xl {
  border-radius: var(--2xl);
}
.radius-3xl {
  border-radius: var(--3xl);
}
.radius-4xl {
  border-radius: var(--4xl);
}
.radius-5xl {
  border-radius: var(--5xl);
}

/* Radius bin */
/* ================================================== */
/* This parent calss helps remove janky rendering artifacts that occur in some browsers when inset box-shadow + border-radius are used on the same element.
The solution though not perfect is to add a parent wrapper that sets the border-radius while the child sets the inset box-shadow */
.radius-bin-5xs {
  border-radius: var(--5xs);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-4xs {
  border-radius: var(--4xs);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-3xs {
  border-radius: var(--3xs);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-2xs {
  border-radius: var(--2xs);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-xs {
  border-radius: var(--xs);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-sm {
  border-radius: var(--sm);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-md {
  border-radius: var(--md);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-lg {
  border-radius: var(--lg);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-xl {
  border-radius: var(--xl);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-2xl {
  border-radius: var(--2xl);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-3xl {
  border-radius: var(--3xl);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-4xl {
  border-radius: var(--4xl);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}
.radius-bin-5xl {
  border-radius: var(--5xl);
  width: 100%;
  height: fit-content;
  overflow: hidden;
}

/* ================================================== */
/* Text util */
/* ================================================== */
/* Colors */
/* ================================================== */
/* ================================================== */
/* Color tokens */
/* ================================================== */
:root {
  /* Hue and saturation values ✨ Config these values */
  /* ================================================== */
  --primary-h: 189;
  --primary-s: 70%;
  --neutral-h: 205;
  --neutral-s: 20%;
  /* Primary */
  /* ================================================== */
  --primary-98: var(--primary-h) var(--primary-s) 98%;
  --primary-95: var(--primary-h) var(--primary-s) 95%;
  --primary-90: var(--primary-h) var(--primary-s) 90%;
  --primary-85: var(--primary-h) var(--primary-s) 85%;
  --primary-80: var(--primary-h) var(--primary-s) 80%;
  --primary-70: var(--primary-h) var(--primary-s) 70%;
  --primary-60: var(--primary-h) var(--primary-s) 60%;
  --primary-50: var(--primary-h) var(--primary-s) 50%;
  --primary-40: var(--primary-h) var(--primary-s) 40%;
  --primary-30: var(--primary-h) var(--primary-s) 30%;
  --primary-20: var(--primary-h) var(--primary-s) 20%;
  --primary-10: var(--primary-h) var(--primary-s) 10%;
  --primary-5: var(--primary-h) var(--primary-s) 5%;
  /* Neutral */
  /* ================================================== */
  --neutral-100: var(--neutral-h) var(--neutral-s) 100%;
  --neutral-98: var(--neutral-h) var(--neutral-s) 98%;
  --neutral-95: var(--neutral-h) var(--neutral-s) 95%;
  --neutral-93: var(--neutral-h) var(--neutral-s) 93%;
  --neutral-90: var(--neutral-h) var(--neutral-s) 90%;
  --neutral-85: var(--neutral-h) var(--neutral-s) 85%;
  --neutral-80: var(--neutral-h) var(--neutral-s) 80%;
  --neutral-70: var(--neutral-h) var(--neutral-s) 70%;
  --neutral-60: var(--neutral-h) var(--neutral-s) 60%;
  --neutral-50: var(--neutral-h) var(--neutral-s) 50%;
  --neutral-40: var(--neutral-h) var(--neutral-s) 40%;
  --neutral-30: var(--neutral-h) var(--neutral-s) 30%;
  --neutral-20: var(--neutral-h) var(--neutral-s) 20%;
  --neutral-15: var(--neutral-h) var(--neutral-s) 15%;
  --neutral-10: var(--neutral-h) var(--neutral-s) 10%;
  --neutral-5: var(--neutral-h) var(--neutral-s) 5%;
}

/* ================================================== */
/* Color theme */
/* ================================================== */
html {
  /* Solid colors */
  /* ================================================== */
  --color-white: hsl(var(--neutral-98) / 1);
  --color-2xlight: hsl(var(--neutral-90) / 1);
  --color-xlight: hsl(var(--neutral-80) / 1);
  --color-light: hsl(var(--neutral-70) / 1);
  --color-gray: hsl(var(--neutral-50) / 1);
  --color-dark: hsl(var(--neutral-40) / 1);
  --color-xdark: hsl(var(--neutral-30) / 1);
  --color-2xdark: hsl(var(--neutral-20) / 1);
  --color-black: hsl(var(--neutral-5) / 1);
  /* Translucent tints */
  /* ================================================== */
  --tint-3xlight: hsl(var(--neutral-95) / 0.4);
  --tint-2xlight: hsl(var(--neutral-95) / 0.3);
  --tint-xlight: hsl(var(--neutral-95) / 0.2);
  --tint-light: hsl(var(--neutral-95) / 0.1);
  --tint-clear: hsl(var(--neutral-10) / 0.01);
  --tint-dark: hsl(var(--neutral-10) / 0.1);
  --tint-xdark: hsl(var(--neutral-10) / 0.25);
  --tint-2xdark: hsl(var(--neutral-10) / 0.55);
  --tint-3xdark: hsl(var(--neutral-10) / 0.8);
  /* Text colors */
  /* ================================================== */
  --text-2xstrong: hsl(var(--neutral-100) / 1);
  --text-xstrong: hsl(var(--neutral-98) / 1);
  --text-strong: hsl(var(--neutral-95) / 1);
  --text-base: hsl(var(--neutral-93) / 1);
  --text-mild: hsl(var(--neutral-80) / 1);
  --text-xmild: hsl(var(--neutral-70) / 1);
  --text-2xmild: hsl(var(--neutral-60) / 1);
  --text-accent-base: hsl(var(--primary-85) / 1);
  /* Inset bg colors */
  /* ================================================== */
  --inset-bg-reg: hsl(var(--neutral-10) / 0.15);
  --inset-bg-deep: hsl(var(--neutral-10) / 0.25);
  --inset-bg-xdeep: hsl(var(--neutral-10) / 0.35);
  /* Box-shadows | Text-shadows | Drop-shadows */
  /* ================================================== */
  --shadow: var(--neutral-10);
  --highlight: var(--neutral-90);
}

/* Solid colors MAP */
/* ================================================== */
/* Generate color classes */
.color-white {
  background-color: var(--color-white);
}
.color-2xlight {
  background-color: var(--color-2xlight);
}
.color-xlight {
  background-color: var(--color-xlight);
}
.color-light {
  background-color: var(--color-light);
}
.color-gray {
  background-color: var(--color-gray);
}
.color-dark {
  background-color: var(--color-dark);
}
.color-xdark {
  background-color: var(--color-xdark);
}
.color-2xdark {
  background-color: var(--color-2xdark);
}
.color-black {
  background-color: var(--color-black);
}

/* Tints MAP */
/* ================================================== */
/* Generate tint classes */
.tint-3xlight {
  background-color: var(--tint-3xlight);
}
.tint-2xlight {
  background-color: var(--tint-2xlight);
}
.tint-xlight {
  background-color: var(--tint-xlight);
}
.tint-light {
  background-color: var(--tint-light);
}
.tint-clear {
  background-color: var(--tint-clear);
}
.tint-dark {
  background-color: var(--tint-dark);
}
.tint-xdark {
  background-color: var(--tint-xdark);
}
.tint-2xdark {
  background-color: var(--tint-2xdark);
}
.tint-3xdark {
  background-color: var(--tint-3xdark);
}

/* Text colors MAP */
/* ================================================== */
/* Generate text color classes */
.text-2xstrong {
  color: var(--text-2xstrong);
}
.text-xstrong {
  color: var(--text-xstrong);
}
.text-strong {
  color: var(--text-strong);
}
.text-base {
  color: var(--text-base);
}
.text-mild {
  color: var(--text-mild);
}
.text-xmild {
  color: var(--text-xmild);
}
.text-2xmild {
  color: var(--text-2xmild);
}
.text-white {
  color: var(--color-white);
}
.text-2xlight {
  color: var(--color-2xlight);
}
.text-xlight {
  color: var(--color-xlight);
}
.text-light {
  color: var(--color-light);
}
.text-gray {
  color: var(--color-gray);
}
.text-dark {
  color: var(--color-dark);
}
.text-xdark {
  color: var(--color-xdark);
}
.text-2xdark {
  color: var(--color-2xdark);
}
.text-black {
  color: var(--color-black);
}

/* ================================================== */
/* Text */
/* ================================================== */
/* font-family: ✨ Config these values */
/* ================================================== */
/* ℹ️ Link your fonts in <head> of index.html */
:root {
  --font-title: "Poppins", "Arial", system-ui, sans-serif;
  --font-body: "Nunito Sans", "Arial", system-ui, sans-serif;
  --font-code: "Fragment Mono", "Courier", system-ui, monospace;
}

/* letter-spacing: ✨ Config these values */
/* ================================================== */
/* line-height: ✨ Config these values */
/* ================================================== */
/* font-weight: ✨ Config these values */
/* ================================================== */
/* font-size: ✨ Config these values */
/* ================================================== */
/* https://modern-fluid-typography.vercel.app/ */
:root {
  --text-2xs: clamp(0.75rem, 4vw - 1.5rem, 0.875rem);
  --text-xs: clamp(0.875rem, 4vw - 1rem, 0.9rem);
  --text-sm: clamp(1rem, 0.13vw + 1rem, 1.125rem);
  --text-md: clamp(1.125rem, 0.9vw + 1rem, 1.25rem);
  --text-lg: clamp(1.375rem, 1.3vw + 1rem, 1.75rem);
  --text-xl: clamp(1.5rem, 1.7vw + 1rem, 2.25rem);
  --text-2xl: clamp(1.6rem, calc(1.9vw + 1rem), 2.5rem);
  --text-3xl: clamp(2.6rem, 3.8vw + 1rem, 3.75rem);
}

/* Text size MAP */
/* ================================================== */
/* Update if you add/remove/edit names of fluid font-sizes above */
/* Generate text size classes */
.text-2xs {
  font-size: var(--text-2xs);
}
.text-xs {
  font-size: var(--text-xs);
}
.text-sm {
  font-size: var(--text-sm);
}
.text-md {
  font-size: var(--text-md);
}
.text-lg {
  font-size: var(--text-lg);
}
.text-xl {
  font-size: var(--text-xl);
}
.text-2xl {
  font-size: var(--text-2xl);
}
.text-3xl {
  font-size: var(--text-3xl);
}

/* ================================================== */
/* Text styles */
/* ================================================== */
/* Body text */
/* ================================================== */
body,
p,
input,
textarea {
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 300;
  font-optical-sizing: auto;
  font-style: normal;
  font-variation-settings: "wdth" 100, "YTLC" 500;
  font-size: var(--text-sm);
  line-height: calc(0.125em + 2.5ex + 0.125em);
  color: var(--text-base);
}

.text-max-w {
  max-width: 70ch;
}

/* Titles */
/* ================================================== */
.title-thick {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 400;
  letter-spacing: 0.01em;
  line-height: calc(0.125em + 1.5ex + 0.125em);
}

.title-md {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 300;
  letter-spacing: 0.01em;
  line-height: calc(0.125em + 1.5ex + 0.125em);
}

.title-thin {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 200;
  letter-spacing: 0.01em;
  line-height: calc(0.125em + 1.5ex + 0.125em);
}

/* Text styles */
/* ================================================== */
.title-1 {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 300;
  letter-spacing: 0.01em;
  line-height: calc(0.125em + 1.5ex + 0.125em);
  font-size: var(--text-3xl);
  letter-spacing: -0.005em;
  line-height: calc(0.125em + 2.25ex + 0.125em);
  color: var(--text-strong);
  text-shadow: var(--text-sha-2xl);
}

.title-2 {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 400;
  letter-spacing: 0.01em;
  line-height: calc(0.125em + 1.5ex + 0.125em);
  font-size: var(--text-xl);
  letter-spacing: 0.02em;
  text-align: start;
  color: var(--text-strong);
  text-shadow: var(--text-sha-2xl);
}

.title-3 {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 200;
  letter-spacing: 0.01em;
  line-height: calc(0.125em + 1.5ex + 0.125em);
  font-size: var(--text-2xl);
  text-align: center;
  text-shadow: var(--text-sha-lg);
}

.title-4 {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 400;
  letter-spacing: 0.01em;
  line-height: calc(0.125em + 1.5ex + 0.125em);
  text-align: start;
  letter-spacing: 0.02em;
  font-size: var(--text-lg);
  color: var(--text-strong);
  text-shadow: var(--text-sha-xl);
}

.title-md {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 300;
  letter-spacing: 0.01em;
  line-height: calc(0.125em + 1.5ex + 0.125em);
  text-align: start;
  letter-spacing: 0.02em;
  font-size: var(--text-md);
}

.subtitle {
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 300;
  font-optical-sizing: auto;
  font-style: normal;
  font-variation-settings: "wdth" 100, "YTLC" 500;
  font-size: var(--text-sm);
  text-align: center;
  font-size: var(--text-sm);
  letter-spacing: -0.005em;
  line-height: calc(0.125em + 2.25ex + 0.125em);
  color: var(--text-mild);
  text-shadow: var(--text-sha-3xs);
}

.super-wide {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 200;
  font-size: var(--text-xs);
  letter-spacing: min(3vw, 8px);
  text-transform: uppercase;
}

.eyebrow {
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 300;
  font-size: var(--text-2xs);
  letter-spacing: 0.03em;
  line-height: calc(0.125em + 2.25ex + 0.125em);
  color: var(--text-mild);
  text-transform: uppercase;
  text-shadow: var(--text-sha-3xs);
}

/* Labels */
/* ================================================== */
.label-xs {
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 500;
  letter-spacing: 0.01em;
  font-size: var(--text-xs);
  line-height: calc(0.125em + 2.25ex + 0.125em);
  text-shadow: var(--text-sha-xs);
}

.label-sm {
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 500;
  letter-spacing: 0.01em;
  font-size: var(--text-sm);
  line-height: calc(0.125em + 2.25ex + 0.125em);
  text-shadow: var(--text-sha-sm);
}

.label-md {
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 500;
  letter-spacing: 0.01em;
  font-size: var(--text-md);
  line-height: calc(0.125em + 2.25ex + 0.125em);
  text-shadow: var(--text-sha-md);
}

/* Inline Labels */
/* ================================================== */
.inline-label-layout-3xs {
  display: flex;
  align-items: center;
  gap: var(--3xs);
}

.inline-label-sm {
  width: max-content;
  word-break: keep-all;
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 300;
  letter-spacing: 0.01em;
  font-size: var(--text-sm);
  line-height: 1;
  color: var(--text-strong);
  text-shadow: var(--text-sha-2xs);
}

.inline-label-md {
  width: max-content;
  word-break: keep-all;
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 300;
  letter-spacing: 0.01em;
  font-size: var(--text-md);
  line-height: 1;
  color: var(--text-strong);
  text-shadow: var(--text-sha-xs);
}

/* Code fonts */
/* ================================================== */
.c-comment {
  font-family: "Fragment Mono", "Courier", monospace;
  font-size: inherit;
  line-height: inherit;
  font-weight: 400; /* only font-weight available for this font */
  font-style: italic;
  color: var(--text-xmild);
}

.code-class {
  font-family: "Fragment Mono", "Courier", monospace;
  font-size: inherit;
  line-height: inherit;
  font-weight: 400; /* only font-weight available for this font */
  display: inline;
}

/* ================================================== */
/* text-align: */
/* ================================================== */
.text-center {
  text-align: center;
}

.text-left {
  text-align: start;
}

.text-right {
  text-align: end;
}

.text-justify {
  text-align: justify;
}

/* text-transform: */
/* ================================================== */
.text-cap {
  text-transform: capitalize;
}

.text-allcap {
  text-transform: uppercase;
}

.text-lower {
  text-transform: lowercase;
}

.text-bold {
  font-weight: 400;
}

.text-ital {
  font-style: italic;
}

.text-line-through {
  text-decoration: line-through;
}

.text-underline {
  text-decoration: underline;
}

.first-line-bold:first-line {
  font-weight: 400;
}

.ellipsis {
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}

.break-word {
  overflow-wrap: break-word;
  min-width: 0;
}

.no-word-break {
  word-break: keep-all;
}

/* Bullet points */
/* ================================================== */
.dot::before {
  padding-right: 0.25em;
  content: "•";
}

.check::before {
  padding-right: 0.25em;
  content: "☐";
}

.arrow::before {
  padding-right: 0.25em;
  content: "➟";
}

/* Design */
/* ================================================== */
/* Interactions */
/* ================================================== */
/* Speeds variables ✨ Config these values */
/* ================================================== */
/* cubic-bezier */
/* ================================================== */
/* :focus-visible */
/* ================================================== */
:focus-visible {
  box-shadow: inset 0 0 0 1px hsl(var(--primary-98)/0.5), inset 0 0 0 1.5px hsl(var(--primary-95)/0.4), inset 0 0 0 2px hsl(var(--primary-5)/0.2) !important;
}

:focus {
  outline: 1px solid transparent;
}

/* Fade animations */
/* ================================================== */
@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes fade-out {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
/* Spotlight cursor effect */
/* ================================================== */
/* 1. Add `js-spotlightBin` class to parent */
/* 2. Add `spotlight` or `mini-spotlight` class to child element */
/* If it dosen't work... */
/* 1. Make sure the spotlight script is added at the end of <body> */
/* 2. Make sure `findSpotlights()` is called in `loadContent.js` */
/* 💠 example */
@media (hover: hover) {
  .spotlight {
    position: relative;
  }
  .spotlight:hover {
    --active: 1;
  }
  .spotlight::before {
    content: "";
    position: absolute;
    inset: 1px;
    pointer-events: none;
    border-radius: inherit;
    overflow: hidden;
    background: radial-gradient(circle at calc(var(--x) * 1px) calc(var(--y) * 1px), hsl(var(--neutral-95)/0.2) 0%, hsl(var(--neutral-95)/0.15) 10%, hsl(var(--neutral-95)/0.05) 20%, hsl(var(--neutral-95)/0.001) 30%, transparent 100%);
    background-attachment: fixed;
    opacity: var(--active, 0);
    will-change: opacity;
    transition: opacity 750ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
  }
}

/* For CTA buttons or other small elements */
@media (hover: hover) {
  .mini-spotlight {
    position: relative;
  }
  .mini-spotlight:hover {
    --active: 1;
  }
  .mini-spotlight::before {
    content: "";
    position: absolute;
    pointer-events: none;
    border-radius: inherit;
    overflow: hidden;
    background: radial-gradient(circle at calc(var(--x) * 1px) calc(var(--y) * 1px), hsl(var(--neutral-97)/0.7) 0%, hsl(var(--neutral-97)/0.75) 2%, hsl(var(--neutral-97)/0.1) 5%, hsl(var(--neutral-97)/0.001) 15%, transparent 100%);
    background-attachment: fixed;
    opacity: var(--active, 0);
    will-change: opacity, color;
    transition: opacity 750ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 750ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
  }
}

/* ================================================== */
/* Fonts */
/* ================================================== */
/* Credit: Mario Ranftl for Google Webfonts Helper */
/* https://gwfh.mranftl.com/fonts */
/* Poppins - title font */
/* ================================================== */
/* poppins-200 - latin */
@font-face {
  font-display: swap;
  font-family: "Poppins";
  font-style: normal;
  font-weight: 200;
  src: url("/assets/fonts/poppins-v23-latin-ext/poppins-v23-latin-ext-200.woff2") format("woff2");
}
/* poppins-300 - latin */
@font-face {
  font-display: swap;
  font-family: "Poppins";
  font-style: normal;
  font-weight: 300;
  src: url("/assets/fonts/poppins-v23-latin-ext/poppins-v23-latin-ext-300.woff2") format("woff2");
}
/* poppins-regular - latin */
@font-face {
  font-display: swap;
  font-family: "Poppins";
  font-style: normal;
  font-weight: 400;
  src: url("/assets/fonts/poppins-v23-latin-ext/poppins-v23-latin-ext-regular.woff2") format("woff2");
}
/* poppins-500 - latin */
@font-face {
  font-display: swap;
  font-family: "Poppins";
  font-style: normal;
  font-weight: 500;
  src: url("/assets/fonts/poppins-v23-latin-ext/poppins-v23-latin-ext-500.woff2") format("woff2");
}
/* poppins-700 - latin */
@font-face {
  font-display: swap;
  font-family: "Poppins";
  font-style: normal;
  font-weight: 700;
  src: url("/assets/fonts/poppins-v23-latin-ext/poppins-v23-latin-ext-700.woff2") format("woff2");
}
/* Nunito Sans - body font */
/* ================================================== */
/* nunito-sans-300 - latin */
@font-face {
  font-display: swap;
  font-family: "Nunito Sans";
  font-style: normal;
  font-weight: 300;
  src: url("/assets/fonts/nunito-sans-v18-latin/nunito-sans-v18-latin-300.woff2") format("woff2");
}
/* nunito-sans-regular - latin */
@font-face {
  font-display: swap;
  font-family: "Nunito Sans";
  font-style: normal;
  font-weight: 400;
  src: url("/assets/fonts/nunito-sans-v18-latin/nunito-sans-v18-latin-regular.woff2") format("woff2");
}
/* nunito-sans-500 - latin */
@font-face {
  font-display: swap;
  font-family: "Nunito Sans";
  font-style: normal;
  font-weight: 500;
  src: url("/assets/fonts/nunito-sans-v18-latin/nunito-sans-v18-latin-500.woff2") format("woff2");
}
/* nunito-sans-600 - latin */
@font-face {
  font-display: swap;
  font-family: "Nunito Sans";
  font-style: normal;
  font-weight: 600;
  src: url("/assets/fonts/nunito-sans-v18-latin/nunito-sans-v18-latin-600.woff2") format("woff2");
}
/* nunito-sans-700 - latin */
@font-face {
  font-display: swap;
  font-family: "Nunito Sans";
  font-style: normal;
  font-weight: 700;
  src: url("/assets/fonts/nunito-sans-v18-latin/nunito-sans-v18-latin-700.woff2") format("woff2");
}
/* Fragment Mono - code font */
/* ================================================== */
@font-face {
  font-display: swap;
  font-family: "Fragment Mono";
  font-style: normal;
  font-weight: 400;
  src: url("/assets/fonts/fragment-mono-v5-latin-regular.woff2") format("woff2");
}
/* ================================================== */
/* SVGs */
/* ================================================== */
/* SVG masks that let you change their color via CSS */
/* Credit: Chris Coyier */
/* https://css-tricks.com/change-color-of-svg-on-hover/ */
/* 💠 example */
.svg-copy {
  mask: url(/assets/icons/Copy.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-square-out {
  mask: url(/assets/icons/SquareOut.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-chev-up {
  mask: url(/assets/icons/CaretUp.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-chev-down {
  mask: url(/assets/icons/CaretDown.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-chev-l {
  mask: url(/assets/icons/CaretLeft.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-chev-r {
  mask: url(/assets/icons/CaretRight.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-linkedin {
  mask: url(/assets/icons/LinkedinLogo.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-instagram {
  mask: url(/assets/icons/InstagramLogo.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-github {
  mask: url(/assets/icons/GithubLogo.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-ham {
  mask: url(/assets/icons/List.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-x {
  mask: url(/assets/icons/X.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-circleHalf {
  mask: url(/assets/icons/CircleHalf.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-circleHalfTilt {
  mask: url(/assets/icons/CircleHalfTilt.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-magnifying-glass {
  mask: url(/assets/icons/MagnifyingGlass.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-xCircle {
  mask: url(/assets/icons/XCircle.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-xCircleOutline {
  mask: url(/assets/icons/XCircleOutline.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

.svg-envelope {
  mask: url(/assets/icons/envelope-simple.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
}

/* Glass */
/* ================================================== */
/* Bevels */
/* ================================================== */
/* Curved bevels */
/* ================================================== */
html {
  --bevel-xs:
  inset 1px 1px 0.5px -1.5px hsl(var(--highlight) / 0.7),
  inset 1.5px 1.5px 0.75px -2.75px hsl(var(--highlight) / 0.5),
  inset 0.25px 0.25px 0.5px -0.25px hsl(var(--highlight) / 0.15),
  inset 0.25px 0.25px 0.25px hsl(var(--highlight) / 0.08),
  inset 0 0 0.25px 0.25px hsl(var(--highlight) / 0.03);
  --bevel-sm:
  inset 1.5px 1.5px 0.75px -2.75px hsl(var(--highlight) / 0.9),
  inset 2px 2px 1px -3px hsl(var(--highlight) / 0.7),
  inset 0.5px 0.5px 0.5px -0.25px hsl(var(--highlight) / 0.1),
  inset 0.5px 0.5px 0.25px hsl(var(--highlight) / 0.05),
  inset 0 0 0.25px 0.25px hsl(var(--highlight) / 0.03);
  --bevel-md:
  inset 2px 2px 1px -3px hsl(var(--highlight) / 0.8),
  inset 2px 2px 1px -3px hsl(var(--highlight) / 0.5),
  inset 1px 1px 1px -0.5px hsl(var(--highlight) / 0.15),
  inset 1px 1px 0.25px hsl(var(--highlight) / 0.03),
  inset 0 0 0.25px 0.5px hsl(var(--highlight) / 0.03);
  --bevel-lg:
  inset 2px 2px 1px -3px hsl(var(--highlight) / 0.8),
  inset 3px 3px 1.5px -4.5px hsl(var(--highlight) / 0.5),
  inset 1.25px 1.25px 1.25px -0.75px hsl(var(--highlight) / 0.15),
  inset 1.25px 1.25px 0.25px hsl(var(--highlight) / 0.03),
  inset 0 0 0.25px 0.5px hsl(var(--highlight) / 0.03);
  --bevel-xl:
  inset 2px 2px 1px -3px hsl(var(--highlight) / 0.8),
  inset 4px 4px 2px -6px hsl(var(--highlight) / 0.3),
  inset 1.5px 1.5px 1.5px -0.75px hsl(var(--highlight) / 0.15),
  inset 1.5px 1.5px 0.25px hsl(var(--highlight) / 0.03),
  inset 0 0 0.25px 0.5px hsl(var(--highlight) / 0.03);
  /* Flat bevels */
  /* ================================================== */
  --flat-bevel-sm:
  inset 0 0.25px 0.35px -0.23px hsl(var(--highlight) / 0.15),
  inset 0 0.5px 0.5px -0.25px hsl(var(--highlight) / 0.1),
  inset 0 0.5px 0.1px 0 hsl(var(--highlight) / 0.08);
  --flat-bevel-md:
  inset 0 0.25px 0.35px -0.23px hsl(var(--highlight) / 0.2),
  inset 0 1px 1px -1px hsl(var(--highlight) / 0.1),
  inset 0 0.8px 0.2px hsl(var(--highlight) / 0.08);
  --flat-bevel-lg:
  inset 0 0.25px 0.35px -0.22px hsl(var(--highlight) / 0.2),
  inset 0 1px 1.25px -1px hsl(var(--highlight) / 0.15),
  inset 0 1px 0.1px hsl(var(--highlight) / 0.08);
}

/* Bevel classes */
/* ================================================== */
.bevel-none {
  box-shadow: none;
}

.bevel-xs {
  -webkit-box-shadow: var(--bevel-xs);
  box-shadow: var(--bevel-xs);
}

.bevel-sm {
  -webkit-box-shadow: var(--bevel-sm);
  box-shadow: var(--bevel-sm);
}

.bevel-md {
  -webkit-box-shadow: var(--bevel-md);
  box-shadow: var(--bevel-md);
}

.bevel-lg {
  -webkit-box-shadow: var(--bevel-lg);
  box-shadow: var(--bevel-lg);
}

.bevel-xl {
  -webkit-box-shadow: var(--bevel-xl);
  box-shadow: var(--bevel-xl);
}

.flat-bevel-sm {
  box-shadow: var(--flat-bevel-sm);
}

.flat-bevel-md {
  box-shadow: var(--flat-bevel-md);
}

.flat-bevel-lg {
  box-shadow: var(--flat-bevel-lg);
}

/* ================================================== */
/* Glass */
/* ================================================== */
/* ⚠️ Glass backgrounds stop working at around 2000px viewport width in Firefox! */
/* ================================================== */
/* Textures ✨ Config these values */
/* ================================================== */
/* free transparent textures */
/* https://www.transparenttextures.com/ */
:root {
  --noise-light: url("https://www.transparenttextures.com/patterns/fabric-1-light.png");
  --noise-gray: url("https://www.transparenttextures.com/patterns/egg-shell.png");
  --noise-dark: url("https://www.transparenttextures.com/patterns/black-orchid.png");
  --noise-coarse: url("https://www.transparenttextures.com/patterns/concrete-wall-3.png");
  --noise-topology: url("https://www.transparenttextures.com/patterns/cartographer.png");
}

/* ================================================== */
/* backdrop-filter: ✨ Config these values */
/* ================================================== */
/* Backdrop filter mixin */
/* ================================================== */
/* 💠 example */
/* or */
body {
  --blur: 60px;
  --bright: 1;
  --satu: 1.5;
}

/* ================================================== */
/* Glass base mixin */
/* ================================================== */
/* Glass filter presets for glass base ✨ Config these values */
/* ================================================== */
/* 3D glass ✨ Config these values */
/* ================================================== */
.glass-3d {
  position: relative;
  z-index: 4;
}
.glass-3d::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 5;
  box-shadow: var(--bevel-md);
}
.glass-3d::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 3;
  background-repeat: repeat;
  background-size: 40px;
  background-image: var(--noise-gray);
  -webkit-backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
  backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
}
.glass-3d > * {
  position: relative;
  z-index: 6;
}

.glass-3d-sm {
  position: relative;
  z-index: 4;
}
.glass-3d-sm::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 5;
  box-shadow: var(--bevel-sm);
}
.glass-3d-sm::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 3;
  background-repeat: repeat;
  background-size: 25px;
  background-image: var(--noise-gray);
  -webkit-backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
  backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
}
.glass-3d-sm > * {
  position: relative;
  z-index: 6;
}

/* Flat glass */
/* ================================================== */
/* For elements that span edge-to-edge or don't have border-radius */
.glass-flat {
  position: relative;
  z-index: 4;
}
.glass-flat::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 5;
  box-shadow: var(--flat-bevel-md);
}
.glass-flat::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 3;
  background-repeat: repeat;
  background-size: 40px;
  background-image: var(--noise-gray);
  -webkit-backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
  backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
}
.glass-flat > * {
  position: relative;
  z-index: 6;
}

.glass-flat-sm {
  position: relative;
  z-index: 4;
}
.glass-flat-sm::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 5;
  box-shadow: var(--flat-bevel-sm);
}
.glass-flat-sm::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 3;
  background-repeat: repeat;
  background-size: 25px;
  background-image: var(--noise-gray);
  -webkit-backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
  backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
}
.glass-flat-sm > * {
  position: relative;
  z-index: 6;
}

/* 2D glass -> no bevel */
/* ================================================== */
.glass-2d {
  position: relative;
  z-index: 4;
}
.glass-2d::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 5;
  box-shadow: var(--bevel-none);
}
.glass-2d::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 3;
  background-repeat: repeat;
  background-size: 40px;
  background-image: var(--noise-gray);
  -webkit-backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
  backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
}
.glass-2d > * {
  position: relative;
  z-index: 6;
}

/* ================================================== */
/* Glass container queries */
/* ================================================== */
/* Switch to a flat-bevel at 100vw or bigger to prevent a white line down the left edge */
/* the -16px prevents issues with scrollbars cutting into 100vw */
@container bg (width >= calc(100vw - 16px)) {
  .glass-3d {
    position: relative;
    z-index: 4;
  }
  .glass-3d::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    z-index: 5;
    box-shadow: var(--flat-bevel-md);
  }
  .glass-3d::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    z-index: 3;
    background-repeat: repeat;
    background-size: 40px;
    background-image: var(--noise-gray);
    -webkit-backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
    backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
  }
  .glass-3d > * {
    position: relative;
    z-index: 6;
  }
  .glass-3d-sm {
    position: relative;
    z-index: 4;
  }
  .glass-3d-sm::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    z-index: 5;
    box-shadow: var(--flat-bevel-sm);
  }
  .glass-3d-sm::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    z-index: 3;
    background-repeat: repeat;
    background-size: 25px;
    background-image: var(--noise-gray);
    -webkit-backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
    backdrop-filter: blur(var(--blur)) brightness(var(--bright)) saturate(var(--satu));
  }
  .glass-3d-sm > * {
    position: relative;
    z-index: 6;
  }
}
/* ================================================== */
/* Insets */
/* ================================================== */
html {
  /* Insets */
  /* ================================================== */
  --inset-sm:
    inset -2px -2px 1px -3.25px hsl(var(--highlight) / 0.99),
    inset -0.5px -0.5px 0.5px -0.25px hsl(var(--highlight) / 0.3),
    inset -0.75px -0.75px 0.25px hsl(var(--highlight) / 0.1),
    inset 0.5px 0.5px 0.5px -0.5px hsl(var(--shadow) / 0.1),
    inset 0.25px 0.25px 1.25px hsl(var(--shadow) / 0.2),
    inset 1px 1px 2px hsl(var(--shadow) / 0.2),
    inset 2px 2px 16px -8px hsl(var(--shadow) / 0.25);
  --inset-md:
    inset -2px -2px 1px -3.25px hsl(var(--highlight) / 0.99),
    inset -1px -1px 0.75px -0.75px hsl(var(--highlight) / 0.4),
    inset -1px -1px 0.25px hsl(var(--highlight) / 0.1),
    inset 0.75px 0.75px 1px -0.25px hsl(var(--shadow) / 0.1),
    inset 0.25px 0.25px 1.25px hsl(var(--shadow) / 0.2),
    inset 1.25px 1.25px 2px hsl(var(--shadow) / 0.2),
    inset 2px 2px 16px -8px hsl(var(--shadow) / 0.25);
  --inset-lg:
    inset -2px -2px 1px -3.25px hsl(var(--highlight) / 0.99),
    inset -1.25px -1.25px 1px -0.75px hsl(var(--highlight) / 0.4),
    inset -1.25px -1.25px 0.25px hsl(var(--highlight) / 0.1),
    inset 0.75px 0.75px 1px -0.25px hsl(var(--shadow) / 0.1),
    inset 0.25px 0.25px 1.25px hsl(var(--shadow) / 0.2),
    inset 1.5px 1.5px 2.25px hsl(var(--shadow) / 0.2),
    inset 4px 4px 18px -10px hsl(var(--shadow) / 0.25);
  /* Flat insets  */
  /* ================================================== */
  --inset-flat-sm:
    inset 0 -0.75px 0.75px -0.8px hsl(var(--highlight) / 0.4),
    inset 0 -0.75px 0.25px -0.25px hsl(var(--highlight) / 0.15),
    inset 0 0.5px 0.5px -0.55px hsl(var(--shadow) / 0.1),
    inset 0 1.5px 1.5px -1.55px hsl(var(--shadow) / 0.2),
    inset 0 2px 2px -2.25px hsl(var(--shadow) / 0.35),
    inset 0 12px 12px -13px hsl(var(--shadow) / 0.2);
  --inset-flat-md:
    inset 0 -1px 1px -1.05px hsl(var(--highlight) / 0.4),
    inset 0 -1px 0.25px -0.25px hsl(var(--highlight) / 0.15),
    inset 0 0.5px 0.5px -0.55px hsl(var(--shadow) / 0.1),
    inset 0 2px 2px -2.25px hsl(var(--shadow) / 0.25),
    inset 0 3px 3px -3.25px hsl(var(--shadow) / 0.35),
    inset 0 14px 14px -15px hsl(var(--shadow) / 0.2);
  --inset-flat-lg:
    inset 0 -1.5px 1.5px -1.55px hsl(var(--highlight) / 0.4),
    inset 0 -1.5px 0.25px -0.25px hsl(var(--highlight) / 0.15),
    inset 0 0.5px 0.5px -0.55px hsl(var(--shadow) / 0.15),
    inset 0 2.5px 2.5px -2.75px hsl(var(--shadow) / 0.25),
    inset 0 4px 4px -4.25px hsl(var(--shadow) / 0.35),
    inset 0 16px 16px -17px hsl(var(--shadow) / 0.2);
}

/* Rounded inset classes */
/* ================================================== */
.inset-sm {
  box-shadow: var(--inset-sm);
}

.inset-md {
  box-shadow: var(--inset-md);
}

.inset-lg {
  box-shadow: var(--inset-lg);
}

/* Flat inset classes */
/* ================================================== */
.inset-flat-sm {
  box-shadow: var(--inset-flat-sm);
}

.inset-flat-md {
  box-shadow: var(--inset-flat-md);
}

.inset-flat-lg {
  box-shadow: var(--inset-flat-lg);
}

/* Inset background colors */
/* ================================================== */
.inset-bg-reg {
  background-color: var(--inset-bg-reg);
}

.inset-bg-deep {
  background-color: var(--inset-bg-deep);
}

.inset-bg-xdeep {
  background-color: var(--inset-bg-xdeep);
}

/* ================================================== */
/* Shadows */
/* ================================================== */
/* Elevation shadows */
/* ================================================== */
html {
  --sha-3xs:
    0 0 0.3px hsl(var(--shadow) / 0.08),
    0 0 0.75px hsl(var(--shadow) / 0.05),
    0.5px 0.4px 1px hsl(var(--shadow) / 0.1),
    0.5px 0.5px 1.5px hsl(var(--shadow) / 0.08);
  --sha-2xs:
    0 0 0.3px hsl(var(--shadow) / 0.08),
    0 0 0.75px hsl(var(--shadow) / 0.05),
    0.5px 0.4px 1px hsl(var(--shadow) / 0.08),
    1px 0.75px 1.75px -0.1px hsl(var(--shadow) / 0.1);
  --sha-xs:
    0 0 0.3px hsl(var(--shadow) / 0.08),
    0 0 0.75px hsl(var(--shadow) / 0.05),
    1px 0.75px 1.75px -0.1px hsl(var(--shadow) / 0.08),
    2px 1.5px 4px -0.5px hsl(var(--shadow) / 0.08);
  --sha-sm:
    0 0 0.3px hsl(var(--shadow) / 0.08),
    0 0 0.75px hsl(var(--shadow) / 0.05),
    1px 1px 1.5px -0.25px hsl(var(--shadow) / 0.08),
    1.5px 1.5px 2px -1px hsl(var(--shadow) / 0.08),
    3px 3px 8px -1px hsl(var(--shadow) / 0.08);
  --sha-md:
    0 0 0.3px hsl(var(--shadow) / 0.08),
    0 0 0.75px hsl(var(--shadow) / 0.05),
    1px 0.75px 1.75px -0.25px hsl(var(--shadow) / 0.08),
    2px 1.5px 3.5px -0.5px hsl(var(--shadow) / 0.08),
    4px 3px 12px -1px hsl(var(--shadow) / 0.08);
  --sha-lg:
    0 0 0.3px hsl(var(--shadow) / 0.08),
    0 0 0.75px hsl(var(--shadow) / 0.05),
    1.5px 1.5px 2px -0.5px hsl(var(--shadow) / 0.08),
    3px 3px 6px -1px hsl(var(--shadow) / 0.08),
    6px 4.5px 14px -1.5px hsl(var(--shadow) / 0.08);
  --sha-xl:
    0 0 0.3px hsl(var(--shadow) / 0.08),
    0 0 0.75px hsl(var(--shadow) / 0.05),
    1.5px 1.5px 2px -0.5px hsl(var(--shadow) / 0.08),
    3px 3px 6px -1px hsl(var(--shadow) / 0.08),
    8px 6px 18px -2px hsl(var(--shadow) / 0.08);
  --sha-2xl:
  0 0 0.75px hsl(var(--shadow) / 0.2),
  0.7px 0.8px 1.2px -0.4px hsl(var(--shadow) / 0.1),
  1.3px 1.5px 2.2px -0.8px hsl(var(--shadow) / 0.1),
  2.3px 2.6px 3.9px -1.2px hsl(var(--shadow) / 0.1),
  3.9px 4.4px 6.6px -1.7px hsl(var(--shadow) / 0.1),
  6.5px 7.2px 10.9px -2.1px hsl(var(--shadow) / 0.15),
  8px 9px 14px -2.5px hsl(var(--shadow) / 0.25);
}

/* Shadows MAP */
/* ================================================== */
.sha-3xs {
  box-shadow: var(--sha-3xs);
}
.sha-2xs {
  box-shadow: var(--sha-2xs);
}
.sha-xs {
  box-shadow: var(--sha-xs);
}
.sha-sm {
  box-shadow: var(--sha-sm);
}
.sha-md {
  box-shadow: var(--sha-md);
}
.sha-lg {
  box-shadow: var(--sha-lg);
}
.sha-xl {
  box-shadow: var(--sha-xl);
}
.sha-2xl {
  box-shadow: var(--sha-2xl);
}

/* ================================================== */
/* Flat overhang shadows */
/* ================================================== */
html {
  --overhang-sha-xs:
    inset 0 0.5px 1px -1px hsl(var(--shadow) / 0.5),
    inset 0 1px 2px -2px hsl(var(--shadow) / 0.5),
    inset 0 2px 4px -4px hsl(var(--shadow) / 0.3);
  --overhang-sha-sm:
    inset 0 0.5px 1px -1px hsl(var(--shadow) / 0.7),
    inset 0 1px 2px -2px hsl(var(--shadow) / 0.5),
    inset 0 2px 4px -4px hsl(var(--shadow) / 0.3),
    inset 0 4px 8px -8px hsl(var(--shadow) / 0.3);
  --overhang-sha-md:
    inset 0 0.5px 1px -1px hsl(var(--shadow) / 0.5),
    inset 0 1px 2px -2px hsl(var(--shadow) / 0.5),
    inset 0 2px 4px -4px hsl(var(--shadow) / 0.5),
    inset 0 6px 12px -12px hsl(var(--shadow) / 0.3);
  --overhang-sha-lg:
    inset 0 0.5px 1px -1px hsl(var(--shadow) / 0.4),
    inset 0 2px 4px -4px hsl(var(--shadow) / 0.5),
    inset 0 4px 8px -8px hsl(var(--shadow) / 0.5),
    inset 0 8px 16px -16px hsl(var(--shadow) / 0.3);
  --overhang-sha-xl:
    inset 0 0.5px 1px -1px hsl(var(--shadow) / 0.4),
    inset 0 4px 8px -8px hsl(var(--shadow) / 0.5),
    inset 0 8px 16px -16px hsl(var(--shadow) / 0.5),
    inset 0 10px 20px -20px hsl(var(--shadow) / 0.3);
}

/* Flat overhang shadow MAP */
/* ================================================== */
.overhang-sha-xs {
  box-shadow: var(--overhang-sha-xs);
}
.overhang-sha-sm {
  box-shadow: var(--overhang-sha-sm);
}
.overhang-sha-md {
  box-shadow: var(--overhang-sha-md);
}
.overhang-sha-lg {
  box-shadow: var(--overhang-sha-lg);
}
.overhang-sha-xl {
  box-shadow: var(--overhang-sha-xl);
}

/* ================================================== */
/* Text shadows */
/* ================================================== */
html {
  --text-sha-3xs:
    0.2px 0 0.2px hsl(var(--shadow) / 0.1),
    0.2px 0.2px 0.2px hsl(var(--shadow) / 0.2),
    0.25px 0.25px 0.5px hsl(var(--shadow) / 0.1),
    0 0 0.05em hsl(var(--shadow) / 0.1),
    0 0 0.7em hsl(var(--shadow) / 0.15);
  --text-sha-2xs:
    0.2px 0 0.2px hsl(var(--shadow) / 0.1),
    0.25px 0.25px 0.25px hsl(var(--shadow) / 0.2),
    0.25px 0.25px 0.5px hsl(var(--shadow) / 0.1),
    0 0 0.05em hsl(var(--shadow) / 0.1),
    0 0 0.7em hsl(var(--shadow) / 0.15);
  --text-sha-xs:
    0.1px 0.1px hsl(var(--shadow) / 0.3),
    0.25px 0.25px hsl(var(--shadow) / 0.35),
    0.02em 0.02em 0.04em hsl(var(--shadow) / 0.2),
    0 0 0.05em hsl(var(--shadow) / 0.2),
    0 0 0.7em hsl(var(--shadow) / 0.2);
  --text-sha-sm:
    0.2px 0 0.2px hsl(var(--shadow) / 0.1),
    0.35px 0.35px 0.35px hsl(var(--shadow) / 0.25),
    0.5px 0.5px 1px hsl(var(--shadow) / 0.1),
    0 0 0.05em hsl(var(--shadow) / 0.1),
    0 0 0.7em hsl(var(--shadow) / 0.15);
  --text-sha-md:
    0.2px 0 0.2px hsl(var(--shadow) / 0.1),
    0.4px 0.4px 0.4px hsl(var(--shadow) / 0.25),
    0.5px 0.5px 1px hsl(var(--shadow) / 0.1),
    0 0 0.05em hsl(var(--shadow) / 0.1),
    0 0 0.7em hsl(var(--shadow) / 0.2);
  --text-sha-lg:
    0.25px 0 0.25px hsl(var(--shadow) / 0.1),
    0.45px 0.45px 0.45px hsl(var(--shadow) / 0.25),
    0.75px 0.75px 1.5px hsl(var(--shadow) / 0.1),
    0 0 0.05em hsl(var(--shadow) / 0.1),
    0 0 0.7em hsl(var(--shadow) / 0.2);
  --text-sha-xl:
    0.25px 0 0.25px hsl(var(--shadow) / 0.1),
    0.5px 0.5px 0.5px hsl(var(--shadow) / 0.25),
    0.75px 0.75px 1.5px hsl(var(--shadow) / 0.1),
    0 0 0.05em hsl(var(--shadow) / 0.1),
    0 0 0.7em hsl(var(--shadow) / 0.2);
  --text-sha-2xl:
    0.25px 0 0.25px hsl(var(--shadow) / 0.1),
    0.55px 0.55px 0.55px hsl(var(--shadow) / 0.25),
    1px 1px 2px hsl(var(--shadow) / 0.1),
    0 0 0.05em hsl(var(--shadow) / 0.1),
    0 0 0.7em hsl(var(--shadow) / 0.2);
  --text-sha-3xl:
    0.25px 0 0.25px hsl(var(--shadow) / 0.1),
    0.6px 0.6px 0.6px hsl(var(--shadow) / 0.25),
    1px 1px 2px hsl(var(--shadow) / 0.1),
    0 0 0.05em hsl(var(--shadow) / 0.1),
    0 0 0.7em hsl(var(--shadow) / 0.2);
}

/* Text shadow MAP */
/* ================================================== */
.text-sha-3xs {
  text-shadow: var(--text-sha-3xs);
}
.text-sha-2xs {
  text-shadow: var(--text-sha-2xs);
}
.text-sha-xs {
  text-shadow: var(--text-sha-xs);
}
.text-sha-sm {
  text-shadow: var(--text-sha-sm);
}
.text-sha-md {
  text-shadow: var(--text-sha-md);
}
.text-sha-lg {
  text-shadow: var(--text-sha-lg);
}
.text-sha-xl {
  text-shadow: var(--text-sha-xl);
}
.text-sha-2xl {
  text-shadow: var(--text-sha-2xl);
}
.text-sha-3xl {
  text-shadow: var(--text-sha-3xl);
}

/* Components */
/* ================================================== */
/* Inputs */
/* ================================================== */
/* Input related items */
/* ================================================== */
.input-legend {
  padding-bottom: var(--sm);
  font-size: var(--text-md);
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 300;
  letter-spacing: 0.02em;
  color: var(--text-xstrong);
  text-shadow: var(--text-sha-sm);
}

.input-fieldset {
  display: grid;
  gap: var(--sm);
}

/* Input theme for switch | checkbox | radio button | slider ✨ Config these values */
/* ================================================== */
body {
  --input-h: var(--ui-h-xs);
  --bg: var(--tint-dark);
  --bg-hover: var(--tint-xdark);
  --inset: var(--inset-sm);
  --knob: hsl(var(--neutral-95) / 0.95);
  --knob-hover: hsl(var(--neutral-90) / 0.85);
  --knob-sha: var(--sha-xs);
  --bg-checked: hsl(var(--primary-50) / 0.7);
  --bg-checked-hover: hsl(var(--primary-40) / 1);
  --bg-disabled: var(--inset-bg-xdeep);
  --inset-disabled: none;
  --knob-disabled: hsl(var(--neutral-90) / 0.25);
  --knob-disabled-sha: none;
  --bg-disabled-checked: hsl(var(--primary-70) / 0.4);
}

/* Base for switch | checkbox | radio button   */
/* ================================================== */
/* Checkbox */
/* ================================================== */
.checkbox {
  position: relative;
  z-index: 14;
  overflow: hidden;
  pointer-events: auto;
  cursor: pointer;
  background-color: var(--bg);
  box-shadow: var(--inset);
  will-change: background-color;
  transition: background-color 400ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
  min-width: var(--input-h);
  width: var(--input-h);
  height: var(--input-h);
  border-radius: var(--5xs);
}
.checkbox::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 15;
  overflow: hidden;
}
@media (pointer: fine) {
  .checkbox:hover {
    background-color: var(--bg-hover);
  }
}
.checkbox:checked {
  background-color: var(--bg-checked);
}
.checkbox:checked:hover {
  background-color: var(--bg-checked-hover);
}
.checkbox:focus-visible {
  box-shadow: 0 0 0 1px hsl(var(--primary-98)/0.4), 0 0 0 2px hsl(var(--primary-90)/0.3), 0 0 0 3px hsl(var(--primary-5)/0.2) !important;
}
.checkbox:disabled {
  cursor: not-allowed;
  background-color: var(--bg-disabled);
  box-shadow: var(--inset-disabled);
}
.checkbox:disabled + label {
  color: var(--text-xmild);
}
.checkbox:disabled::after {
  box-shadow: var(--knob-disabled-sha);
}
.checkbox:disabled:checked {
  background-color: var(--bg-disabled-checked);
}
.checkbox:disabled:checked::after {
  box-shadow: var(--knob-disabled-sha);
}
.checkbox::after {
  background-color: transparent;
  box-shadow: none;
}
.checkbox:checked::after {
  border-radius: 0.05rem;
  width: 55%;
  height: 30%;
  border: 2.5px solid var(--knob);
  border-top: 0;
  border-right: 0;
  left: 23%;
  top: 32%;
  transform: rotate(-45deg);
}
.checkbox:disabled::after {
  border-radius: 0.05rem;
  width: 80%;
  height: 30%;
  border-bottom: 2px solid var(--knob-disabled);
  border-top: 0;
  border-right: 0;
  border-left: 0;
  left: 0%;
  top: 30%;
  transform: rotate(-45deg);
}
.checkbox:disabled:checked::after {
  width: 55%;
  height: 32%;
  border: 2.5px solid var(--knob-disabled);
  border-top: 0;
  border-right: 0;
  left: 23%;
  top: 30%;
}

/* Switch */
/* ================================================== */
.switch {
  --switch-width: calc(var(--input-h) * 1.8);
  --thumb-margin: 3px;
  position: relative;
  z-index: 14;
  overflow: hidden;
  pointer-events: auto;
  cursor: pointer;
  background-color: var(--bg);
  box-shadow: var(--inset);
  will-change: background-color;
  transition: background-color 400ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
  display: inline-flex;
  width: var(--switch-width);
  height: var(--input-h);
  align-items: center;
  border-radius: 99px;
}
.switch::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 15;
  overflow: hidden;
}
@media (pointer: fine) {
  .switch:hover {
    background-color: var(--bg-hover);
  }
}
.switch:checked {
  background-color: var(--bg-checked);
}
.switch:checked:hover {
  background-color: var(--bg-checked-hover);
}
.switch:focus-visible {
  box-shadow: 0 0 0 1px hsl(var(--primary-98)/0.4), 0 0 0 2px hsl(var(--primary-90)/0.3), 0 0 0 3px hsl(var(--primary-5)/0.2) !important;
}
.switch:disabled {
  cursor: not-allowed;
  background-color: var(--bg-disabled);
  box-shadow: var(--inset-disabled);
}
.switch:disabled + label {
  color: var(--text-xmild);
}
.switch:disabled::after {
  box-shadow: var(--knob-disabled-sha);
}
.switch:disabled:checked {
  background-color: var(--bg-disabled-checked);
}
.switch:disabled:checked::after {
  box-shadow: var(--knob-disabled-sha);
}
.switch::after {
  display: block;
  aspect-ratio: 1;
  margin: var(--thumb-margin);
  height: calc(100% - 2 * var(--thumb-margin));
  background-color: var(--knob);
  box-shadow: var(--knob-sha);
  border-radius: 99px;
  transition: margin 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.switch:checked::after {
  margin-inline-start: calc(var(--switch-width) - var(--input-h) + var(--thumb-margin));
}
.switch:disabled::after {
  background-color: var(--knob-disabled);
}

/* Radio button */
/* ================================================== */
.radio {
  position: relative;
  z-index: 14;
  overflow: hidden;
  pointer-events: auto;
  cursor: pointer;
  background-color: var(--bg);
  box-shadow: var(--inset);
  will-change: background-color;
  transition: background-color 400ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
  width: var(--input-h);
  height: var(--input-h);
  aspect-ratio: 1;
  border-radius: 99px;
}
.radio::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 15;
  overflow: hidden;
}
@media (pointer: fine) {
  .radio:hover {
    background-color: var(--bg-hover);
  }
}
.radio:checked {
  background-color: var(--bg-checked);
}
.radio:checked:hover {
  background-color: var(--bg-checked-hover);
}
.radio:focus-visible {
  box-shadow: 0 0 0 1px hsl(var(--primary-98)/0.4), 0 0 0 2px hsl(var(--primary-90)/0.3), 0 0 0 3px hsl(var(--primary-5)/0.2) !important;
}
.radio:disabled {
  cursor: not-allowed;
  background-color: var(--bg-disabled);
  box-shadow: var(--inset-disabled);
}
.radio:disabled + label {
  color: var(--text-xmild);
}
.radio:disabled::after {
  box-shadow: var(--knob-disabled-sha);
}
.radio:disabled:checked {
  background-color: var(--bg-disabled-checked);
}
.radio:disabled:checked::after {
  box-shadow: var(--knob-disabled-sha);
}
.radio::after {
  background-color: transparent;
  box-shadow: none;
}
.radio:checked::after {
  margin: 5px;
  aspect-ratio: 1;
  border-radius: 99px;
  background-color: var(--knob);
  box-shadow: var(--knob-sha);
}
.radio:disabled:checked::after {
  background-color: var(--knob-disabled);
}

/* ================================================== */
/* Sliders  */
/* ================================================== */
input[type=range]:active {
  cursor: grabbing;
}

input[type=range]:disabled {
  filter: grayscale(0.5);
  opacity: 0.4;
  cursor: not-allowed;
}
input[type=range]:disabled ~ .value-display {
  filter: grayscale(0.5);
  opacity: 0.4;
  cursor: not-allowed;
}

.slider-w-display {
  pointer-events: auto;
  position: relative;
  width: 100%;
  height: calc(2.25 * var(--ui-h-xs));
  display: grid;
  align-items: end;
}

.slider-ui {
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  height: 0.5em;
  margin: calc((var(--ui-h-xs) - 0.5em) / 2) 0;
  padding: 0;
  outline: none;
  border-radius: 3px;
  background-color: transparent;
}
.slider-ui::-webkit-slider-thumb {
  -webkit-appearance: none;
}
.slider-ui::-webkit-slider-runnable-track {
  -webkit-appearance: none;
  border: none;
  width: 100%;
  height: 0.5em;
  background-color: var(--inset-bg-deep);
  box-shadow: var(--inset-sm);
  border-radius: 3px;
  background-color: var(--inset-bg-deep);
}
.slider-ui::-webkit-slider-thumb {
  margin-top: calc(0.5 * (0.5em - var(--ui-h-xs)));
  -webkit-appearance: none;
  border: none;
  width: var(--ui-h-xs);
  height: var(--ui-h-xs);
  border-radius: 50%;
  background-color: hsl(var(--neutral-85)/1);
  box-shadow: var(--knob-sha);
  transition: background-color 400ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.slider-ui::-moz-range-track {
  -webkit-appearance: none;
  border: none;
  width: 100%;
  height: 0.5em;
  background-color: var(--inset-bg-deep);
  box-shadow: var(--inset-sm);
  border-radius: 3px;
}
.slider-ui::-moz-range-progress {
  -webkit-appearance: none;
  height: 0.5em;
  background-color: var(--bg-checked);
  border-radius: 3px;
}
.slider-ui::-moz-range-thumb {
  -webkit-appearance: none;
  border: none;
  width: var(--ui-h-xs);
  height: var(--ui-h-xs);
  border-radius: 50%;
  background-color: hsl(var(--neutral-85)/1);
  box-shadow: var(--knob-sha);
  transition: background-color 400ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}

.value-display {
  position: absolute;
  top: 0;
  height: var(--ui-h-xs);
  min-width: var(--ui-h-xs);
  width: fit-content;
  padding: 0 4px;
  display: grid;
  place-items: center;
  background-color: var(--tint-xdark);
  border-radius: var(--5xs);
}
.value-display::after {
  content: attr(data-length);
  font-size: var(--text-2xs);
  font-variant-numeric: tabular-nums;
  color: var(--text-strong);
}

/* ================================================== */
/* Buttons */
/* ================================================== */
/* Button transitions ✨ Config these values */
/* ================================================== */
/* Button text ✨ Config these values */
/* ================================================== */
/* ================================================== */
/* Button structure */
/* ================================================== */
/* Button sizes ✨ Config these values */
/* ================================================== */
.btn-sm {
  --_btn-h: var(--btn-h, 2.25rem);
  --_btn-content-h: var(--btn-content-h, 1rem);
  --_btn-padding-x: var(--btn-padding-x, 1.5rem);
  --_btn-padding-top: var(--btn-padding-top, 0);
  --_btn-padding-bottom: var(--btn-padding-bottom, 0);
  --_btn-gap: var(--btn-gap, 0.25rem);
  --_btn-radius: var(--btn-radius, 999px);
  position: relative;
  z-index: 17;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: fit-content;
  height: var(--_btn-h);
  padding-top: 0; /* added to .btn-text so svg is not affected */
  padding-right: var(--_btn-padding-x);
  padding-bottom: 0; /* added to .btn-text so svg is not affected */
  padding-left: var(--_btn-padding-x);
  gap: var(--_btn-gap);
  border-radius: var(--_btn-radius);
  pointer-events: auto;
  cursor: pointer;
  --btn-h: var(--ui-h-sm);
  --btn-content-h: 0.9rem;
  --btn-padding-x: calc(var(--btn-h) * 0.55);
  --btn-padding-top: 0;
  --btn-padding-bottom: 0;
  --btn-gap: calc(var(--btn-h) * 0.25);
  --btn-radius: 999px;
}
.btn-sm::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 16;
}
.btn-sm::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 18;
}
.btn-sm > .btn-text {
  pointer-events: none;
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 400;
  letter-spacing: 0.02em;
  text-align: center;
  white-space: nowrap;
  text-decoration: none;
  text-shadow: var(--text-sha-sm);
  z-index: 19;
  font-size: var(--_btn-content-h);
  line-height: var(--_btn-content-h);
  padding-top: var(--_btn-padding-top);
  padding-bottom: var(--_btn-padding-bottom);
  pointer-events: none;
}
.btn-sm > svg {
  z-index: 19;
  height: calc(var(--_btn-content-h) * 1.15);
  aspect-ratio: 1;
  pointer-events: none;
}
.btn-sm.icon-end {
  padding-top: 0;
  padding-right: calc(var(--_btn-padding-x) * 0.8);
  padding-bottom: 0;
  padding-left: var(--_btn-padding-x);
}
.btn-sm.icon-start {
  padding-top: 0;
  padding-right: var(--_btn-padding-x);
  padding-bottom: 0;
  padding-left: calc(var(--_btn-padding-x) * 0.8);
}
@media only screen and (min-width: 22.5rem) {
  .btn-sm {
    --btn-content-h: 0.95rem;
  }
}

.btn-md {
  --_btn-h: var(--btn-h, 2.25rem);
  --_btn-content-h: var(--btn-content-h, 1rem);
  --_btn-padding-x: var(--btn-padding-x, 1.5rem);
  --_btn-padding-top: var(--btn-padding-top, 0);
  --_btn-padding-bottom: var(--btn-padding-bottom, 0);
  --_btn-gap: var(--btn-gap, 0.25rem);
  --_btn-radius: var(--btn-radius, 999px);
  position: relative;
  z-index: 17;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: fit-content;
  height: var(--_btn-h);
  padding-top: 0; /* added to .btn-text so svg is not affected */
  padding-right: var(--_btn-padding-x);
  padding-bottom: 0; /* added to .btn-text so svg is not affected */
  padding-left: var(--_btn-padding-x);
  gap: var(--_btn-gap);
  border-radius: var(--_btn-radius);
  pointer-events: auto;
  cursor: pointer;
  --btn-h: var(--ui-h-md);
  --btn-content-h: 0.95rem;
  --btn-padding-x: calc(var(--btn-h) * 0.6);
  --btn-padding-top: 0;
  --btn-padding-bottom: 0;
  --btn-gap: calc(var(--btn-h) * 0.25);
  --btn-radius: 999px;
}
.btn-md::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 16;
}
.btn-md::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 18;
}
.btn-md > .btn-text {
  pointer-events: none;
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 400;
  letter-spacing: 0.02em;
  text-align: center;
  white-space: nowrap;
  text-decoration: none;
  text-shadow: var(--text-sha-sm);
  z-index: 19;
  font-size: var(--_btn-content-h);
  line-height: var(--_btn-content-h);
  padding-top: var(--_btn-padding-top);
  padding-bottom: var(--_btn-padding-bottom);
  pointer-events: none;
}
.btn-md > svg {
  z-index: 19;
  height: calc(var(--_btn-content-h) * 1.15);
  aspect-ratio: 1;
  pointer-events: none;
}
.btn-md.icon-end {
  padding-top: 0;
  padding-right: calc(var(--_btn-padding-x) * 0.8);
  padding-bottom: 0;
  padding-left: var(--_btn-padding-x);
}
.btn-md.icon-start {
  padding-top: 0;
  padding-right: var(--_btn-padding-x);
  padding-bottom: 0;
  padding-left: calc(var(--_btn-padding-x) * 0.8);
}
@media only screen and (min-width: 22.5rem) {
  .btn-md {
    --btn-content-h: 1.15rem;
  }
}

.btn-lg {
  --_btn-h: var(--btn-h, 2.25rem);
  --_btn-content-h: var(--btn-content-h, 1rem);
  --_btn-padding-x: var(--btn-padding-x, 1.5rem);
  --_btn-padding-top: var(--btn-padding-top, 0);
  --_btn-padding-bottom: var(--btn-padding-bottom, 0);
  --_btn-gap: var(--btn-gap, 0.25rem);
  --_btn-radius: var(--btn-radius, 999px);
  position: relative;
  z-index: 17;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: fit-content;
  height: var(--_btn-h);
  padding-top: 0; /* added to .btn-text so svg is not affected */
  padding-right: var(--_btn-padding-x);
  padding-bottom: 0; /* added to .btn-text so svg is not affected */
  padding-left: var(--_btn-padding-x);
  gap: var(--_btn-gap);
  border-radius: var(--_btn-radius);
  pointer-events: auto;
  cursor: pointer;
  --btn-h: var(--ui-h-lg);
  --btn-content-h: 1rem;
  --btn-padding-x: calc(var(--btn-h) * 0.65);
  --btn-padding-top: 0;
  --btn-padding-bottom: 0;
  --btn-gap: calc(var(--btn-h) * 0.25);
  --btn-radius: 999px;
}
.btn-lg::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 16;
}
.btn-lg::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 18;
}
.btn-lg > .btn-text {
  pointer-events: none;
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 400;
  letter-spacing: 0.02em;
  text-align: center;
  white-space: nowrap;
  text-decoration: none;
  text-shadow: var(--text-sha-sm);
  z-index: 19;
  font-size: var(--_btn-content-h);
  line-height: var(--_btn-content-h);
  padding-top: var(--_btn-padding-top);
  padding-bottom: var(--_btn-padding-bottom);
  pointer-events: none;
}
.btn-lg > svg {
  z-index: 19;
  height: calc(var(--_btn-content-h) * 1.15);
  aspect-ratio: 1;
  pointer-events: none;
}
.btn-lg.icon-end {
  padding-top: 0;
  padding-right: calc(var(--_btn-padding-x) * 0.8);
  padding-bottom: 0;
  padding-left: var(--_btn-padding-x);
}
.btn-lg.icon-start {
  padding-top: 0;
  padding-right: var(--_btn-padding-x);
  padding-bottom: 0;
  padding-left: calc(var(--_btn-padding-x) * 0.8);
}
@media only screen and (min-width: 22.5rem) {
  .btn-lg {
    --btn-content-h: 1.25rem;
  }
}

.btn-full-w {
  --_btn-h: var(--btn-h, 2.25rem);
  --_btn-content-h: var(--btn-content-h, 1rem);
  --_btn-padding-x: var(--btn-padding-x, 1.5rem);
  --_btn-padding-top: var(--btn-padding-top, 0);
  --_btn-padding-bottom: var(--btn-padding-bottom, 0);
  --_btn-gap: var(--btn-gap, 0.25rem);
  --_btn-radius: var(--btn-radius, 999px);
  position: relative;
  z-index: 17;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: fit-content;
  height: var(--_btn-h);
  padding-top: 0; /* added to .btn-text so svg is not affected */
  padding-right: var(--_btn-padding-x);
  padding-bottom: 0; /* added to .btn-text so svg is not affected */
  padding-left: var(--_btn-padding-x);
  gap: var(--_btn-gap);
  border-radius: var(--_btn-radius);
  pointer-events: auto;
  cursor: pointer;
  width: 100%;
  --btn-h: var(--ui-h-xl);
  --btn-content-h: 1.25rem;
  --btn-padding-x: calc(var(--btn-h) * 0.7);
  --btn-padding-top: 0;
  --btn-padding-bottom: 0;
  --btn-gap: calc(var(--btn-h) * 0.25);
  --btn-radius: var(--2xs);
}
.btn-full-w::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 16;
}
.btn-full-w::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 18;
}
.btn-full-w > .btn-text {
  pointer-events: none;
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 400;
  letter-spacing: 0.02em;
  text-align: center;
  white-space: nowrap;
  text-decoration: none;
  text-shadow: var(--text-sha-sm);
  z-index: 19;
  font-size: var(--_btn-content-h);
  line-height: var(--_btn-content-h);
  padding-top: var(--_btn-padding-top);
  padding-bottom: var(--_btn-padding-bottom);
  pointer-events: none;
}
.btn-full-w > svg {
  z-index: 19;
  height: calc(var(--_btn-content-h) * 1.15);
  aspect-ratio: 1;
  pointer-events: none;
}
.btn-full-w.icon-end {
  padding-top: 0;
  padding-right: calc(var(--_btn-padding-x) * 0.8);
  padding-bottom: 0;
  padding-left: var(--_btn-padding-x);
}
.btn-full-w.icon-start {
  padding-top: 0;
  padding-right: var(--_btn-padding-x);
  padding-bottom: 0;
  padding-left: calc(var(--_btn-padding-x) * 0.8);
}

/* ================================================== */
/* Round icon button structure */
/* ================================================== */
/* Icon button sizes ✨ Config these values */
/* ================================================== */
.btn-icon-sm {
  --_btn-h: var(--btn-h, 2.25rem);
  --_btn-icon-h: var(--btn-icon-h, 1rem);
  position: relative;
  z-index: 17;
  display: flex;
  justify-content: center;
  align-items: center;
  width: var(--_btn-h);
  height: var(--_btn-h);
  border-radius: 999px;
  pointer-events: auto;
  cursor: pointer;
  --btn-h: var(--ui-h-sm);
  --btn-icon-h: calc(var(--btn-h) * 0.55);
}
.btn-icon-sm::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 18;
}
.btn-icon-sm::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 16;
}
.btn-icon-sm > svg {
  z-index: 19;
  height: var(--_btn-icon-h);
  width: var(--_btn-icon-h);
  aspect-ratio: 1;
  pointer-events: none;
  will-change: width, height;
  transition: width 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), height 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-icon-sm:hover > svg {
  width: calc(var(--_btn-icon-h) * 1.1);
  height: calc(var(--_btn-icon-h) * 1.1);
}

.btn-icon-md {
  --_btn-h: var(--btn-h, 2.25rem);
  --_btn-icon-h: var(--btn-icon-h, 1rem);
  position: relative;
  z-index: 17;
  display: flex;
  justify-content: center;
  align-items: center;
  width: var(--_btn-h);
  height: var(--_btn-h);
  border-radius: 999px;
  pointer-events: auto;
  cursor: pointer;
  --btn-h: var(--ui-h-md);
  --btn-icon-h: calc(var(--btn-h) * 0.55);
}
.btn-icon-md::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 18;
}
.btn-icon-md::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 16;
}
.btn-icon-md > svg {
  z-index: 19;
  height: var(--_btn-icon-h);
  width: var(--_btn-icon-h);
  aspect-ratio: 1;
  pointer-events: none;
  will-change: width, height;
  transition: width 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), height 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-icon-md:hover > svg {
  width: calc(var(--_btn-icon-h) * 1.1);
  height: calc(var(--_btn-icon-h) * 1.1);
}

.btn-icon-lg {
  --_btn-h: var(--btn-h, 2.25rem);
  --_btn-icon-h: var(--btn-icon-h, 1rem);
  position: relative;
  z-index: 17;
  display: flex;
  justify-content: center;
  align-items: center;
  width: var(--_btn-h);
  height: var(--_btn-h);
  border-radius: 999px;
  pointer-events: auto;
  cursor: pointer;
  --btn-h: var(--ui-h-lg);
  --btn-icon-h: calc(var(--btn-h) * 0.55);
}
.btn-icon-lg::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 18;
}
.btn-icon-lg::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 16;
}
.btn-icon-lg > svg {
  z-index: 19;
  height: var(--_btn-icon-h);
  width: var(--_btn-icon-h);
  aspect-ratio: 1;
  pointer-events: none;
  will-change: width, height;
  transition: width 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), height 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-icon-lg:hover > svg {
  width: calc(var(--_btn-icon-h) * 1.1);
  height: calc(var(--_btn-icon-h) * 1.1);
}

/* ================================================== */
/* Button style */
/* ================================================== */
/* Primary button ✨ Config these values */
/* ================================================== */
/* Secondary button ✨ Config these values */
/* ================================================== */
/* Outline button ✨ Config these values */
/* ================================================== */
/* Ghost button ✨ Config these values */
/* ================================================== */
.btn-primary {
  --_btn-text: var(--btn-text, black);
  --_btn-icon: var(--btn-icon, var(--_btn-text));
  --_btn-state-bg: var(--btn-state-bg, rgba(36, 156, 3, 0.9));
  --_btn-state-text: var(--btn-state-text, var(--_btn-text));
  --_btn-state-icon: var(--btn-state-icon, var(--_btn-state-text));
  --_btn-bevel: var(--btn-bevel, none);
  --_btn-blur: var(--btn-blur, 3px);
  --_btn-brightness: var(--btn-brightness, 1);
  --_btn-saturate: var(--btn-saturate, 1.2);
  --_btn-rest: var(--btn-rest, 0.1);
  --_btn-hover: var(--btn-hover, 0.3);
  --_btn-focus: var(--btn-focus, 0.3);
  --_btn-active: var(--btn-active, 0.7);
  --_btn-disabled: var(--btn-disabled, 0.6);
  --btn-text: var(--text-xstrong);
  --btn-icon: var(--btn-text);
  --btn-state-bg: hsl(var(--primary-10) / 0.9);
  --btn-state-text: var(--btn-text);
  --btn-state-icon: var(--btn-state-text);
  --btn-bevel: var(--bevel-md);
  box-shadow: var(--sha-2xs);
  --btn-blur: 15px;
  --btn-brightness: 1;
  --btn-saturate: 2.75;
  --btn-rest: 0.25;
  --btn-hover: 0.6;
  --btn-focus: 0.6;
  --btn-active: 1;
  --btn-disabled: 0.6;
}
.btn-primary::before {
  will-change: opacity, color;
  transition: opacity 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
  background-color: var(--_btn-state-bg);
  opacity: var(--_btn-rest);
}
.btn-primary::after {
  -webkit-backdrop-filter: blur(var(--_btn-blur)) brightness(var(--_btn-brightness)) saturate(var(--_btn-saturate));
  backdrop-filter: blur(var(--_btn-blur)) brightness(var(--_btn-brightness)) saturate(var(--_btn-saturate));
  box-shadow: var(--_btn-bevel);
}
.btn-primary > .btn-text {
  color: var(--_btn-text);
  will-change: opacity, color;
  transition: opacity 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-primary > svg {
  background-color: var(--_btn-icon);
  will-change: background-color;
  transition: background-color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-primary:hover > .btn-text {
  color: var(--_btn-state-text);
}
.btn-primary:hover > svg {
  background-color: var(--_btn-state-icon);
}
.btn-primary:hover::before {
  opacity: var(--_btn-hover);
}
.btn-primary:focus-visible > .btn-text {
  color: var(--_btn-state-text);
}
.btn-primary:focus-visible > svg {
  background-color: var(--_btn-state-icon);
}
.btn-primary:focus-visible::before {
  opacity: var(--_btn-focus);
}
.btn-primary:focus-visible::after {
  box-shadow: inset 0 0 0 1px hsl(var(--primary-98)/0.5), inset 0 0 0 1.5px hsl(var(--primary-95)/0.4), inset 0 0 0 2px hsl(var(--primary-5)/0.2) !important;
}
.btn-primary:active > .btn-text {
  color: var(--_btn-state-text);
}
.btn-primary:active > svg {
  background-color: var(--_btn-state-icon);
}
.btn-primary:active::before {
  opacity: var(--_btn-active);
}
.btn-primary:disabled {
  cursor: not-allowed;
  opacity: var(--_btn-disabled);
  background-color: hsl(var(--neutral-10)/0.1);
}

.btn-secondary {
  --_btn-text: var(--btn-text, black);
  --_btn-icon: var(--btn-icon, var(--_btn-text));
  --_btn-state-bg: var(--btn-state-bg, rgba(36, 156, 3, 0.9));
  --_btn-state-text: var(--btn-state-text, var(--_btn-text));
  --_btn-state-icon: var(--btn-state-icon, var(--_btn-state-text));
  --_btn-bevel: var(--btn-bevel, none);
  --_btn-blur: var(--btn-blur, 3px);
  --_btn-brightness: var(--btn-brightness, 1);
  --_btn-saturate: var(--btn-saturate, 1.2);
  --_btn-rest: var(--btn-rest, 0.1);
  --_btn-hover: var(--btn-hover, 0.3);
  --_btn-focus: var(--btn-focus, 0.3);
  --_btn-active: var(--btn-active, 0.7);
  --_btn-disabled: var(--btn-disabled, 0.6);
  --btn-text: var(--text-xstrong);
  --btn-icon: var(--btn-text);
  --btn-state-bg: hsl(var(--primary-5) / 0.9);
  --btn-state-text: var(--btn-text);
  --btn-state-icon: var(--btn-state-text);
  --btn-bevel: var(--bevel-lg);
  box-shadow: var(--sha-md);
  --btn-blur: 8px;
  --btn-brightness: 0.75;
  --btn-saturate: 1.75;
  --btn-rest: 0.2;
  --btn-hover: 0.5;
  --btn-focus: 0.5;
  --btn-active: 0.9;
  --btn-disabled: 0.6;
}
.btn-secondary::before {
  will-change: opacity, color;
  transition: opacity 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
  background-color: var(--_btn-state-bg);
  opacity: var(--_btn-rest);
}
.btn-secondary::after {
  -webkit-backdrop-filter: blur(var(--_btn-blur)) brightness(var(--_btn-brightness)) saturate(var(--_btn-saturate));
  backdrop-filter: blur(var(--_btn-blur)) brightness(var(--_btn-brightness)) saturate(var(--_btn-saturate));
  box-shadow: var(--_btn-bevel);
}
.btn-secondary > .btn-text {
  color: var(--_btn-text);
  will-change: opacity, color;
  transition: opacity 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-secondary > svg {
  background-color: var(--_btn-icon);
  will-change: background-color;
  transition: background-color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-secondary:hover > .btn-text {
  color: var(--_btn-state-text);
}
.btn-secondary:hover > svg {
  background-color: var(--_btn-state-icon);
}
.btn-secondary:hover::before {
  opacity: var(--_btn-hover);
}
.btn-secondary:focus-visible > .btn-text {
  color: var(--_btn-state-text);
}
.btn-secondary:focus-visible > svg {
  background-color: var(--_btn-state-icon);
}
.btn-secondary:focus-visible::before {
  opacity: var(--_btn-focus);
}
.btn-secondary:focus-visible::after {
  box-shadow: inset 0 0 0 1px hsl(var(--primary-98)/0.5), inset 0 0 0 1.5px hsl(var(--primary-95)/0.4), inset 0 0 0 2px hsl(var(--primary-5)/0.2) !important;
}
.btn-secondary:active > .btn-text {
  color: var(--_btn-state-text);
}
.btn-secondary:active > svg {
  background-color: var(--_btn-state-icon);
}
.btn-secondary:active::before {
  opacity: var(--_btn-active);
}
.btn-secondary:disabled {
  cursor: not-allowed;
  opacity: var(--_btn-disabled);
  background-color: hsl(var(--neutral-10)/0.1);
}

.btn-outline {
  --_btn-text: var(--btn-text, black);
  --_btn-icon: var(--btn-icon, var(--_btn-text));
  --_btn-state-bg: var(--btn-state-bg, rgba(36, 156, 3, 0.9));
  --_btn-state-text: var(--btn-state-text, var(--_btn-text));
  --_btn-state-icon: var(--btn-state-icon, var(--_btn-state-text));
  --_btn-bevel: var(--btn-bevel, none);
  --_btn-blur: var(--btn-blur, 3px);
  --_btn-brightness: var(--btn-brightness, 1);
  --_btn-saturate: var(--btn-saturate, 1.2);
  --_btn-rest: var(--btn-rest, 0.1);
  --_btn-hover: var(--btn-hover, 0.3);
  --_btn-focus: var(--btn-focus, 0.3);
  --_btn-active: var(--btn-active, 0.7);
  --_btn-disabled: var(--btn-disabled, 0.6);
  --btn-text: var(--text-2xstrong);
  --btn-icon: var(--btn-text);
  --btn-state-bg: hsl(var(--neutral-50) / 0.95);
  --btn-state-text: var(--btn-text);
  --btn-state-icon: var(--btn-state-text);
  --btn-bevel: none;
  outline: 1.5px solid hsl(var(--neutral-95)/0.6);
  --btn-blur: 10px;
  --btn-brightness: 0.95;
  --btn-saturate: 1.1;
  --btn-rest: 0;
  --btn-hover: 0.5;
  --btn-focus: 0.5;
  --btn-active: 0.99;
  --btn-disabled: 0.6;
}
.btn-outline::before {
  will-change: opacity, color;
  transition: opacity 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
  background-color: var(--_btn-state-bg);
  opacity: var(--_btn-rest);
}
.btn-outline::after {
  -webkit-backdrop-filter: blur(var(--_btn-blur)) brightness(var(--_btn-brightness)) saturate(var(--_btn-saturate));
  backdrop-filter: blur(var(--_btn-blur)) brightness(var(--_btn-brightness)) saturate(var(--_btn-saturate));
  box-shadow: var(--_btn-bevel);
}
.btn-outline > .btn-text {
  color: var(--_btn-text);
  will-change: opacity, color;
  transition: opacity 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-outline > svg {
  background-color: var(--_btn-icon);
  will-change: background-color;
  transition: background-color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-outline:hover > .btn-text {
  color: var(--_btn-state-text);
}
.btn-outline:hover > svg {
  background-color: var(--_btn-state-icon);
}
.btn-outline:hover::before {
  opacity: var(--_btn-hover);
}
.btn-outline:focus-visible > .btn-text {
  color: var(--_btn-state-text);
}
.btn-outline:focus-visible > svg {
  background-color: var(--_btn-state-icon);
}
.btn-outline:focus-visible::before {
  opacity: var(--_btn-focus);
}
.btn-outline:focus-visible::after {
  box-shadow: inset 0 0 0 1px hsl(var(--primary-98)/0.5), inset 0 0 0 1.5px hsl(var(--primary-95)/0.4), inset 0 0 0 2px hsl(var(--primary-5)/0.2) !important;
}
.btn-outline:active > .btn-text {
  color: var(--_btn-state-text);
}
.btn-outline:active > svg {
  background-color: var(--_btn-state-icon);
}
.btn-outline:active::before {
  opacity: var(--_btn-active);
}
.btn-outline:disabled {
  cursor: not-allowed;
  opacity: var(--_btn-disabled);
  background-color: hsl(var(--neutral-10)/0.1);
}

.btn-ghost {
  --_btn-text: var(--btn-text, black);
  --_btn-icon: var(--btn-icon, var(--_btn-text));
  --_btn-state-bg: var(--btn-state-bg, rgba(36, 156, 3, 0.9));
  --_btn-state-text: var(--btn-state-text, var(--_btn-text));
  --_btn-state-icon: var(--btn-state-icon, var(--_btn-state-text));
  --_btn-bevel: var(--btn-bevel, none);
  --_btn-blur: var(--btn-blur, 3px);
  --_btn-brightness: var(--btn-brightness, 1);
  --_btn-saturate: var(--btn-saturate, 1.2);
  --_btn-rest: var(--btn-rest, 0.1);
  --_btn-hover: var(--btn-hover, 0.3);
  --_btn-focus: var(--btn-focus, 0.3);
  --_btn-active: var(--btn-active, 0.7);
  --_btn-disabled: var(--btn-disabled, 0.6);
  --btn-text: var(--text-2xstrong);
  --btn-icon: var(--btn-text);
  --btn-state-bg: hsl(var(--primary-95) / 0.9);
  --btn-state-text: var(--tint-3xdark);
  --btn-state-icon: var(--btn-state-text);
  --btn-bevel: none;
  background-color: transparent;
  --btn-blur: 0px;
  --btn-brightness: 1;
  --btn-saturate: 1;
  --btn-rest: 0;
  --btn-hover: 0.25;
  --btn-focus: 0.25;
  --btn-active: 0.4;
  --btn-disabled: 0.5;
}
.btn-ghost::before {
  will-change: opacity, color;
  transition: opacity 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
  background-color: var(--_btn-state-bg);
  opacity: var(--_btn-rest);
}
.btn-ghost::after {
  -webkit-backdrop-filter: blur(var(--_btn-blur)) brightness(var(--_btn-brightness)) saturate(var(--_btn-saturate));
  backdrop-filter: blur(var(--_btn-blur)) brightness(var(--_btn-brightness)) saturate(var(--_btn-saturate));
  box-shadow: var(--_btn-bevel);
}
.btn-ghost > .btn-text {
  color: var(--_btn-text);
  will-change: opacity, color;
  transition: opacity 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-ghost > svg {
  background-color: var(--_btn-icon);
  will-change: background-color;
  transition: background-color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.btn-ghost:hover > .btn-text {
  color: var(--_btn-state-text);
}
.btn-ghost:hover > svg {
  background-color: var(--_btn-state-icon);
}
.btn-ghost:hover::before {
  opacity: var(--_btn-hover);
}
.btn-ghost:focus-visible > .btn-text {
  color: var(--_btn-state-text);
}
.btn-ghost:focus-visible > svg {
  background-color: var(--_btn-state-icon);
}
.btn-ghost:focus-visible::before {
  opacity: var(--_btn-focus);
}
.btn-ghost:focus-visible::after {
  box-shadow: inset 0 0 0 1px hsl(var(--primary-98)/0.5), inset 0 0 0 1.5px hsl(var(--primary-95)/0.4), inset 0 0 0 2px hsl(var(--primary-5)/0.2) !important;
}
.btn-ghost:active > .btn-text {
  color: var(--_btn-state-text);
}
.btn-ghost:active > svg {
  background-color: var(--_btn-state-icon);
}
.btn-ghost:active::before {
  opacity: var(--_btn-active);
}
.btn-ghost:disabled {
  cursor: not-allowed;
  opacity: var(--_btn-disabled);
  background-color: hsl(var(--neutral-10)/0.1);
}
.btn-ghost::after {
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  box-shadow: none;
}

/* New button template ✨ Config these values */
/* ================================================== */
.my-new-btn {
  --_btn-text: var(--btn-text, black);
  --_btn-icon: var(--btn-icon, var(--_btn-text));
  --_btn-state-bg: var(--btn-state-bg, rgba(36, 156, 3, 0.9));
  --_btn-state-text: var(--btn-state-text, var(--_btn-text));
  --_btn-state-icon: var(--btn-state-icon, var(--_btn-state-text));
  --_btn-bevel: var(--btn-bevel, none);
  --_btn-blur: var(--btn-blur, 3px);
  --_btn-brightness: var(--btn-brightness, 1);
  --_btn-saturate: var(--btn-saturate, 1.2);
  --_btn-rest: var(--btn-rest, 0.1);
  --_btn-hover: var(--btn-hover, 0.3);
  --_btn-focus: var(--btn-focus, 0.3);
  --_btn-active: var(--btn-active, 0.7);
  --_btn-disabled: var(--btn-disabled, 0.6);
  --btn-text: black;
  --btn-icon: darkblue;
  --btn-state-bg: black;
  --btn-state-text: white;
  --btn-state-icon: lightblue;
  --btn-bevel: var(--bevel-md);
  --btn-blur: 8px;
  --btn-brightness: 1;
  --btn-saturate: 1.5;
  --btn-rest: 0.3;
  --btn-hover: 0.6;
  --btn-focus: 0.6;
  --btn-active: 0.9;
  --btn-disabled: 0.6;
}
.my-new-btn::before {
  will-change: opacity, color;
  transition: opacity 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
  background-color: var(--_btn-state-bg);
  opacity: var(--_btn-rest);
}
.my-new-btn::after {
  -webkit-backdrop-filter: blur(var(--_btn-blur)) brightness(var(--_btn-brightness)) saturate(var(--_btn-saturate));
  backdrop-filter: blur(var(--_btn-blur)) brightness(var(--_btn-brightness)) saturate(var(--_btn-saturate));
  box-shadow: var(--_btn-bevel);
}
.my-new-btn > .btn-text {
  color: var(--_btn-text);
  will-change: opacity, color;
  transition: opacity 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99), color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.my-new-btn > svg {
  background-color: var(--_btn-icon);
  will-change: background-color;
  transition: background-color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.my-new-btn:hover > .btn-text {
  color: var(--_btn-state-text);
}
.my-new-btn:hover > svg {
  background-color: var(--_btn-state-icon);
}
.my-new-btn:hover::before {
  opacity: var(--_btn-hover);
}
.my-new-btn:focus-visible > .btn-text {
  color: var(--_btn-state-text);
}
.my-new-btn:focus-visible > svg {
  background-color: var(--_btn-state-icon);
}
.my-new-btn:focus-visible::before {
  opacity: var(--_btn-focus);
}
.my-new-btn:focus-visible::after {
  box-shadow: inset 0 0 0 1px hsl(var(--primary-98)/0.5), inset 0 0 0 1.5px hsl(var(--primary-95)/0.4), inset 0 0 0 2px hsl(var(--primary-5)/0.2) !important;
}
.my-new-btn:active > .btn-text {
  color: var(--_btn-state-text);
}
.my-new-btn:active > svg {
  background-color: var(--_btn-state-icon);
}
.my-new-btn:active::before {
  opacity: var(--_btn-active);
}
.my-new-btn:disabled {
  cursor: not-allowed;
  opacity: var(--_btn-disabled);
  background-color: hsl(var(--neutral-10)/0.1);
}

/* 💠 example */
/* ================================================== */
/* HSL Color Picker */
/* ================================================== */
body {
  --color-h: 189;
  --color-l: 10;
  --color-s: 80;
  --color-a: 0.2;
  --color-s0: hsl(var(--color-h) 0% var(--color-l));
  --color-s100: hsl(var(--color-h) 100% var(--color-l));
  --color-l0: hsl(var(--color-h) var(--color-s) 0%);
  --color-l50: hsl(var(--color-h) var(--color-s) 50%);
  --color-l100: hsl(var(--color-h) var(--color-s) 100%);
  --color-a0: hsl(var(--color-h) var(--color-s) var(--color-l) / 0 );
  --color-a100: hsl(var(--color-h) var(--color-s) var(--color-l) / 1 );
  --color-hsla: hsl(var(--color-h) var(--color-s) var(--color-l) / var(--color-a));
  --swatch-text-color: 205 20% 90%;
}

.color-picker-layout {
  --track-w: 100%;
  --track-h: var(--ui-h-sm);
  --track-sha: var(--inset-md);
  --track-gap: 0.5rem;
  --track-gap-half: calc(var(--track-gap) * 0.5);
  --thumb-h: calc(var(--track-h) - var(--track-gap));
  --thumb-radius: 8px;
  --thumb-color: transparent;
  --thumb-sha:
    inset 0 0 0 1px hsla(var(--swatch-text-color) / 0.4),
    inset 0 0 0.2px 2px hsla(var(--swatch-text-color) / 0.2),
    inset 0 0 0 2.5px hsla(var(--highlight) / 0.3),
    0 0 0.2px hsl(var(--shadow) / 0.2),
    0 0 0.5px hsl(var(--shadow) / 0.3),
    0.2px 0.2px 1px hsl(var(--shadow) / 0.5),
    1px 1px 4px -1px hsl(var(--shadow) / 0.3);
  width: 100%;
  height: fit-content;
  display: grid;
  gap: var(--sm);
  background-color: transparent;
}
@media only screen and (min-width: 48rem) {
  .color-picker-layout {
    --track-h: var(--ui-h-sm);
    gap: var(--md);
  }
}

.thick-slider-group {
  width: 100%;
  height: var(--track-h);
  display: grid;
  align-items: center;
  grid-template-columns: 20px 1fr;
  gap: var(--3xs);
  background-color: transparent;
}

.thick-slider-label {
  width: 20px;
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 300;
  letter-spacing: 0.01em;
  line-height: calc(0.125em + 1.5ex + 0.125em);
  text-align: start;
  letter-spacing: 0.02em;
  font-size: var(--text-md);
  font-weight: 400;
  line-height: 1;
  color: var(--text-strong);
  text-shadow: var(--text-sha-xl);
}

.thick-slider-ui {
  appearance: none;
  -webkit-appearance: none;
  pointer-events: auto;
  cursor: pointer;
  width: var(--track-w);
  height: var(--track-h);
  display: grid;
  align-items: center;
  padding: 0;
  margin: 0;
  outline: none;
  border: none;
  overflow: hidden;
  border-radius: calc(var(--thumb-radius) + var(--track-gap-half) - (var(--thumb-radius) + var(--track-gap-half)) * 3 / 100);
  color: inherit;
  box-shadow: var(--track-sha);
  background-repeat: no-repeat;
  transition: all 200ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.thick-slider-ui::-webkit-slider-runnable-track {
  -webkit-appearance: none;
  appearance: none;
  pointer-events: auto;
  cursor: pointer;
  width: var(--track-w);
  height: var(--track-h);
  margin: 0;
  padding: 0;
  border: none;
  border-radius: calc(var(--thumb-radius) + var(--track-gap-half) - (var(--thumb-radius) + var(--track-gap-half)) * 3 / 100);
  padding: var(--track-gap-half);
}
.thick-slider-ui::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  pointer-events: auto;
  cursor: pointer;
  width: var(--thumb-h);
  height: var(--thumb-h);
  border: none;
  border-radius: var(--thumb-radius);
  background-color: var(--thumb-color);
  box-shadow: var(--thumb-sha);
  transition: all 200ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.thick-slider-ui::-moz-range-track {
  appearance: none;
  pointer-events: auto;
  cursor: pointer;
  width: var(--track-w);
  height: var(--track-h);
  margin: 0;
  padding: 0;
  border: none;
  border-radius: calc(var(--thumb-radius) + var(--track-gap-half) - (var(--thumb-radius) + var(--track-gap-half)) * 3 / 100);
}
.thick-slider-ui::-moz-range-progress {
  appearance: none;
  pointer-events: auto;
  cursor: pointer;
  height: 100%;
  margin: 0;
  padding: 0;
  border: none;
  background-color: transparent;
}
.thick-slider-ui::-moz-range-thumb {
  appearance: none;
  pointer-events: auto;
  cursor: pointer;
  width: var(--thumb-h);
  height: var(--thumb-h);
  border: none;
  border-radius: var(--thumb-radius);
  background-color: var(--thumb-color);
  box-shadow: var(--thumb-sha);
  transition: all 200ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}

/* Color slider gradients */
/* ================================================== */
#hsl-h {
  background-image: linear-gradient(to right, #F00, #FF0, #0F0, #0FF, #00F, #F0F, #F00);
}

#hsl-s {
  background-image: linear-gradient(to right, var(--color-s0), var(--color-s100));
}

#hsl-l {
  background-image: linear-gradient(to right, var(--color-l0), var(--color-l50), var(--color-l100));
}

#hsl-a {
  background-image: linear-gradient(to right, var(--color-a0), var(--color-a100));
}

/* Color swatch */
/* ================================================== */
.color-swatch {
  position: relative;
  border-radius: 0.8rem;
  height: 5rem;
  text-align: right;
  padding: 1.5rem 1rem 1rem 1rem;
  width: 100%;
  display: grid;
  place-items: end;
  background-color: var(--color-hsla);
  box-shadow: var(--sha-lg);
}
.color-swatch p {
  font-size: var(--text-md);
  font-weight: 400;
  line-height: 1;
  text-shadow: var(--sha-md);
  letter-spacing: 0.03em;
}
.color-swatch #text-color {
  color: hsla(var(--swatch-text-color)/1);
}

/* ================================================== */
/* Tab menu */
/* ================================================== */
.tab-panel {
  position: relative;
  width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  overflow: hidden;
}

.panel-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.tab-menu-bin {
  --tab-menu-space: 3px;
  --tab-radius: 7px;
  pointer-events: none;
  overflow: hidden;
  position: relative;
  z-index: 9;
  width: fit-content;
  height: var(--ui-h-sm);
  border-radius: calc(var(--tab-radius) + var(--tab-menu-space) - (var(--tab-radius) + var(--tab-menu-space)) * 3 / 100);
}
@media only screen and (min-width: 30rem) {
  .tab-menu-bin {
    --tab-radius: 8px;
  }
}
@media only screen and (min-width: 64rem) {
  .tab-menu-bin {
    --tab-radius: 9px;
  }
}

.tab-menu {
  pointer-events: none;
  width: fit-content;
  height: 100%;
  display: flex;
  justify-content: space-evenly;
  align-items: center;
  gap: var(--tab-menu-space);
  padding: var(--tab-menu-space);
  border-radius: inherit;
  background-color: var(--inset-bg-deep);
  box-shadow: var(--inset-lg);
  -webkit-backdrop-filter: blur(8px) brightness(0.9) saturate(1.5);
  backdrop-filter: blur(8px) brightness(0.9) saturate(1.5);
}

[role=tab] {
  --_btn-h: var(--btn-h, 2.25rem);
  --_btn-content-h: var(--btn-content-h, 1rem);
  --_btn-padding-x: var(--btn-padding-x, 1.5rem);
  --_btn-padding-top: var(--btn-padding-top, 0);
  --_btn-padding-bottom: var(--btn-padding-bottom, 0);
  --_btn-gap: var(--btn-gap, 0.25rem);
  --_btn-radius: var(--btn-radius, 999px);
  position: relative;
  z-index: 17;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: fit-content;
  height: var(--_btn-h);
  padding-top: 0; /* added to .btn-text so svg is not affected */
  padding-right: var(--_btn-padding-x);
  padding-bottom: 0; /* added to .btn-text so svg is not affected */
  padding-left: var(--_btn-padding-x);
  gap: var(--_btn-gap);
  border-radius: var(--_btn-radius);
  pointer-events: auto;
  cursor: pointer;
  --btn-h: 100%;
  --btn-content-h: 0.8rem;
  --btn-padding-x: 0.75rem;
  --btn-padding-top: 0;
  --btn-padding-bottom: 0;
  --btn-radius: var(--tab-radius);
}
[role=tab]::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 16;
}
[role=tab]::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  z-index: 18;
}
[role=tab] > .btn-text {
  pointer-events: none;
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 400;
  letter-spacing: 0.02em;
  text-align: center;
  white-space: nowrap;
  text-decoration: none;
  text-shadow: var(--text-sha-sm);
  z-index: 19;
  font-size: var(--_btn-content-h);
  line-height: var(--_btn-content-h);
  padding-top: var(--_btn-padding-top);
  padding-bottom: var(--_btn-padding-bottom);
  pointer-events: none;
}
[role=tab] > svg {
  z-index: 19;
  height: calc(var(--_btn-content-h) * 1.15);
  aspect-ratio: 1;
  pointer-events: none;
}
[role=tab].icon-end {
  padding-top: 0;
  padding-right: calc(var(--_btn-padding-x) * 0.8);
  padding-bottom: 0;
  padding-left: var(--_btn-padding-x);
}
[role=tab].icon-start {
  padding-top: 0;
  padding-right: var(--_btn-padding-x);
  padding-bottom: 0;
  padding-left: calc(var(--_btn-padding-x) * 0.8);
}
@media only screen and (min-width: 22.5rem) {
  [role=tab] {
    --btn-content-h: 0.9rem;
    --btn-padding-x: 1rem;
  }
}
@media only screen and (min-width: 30rem) {
  [role=tab] {
    --btn-padding-x: 1.15rem;
  }
}
@media only screen and (min-width: 48rem) {
  [role=tab] {
    --btn-padding-x: 1.25rem;
  }
}
@media only screen and (min-width: 64rem) {
  [role=tab] {
    --btn-content-h: 1.1rem;
    --btn-padding-x: 1.5rem;
  }
}

[role=tab][aria-selected=true] {
  --btn-text: var(--tint-3xdark);
}
[role=tab][aria-selected=true]::before {
  opacity: 0.6;
}

/* Pages */
/* ================================================== */
/* generator */
/* ================================================== */
/* ================================================== */
/* Demo Glass  */
/* ================================================== */
html {
  scrollbar-width: none;
  -ms-overflow-style: none;
}
html::-webkit-scrollbar {
  display: none;
}

body {
  /* main element */
  --color-glass3d: var(--color-hsla);
  /* ::after */
  --bevel-glass3d: var(--bevel-xl);
  /* ::before */
  --noise-glass3d: var(--noise-gray);
  --blur-glass3d: 20;
  --bright-glass3d: 1.1;
  --satu-glass3d: 1.5;
  --filter-glass3d: blur(var(--blur-glass3d)px) brightness(var(--bright-glass3d)%) saturate(var(--satu-glass3d)%);
}

/* Fixed background panel */
/* ================================================== */
.page-bg-panel-group {
  pointer-events: none;
  position: fixed;
  inset: 0;
  z-index: -3;
  width: 100%;
  height: 100vh;
  min-height: 100lvh;
}

.page-bg-panel {
  z-index: -2;
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  min-height: 100lvh;
  overflow: hidden;
  background-color: black;
}

.page-bg-img {
  position: relative;
  z-index: -1;
  width: 100%;
  height: 100%;
  min-height: 100lvh;
  object-fit: cover;
  object-position: center;
}

/* Glass */
/* ================================================== */
.glass-3d-gen {
  position: relative;
  z-index: 4;
  width: 100%;
  height: 100%;
  border-radius: max(0px, min(var(--md), (100vw - 16px - 100%) * 9999))/var(--md);
  overflow: hidden;
  box-shadow: var(--sha-2xl);
}
.glass-3d-gen::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  overflow: hidden;
  z-index: 3;
  background-color: var(--color-glass3d);
  /* texture */
  background-image: var(--noise-glass3d);
  background-size: 100px;
  background-repeat: repeat;
  /* backdrop-filter */
  -webkit-backdrop-filter: var(--filter-glass3d);
  backdrop-filter: var(--filter-glass3d);
}
.glass-3d-gen::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  overflow: hidden;
  z-index: 5;
  /* Bevel */
  box-shadow: var(--bevel-glass3d);
}
.glass-3d-gen > * {
  position: relative;
  z-index: 6;
}

/* ================================================== */
/* Page layout  */
/* ================================================== */
.generator-viewport {
  z-index: 1;
  position: relative;
  width: 100%;
  height: 100vh;
  height: 100svh;
}

.generator-layout {
  --space: var(--md);
  --space-half: calc(var(--space) * 0.5);
  --space-75: calc(var(--space) * 0.75);
  z-index: 2;
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  display: grid;
  place-items: start center;
  padding: 1.5rem 1rem 1rem 1rem;
  overflow: hidden;
  pointer-events: none;
}
@media only screen and (min-width: 30rem) {
  .generator-layout {
    padding: 2rem 1.5rem 1.5rem 1.5rem;
  }
}
@media only screen and (min-width: 48rem) {
  .generator-layout {
    padding: 3rem 2rem 2rem 2rem;
  }
}
@media (height >= 1200px) {
  .generator-layout {
    place-items: center;
    padding: 6rem 2rem 4rem 2rem;
  }
}

.generator-bg {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: auto 1fr auto;
  width: 100%;
  max-width: 450px;
  height: 100%;
}
@media only screen and (min-width: 48rem) {
  .generator-bg {
    max-width: 480px;
  }
}
@media (height >= 1200px) {
  .generator-bg {
    max-height: 1100px;
  }
}

.generator-scroll {
  pointer-events: auto;
  position: relative;
  width: 100%;
  height: 100%;
  display: grid;
  place-items: start center;
  overflow-y: scroll;
  overscroll-behavior: contain;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.generator-scroll::-webkit-scrollbar {
  display: none;
}

/* ================================================== */
/* top  */
/* ================================================== */
.gen-top-layout {
  display: grid;
  place-items: center;
  gap: 0.25rem;
  padding: var(--space) var(--space) var(--space-half) var(--space);
}
.gen-top-layout .tab-menu-bin {
  margin-top: 0.5rem;
}

.gen-logo-group {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.25rem;
  padding: 0.1rem 0;
}
@media only screen and (min-width: 48rem) {
  .gen-logo-group {
    padding-bottom: 0.25rem;
  }
}

.svg-glass3d-logo {
  width: 1.6rem;
  mask: url(/assets/logos/3D-glass-UI-logo.svg);
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1;
  mask-repeat: no-repeat;
  mask-size: cover;
  mask-position: center;
  -webkit-backdrop-filter: blur(1px) brightness(1.5) saturate(3);
  backdrop-filter: blur(1px) brightness(1.5) saturate(3);
}
@media only screen and (min-width: 48rem) {
  .svg-glass3d-logo {
    width: 2.25rem;
  }
}

.gen-title {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 400;
  font-size: var(--text-lg);
  letter-spacing: -0.005em;
  line-height: 1.2;
  color: var(--text-color-xstrong);
  text-shadow: var(--text-sha-xs);
}
@media only screen and (min-width: 30rem) {
  .gen-title {
    font-size: var(--text-xl);
  }
}

.gen-tagline-layout {
  display: grid;
}

.gen-tagline-top {
  text-align: center;
  line-height: calc(0.125em + 2.25ex + 0.125em);
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 500;
  font-size: var(--text-sm);
  color: var(--text-2xstrong);
  text-shadow: var(--text-sha-xs);
}

.gen-tagline-bottom {
  text-align: center;
  line-height: calc(0.125em + 2ex + 0.125em);
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 300;
  font-size: var(--text-xs);
  letter-spacing: -0.005em;
  color: var(--text-2xstrong);
  text-shadow: var(--text-sha-xs);
}
@media (width >= 390px) {
  .gen-tagline-bottom {
    font-weight: 400;
    font-size: calc(var(--text-xs) * 1.1);
  }
}

/*  footer */
/* ================================================== */
.gen-footer {
  display: flex;
  justify-content: end;
  align-items: center;
  gap: 0.25rem;
  padding: var(--space-75) var(--space);
}

/* ================================================== */
/* Copy code  */
/* ================================================== */
.code-display-bg {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: start;
  gap: var(--space);
  overflow-x: scroll;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.code-display-bg::-webkit-scrollbar {
  display: none;
}

.code-display-text {
  z-index: 8;
  display: block;
  width: 100%;
  white-space: pre;
  font-family: "Fragment Mono", "Courier", monospace;
  font-size: inherit;
  line-height: inherit;
  font-weight: 400; /* only font-weight available for this font */
  color: var(--text-strong);
  pointer-events: auto;
}

/* ================================================== */
/* Switch accordion */
/* ================================================== */
.generator-accordion {
  pointer-events: auto;
  position: absolute;
}
.generator-accordion .switch-accordion-controls {
  padding: var(--space-half) var(--space) var(--space-half) var(--space);
}

.switch-accordion-controls {
  position: relative;
  pointer-events: none;
  cursor: default;
  z-index: 8;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  padding: var(--space);
}

.switch-label-group {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--xs);
  place-items: center start;
  pointer-events: none;
  cursor: default;
}
.switch-label-group.is-off .switch-label {
  color: var(--text-xmild);
}

.switch-label {
  font-family: "Poppins", "Arial", sans-serif;
  font-weight: 300;
  letter-spacing: 0.01em;
  line-height: calc(0.125em + 1.5ex + 0.125em);
  font-size: calc(var(--text-sm) * 1.1);
  color: var(--text-xstrong);
  text-shadow: var(--text-sha-sm);
  pointer-events: none;
  cursor: default;
}

.switch-accordion-icon {
  pointer-events: none;
  z-index: -1;
  display: inline;
  height: 1.75em;
  place-self: center end;
  background-color: var(--text-strong);
  transform: rotate(180deg);
  transition: transform 400ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}

.switch-accordion-btn {
  display: grid;
  width: 100%;
  place-self: center end;
  cursor: pointer;
  pointer-events: auto;
}
.switch-accordion-btn:disabled {
  cursor: auto;
}
.switch-accordion-btn:disabled > .switch-accordion-icon {
  background-color: transparent;
  will-change: background-color;
  transition: background-color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}

.switch-accordion-content {
  content-visibility: visible;
  z-index: 7;
  display: grid;
  gap: var(--sm);
  background-color: var(--tint-2xdark);
  height: fit-content;
  padding: var(--space-half) var(--space);
  opacity: 1;
  transition: height 150ms cubic-bezier(0.46, 0.43, 0.1, 0.99), padding 150ms cubic-bezier(0.46, 0.43, 0.1, 0.99), opacity 150ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.switch-accordion-content > * {
  z-index: 8;
  opacity: 1;
  transition: height 150ms cubic-bezier(0.46, 0.43, 0.1, 0.99), padding 150ms cubic-bezier(0.46, 0.43, 0.1, 0.99), opacity 150ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
.switch-accordion-content.code {
  background-color: var(--tint-3xdark);
}

.switch-accordion {
  width: 100%;
  height: fit-content;
}
.switch-accordion.is-closed .switch-accordion-content {
  content-visibility: hidden;
  pointer-events: none;
  z-index: -20;
  height: 0;
  padding: 0;
  opacity: 0;
}
.switch-accordion.is-closed .switch-accordion-content > * {
  z-index: -20;
  height: 0;
  padding: 0;
  opacity: 0;
}
.switch-accordion.is-closed .switch-accordion-icon {
  transform: rotate(0deg);
}

/* ================================================== */
/* other styles */
/* ================================================== */
/* checkbox/label + small slider */
.filter-controls-layout {
  width: 100%;
  max-width: 100%;
  height: fit-content;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
}
.filter-controls-layout .slider-w-display {
  width: 140px;
  opacity: 1;
}
@media only screen and (min-width: 22.5rem) {
  .filter-controls-layout .slider-w-display {
    width: 165px;
  }
}
@media (min-width: 380px) {
  .filter-controls-layout .slider-w-display {
    width: 185px;
  }
}
@media only screen and (min-width: 30rem) {
  .filter-controls-layout .slider-w-display {
    width: 240px;
  }
}
.filter-controls-layout.is-off .slider-w-display {
  opacity: 0.4;
  pointer-events: none;
}
.filter-controls-layout.is-off label {
  color: var(--text-xmild);
}

/* checkbox + label */
.filter-label-layout {
  display: flex;
  align-items: center;
  gap: var(--4xs);
  justify-self: start;
}
@media only screen and (min-width: 30rem) {
  .filter-label-layout {
    gap: var(--3xs);
  }
}
.filter-label-layout > label {
  width: max-content;
  word-break: keep-all;
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 300;
  letter-spacing: 0.01em;
  font-size: var(--text-xs);
  line-height: 1;
  color: var(--text-strong);
  text-shadow: var(--text-sha-xs);
}
@media only screen and (min-width: 22.5rem) {
  .filter-label-layout > label {
    font-family: "Nunito Sans", "Arial", sans-serif;
    font-weight: 300;
    letter-spacing: 0.01em;
    font-size: var(--text-sm);
    line-height: 1;
  }
}
@media only screen and (min-width: 30rem) {
  .filter-label-layout > label {
    font-family: "Nunito Sans", "Arial", sans-serif;
    font-weight: 300;
    letter-spacing: 0.01em;
    font-size: var(--text-md);
    line-height: 1;
  }
}

.footer-email-group {
  width: 100%;
  height: var(--ui-h-sm);
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 0.15em;
}
.footer-email-group svg {
  margin-top: 2px;
  height: 0.9em;
  background-color: var(--text-xstrong);
}
@media (width >= 390px) {
  .footer-email-group {
    gap: 0.2em;
  }
  .footer-email-group svg {
    height: 1.1em;
  }
}
@media only screen and (min-width: 30rem) {
  .footer-email-group {
    gap: 0.3em;
  }
  .footer-email-group svg {
    height: 1.15em;
  }
}
@media only screen and (min-width: 48rem) {
  .footer-email-group svg {
    height: 1.25em;
  }
}
@media only screen and (min-width: 64rem) {
  .footer-email-group svg {
    height: 1.25em;
  }
}

.footer-email {
  font-family: "Nunito Sans", "Arial", sans-serif;
  font-weight: 300;
  font-size: var(--text-xs);
  letter-spacing: 0.01em;
  line-height: 1;
  text-align: end;
  text-decoration: underline;
  text-underline-offset: 2px;
  text-shadow: var(--text-sha-xs);
  color: var(--text-2xstrong);
  will-change: color;
  transition: color 300ms cubic-bezier(0.46, 0.43, 0.1, 0.99);
}
@media (width >= 390px) {
  .footer-email {
    letter-spacing: 0.02em;
    font-weight: 400;
  }
}
@media only screen and (min-width: 30rem) {
  .footer-email {
    font-size: var(--text-sm);
    letter-spacing: 0.03em;
  }
}
.footer-email:hover {
  color: var(--text-accent-base);
}

/* ================================================== */
/* Used on all pages */
/* ================================================== */
html {
  width: 100%;
  height: fit-content;
  overflow-x: hidden;
  overflow-y: scroll;
  scroll-behavior: smooth;
  scroll-padding-top: var(--nav-h);
  scrollbar-gutter: stable;
  overscroll-behavior: contain;
}

body {
  position: relative;
  width: 100%;
  min-height: 100lvh;
  height: fit-content;
}

.page-area {
  position: relative;
  z-index: 1;
  width: 100%;
  height: fit-content;
}

.content-area {
  width: 100%;
  height: fit-content;
  /* for debug */
}

/* Above-the-fold hero header */
/* ================================================== */
.hero {
  width: 100%;
  height: 100vh;
  min-height: 100lvh;
}

/*# sourceMappingURL=style.css.map */
