@font-face {
  font-display: swap;
  font-family: "Source Sans 3";
  font-stretch: normal;
  font-style: normal;
  font-weight: 200 900;
  src: url("./fonts/source-sans-3/SourceSans3VF-Upright.woff2") format("woff2-variations");
}

:root {
  --ds-font-family-body: "Source Sans 3", "Segoe UI", Arial, sans-serif;
  --ds-font-family-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;

  --ds-font-size-10: 0.625rem;
  --ds-font-size-11: 0.6875rem;
  --ds-font-size-12: 0.75rem;
  --ds-font-size-13: 0.8125rem;
  --ds-font-size-14: 0.875rem;
  --ds-font-size-15: 0.9375rem;
  --ds-font-size-16: 1rem;
  --ds-font-size-17: 1.0625rem;
  --ds-font-size-18: 1.125rem;
  --ds-font-size-19: 1.1875rem;
  --ds-font-size-20: 1.25rem;
  --ds-font-size-22: 1.375rem;
  --ds-font-size-24: 1.5rem;
  --ds-font-size-26: 1.625rem;
  --ds-font-size-30: 1.875rem;
  --ds-font-size-32: 2rem;
  --ds-font-size-36: 2.25rem;
  --ds-font-size-48: 3rem;

  --ds-font-size-xs: var(--ds-font-size-12);
  --ds-font-size-sm: var(--ds-font-size-13);
  --ds-font-size-md: var(--ds-font-size-14);
  --ds-font-size-control: var(--ds-font-size-15);
  --ds-font-size-base: var(--ds-font-size-16);
  --ds-font-size-lg: var(--ds-font-size-20);
  --ds-font-size-xl: var(--ds-font-size-22);
  --ds-font-size-2xl: var(--ds-font-size-24);
  --ds-font-size-3xl: var(--ds-font-size-36);
  --ds-font-size-4xl: var(--ds-font-size-48);

  --ds-line-height-tight: 0.98;
  --ds-line-height-solid: 1;
  --ds-line-height-compact: 1.1;
  --ds-line-height-display: 1.15;
  --ds-line-height-heading: 1.2;
  --ds-line-height-dense: 1.33;
  --ds-line-height-comfortable: 1.42;
  --ds-line-height-normal: 1.45;
  --ds-line-height-body: 1.5;
  --ds-line-height-14: 0.875rem;
  --ds-line-height-16: 1rem;
  --ds-line-height-18: 1.125rem;
  --ds-line-height-20: 1.25rem;
  --ds-line-height-22: 1.375rem;
  --ds-line-height-24: 1.5rem;
  --ds-line-height-26: 1.625rem;
  --ds-line-height-28: 1.75rem;
  --ds-line-height-29: 1.8125rem;
  --ds-line-height-30: 1.875rem;

  --ds-font-weight-regular: 400;
  --ds-font-weight-medium: 500;
  --ds-font-weight-semibold: 600;
  --ds-font-weight-bold: 700;
  --ds-font-weight-extrabold: 800;
}

.ds-type-display {
  color: var(--ds-colour-ink-900);
  font-family: var(--ds-font-family-body);
  font-size: var(--ds-font-size-4xl);
  font-weight: var(--ds-font-weight-bold);
  letter-spacing: 0;
  line-height: var(--ds-line-height-tight);
  margin: 0;
}

.ds-type-heading {
  color: var(--ds-colour-ink-900);
  font-family: var(--ds-font-family-body);
  font-size: var(--ds-font-size-xl);
  font-weight: var(--ds-font-weight-semibold);
  letter-spacing: 0;
  line-height: var(--ds-line-height-heading);
  margin: 0;
}

.ds-type-body {
  color: var(--ds-colour-ink-700);
  font-family: var(--ds-font-family-body);
  font-size: var(--ds-font-size-base);
  font-weight: var(--ds-font-weight-regular);
  letter-spacing: 0;
  line-height: var(--ds-line-height-body);
  margin: 0;
}

