@mixin line-clamp {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  text-align: left;
  word-wrap: anywhere;
}


/*=== Font size ===*/

.font-size--xxs  { font-size: var(--font-size--xxs); }
.font-size--xs   { font-size: var(--font-size--xs); }
.font-size--s    { font-size: var(--font-size--s); }
.font-size--base { font-size: var(--font-size--base); }
.font-size--l    { font-size: var(--font-size--l); }
.font-size--xl   { font-size: var(--font-size--xl); }
.font-size--xxl  { font-size: var(--font-size--xxl); }
.font-size--xxxl { font-size: var(--font-size--xxxl); }

.font-size--headline    { font-size: var(--font-size--headline); }
.font-size--subheadline { font-size: var(--font-size--subheadline); }

/*=== Font family ===*/

.font--stack { font-family: var(--font--stack); }
.font--emoji { font-family: var(--font--emoji); }
.font--monospace { font-family: var(--font--monospace); }

/*=== Line heights ===*/

.line-height--copy  { line-height: var(--line-height--copy); }
.line-height--solid { line-height: var(--line-height--solid); }
.line-height--title { line-height: var(--line-height--title); }
.line-height--loose { line-height: var(--line-height--loose); }


/*=== Tracking ===*/

.tracked--tighter { letter-spacing: var(--tracked--tighter); }
.tracked--tight   { letter-spacing: var(--tracked--tight); }
.tracked--loose   { letter-spacing: var(--tracked--loose); }
.tracked--looser  { letter-spacing: var(--tracked--looser); }
.tracked--mega    { letter-spacing: var(--tracked--mega); }


/*=== Font weight ===*/

.font-weight--normal   { font-weight: var(--font-weight--normal); }
.font-weight--bold     { font-weight: var(--font-weight--bold); }
.font-weight--semibold { font-weight: var(--font-weight--semibold); }
.font-weight--1        { font-weight: 100; }
.font-weight--2        { font-weight: 200; }
.font-weight--3        { font-weight: 300; }
.font-weight--4        { font-weight: 400; }
.font-weight--5        { font-weight: 500; }
.font-weight--6        { font-weight: 600; }
.font-weight--7        { font-weight: 700; }
.font-weight--8        { font-weight: 800; }
.font-weight--9        { font-weight: 900; }


/*=== Font style ===*/

.font-style--italic { font-style: italic; }
.font-style--normal { font-style: normal; }

/*=== Text transform ===*/

.text-transform--c     { text-transform: capitalize; }
.text-transform--u     { text-transform: uppercase; }
.text-transform--l     { text-transform: lowercase; }

/*=== Text decoration ===*/

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

/*=== Text layout ===*/
/*=== Whitespace ===*/

.white-space--pre-wrap { white-space: pre-wrap; }
.white-space--nowrap   { white-space: nowrap; }
.white-space--pre-line { white-space: pre-line; }

/*=== Line wrap ===*/
.line-wrap {
  overflow-wrap: break-word;
  hyphens: auto;
}

/*=== Simple Truncate ===*/
.truncate:where(:not(.particle-exclude, .particle-exclude *)) {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/*=== Line Clamp ===*/
.line-clamp--1 {
  @include line-clamp;
  -webkit-line-clamp: 1;
}

.line-clamp--2 {
  @include line-clamp;
  -webkit-line-clamp: 2;
}

.line-clamp--3 {
  @include line-clamp;
  -webkit-line-clamp: 3;
}

.line-clamp--4 {
  @include line-clamp;
  -webkit-line-clamp: 4;
}

.line-clamp--5 {
  @include line-clamp;
  -webkit-line-clamp: 5;
}

.line-clamp--6 {
  @include line-clamp;
  -webkit-line-clamp: 6;
}

.line-clamp--none {
  -webkit-line-clamp: none;
}
