/* ==========================================================================
   Align-self utility
   ========================================================================== */
.u-align-self--start {
  align-self: flex-start;
}

/* ==========================================================================
   Color utility
   ========================================================================== */
.u-color--primary-mid {
  color: var(--color-primary-mid);
}

.u-color--primary-dark {
  color: var(--color-primary-dark);
}

.u-color--black {
  color: var(--color-black);
}

.u-color--gray {
  color: var(--color-gray);
}

.u-color--white {
  color: var(--color-white);
}

.u-color--alert {
  color: var(--color-alert);
}

.u-color--warning {
  color: var(--color-warning);
}

.u-color--accent {
  color: var(--color-accent);
}

.u-color--link {
  color: var(--color-link);
}

.u-color--youtube {
  color: var(--color-youtube);
}

.u-color--facebook {
  color: var(--color-facebook);
}

.u-color--important {
  color: var(--color-important);
}

.u-color--disable {
  color: var(--color-disable);
}

.u-color--neutral-darken {
  color: var(--color-neutral-darken);
}

.u-color--neutral-darker {
  color: var(--color-neutral-darker);
}

.u-color--neutral-mid {
  color: var(--color-neutral-mid);
}

.u-color--neutral-lighter {
  color: var(--color-neutral-lighter);
}

.u-color--neutral-lightest {
  color: var(--color-neutral-lightest);
}

.u-color--category-orange {
  color: var(--color-category-orange);
}

.u-color--category-pink {
  color: var(--color-category-pink);
}

.u-color--category-turquoise {
  color: var(--color-category-turquoise);
}

.u-color--category-blue {
  color: var(--color-category-blue);
}

.u-color--category-green {
  color: var(--color-category-green);
}

.u-color--table-circle {
  color: var(--color-table-circle);
}

.u-color--table-triangle {
  color: var(--color-table-triangle);
}

.u-color--bg-container {
  color: var(--color-bg-container);
}

.u-color--txt-weak {
  color: var(--color-txt-weak);
}

/* ==========================================================================
   Display utility
   ========================================================================== */
/* none */
.u-dn {
  display: none;
}

@media (min-width: 22.5em) {
  .u-dn--from-mobile {
    display: none;
  }
}

@media (min-width: 33.75em) {
  .u-dn--from-landscape {
    display: none;
  }
}

@media (min-width: 48em) {
  .u-dn--from-tablet {
    display: none;
  }
}

@media (min-width: 56.25em) {
  .u-dn--from-laptop {
    display: none;
  }
}

@media (min-width: 80em) {
  .u-dn--from-desktop {
    display: none;
  }
}

@media (min-width: 90em) {
  .u-dn--from-wide {
    display: none;
  }
}

@media (min-width: 100em) {
  .u-dn--from-full {
    display: none;
  }
}

@media (max-width: 22.49em) {
  .u-dn--until-mobile {
    display: none;
  }
}

@media (max-width: 33.74em) {
  .u-dn--until-landscape {
    display: none;
  }
}

@media (max-width: 47.99em) {
  .u-dn--until-tablet {
    display: none;
  }
}

@media (max-width: 56.24em) {
  .u-dn--until-laptop {
    display: none;
  }
}

@media (max-width: 79.99em) {
  .u-dn--until-desktop {
    display: none;
  }
}

@media (max-width: 89.99em) {
  .u-dn--until-wide {
    display: none;
  }
}

@media (max-width: 99.99em) {
  .u-dn--until-full {
    display: none;
  }
}

/* inline */
.u-di {
  display: inline;
}

@media (min-width: 22.5em) {
  .u-di--from-mobile {
    display: inline;
  }
}

@media (min-width: 33.75em) {
  .u-di--from-landscape {
    display: inline;
  }
}

@media (min-width: 48em) {
  .u-di--from-tablet {
    display: inline;
  }
}

@media (min-width: 56.25em) {
  .u-di--from-laptop {
    display: inline;
  }
}

@media (min-width: 80em) {
  .u-di--from-desktop {
    display: inline;
  }
}

@media (min-width: 90em) {
  .u-di--from-wide {
    display: inline;
  }
}

@media (min-width: 100em) {
  .u-di--from-full {
    display: inline;
  }
}

@media (max-width: 22.49em) {
  .u-di--until-mobile {
    display: inline;
  }
}

@media (max-width: 33.74em) {
  .u-di--until-landscape {
    display: inline;
  }
}

@media (max-width: 47.99em) {
  .u-di--until-tablet {
    display: inline;
  }
}

@media (max-width: 56.24em) {
  .u-di--until-laptop {
    display: inline;
  }
}

@media (max-width: 79.99em) {
  .u-di--until-desktop {
    display: inline;
  }
}

