button {
  all: unset;
  position: relative;
  z-index: 1;
  transition: color 0.3s ease, border-color 0.3s ease;
  cursor: pointer;
  box-sizing: border-box;
  border: 1px solid;
  border-radius: 2rem;
  padding: var(--padding-m) calc(var(--padding-m) * 2);
  overflow: hidden;
  font-weight: bold;
  text-align: center;
}

button::before {
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
  transition: width 0.3s ease;
  width: 0;
  height: 100%;
  content: "";
}

button.primary {
  border-color: var(--color-light);
  background-color: var(--color-white);
  color: var(--color-primary);
}

button.primary:hover {
  border-color: var(--color-primary);
  color: var(--color-white);
}

button.primary:hover::before {
  background-color: var(--color-primary);
  width: 100%;
}

button.dark {
  border-color: var(--color-grey-dark);
  background-color: var(--color-white);
  color: var(--color-black);
}

button.dark:hover {
  border-color: var(--color-black);
  color: var(--color-white);
}

button.dark:hover::before {
  background-color: var(--color-black);
  width: 100%;
}
