/* Generated by build-typography.mjs — do not edit by hand.
   Requires tokens.css to be linked first. */

/* ---------------------------------------------------------------------------
   Token styles — one per Typography/Semantic style in Figma (39).
   Ordered largest → smallest by resolved font-size.
   --------------------------------------------------------------------------- */
.pl-text-display-xl {
  font-family: var(--pl-display-xl-font);
  font-size: var(--pl-display-xl-size);
  line-height: var(--pl-display-xl-lineheight);
  font-weight: var(--pl-display-xl-weight);
}

.pl-text-display-lg {
  font-family: var(--pl-display-lg-font);
  font-size: var(--pl-display-lg-size);
  line-height: var(--pl-display-lg-lineheight);
  font-weight: var(--pl-display-lg-weight);
}

.pl-text-display-md {
  font-family: var(--pl-display-md-font);
  font-size: var(--pl-display-md-size);
  line-height: var(--pl-display-md-lineheight);
  font-weight: var(--pl-display-md-weight);
}

.pl-text-heading-h1 {
  font-family: var(--pl-heading-h1-font);
  font-size: var(--pl-heading-h1-size);
  line-height: var(--pl-heading-h1-lineheight);
  font-weight: var(--pl-heading-h1-weight);
}

.pl-text-display-sm {
  font-family: var(--pl-display-sm-font);
  font-size: var(--pl-display-sm-size);
  line-height: var(--pl-display-sm-lineheight);
  font-weight: var(--pl-display-sm-weight);
}

.pl-text-heading-h2 {
  font-family: var(--pl-heading-h2-font);
  font-size: var(--pl-heading-h2-size);
  line-height: var(--pl-heading-h2-lineheight);
  font-weight: var(--pl-heading-h2-weight);
}

.pl-text-heading-h3 {
  font-family: var(--pl-heading-h3-font);
  font-size: var(--pl-heading-h3-size);
  line-height: var(--pl-heading-h3-lineheight);
  font-weight: var(--pl-heading-h3-weight);
}

.pl-text-heading-h4 {
  font-family: var(--pl-heading-h4-font);
  font-size: var(--pl-heading-h4-size);
  line-height: var(--pl-heading-h4-lineheight);
  font-weight: var(--pl-heading-h4-weight);
}

.pl-text-title-lg-bold {
  font-family: var(--pl-title-lg-bold-font);
  font-size: var(--pl-title-lg-bold-size);
  line-height: var(--pl-title-lg-bold-lineheight);
  font-weight: var(--pl-title-lg-bold-weight);
}

.pl-text-title-lg-medium {
  font-family: var(--pl-title-lg-medium-font);
  font-size: var(--pl-title-lg-medium-size);
  line-height: var(--pl-title-lg-medium-lineheight);
  font-weight: var(--pl-title-lg-medium-weight);
}

.pl-text-title-lg-semibold {
  font-family: var(--pl-title-lg-semibold-font);
  font-size: var(--pl-title-lg-semibold-size);
  line-height: var(--pl-title-lg-semibold-lineheight);
  font-weight: var(--pl-title-lg-semibold-weight);
}

.pl-text-body-lg-medium {
  font-family: var(--pl-body-lg-medium-font);
  font-size: var(--pl-body-lg-medium-size);
  line-height: var(--pl-body-lg-medium-lineheight);
  font-weight: var(--pl-body-lg-medium-weight);
}

.pl-text-body-lg-regular {
  font-family: var(--pl-body-lg-regular-font);
  font-size: var(--pl-body-lg-regular-size);
  line-height: var(--pl-body-lg-regular-lineheight);
  font-weight: var(--pl-body-lg-regular-weight);
}

.pl-text-body-lg-semibold {
  font-family: var(--pl-body-lg-semibold-font);
  font-size: var(--pl-body-lg-semibold-size);
  line-height: var(--pl-body-lg-semibold-lineheight);
  font-weight: var(--pl-body-lg-semibold-weight);
}

.pl-text-label-lg-medium {
  font-family: var(--pl-label-lg-medium-font);
  font-size: var(--pl-label-lg-medium-size);
  line-height: var(--pl-label-lg-medium-lineheight);
  font-weight: var(--pl-label-lg-medium-weight);
}

.pl-text-label-lg-regular {
  font-family: var(--pl-label-lg-regular-font);
  font-size: var(--pl-label-lg-regular-size);
  line-height: var(--pl-label-lg-regular-lineheight);
  font-weight: var(--pl-label-lg-regular-weight);
}

.pl-text-label-lg-semibold {
  font-family: var(--pl-label-lg-semibold-font);
  font-size: var(--pl-label-lg-semibold-size);
  line-height: var(--pl-label-lg-semibold-lineheight);
  font-weight: var(--pl-label-lg-semibold-weight);
}

