$t: (
  display1: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-display1-font-weight),
    line-height: var(--llm-em-typography-display1-line-height),
    letter-spacing: var(--llm-em-typography-display1-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-display1-font-size-min), var(--llm-em-typography-display1-font-size-max), var(--llm-em-scale)),
  ),
  display2: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-display2-font-weight),
    line-height: var(--llm-em-typography-display2-line-height),
    letter-spacing: var(--llm-em-typography-display2-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-display2-font-size-min), var(--llm-em-typography-display2-font-size-max), var(--llm-em-scale)),
  ),
  heading1: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-heading1-font-weight),
    line-height: var(--llm-em-typography-heading1-line-height),
    letter-spacing: var(--llm-em-typography-heading1-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-heading1-font-size-min), var(--llm-em-typography-heading1-font-size-max), var(--llm-em-scale)),
  ),
  heading2: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-heading2-font-weight),
    line-height: var(--llm-em-typography-heading2-line-height),
    letter-spacing: var(--llm-em-typography-heading2-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-heading2-font-size-min), var(--llm-em-typography-heading2-font-size-max), var(--llm-em-scale)),
  ),
  body1: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-body1-font-weight),
    line-height: var(--llm-em-typography-body1-line-height),
    letter-spacing: var(--llm-em-typography-body1-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-body1-font-size-min), var(--llm-em-typography-body1-font-size-max), var(--llm-em-scale)),
  ),
  body2: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-body2-font-weight),
    line-height: var(--llm-em-typography-body2-line-height),
    letter-spacing: var(--llm-em-typography-body2-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-body2-font-size-min), var(--llm-em-typography-body2-font-size-max), var(--llm-em-scale)),
  ),
  body3: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-body3-font-weight),
    line-height: var(--llm-em-typography-body3-line-height),
    letter-spacing: var(--llm-em-typography-body3-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-body3-font-size-min), var(--llm-em-typography-body3-font-size-max), var(--llm-em-scale)),
  ),
  quote1: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-quote1-font-weight),
    line-height: var(--llm-em-typography-quote1-line-height),
    letter-spacing: var(--llm-em-typography-quote1-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-quote1-font-size-min), var(--llm-em-typography-quote1-font-size-max), var(--llm-em-scale)),
  ),
  quote2: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-quote2-font-weight),
    line-height: var(--llm-em-typography-quote2-line-height),
    letter-spacing: var(--llm-em-typography-quote2-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-quote2-font-size-min), var(--llm-em-typography-quote2-font-size-max), var(--llm-em-scale)),
    font-style: italic,
  ),
  label: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-label1-font-weight),
    line-height: var(--llm-em-typography-label1-line-height),
    letter-spacing: var(--llm-em-typography-label1-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-label1-font-size-min), var(--llm-em-typography-label1-font-size-max), var(--llm-em-scale)),
    text-transform: uppercase,
  ),
  cta1: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-cta1-font-weight),
    line-height: var(--llm-em-typography-cta1-line-height),
    letter-spacing: var(--llm-em-typography-cta1-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-cta1-font-size-min), var(--llm-em-typography-cta1-font-size-max), var(--llm-em-scale)),
  ),
  cta2: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-cta2-font-weight),
    line-height: var(--llm-em-typography-cta2-line-height),
    letter-spacing: var(--llm-em-typography-cta2-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-cta2-font-size-min), var(--llm-em-typography-cta2-font-size-max), var(--llm-em-scale)),
  ),
  cta3: (font-family: var(--llm-em-font-primary),
    font-weight: var(--llm-em-typography-cta3-font-weight),
    line-height: var(--llm-em-typography-cta3-line-height),
    letter-spacing: var(--llm-em-typography-cta3-letter-spacing),
    font-size: clampUnit(var(--llm-em-typography-cta3-font-size-min), var(--llm-em-typography-cta3-font-size-max), var(--llm-em-scale)),
  )
);

@mixin text($style) {
  line-height: 1;

  @each $key, $attr in map-get($t, #{$style}) {
    #{$key}: #{$attr};
  }
}

@mixin typography() {
  @each $key, $attr in $t {
    .llm .-llm-em-#{$key} {
      @include text(#{$key});
    }
  }
}