@media (max-width: 89.99em) {
  .u-di--until-wide {
    display: inline;
  }
}

@media (max-width: 99.99em) {
  .u-di--until-full {
    display: inline;
  }
}

/* inline-block */
.u-ib {
  display: inline-block;
}

@media (min-width: 22.5em) {
  .u-ib--mobile {
    display: inline-block;
  }
}

@media (min-width: 33.75em) {
  .u-ib--landscape {
    display: inline-block;
  }
}

@media (min-width: 48em) {
  .u-ib--tablet {
    display: inline-block;
  }
}

@media (min-width: 56.25em) {
  .u-ib--laptop {
    display: inline-block;
  }
}

@media (min-width: 80em) {
  .u-ib--desktop {
    display: inline-block;
  }
}

@media (min-width: 90em) {
  .u-ib--wide {
    display: inline-block;
  }
}

@media (min-width: 100em) {
  .u-ib--full {
    display: inline-block;
  }
}

/* block */
.u-db {
  display: block;
}

.u-db--mobile {
  display: inline;
}
@media (min-width: 22.5em) {
  .u-db--mobile {
    display: block;
  }
}

.u-db--landscape {
  display: inline;
}
@media (min-width: 33.75em) {
  .u-db--landscape {
    display: block;
  }
}

.u-db--tablet {
  display: inline;
}
@media (min-width: 48em) {
  .u-db--tablet {
    display: block;
  }
}

.u-db--laptop {
  display: inline;
}
@media (min-width: 56.25em) {
  .u-db--laptop {
    display: block;
  }
}

.u-db--desktop {
  display: inline;
}
@media (min-width: 80em) {
  .u-db--desktop {
    display: block;
  }
}

.u-db--wide {
  display: inline;
}
@media (min-width: 90em) {
  .u-db--wide {
    display: block;
  }
}

.u-db--full {
  display: inline;
}
@media (min-width: 100em) {
  .u-db--full {
    display: block;
  }
}

/* ==========================================================================
   Font-family utility
   ========================================================================== */
.u-ff--l {
  font-family: var(--font-l);
}

.u-ff--r {
  font-family: var(--font-r);
}

.u-ff--m {
  font-family: var(--font-m);
}

.u-ff--db {
  font-family: var(--font-db);
}

.u-ff--b {
  font-family: var(--font-b);
}

.u-ff--uc-r {
  font-family: var(--font-uc-r);
}

.u-ff--uc-m {
  font-family: var(--font-uc-m);
}

.u-ff--uc-db {
  font-family: var(--font-uc-db);
}

.u-ff--uc-b {
  font-family: var(--font-uc-b);
}

.u-ff--t-r {
  font-family: var(--font-t-r);
}

.u-ff--t-m {
  font-family: var(--font-t-m);
}

.u-ff--t-d {
  font-family: var(--font-t-d);
}

.u-ff--t-b {
  font-family: var(--font-t-b);
}

.u-ff--en {
  font-family: var(--font-en);
}

.u-ff--system {
  font-family: var(--font-system);
}

/* ==========================================================================
   Font-size utility
   ========================================================================== */
.u-fs--2xs {
  font-size: 60%;
}

.u-fs--xs {
  font-size: 70%;
}

.u-fs--sm {
  font-size: 80%;
}

.u-fs--md {
  font-size: 90%;
}

.u-fs--lg {
  font-size: 120%;
}

.u-fs--xl {
  font-size: 130%;
}

.u-fs--2xl {
  font-size: 140%;
}

.u-fs--93 {
  font-size: 93%;
}

/* ==========================================================================
   Full-bleed utility
   ========================================================================== */
/* all */
.u-full-bleed {
  width: 100vw;
  margin-left: calc(50% - 50vw);
}

