:root {
  color-scheme: dark;
  --ivory: #f4efe4;
  --muted: #c8c0b1;
  --gold: #cba96c;
  --ink: #050504;
  --panel: rgba(8, 8, 7, .72);
}

* {
  box-sizing: border-box;
}

html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
  background: var(--ink);
  color: var(--ivory);
  font-family: Georgia, "Times New Roman", serif;
}

body {
  -webkit-font-smoothing: antialiased;
  user-select: none;
  cursor: none;
}

body.has-pointer {
  cursor: default;
}

.stage {
  position: fixed;
  inset: 0;
  overflow: hidden;
  isolation: isolate;
  background:
    radial-gradient(circle at 50% 46%, rgba(255, 247, 225, .055), transparent 40%),
    #050504;
}

.slide-layer {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 1800ms cubic-bezier(.4, 0, .2, 1);
  pointer-events: none;
}

.slide-layer.is-visible {
  opacity: 1;
  z-index: 2;
}

.art-slide,
.story-slide {
  position: absolute;
  inset: 0;
}

.art-slide {
  display: grid;
  place-items: center;
  padding: 7.4rem 2.8rem 4.2rem;
  background: #050504;
}

.art-slide::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at center, rgba(255,255,255,.045), transparent 60%);
  pointer-events: none;
}

.art-image {
  display: block;
  max-width: 96vw;
  max-height: calc(100vh - 11.6rem);
  width: auto;
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 1.5rem 2.8rem rgba(0, 0, 0, .72));
  transform: scale(.995);
  transition: transform 12s ease-out;
}

.is-visible .art-image {
  transform: scale(1.015);
}

.meta {
  position: absolute;
  top: max(2rem, env(safe-area-inset-top));
  left: 3.2rem;
  right: 3.2rem;
  z-index: 3;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 3rem;
  text-shadow: 0 .15rem 1rem #000, 0 .05rem .15rem #000;
}

.meta.is-swapped {
  flex-direction: row-reverse;
}

.meta.is-lowered {
  top: max(2.5rem, env(safe-area-inset-top));
}

.meta-block {
  min-width: 0;
  max-width: 46%;
}

.meta-block:last-child {
  text-align: right;
}

.meta.is-swapped .meta-block:last-child {
  text-align: left;
}

.meta.is-swapped .meta-block:first-child {
  text-align: right;
}

.meta-label {
  display: block;
  margin-bottom: .35rem;
  color: var(--gold);
  font: 600 .72rem/1.2 Arial, Helvetica, sans-serif;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.meta-value {
  display: block;
  overflow: hidden;
  color: #fffdf7;
  font-size: clamp(1.35rem, 2.25vw, 2.65rem);
  line-height: 1.08;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.counter {
  position: absolute;
  right: 3.2rem;
  bottom: 1.65rem;
  z-index: 3;
  color: rgba(244, 239, 228, .7);
  font: 600 .72rem/1 Arial, Helvetica, sans-serif;
  letter-spacing: .16em;
}

.story-slide {
  display: grid;
  place-items: center;
  padding: 7vw;
  overflow: hidden;
  background:
    linear-gradient(120deg, rgba(163, 124, 63, .1), transparent 38%),
    radial-gradient(circle at 70% 25%, rgba(147, 103, 52, .12), transparent 32%),
    #090907;
}

.story-slide::before,
.story-slide::after {
  content: "";
  position: absolute;
  border: 1px solid rgba(203, 169, 108, .18);
}

.story-slide::before {
  inset: 4.2vw;
}

.story-slide::after {
  width: 40vw;
  height: 40vw;
  right: -18vw;
  bottom: -26vw;
  border-radius: 50%;
}

.story-content {
  position: relative;
  z-index: 2;
  width: min(72rem, 86vw);
  text-align: center;
}

.story-kicker {
  margin: 0 0 1.4rem;
  color: var(--gold);
  font: 600 clamp(.78rem, 1.05vw, 1.15rem)/1.4 Arial, Helvetica, sans-serif;
  letter-spacing: .22em;
  text-transform: uppercase;
}

.story-title {
  margin: 0;
  color: #fffdf7;
  font-size: clamp(3rem, 7.3vw, 8.5rem);
  font-weight: 400;
  line-height: .95;
  letter-spacing: -.035em;
}

.story-rule {
  width: min(13rem, 30vw);
  height: 1px;
  margin: 2.1rem auto 1.8rem;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
}

.story-text {
  max-width: 56rem;
  margin: 0 auto;
  color: var(--muted);
  font-size: clamp(1.1rem, 1.8vw, 2rem);
  line-height: 1.45;
}

.story-credit {
  margin-top: 2.1rem;
  color: rgba(244, 239, 228, .66);
  font: 600 clamp(.68rem, .85vw, .9rem)/1.4 Arial, Helvetica, sans-serif;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.loading {
  position: absolute;
  inset: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .9rem;
  background: #050504;
  color: var(--muted);
  font: 600 .86rem/1.2 Arial, Helvetica, sans-serif;
  letter-spacing: .12em;
  text-transform: uppercase;
  transition: opacity .7s ease;
}

.loading.is-hidden {
  opacity: 0;
  pointer-events: none;
}

.loading-mark {
  width: 1.1rem;
  height: 1.1rem;
  border: 2px solid rgba(203, 169, 108, .25);
  border-top-color: var(--gold);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

.start-hint,
.controls,
.paused,
.error-message {
  position: absolute;
  z-index: 30;
  color: #fff;
  background: var(--panel);
  border: 1px solid rgba(255, 255, 255, .14);
  box-shadow: 0 .8rem 2.4rem rgba(0,0,0,.3);
  font-family: Arial, Helvetica, sans-serif;
  backdrop-filter: blur(10px);
}

.start-hint {
  left: 50%;
  bottom: 2.2rem;
  display: flex;
  align-items: baseline;
  gap: .55rem;
  padding: .7rem 1rem;
  border-radius: 99px;
  transform: translateX(-50%);
  transition: opacity .5s ease;
}

.start-hint strong {
  color: var(--gold);
}

.start-hint.is-hidden {
  opacity: 0;
  pointer-events: none;
}

.controls {
  left: 50%;
  bottom: 2.2rem;
  display: flex;
  gap: 1.5rem;
  padding: .75rem 1.15rem;
  border-radius: .55rem;
  opacity: 0;
  transform: translate(-50%, 1rem);
  transition: opacity .25s ease, transform .25s ease;
  font-size: .86rem;
}

.controls.is-visible {
  opacity: 1;
  transform: translate(-50%, 0);
}

.paused {
  top: 50%;
  left: 50%;
  padding: .75rem 1.1rem;
  border-radius: .45rem;
  transform: translate(-50%, -50%);
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.error-message {
  left: 50%;
  bottom: 2rem;
  max-width: 80vw;
  padding: .8rem 1rem;
  border-radius: .45rem;
  transform: translateX(-50%);
}

.no-script {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  z-index: 100;
  background: #050504;
  color: white;
  font: 1.2rem Arial, sans-serif;
}

@media (max-width: 800px) {
  .art-slide {
    padding: 6rem 1.2rem 3rem;
  }

  .art-image {
    max-width: 98vw;
    max-height: calc(100vh - 9rem);
  }

  .meta {
    top: 1.3rem;
    left: 1.3rem;
    right: 1.3rem;
    gap: 1rem;
  }

  .counter {
    right: 1.3rem;
    bottom: 1rem;
  }

  .controls span:first-child,
  .controls span:last-child {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .slide-layer {
    transition-duration: .25s;
  }

  .art-image {
    transition: none;
  }
}