.pl-text-title-md-bold {
  font-family: var(--pl-title-md-bold-font);
  font-size: var(--pl-title-md-bold-size);
  line-height: var(--pl-title-md-bold-lineheight);
  font-weight: var(--pl-title-md-bold-weight);
}

.pl-text-title-md-medium {
  font-family: var(--pl-title-md-medium-font);
  font-size: var(--pl-title-md-medium-size);
  line-height: var(--pl-title-md-medium-lineheight);
  font-weight: var(--pl-title-md-medium-weight);
}

.pl-text-title-md-semibold {
  font-family: var(--pl-title-md-semibold-font);
  font-size: var(--pl-title-md-semibold-size);
  line-height: var(--pl-title-md-semibold-lineheight);
  font-weight: var(--pl-title-md-semibold-weight);
}

.pl-text-body-md-medium {
  font-family: var(--pl-body-md-medium-font);
  font-size: var(--pl-body-md-medium-size);
  line-height: var(--pl-body-md-medium-lineheight);
  font-weight: var(--pl-body-md-medium-weight);
}

.pl-text-body-md-regular {
  font-family: var(--pl-body-md-regular-font);
  font-size: var(--pl-body-md-regular-size);
  line-height: var(--pl-body-md-regular-lineheight);
  font-weight: var(--pl-body-md-regular-weight);
}

.pl-text-body-md-semibold {
  font-family: var(--pl-body-md-semibold-font);
  font-size: var(--pl-body-md-semibold-size);
  line-height: var(--pl-body-md-semibold-lineheight);
  font-weight: var(--pl-body-md-semibold-weight);
}

.pl-text-label-md-medium {
  font-family: var(--pl-label-md-medium-font);
  font-size: var(--pl-label-md-medium-size);
  line-height: var(--pl-label-md-medium-lineheight);
  font-weight: var(--pl-label-md-medium-weight);
}

.pl-text-label-md-regular {
  font-family: var(--pl-label-md-regular-font);
  font-size: var(--pl-label-md-regular-size);
  line-height: var(--pl-label-md-regular-lineheight);
  font-weight: var(--pl-label-md-regular-weight);
}

.pl-text-label-md-semibold {
  font-family: var(--pl-label-md-semibold-font);
  font-size: var(--pl-label-md-semibold-size);
  line-height: var(--pl-label-md-semibold-lineheight);
  font-weight: var(--pl-label-md-semibold-weight);
}

.pl-text-title-sm-bold {
  font-family: var(--pl-title-sm-bold-font);
  font-size: var(--pl-title-sm-bold-size);
  line-height: var(--pl-title-sm-bold-lineheight);
  font-weight: var(--pl-title-sm-bold-weight);
}

.pl-text-title-sm-medium {
  font-family: var(--pl-title-sm-medium-font);
  font-size: var(--pl-title-sm-medium-size);
  line-height: var(--pl-title-sm-medium-lineheight);
  font-weight: var(--pl-title-sm-medium-weight);
}

.pl-text-title-sm-semibold {
  font-family: var(--pl-title-sm-semibold-font);
  font-size: var(--pl-title-sm-semibold-size);
  line-height: var(--pl-title-sm-semibold-lineheight);
  font-weight: var(--pl-title-sm-semibold-weight);
}

.pl-text-body-sm-medium {
  font-family: var(--pl-body-sm-medium-font);
  font-size: var(--pl-body-sm-medium-size);
  line-height: var(--pl-body-sm-medium-lineheight);
  font-weight: var(--pl-body-sm-medium-weight);
}

.pl-text-body-sm-regular {
  font-family: var(--pl-body-sm-regular-font);
  font-size: var(--pl-body-sm-regular-size);
  line-height: var(--pl-body-sm-regular-lineheight);
  font-weight: var(--pl-body-sm-regular-weight);
}

.pl-text-body-sm-semibold {
  font-family: var(--pl-body-sm-semibold-font);
  font-size: var(--pl-body-sm-semibold-size);
  line-height: var(--pl-body-sm-semibold-lineheight);
  font-weight: var(--pl-body-sm-semibold-weight);
}

.pl-text-label-sm-medium {
  font-family: var(--pl-label-sm-medium-font);
  font-size: var(--pl-label-sm-medium-size);
  line-height: var(--pl-label-sm-medium-lineheight);
  font-weight: var(--pl-label-sm-medium-weight);
}

.pl-text-label-sm-regular {
  font-family: var(--pl-label-sm-regular-font);
  font-size: var(--pl-label-sm-regular-size);
  line-height: var(--pl-label-sm-regular-lineheight);
  font-weight: var(--pl-label-sm-regular-weight);
}

