:root {
  --card-perspective: 700px;
  --card-z-offset: 12px;
  --card-y-offset: 7px;
  --card-max-z-index: 100;
  --card-swap-duration: 0.3s;
  --swipe-x: 0px;
  --swipe-rotate: 0deg;
}

*,
*::after,
*::before {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-size: 1rem;
  font-family: "Inter", "Helvetica", system-ui, sans-serif;
  display: grid;
  place-content: center;
  min-block-size: 100vh;
  overflow-x: clip;
  background: linear-gradient(45deg, #293457, #7c8dc3);
}

.card-stack {
  width: 18rem;
  height: 22rem;
  position: relative;
  display: grid;
  grid-auto-flow: column;
  place-content: center;
  user-select: none;
  touch-action: none;
  transform-style: preserve-3d;
}

.card {
  cursor: grab;
  background-color: #eee;
  display: flex;
  place-self: center;
  position: absolute;
  width: calc(100% - 2rem);
  height: calc(100% - 2rem);
  border: 1px solid #fff;
  border-radius: 0.75rem;
  z-index: calc(var(--card-max-z-index) - var(--i));
  transform: perspective(var(--card-perspective))
    translateZ(calc(-1 * var(--card-z-offset) * var(--i)))
    translateY(calc(var(--card-y-offset) * var(--i)))
    translateX(var(--swipe-x, 0px)) rotateY(var(--swipe-rotate, 0deg));
  transition: transform var(--card-swap-duration) ease;
  will-change: transform;
  backface-visibility: hidden;
  box-shadow: 0 2px 2px #00000061;
  flex-direction: column;
  gap: 2rem;
  padding: 1rem;
}

.card:active {
  cursor: grabbing;
}

.card-content {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.card-content img {
  border-radius: 0.75rem;
  pointer-events: none;
  user-select: none;
}

.card-content .card-title {
  font-size: 1.6rem;
  letter-spacing: -1px;
  color: #293457;
}

.card-content p {
  font-size: 0.9rem;
  color: #2d2e31;
}