/* stack */
.stack {
  /* ↓ The flex context */
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

.stack > * {
  /* Any extant vertical margins are removed */
  margin-block: 0;
}

.stack > * + * {
  /* Top margin is only applied to successive elements */
  margin-block-start: var(--s2, 1.5rem);
}

/* recursive stack */
.stack-deep * + * {
  margin-block-start: var(--s2, 1.5rem);;
}

.stack-deep .stack-stop *  {
  margin-block-start: 0;
}

.stack-large > * + * {
  /* Top margin is only applied to successive elements */
  margin-block-start: var(--s3, 1.5rem);
}

.stack-small > * + * {
  /* Top margin is only applied to successive elements */
  margin-block-start: var(--s-1, 1.2rem);
}

