:root {
  --tile-perspective: 800px;
  --flip-ease: cubic-bezier(0.25, 0.7, 0.2, 1);
}

* {
  box-sizing: border-box;
}

html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
}

body {
  background: #0b0b0b;
  color: #f5f1e9;
  font-family: "Georgia", "Times New Roman", serif;
  overscroll-behavior: none;
}

#app {
  position: fixed;
  inset: 0;
  touch-action: none;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

#footer {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 24px;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  font-size: 13px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(245, 241, 233, 0.82);
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.45);
  pointer-events: auto;
}

#footer a {
  color: inherit;
  text-decoration: none;
  transition: opacity 160ms ease;
}

#footer a:hover,
#footer a:focus-visible {
  opacity: 0.7;
}

#stage {
  position: relative;
}

#grid {
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-columns: repeat(24, 1fr);
  grid-template-rows: repeat(16, 1fr);
  gap: 0;
}

.tile {
  position: relative;
  perspective: var(--tile-perspective);
}

.card {
  position: absolute;
  inset: 0;
  transform-style: preserve-3d;
  transition-property: transform;
  transition-timing-function: var(--flip-ease);
  transform: rotateX(0deg);
  will-change: transform;
}

.card.flipped {
  transform: rotateX(var(--flip-angle, 180deg));
}

.face {
  position: absolute;
  inset: 0;
  backface-visibility: hidden;
  background-repeat: no-repeat;
}

.back {
  transform: rotateX(180deg);
}

#fade {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
  background-repeat: no-repeat;
  transition: opacity 350ms ease;
}

body.reduced-motion .card {
  transition: none;
}