.pl-text-label-sm-semibold {
  font-family: var(--pl-label-sm-semibold-font);
  font-size: var(--pl-label-sm-semibold-size);
  line-height: var(--pl-label-sm-semibold-lineheight);
  font-weight: var(--pl-label-sm-semibold-weight);
}

.pl-text-caption-lg {
  font-family: var(--pl-caption-lg-font);
  font-size: var(--pl-caption-lg-size);
  line-height: var(--pl-caption-lg-lineheight);
  font-weight: var(--pl-caption-lg-weight);
}

.pl-text-caption-lg-bold {
  font-family: var(--pl-caption-lg-bold-font);
  font-size: var(--pl-caption-lg-bold-size);
  line-height: var(--pl-caption-lg-bold-lineheight);
  font-weight: var(--pl-caption-lg-bold-weight);
}

.pl-text-caption-lg-medium {
  font-family: var(--pl-caption-lg-medium-font);
  font-size: var(--pl-caption-lg-medium-size);
  line-height: var(--pl-caption-lg-medium-lineheight);
  font-weight: var(--pl-caption-lg-medium-weight);
}

.pl-text-caption-sm {
  font-family: var(--pl-caption-sm-font);
  font-size: var(--pl-caption-sm-size);
  line-height: var(--pl-caption-sm-lineheight);
  font-weight: var(--pl-caption-sm-weight);
}

/* ---------------------------------------------------------------------------
   Role styles — the 29 Figma text styles designers apply.
   Each is an alias of the token style above with identical metrics.
   --------------------------------------------------------------------------- */
/* role/pageTitle */
.pl-page-title {
  font-family: var(--pl-display-md-font);
  font-size: var(--pl-display-md-size);
  line-height: var(--pl-display-md-lineheight);
  font-weight: var(--pl-display-md-weight);
}

/* role/contentTitle */
.pl-content-title {
  font-family: var(--pl-display-sm-font);
  font-size: var(--pl-display-sm-size);
  line-height: var(--pl-display-sm-lineheight);
  font-weight: var(--pl-display-sm-weight);
}

/* role/sectionHeader */
.pl-section-header {
  font-family: var(--pl-heading-h3-font);
  font-size: var(--pl-heading-h3-size);
  line-height: var(--pl-heading-h3-lineheight);
  font-weight: var(--pl-heading-h3-weight);
}

/* role/cardTitle */
.pl-card-title {
  font-family: var(--pl-title-lg-medium-font);
  font-size: var(--pl-title-lg-medium-size);
  line-height: var(--pl-title-lg-medium-lineheight);
  font-weight: var(--pl-title-lg-medium-weight);
}

/* role/listTitle */
.pl-list-title {
  font-family: var(--pl-title-md-medium-font);
  font-size: var(--pl-title-md-medium-size);
  line-height: var(--pl-title-md-medium-lineheight);
  font-weight: var(--pl-title-md-medium-weight);
}

/* role/tabLabel, role/captionPrimary */
.pl-tab-label,
.pl-caption-primary {
  font-family: var(--pl-caption-lg-font);
  font-size: var(--pl-caption-lg-size);
  line-height: var(--pl-caption-lg-lineheight);
  font-weight: var(--pl-caption-lg-weight);
}

/* role/captionPrimary medium */
.pl-caption-primary-medium {
  font-family: var(--pl-caption-lg-medium-font);
  font-size: var(--pl-caption-lg-medium-size);
  line-height: var(--pl-caption-lg-medium-lineheight);
  font-weight: var(--pl-caption-lg-medium-weight);
}

/* role/captionPrimary bold */
.pl-caption-primary-bold {
  font-family: var(--pl-caption-lg-bold-font);
  font-size: var(--pl-caption-lg-bold-size);
  line-height: var(--pl-caption-lg-bold-lineheight);
  font-weight: var(--pl-caption-lg-bold-weight);
}

/* role/captionSecondary */
.pl-caption-secondary {
  font-family: var(--pl-caption-sm-font);
  font-size: var(--pl-caption-sm-size);
  line-height: var(--pl-caption-sm-lineheight);
  font-weight: var(--pl-caption-sm-weight);
}

/* role/body/large/bodyLarge regular */
.pl-body-large-regular {
  font-family: var(--pl-body-lg-regular-font);
  font-size: var(--pl-body-lg-regular-size);
  line-height: var(--pl-body-lg-regular-lineheight);
  font-weight: var(--pl-body-lg-regular-weight);
}

/* role/body/large/bodyLarge medium */
.pl-body-large-medium {
  font-family: var(--pl-body-lg-medium-font);
  font-size: var(--pl-body-lg-medium-size);
  line-height: var(--pl-body-lg-medium-lineheight);
  font-weight: var(--pl-body-lg-medium-weight);
}

