* {
  position: relative;
  box-sizing: border-box;
}

body {
  padding: 40px 0;
  display: flex;
  min-height: 100vh;
  background: #f0f2f5;
  align-items: center;
  justify-content: center;
}

.card {
  background: #fff;
  padding: 20px;
  width: 400px;
  max-width: calc( 100% - 40px );
  line-height: 1.625;
}

footer {
  display: flex;
  justify-content: flex-end;
}

button {
  background: #0095ee;
  color: #fff;
  border: none;
  padding: 1em 2em;
  transition: 0.1s all ease-out;
  box-shadow: 0 0 0 #000;
}
button:hover {
  cursor: pointer;
  box-shadow: 0 10px 20px -15px #000;
  background: #11a6ff;
}
button[disabled] {
  background: #d0d2d4;
  pointer-events: none;
  color: #323427;
}

mark {
  transition: 0.1s all ease-out;
  position: relative;
}
mark:after {
  pointer-events: none;
  content: "I want this on top, always. But, with the relative positions, it goes under, despite being absolutely positioned.";
  position: absolute;
  left: 0;
  top: 100%;
  width: 200px;
  background: #0095ee;
  color: #fff;
  padding: 20px;
  border-radius: 10px;
  opacity: 0;
  transform: scale(0.75) translate(-10px, -10px);
  transform-origin: top left;
  transition: transform 0.185s cubic-bezier(0.49, -0.17, 0.71, 1.3) 0s, opacity 0.185s cubic-bezier(0.49, -0.17, 0.71, 1.3) 0s;
}
mark:hover {
  box-shadow: 0 0 0 10px #ffff00;
}
mark:hover:after {
  pointer-events: all;
  opacity: 1;
  transform: scale(1) translate(0, 0);
}

h2 {
  margin-top: 0;
}