@media (min-width: 22.5em) {
  .u-full-bleed--from-mobile {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (min-width: 33.75em) {
  .u-full-bleed--from-landscape {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (min-width: 48em) {
  .u-full-bleed--from-tablet {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (min-width: 56.25em) {
  .u-full-bleed--from-laptop {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (min-width: 80em) {
  .u-full-bleed--from-desktop {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (min-width: 90em) {
  .u-full-bleed--from-wide {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (min-width: 100em) {
  .u-full-bleed--from-full {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (max-width: 22.49em) {
  .u-full-bleed--lower-mobile {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (max-width: 33.74em) {
  .u-full-bleed--lower-landscape {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (max-width: 47.99em) {
  .u-full-bleed--lower-tablet {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (max-width: 56.24em) {
  .u-full-bleed--lower-laptop {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (max-width: 79.99em) {
  .u-full-bleed--lower-desktop {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (max-width: 89.99em) {
  .u-full-bleed--lower-wide {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

@media (max-width: 99.99em) {
  .u-full-bleed--lower-full {
    width: 100vw;
    margin-left: calc(50% - 50vw);
  }
}

/* ==========================================================================
   Font-weight utility
   ========================================================================== */
.u-fw--regular {
  font-family: var(--font-r);
  font-weight: 400;
}

.u-fw--bold {
  font-family: var(--font-db);
  font-weight: 600;
}

/* ==========================================================================
   Important utility
   ========================================================================== */
.u-important {
  font-family: var(--font-m);
  font-size: 1rem;
  font-weight: 500;
  color: #f00;
}
@media (min-width: 48em) {
  .u-important {
    font-size: 1.0625rem;
  }
}
@media (min-width: 80em) {
  .u-important {
    font-size: 1.125rem;
  }
}

/* ==========================================================================
   Line-height utility
   ========================================================================== */
.u-lh--none {
  line-height: var(--lh-none);
}

.u-lh--tight {
  line-height: var(--lh-tight);
}

.u-lh--snug {
  line-height: var(--lh-snug);
}

.u-lh--snug-100 {
  line-height: var(--lh-snug-100);
}

.u-lh--normal {
  line-height: var(--lh-normal);
}

.u-lh--relaxed {
  line-height: var(--lh-relaxed);
}

.u-lh--extra-relaxed {
  line-height: var(--lh-extra-relaxed);
}

.u-lh--loose {
  line-height: var(--lh-loose);
}

.u-lh--extra-loose {
  line-height: var(--lh-extra-loose);
}

/* ==========================================================================
   Letter-spacing utility
   ========================================================================== */
.u-ls--normal {
  letter-spacing: var(--ls-normal);
}

.u-ls--narrower {
  letter-spacing: var(--ls-narrower);
}

.u-ls--narrow {
  letter-spacing: var(--ls-narrow);
}

.u-ls--wide {
  letter-spacing: var(--ls-wide);
}

.u-ls--wider {
  letter-spacing: var(--ls-wider);
}

.u-ls--widest {
  letter-spacing: var(--ls-widest);
}

/* ==========================================================================
   Margin utility
   ========================================================================== */
.u-mt--0 {
  margin-top: 0 !important;
}

.u-mt--1 {
  margin-top: 4px !important;
}

.u-mt--2 {
  margin-top: 8px !important;
}

.u-mt--3 {
  margin-top: 12px !important;
}

.u-mt--4 {
  margin-top: 16px !important;
}

.u-mt--5 {
  margin-top: 20px !important;
}

.u-mt--6 {
  margin-top: 24px !important;
}

.u-mt--7 {
  margin-top: 28px !important;
}

.u-mt--8 {
  margin-top: 32px !important;
}

.u-mt--9 {
  margin-top: 36px !important;
}

.u-mt--10 {
  margin-top: 40px !important;
}

.u-mt--11 {
  margin-top: 44px !important;
}

.u-mt--12 {
  margin-top: 48px !important;
}

/* ==========================================================================
   Padding utility
   ========================================================================== */
.u-pt--0 {
  padding-top: 0;
}

/* ==========================================================================
   Section counter utility
   ========================================================================== */
.u-section-counter {
  counter-reset: section-counter;
}

.u-section-counter__increment {
  counter-increment: section-counter;
}

.u-section-counter__increment .u-section-counter__number:is(h1, h2, h3, h4, h5, h6)::before {
  position: revert;
  top: revert;
  left: revert;
  display: block;
  width: revert;
  height: revert;
  margin-right: -0.5em;
  content: counter(section-counter) ". ";
  background-color: revert;
  border-radius: revert;
  transform: revert;
}

/* ==========================================================================
   Text-align utility
   ========================================================================== */
/* text-align */
.u-ta--left {
  text-align: left;
}

.u-ta--center {
  text-align: center;
}

.u-ta--right {
  text-align: right;
}

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

/* ==========================================================================
   Visually-hidden
   ========================================================================== */
.u-visually-hidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  white-space: nowrap;
  width: 1px;
}

/* ==========================================================================
   z-index utility
   ========================================================================== */
.u-z--0 {
  z-index: var(--z-0);
}

.u-z--10 {
  z-index: var(--z-10);
}

.u-z--20 {
  z-index: var(--z-20);
}

.u-z--30 {
  z-index: var(--z-30);
}

.u-z--40 {
  z-index: var(--z-40);
}

.u-z--50 {
  z-index: var(--z-50);
}

.u-z--60 {
  z-index: var(--z-60);
}

.u-z--70 {
  z-index: var(--z-70);
}

.u-z--80 {
  z-index: var(--z-80);
}

.u-z--90 {
  z-index: var(--z-90);
}