/* role/body/large/bodyLarge semiBold */
.pl-body-large-semibold {
  font-family: var(--pl-body-lg-semibold-font);
  font-size: var(--pl-body-lg-semibold-size);
  line-height: var(--pl-body-lg-semibold-lineheight);
  font-weight: var(--pl-body-lg-semibold-weight);
}

/* role/body/medium/bodyMedium regular */
.pl-body-medium-regular {
  font-family: var(--pl-body-md-regular-font);
  font-size: var(--pl-body-md-regular-size);
  line-height: var(--pl-body-md-regular-lineheight);
  font-weight: var(--pl-body-md-regular-weight);
}

/* role/body/medium/bodyMedium medium */
.pl-body-medium-medium {
  font-family: var(--pl-body-md-medium-font);
  font-size: var(--pl-body-md-medium-size);
  line-height: var(--pl-body-md-medium-lineheight);
  font-weight: var(--pl-body-md-medium-weight);
}

/* role/body/medium/bodyMedium semiBold */
.pl-body-medium-semibold {
  font-family: var(--pl-body-md-semibold-font);
  font-size: var(--pl-body-md-semibold-size);
  line-height: var(--pl-body-md-semibold-lineheight);
  font-weight: var(--pl-body-md-semibold-weight);
}

/* role/body/small/bodySmall regular */
.pl-body-small-regular {
  font-family: var(--pl-body-sm-regular-font);
  font-size: var(--pl-body-sm-regular-size);
  line-height: var(--pl-body-sm-regular-lineheight);
  font-weight: var(--pl-body-sm-regular-weight);
}

/* role/body/small/bodySmall medium */
.pl-body-small-medium {
  font-family: var(--pl-body-sm-medium-font);
  font-size: var(--pl-body-sm-medium-size);
  line-height: var(--pl-body-sm-medium-lineheight);
  font-weight: var(--pl-body-sm-medium-weight);
}

/* role/body/small/bodySmall semiBold */
.pl-body-small-semibold {
  font-family: var(--pl-body-sm-semibold-font);
  font-size: var(--pl-body-sm-semibold-size);
  line-height: var(--pl-body-sm-semibold-lineheight);
  font-weight: var(--pl-body-sm-semibold-weight);
}

/* role/button label/large/buttonLabelLarge medium, role/input label/large/inputLabelLarge medium */
.pl-button-label-large-medium,
.pl-input-label-large-medium {
  font-family: var(--pl-label-lg-medium-font);
  font-size: var(--pl-label-lg-medium-size);
  line-height: var(--pl-label-lg-medium-lineheight);
  font-weight: var(--pl-label-lg-medium-weight);
}

/* role/button label/large/buttonLabelLarge semibold, role/input label/large/inputLabelLarge semiBold */
.pl-button-label-large-semibold,
.pl-input-label-large-semibold {
  font-family: var(--pl-label-lg-semibold-font);
  font-size: var(--pl-label-lg-semibold-size);
  line-height: var(--pl-label-lg-semibold-lineheight);
  font-weight: var(--pl-label-lg-semibold-weight);
}

/* role/button label/medium/buttonLabelMedium medium, role/input label/medium/inputLabelMedium medium */
.pl-button-label-medium-medium,
.pl-input-label-medium-medium {
  font-family: var(--pl-label-md-medium-font);
  font-size: var(--pl-label-md-medium-size);
  line-height: var(--pl-label-md-medium-lineheight);
  font-weight: var(--pl-label-md-medium-weight);
}

/* role/button label/medium/buttonLabelMedium semibold, role/input label/medium/inputLabelMedium semiBold */
.pl-button-label-medium-semibold,
.pl-input-label-medium-semibold {
  font-family: var(--pl-label-md-semibold-font);
  font-size: var(--pl-label-md-semibold-size);
  line-height: var(--pl-label-md-semibold-lineheight);
  font-weight: var(--pl-label-md-semibold-weight);
}

/* role/button label/small/buttonLabelSmall medium */
.pl-button-label-small-medium {
  font-family: var(--pl-label-sm-medium-font);
  font-size: var(--pl-label-sm-medium-size);
  line-height: var(--pl-label-sm-medium-lineheight);
  font-weight: var(--pl-label-sm-medium-weight);
}

/* role/button label/small/buttonLabelSmall semibold */
.pl-button-label-small-semibold {
  font-family: var(--pl-label-sm-semibold-font);
  font-size: var(--pl-label-sm-semibold-size);
  line-height: var(--pl-label-sm-semibold-lineheight);
  font-weight: var(--pl-label-sm-semibold-weight);
}
