.table {
  position: relative;
  height: 600vh;
  background: var(--black);
}

.table__stage {
  position: sticky;
  top: 0;
  height: 100vh;
  overflow: hidden;
  perspective: 1800px;
  perspective-origin: 50% 40%;
}

.table__world {
  position: absolute;
  top: 0;
  left: 0;
  width: 4002px;
  height: 4198px;
  transform-origin: 0 0;
  will-change: transform;
}

.table__world::before {
  content: "";
  position: absolute;
  inset: -1600px;
  z-index: -1;
  background:
    linear-gradient(rgb(16 9 6 / 25%), rgb(16 9 6 / 0%)),
    url("../assets/bg.png") 0 0 / 265px repeat;
}

.table__item {
  position: absolute;
  top: var(--y);
  left: var(--x);
  width: var(--w);
  transform: rotate(var(--r, 0deg));
  filter: drop-shadow(0 24px 24px rgba(0, 0, 0, 0.55));
  pointer-events: none;
  user-select: none;
}

.table__scene {
  position: absolute;
  top: var(--y);
  left: var(--x);
  display: flex;
  align-items: center;
  transform: translate(calc(-50% + var(--shift, 100px)), -50%) rotate(var(--r, 0deg));
}

.table__note {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 472px;
  min-height: 340px;
  padding: 32px 40px;
  background: var(--paper);
  color: var(--ink);
  box-shadow: 0 30px 50px rgba(0, 0, 0, 0.7), 0 4px 8px rgba(0, 0, 0, 0.5);
}

.table__title {
  color: var(--black);
  font: 700 56px/0.85 var(--font-serif);
}

.table__text {
  color: #524E49;
  font: 500 18px/1.2 var(--font-sans);
}

.table__text p + p {
  margin-top: 12px;
}

.table__text mark {
  background: none;
  color: #9E7C52;
}

.table__counter {
  margin-top: 16px;
  color: #524E49;
  font: 500 18px/1.2 var(--font-sans);
}

.table__photo {
  width: 582px;
  margin-left: -28px;
  padding: 5px;
  background: var(--paper);
  box-shadow: 0 30px 50px rgba(0, 0, 0, 0.75), 0 4px 8px rgba(0, 0, 0, 0.55);
  transform: rotate(1deg);
}

.table__photo img {
  width: 100%;
  height: auto;
}

.table__vignette {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg, var(--black) 0%, rgba(0, 0, 0, 0) 22%, rgba(0, 0, 0, 0) 85%, var(--black) 100%),
    radial-gradient(57.12% 57.12% at 50% 50%, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.8) 100%);
}

.table__vignette::before,
.table__vignette::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  height: 440px;
  background: linear-gradient(180deg, #000 0%, rgba(0, 0, 0, 0) 100%);
}

.table__vignette::before {
  top: 0;
}

.table__vignette::after {
  bottom: 0;
  transform: scaleY(-1);
}

@media (max-width: 900px) {
  .table__item {
    top: var(--my, var(--y));
    left: var(--mx, var(--x));
    width: var(--mw, var(--w));
    transform: rotate(var(--mr, var(--r, 0deg))) scaleX(var(--mflip, 1));
  }

  .table__scene {
    --shift: 0px;
    transform: translate(-50%, -50%);
    flex-direction: column;
    align-items: center;
    gap: 57px;
  }

  .table__photo {
    order: -1;
    height: 429px;
    margin-left: 0;
    transform: rotate(0.794deg);
  }

  .table__photo img {
    height: 100%;
    object-fit: cover;
  }

  .table__scene:nth-of-type(2) .table__photo {
    transform: rotate(-1deg);
  }

  .table__scene:nth-of-type(3) .table__photo {
    transform: rotate(1deg);
  }

  .table__scene:nth-of-type(4) .table__photo {
    transform: rotate(-1.5deg);
  }

  .table__note {
    width: 595px;
    min-height: 0;
    gap: 21px;
    padding: 43px;
  }

  .table__title {
    font-size: 58.2px;
    line-height: 0.85;
  }

  .table__text {
    font-size: 25.46px;
    line-height: 1.2;
  }

  .table__text p + p {
    margin-top: 21px;
  }

  .table__counter {
    margin-top: 21px;
    font-size: 23px;
  }

  .table__world::before {
    background:
      linear-gradient(#301c0c75, #301c0cb3),
      url("../assets/bg.png") 0 0 / 144px repeat;
  }

  .table__vignette {
    background:
      linear-gradient(180deg, var(--black) 0%, rgba(0, 0, 0, 0) 12%, rgba(0, 0, 0, 0) 80%, var(--black) 100%),
      radial-gradient(90% 60% at 50% 45%, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.7) 100%);
  }

  .table__vignette::before,
  .table__vignette::after {
    display: none;
  }
}