.ds-type-caption {
  color: var(--ds-colour-ink-600);
  font-family: var(--ds-font-family-body);
  font-size: var(--ds-font-size-md);
  font-weight: var(--ds-font-weight-medium);
  letter-spacing: 0;
  line-height: var(--ds-line-height-normal);
  margin: 0;
}

.ds-type-code {
  color: var(--ds-colour-ink-700);
  font-family: var(--ds-font-family-mono);
  font-size: var(--ds-font-size-sm);
  line-height: var(--ds-line-height-normal);
}

.ds-type-scale {
  display: grid;
  gap: var(--ds-space-2);
}

.ds-type-scale-row {
  align-items: baseline;
  border-top: 1px solid var(--ds-colour-line);
  display: grid;
  gap: var(--ds-space-3);
  grid-template-columns: minmax(200px, 0.42fr) 1fr;
  padding-top: var(--ds-space-2);
}

.ds-type-scale-label {
  color: var(--ds-colour-muted);
  font-size: var(--ds-font-size-12);
  font-weight: var(--ds-font-weight-semibold);
  line-height: var(--ds-line-height-normal);
}

.ds-type-size-10 {
  font-size: var(--ds-font-size-10);
}

.ds-type-size-11 {
  font-size: var(--ds-font-size-11);
}

.ds-type-size-12 {
  font-size: var(--ds-font-size-12);
}

.ds-type-size-13 {
  font-size: var(--ds-font-size-13);
}

.ds-type-size-14 {
  font-size: var(--ds-font-size-14);
}

.ds-type-size-15 {
  font-size: var(--ds-font-size-15);
}

.ds-type-size-16 {
  font-size: var(--ds-font-size-16);
}

.ds-type-size-17 {
  font-size: var(--ds-font-size-17);
}

.ds-type-size-18 {
  font-size: var(--ds-font-size-18);
}

.ds-type-size-19 {
  font-size: var(--ds-font-size-19);
}

.ds-type-size-20 {
  font-size: var(--ds-font-size-20);
}

.ds-type-size-22 {
  font-size: var(--ds-font-size-22);
}

.ds-type-size-24 {
  font-size: var(--ds-font-size-24);
}

.ds-type-size-26 {
  font-size: var(--ds-font-size-26);
}

.ds-type-size-30 {
  font-size: var(--ds-font-size-30);
}

.ds-type-size-32 {
  font-size: var(--ds-font-size-32);
}

.ds-type-size-36 {
  font-size: var(--ds-font-size-36);
}

.ds-type-size-48 {
  font-size: var(--ds-font-size-48);
}

.ds-type-weight-400 {
  font-weight: var(--ds-font-weight-regular);
}

.ds-type-weight-500 {
  font-weight: var(--ds-font-weight-medium);
}

.ds-type-weight-600 {
  font-weight: var(--ds-font-weight-semibold);
}

.ds-type-weight-700 {
  font-weight: var(--ds-font-weight-bold);
}

.ds-type-weight-800 {
  font-weight: var(--ds-font-weight-extrabold);
}

.ds-line-height-sample {
  border-top: 1px solid var(--ds-colour-line);
  display: grid;
  gap: var(--ds-space-8);
  grid-template-columns: minmax(200px, 0.42fr) 1fr;
  padding-top: var(--ds-space-8);
}

.ds-line-height-label {
  color: var(--ds-colour-muted);
  font-size: var(--ds-font-size-12);
  font-weight: var(--ds-font-weight-semibold);
  line-height: var(--ds-line-height-normal);
}

.ds-line-height-tight {
  line-height: var(--ds-line-height-tight);
}

.ds-line-height-solid {
  line-height: var(--ds-line-height-solid);
}

.ds-line-height-compact {
  line-height: var(--ds-line-height-compact);
}

.ds-line-height-display {
  line-height: var(--ds-line-height-display);
}

.ds-line-height-heading {
  line-height: var(--ds-line-height-heading);
}

.ds-line-height-dense {
  line-height: var(--ds-line-height-dense);
}

.ds-line-height-comfortable {
  line-height: var(--ds-line-height-comfortable);
}

.ds-line-height-normal {
  line-height: var(--ds-line-height-normal);
}

.ds-line-height-body {
  line-height: var(--ds-line-height-body);
}
