a.link,
a.link:active,
a.link:visited {
  position: relative;
  color: var(--gray900);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
}

a.link:before {
  content: '';
  position: absolute;
  bottom: -2px;
  width: 0;
  height: 2px;
  background: var(--primary400);
  opacity: 0.5;
  transition: width 100ms;
}

a.link:hover:before {
  width: 100%;
  transition: width 100ms;
}

a.link.large {
  font-size: var(--font-size-large);
}

a.link.small {
  font-size: var(--font-size-small);
}

a.link.xsmall {
  font-size: var(--font-size-xsmall);
}

a.link .icon + * {
  margin-left: 10px;
}

a.link.iconRight .icon {
  order: 1;
  margin-left: 10px;
}

a.link.iconRight .icon + * {
  margin: 0;
}