$font-family-data: (
  base: unquote("BlinkMacSystemFont,-apple-system,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Fira Sans','Droid Sans','Helvetica Neue',Helvetica,Arial,sans-serif"),
  brand: unquote("BrownPro,BlinkMacSystemFont,-apple-system,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Fira Sans','Droid Sans','Helvetica Neue',Helvetica,Arial,sans-serif"),
  monospace: unquote("Consolas,'Liberation Mono',Menlo,Courier,monospace"),
);

$text-variants-data: (
  title-extralarge: remToPx(2rem)
    125%,

  title-large: remToPx(1.5rem)
    125%,

  title: remToPx(1.25rem)
    125%,

  title-small: remToPx(1rem)
    125%,

  title-tiny: remToPx(1rem)
    125%,

  body-large: remToPx(1.125rem)
    1.5rem,

  body: remToPx(1rem)
    1.5rem,

  body-small: remToPx(0.875rem)
    1.25rem,

  caption: 14px 20px,

  section-header: 14px 24px,
);

@function font-family($name: base) {
  $fetched-value: map-get($font-family-data, $name);

  @if $fetched-value == null {
    @error "Font family `#{$name}` not found.";
  }

  @return $fetched-value;
}

@function font-styles($name) {
  $fetched-styles: map-get($text-variants-data, $name);

  @if $fetched-styles == null {
    @error "Font style variant `#{$name}` not found.";
  }

  @return $fetched-styles;
}

@function font-size($name) {
  @return nth(font-styles($name), 1);
}

@function line-height($name) {
  @return nth(font-styles($name), 2);
}
