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

:root {
  --dark-color: #000;
}

body {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  min-height: 100vh;
  background-color: var(--dark-color);
  overflow: hidden;
  perspective: 1000px;
}

.night {
  position: fixed;
  left: 50%;
  top: 0;
  transform: translateX(-50%);
  width: 100%;
  height: 100%;
  filter: blur(0.1vmin);
  background-image: radial-gradient(ellipse at top, transparent 0%, var(--dark-color)), radial-gradient(ellipse at bottom, var(--dark-color), rgba(145, 233, 255, 0.2)), repeating-linear-gradient(220deg, black 0px, black 19px, transparent 19px, transparent 22px), repeating-linear-gradient(189deg, black 0px, black 19px, transparent 19px, transparent 22px), repeating-linear-gradient(148deg, black 0px, black 19px, transparent 19px, transparent 22px), linear-gradient(90deg, #00fffa, #f0f0f0);
}

.flowers {
  position: relative;
  transform: scale(0.7);
}

.flower {
  position: absolute;
  bottom: 10vmin;
  transform-origin: bottom center;
  z-index: 10;
  --fl-speed: 0.8s;
}
.flower--1 {
  animation: moving-flower-1 4s linear infinite;
}
.flower--1 .flower__line {
  height: 70vmin;
  animation-delay: 0.3s;
}
.flower--1 .flower__line__leaf--1 {
  animation: blooming-leaf-right var(--fl-speed) 1.6s backwards;
}
.flower--1 .flower__line__leaf--2 {
  animation: blooming-leaf-right var(--fl-speed) 1.4s backwards;
}
.flower--1 .flower__line__leaf--3 {
  animation: blooming-leaf-left var(--fl-speed) 1.2s backwards;
}
.flower--1 .flower__line__leaf--4 {
  animation: blooming-leaf-left var(--fl-speed) 1s backwards;
}
.flower--1 .flower__line__leaf--5 {
  animation: blooming-leaf-right var(--fl-speed) 1.8s backwards;
}
.flower--1 .flower__line__leaf--6 {
  animation: blooming-leaf-left var(--fl-speed) 2s backwards;
}
.flower--2 {
  left: 50%;
  transform: rotate(30deg);
  animation: moving-flower-2 4s linear infinite;
}
.flower--2 .flower__line {
  height: 60vmin;
  animation-delay: 0.8s;
}
.flower--2 .flower__line__leaf--1 {
  animation: blooming-leaf-right var(--fl-speed) 1.9s backwards;
}
.flower--2 .flower__line__leaf--2 {
  animation: blooming-leaf-right var(--fl-speed) 1.7s backwards;
}
.flower--2 .flower__line__leaf--3 {
  animation: blooming-leaf-left var(--fl-speed) 1.5s backwards;
}
.flower--2 .flower__line__leaf--4 {
  animation: blooming-leaf-left var(--fl-speed) 1.3s backwards;
}
.flower--3 {
  left: 50%;
  transform: rotate(-15deg);
  animation: moving-flower-3 4s linear infinite;
}
.flower--3 .flower__line {
  animation-delay: 0.9s;
}
.flower--3 .flower__line__leaf--1 {
  animation: blooming-leaf-right var(--fl-speed) 2.5s backwards;
}
.flower--3 .flower__line__leaf--2 {
  animation: blooming-leaf-right var(--fl-speed) 2.3s backwards;
}
.flower--3 .flower__line__leaf--3 {
  animation: blooming-leaf-left var(--fl-speed) 2.1s backwards;
}
.flower--3 .flower__line__leaf--4 {
  animation: blooming-leaf-left var(--fl-speed) 1.9s backwards;
}
.flower__leafs {
  position: relative;
  animation: blooming-flower 2s backwards;
}
.flower__leafs--1 {
  animation-delay: 1.1s;
}
.flower__leafs--2 {
  animation-delay: 1.4s;
}
.flower__leafs--3 {
  animation-delay: 1.7s;
}
.flower__leafs::after {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  transform: translate(-50%, -100%);
  width: 8vmin;
  height: 8vmin;
  background-color: #6bf0ff;
  filter: blur(10vmin);
}
.flower__leaf {
  position: absolute;
  bottom: 0;
  left: 50%;
  width: 8vmin;
  height: 11vmin;
  border-radius: 51% 49% 47% 53%/44% 45% 55% 69%;
  background-color: #65e6cc;
  background-image: linear-gradient(to top, #40bbab, #a7ffee);
  transform-origin: bottom center;
  opacity: 0.9;
  box-shadow: inset 0 0 2vmin rgba(255, 255, 255, 0.5);
}
.flower__leaf--1 {
  transform: translate(-10%, 1%) rotateY(40deg) rotateX(-50deg);
}
.flower__leaf--2 {
  transform: translate(-50%, -4%) rotateX(40deg);
}
.flower__leaf--3 {
  transform: translate(-90%, 0%) rotateY(45deg) rotateX(50deg);
}
.flower__leaf--4 {
  width: 8vmin;
  height: 8vmin;
  transform-origin: bottom left;
  border-radius: 4vmin 10vmin 4vmin 4vmin;
  transform: translate(0%, 18%) rotateX(70deg) rotate(-43deg);
  background-image: linear-gradient(to top, #39c6d6, #a7ffee);
  z-index: 1;
  opacity: 0.8;
}
.flower__white-circle {
  position: absolute;
  left: -3.5vmin;
  top: -3vmin;
  width: 9vmin;
  height: 4vmin;
  border-radius: 50%;
  background-color: #fff;
}
.flower__white-circle::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 45%;
  transform: translate(-50%, -50%);
  width: 60%;
  height: 60%;
  border-radius: inherit;
  background-image: repeating-linear-gradient(135deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(67.5deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(135deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(112.5deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(112.5deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(22.5deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(22.5deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(135deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(157.5deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(67.5deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), repeating-linear-gradient(67.5deg, rgba(0, 0, 0, 0.03) 0px, rgba(0, 0, 0, 0.03) 1px, transparent 1px, transparent 12px), linear-gradient(90deg, #ffeb12, #ffce00);
}
.flower__line {
  height: 55vmin;
  width: 1.5vmin;
  background-image: linear-gradient(to left, rgba(0, 0, 0, 0.2), transparent, rgba(255, 255, 255, 0.2)), linear-gradient(to top, transparent 10%, #14757a, #39c6d6);
  box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.5);
  animation: grow-flower-tree 4s backwards;
}
.flower__line__leaf {
  --w: 7vmin;
  --h: calc(var(--w) + 2vmin);
  position: absolute;
  top: 20%;
  left: 90%;
  width: var(--w);
  height: var(--h);
  border-top-right-radius: var(--h);
  border-bottom-left-radius: var(--h);
  background-image: linear-gradient(to top, rgba(20, 117, 122, 0.4), #39c6d6);
}
.flower__line__leaf--1 {
  transform: rotate(70deg) rotateY(30deg);
}
.flower__line__leaf--2 {
  top: 45%;
  transform: rotate(70deg) rotateY(30deg);
}
.flower__line__leaf--3, .flower__line__leaf--4, .flower__line__leaf--6 {
  border-top-right-radius: 0;
  border-bottom-left-radius: 0;
  border-top-left-radius: var(--h);
  border-bottom-right-radius: var(--h);
  left: -460%;
  top: 12%;
  transform: rotate(-70deg) rotateY(30deg);
}
.flower__line__leaf--4 {
  top: 40%;
}
.flower__line__leaf--5 {
  top: 0;
  transform-origin: left;
  transform: rotate(70deg) rotateY(30deg) scale(0.6);
}
.flower__line__leaf--6 {
  top: -2%;
  left: -450%;
  transform-origin: right;
  transform: rotate(-70deg) rotateY(30deg) scale(0.6);
}
.flower__light {
  position: absolute;
  bottom: 0vmin;
  width: 1vmin;
  height: 1vmin;
  background-color: #fffb00;
  border-radius: 50%;
  filter: blur(0.2vmin);
  animation: light-ans 4s linear infinite backwards;
}
.flower__light:nth-child(odd) {
  background-color: #23f0ff;
}
.flower__light--1 {
  left: -2vmin;
  animation-delay: 1s;
}
.flower__light--2 {
  left: 3vmin;
  animation-delay: 0.5s;
}
.flower__light--3 {
  left: -6vmin;
  animation-delay: 0.3s;
}
.flower__light--4 {
  left: 6vmin;
  animation-delay: 0.9s;
}
.flower__light--5 {
  left: -1vmin;
  animation-delay: 1.5s;
}
.flower__light--6 {
  left: -4vmin;
  animation-delay: 3s;
}
.flower__light--7 {
  left: 3vmin;
  animation-delay: 2s;
}
.flower__light--8 {
  left: -6vmin;
  animation-delay: 3.5s;
}
.flower__grass {
  --c: #159faa;
  --line-w: 1.5vmin;
  position: absolute;
  bottom: 12vmin;
  left: -7vmin;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  z-index: 20;
  transform-origin: bottom center;
  transform: rotate(-48deg) rotateY(40deg);
}
.flower__grass--1 {
  animation: moving-grass 2s linear infinite;
}
.flower__grass--2 {
  left: 2vmin;
  bottom: 10vmin;
  transform: scale(0.5) rotate(75deg) rotateX(10deg) rotateY(-200deg);
  opacity: 0.8;
  z-index: 0;
  animation: moving-grass--2 1.5s linear infinite;
}
.flower__grass--top {
  width: 7vmin;
  height: 10vmin;
  border-top-right-radius: 100%;
  border-right: var(--line-w) solid var(--c);
  transform-origin: bottom center;
  transform: rotate(-2deg);
}
.flower__grass--bottom {
  margin-top: -2px;
  width: var(--line-w);
  height: 25vmin;
  background-image: linear-gradient(to top, transparent, var(--c));
}
.flower__grass__leaf {
  --size: 10vmin;
  position: absolute;
  width: calc(var(--size) * 2.1);
  height: var(--size);
  border-top-left-radius: var(--size);
  border-top-right-radius: var(--size);
  background-image: linear-gradient(to top, transparent, transparent 30%, var(--c));
  z-index: 100;
}
.flower__grass__leaf--1 {
  top: -6%;
  left: 30%;
  --size: 6vmin;
  transform: rotate(-20deg);
  animation: growing-grass-ans--1 2s 2.6s backwards;
}
@keyframes growing-grass-ans--1 {
  0% {
    transform-origin: bottom left;
    transform: rotate(-20deg) scale(0);
  }
}
.flower__grass__leaf--2 {
  top: -5%;
  left: -110%;
  --size: 6vmin;
  transform: rotate(10deg);
  animation: growing-grass-ans--2 2s 2.4s linear backwards;
}
@keyframes growing-grass-ans--2 {
  0% {
    transform-origin: bottom right;
    transform: rotate(10deg) scale(0);
  }
}
.flower__grass__leaf--3 {
  top: 5%;
  left: 60%;
  --size: 8vmin;
  transform: rotate(-18deg) rotateX(-20deg);
  animation: growing-grass-ans--3 2s 2.2s linear backwards;
}
@keyframes growing-grass-ans--3 {
  0% {
    transform-origin: bottom left;
    transform: rotate(-18deg) rotateX(-20deg) scale(0);
  }
}
.flower__grass__leaf--4 {
  top: 6%;
  left: -135%;
  --size: 8vmin;
  transform: rotate(2deg);
  animation: growing-grass-ans--4 2s 2s linear backwards;
}
@keyframes growing-grass-ans--4 {
  0% {
    transform-origin: bottom right;
    transform: rotate(2deg) scale(0);
  }
}
.flower__grass__leaf--5 {
  top: 20%;
  left: 60%;
  --size: 10vmin;
  transform: rotate(-24deg) rotateX(-20deg);
  animation: growing-grass-ans--5 2s 1.8s linear backwards;
}
@keyframes growing-grass-ans--5 {
  0% {
    transform-origin: bottom left;
    transform: rotate(-24deg) rotateX(-20deg) scale(0);
  }
}
.flower__grass__leaf--6 {
  top: 22%;
  left: -180%;
  --size: 10vmin;
  transform: rotate(10deg);
  animation: growing-grass-ans--6 2s 1.6s linear backwards;
}
@keyframes growing-grass-ans--6 {
  0% {
    transform-origin: bottom right;
    transform: rotate(10deg) scale(0);
  }
}
.flower__grass__leaf--7 {
  top: 39%;
  left: 70%;
  --size: 10vmin;
  transform: rotate(-10deg);
  animation: growing-grass-ans--7 2s 1.4s linear backwards;
}
@keyframes growing-grass-ans--7 {
  0% {
    transform-origin: bottom left;
    transform: rotate(-10deg) scale(0);
  }
}
.flower__grass__leaf--8 {
  top: 40%;
  left: -215%;
  --size: 11vmin;
  transform: rotate(10deg);
  animation: growing-grass-ans--8 2s 1.2s linear backwards;
}
@keyframes growing-grass-ans--8 {
  0% {
    transform-origin: bottom right;
    transform: rotate(10deg) scale(0);
  }
}
.flower__grass__overlay {
  position: absolute;
  top: -10%;
  right: 0%;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.6);
  filter: blur(1.5vmin);
  z-index: 100;
}
.flower__g-long {
  --w: 2vmin;
  --h: 6vmin;
  --c: #159faa;
  position: absolute;
  bottom: 10vmin;
  left: -3vmin;
  transform-origin: bottom center;
  transform: rotate(-30deg) rotateY(-20deg);
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  animation: flower-g-long-ans 3s linear infinite;
}
@keyframes flower-g-long-ans {
  0%, 100% {
    transform: rotate(-30deg) rotateY(-20deg);
  }
  50% {
    transform: rotate(-32deg) rotateY(-20deg);
  }
}
.flower__g-long__top {
  top: calc(var(--h) * -1);
  width: calc(var(--w) + 1vmin);
  height: var(--h);
  border-top-right-radius: 100%;
  border-right: 0.7vmin solid var(--c);
  transform: translate(-0.7vmin, 1vmin);
}
.flower__g-long__bottom {
  width: var(--w);
  height: 50vmin;
  transform-origin: bottom center;
  background-image: linear-gradient(to top, transparent 30%, var(--c));
  box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.5);
  clip-path: polygon(35% 0, 65% 1%, 100% 100%, 0% 100%);
}
.flower__g-right {
  position: absolute;
  bottom: 6vmin;
  left: -2vmin;
  transform-origin: bottom left;
  transform: rotate(20deg);
}
.flower__g-right .leaf {
  width: 30vmin;
  height: 50vmin;
  border-top-left-radius: 100%;
  border-left: 2vmin solid #079097;
  background-image: linear-gradient(to bottom, transparent, var(--dark-color) 60%);
  mask-image: linear-gradient(to top, transparent 30%, #079097 60%);
}
.flower__g-right--1 {
  animation: flower-g-right-ans 2.5s linear infinite;
}
.flower__g-right--2 {
  left: 5vmin;
  transform: rotateY(-180deg);
  animation: flower-g-right-ans--2 3s linear infinite;
}
.flower__g-right--2 .leaf {
  height: 75vmin;
  filter: blur(0.3vmin);
  opacity: 0.8;
}
@keyframes flower-g-right-ans {
  0%, 100% {
    transform: rotate(20deg);
  }
  50% {
    transform: rotate(24deg) rotateX(-20deg);
  }
}
@keyframes flower-g-right-ans--2 {
  0%, 100% {
    transform: rotateY(-180deg) rotate(0deg) rotateX(-20deg);
  }
  50% {
    transform: rotateY(-180deg) rotate(6deg) rotateX(-20deg);
  }
}
.flower__g-front {
  position: absolute;
  bottom: 6vmin;
  left: 2.5vmin;
  z-index: 100;
  transform-origin: bottom center;
  transform: rotate(-28deg) rotateY(30deg) scale(1.04);
  animation: flower__g-front-ans 2s linear infinite;
}
@keyframes flower__g-front-ans {
  0%, 100% {
    transform: rotate(-28deg) rotateY(30deg) scale(1.04);
  }
  50% {
    transform: rotate(-35deg) rotateY(40deg) scale(1.04);
  }
}
.flower__g-front__line {
  width: 0.3vmin;
  height: 20vmin;
  background-image: linear-gradient(to top, transparent, #079097, transparent 100%);
  position: relative;
}
.flower__g-front__leaf-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  transform-origin: bottom left;
  transform: rotate(10deg);
}
.flower__g-front__leaf-wrapper:nth-child(even) {
  left: 0vmin;
  transform: rotateY(-180deg) rotate(5deg);
  animation: flower__g-front__leaf-left-ans 1s ease-in backwards;
}
.flower__g-front__leaf-wrapper:nth-child(odd) {
  animation: flower__g-front__leaf-ans 1s ease-in backwards;
}
.flower__g-front__leaf-wrapper--1 {
  top: -8vmin;
  transform: scale(0.7);
  animation: flower__g-front__leaf-ans 1s 5.5s ease-in backwards !important;
}
.flower__g-front__leaf-wrapper--2 {
  top: -8vmin;
  transform: rotateY(-180deg) scale(0.7) !important;
  animation: flower__g-front__leaf-left-ans-2 1s 4.6s ease-in backwards !important;
}
.flower__g-front__leaf-wrapper--3 {
  top: -3vmin;
  animation: flower__g-front__leaf-ans 1s 4.6s ease-in backwards;
}
.flower__g-front__leaf-wrapper--4 {
  top: -3vmin;
  transform: rotateY(-180deg) scale(0.9) !important;
  animation: flower__g-front__leaf-left-ans-2 1s 4.6s ease-in backwards !important;
}
@keyframes flower__g-front__leaf-left-ans-2 {
  0% {
    transform: rotateY(-180deg) scale(0);
  }
}
.flower__g-front__leaf-wrapper--5, .flower__g-front__leaf-wrapper--6 {
  top: 2vmin;
}
.flower__g-front__leaf-wrapper--7, .flower__g-front__leaf-wrapper--8 {
  top: 6.5vmin;
}
.flower__g-front__leaf-wrapper--2 {
  animation-delay: 5.2s !important;
}
.flower__g-front__leaf-wrapper--3 {
  animation-delay: 4.9s !important;
}
.flower__g-front__leaf-wrapper--5 {
  animation-delay: 4.3s !important;
}
.flower__g-front__leaf-wrapper--6 {
  animation-delay: 4.1s !important;
}
.flower__g-front__leaf-wrapper--7 {
  animation-delay: 3.8s !important;
}
.flower__g-front__leaf-wrapper--8 {
  animation-delay: 3.5s !important;
}
@keyframes flower__g-front__leaf-ans {
  0% {
    transform: rotate(10deg) scale(0);
  }
}
@keyframes flower__g-front__leaf-left-ans {
  0% {
    transform: rotateY(-180deg) rotate(5deg) scale(0);
  }
}
.flower__g-front__leaf {
  width: 10vmin;
  height: 10vmin;
  border-radius: 100% 0% 0% 100%/100% 100% 0% 0%;
  box-shadow: inset 0 2px 1vmin rgba(44, 238, 252, 0.2);
  background-image: linear-gradient(to bottom left, transparent, var(--dark-color)), linear-gradient(to bottom right, #159faa 50%, transparent 50%, transparent);
  -webkit-mask-image: linear-gradient(to bottom right, #159faa 50%, transparent 50%, transparent);
  mask-image: linear-gradient(to bottom right, #159faa 50%, transparent 50%, transparent);
}
.flower__g-fr {
  position: absolute;
  bottom: -4vmin;
  left: vmin;
  transform-origin: bottom left;
  z-index: 10;
  animation: flower__g-fr-ans 2s linear infinite;
}
@keyframes flower__g-fr-ans {
  0%, 100% {
    transform: rotate(2deg);
  }
  50% {
    transform: rotate(4deg);
  }
}
.flower__g-fr .leaf {
  width: 30vmin;
  height: 50vmin;
  border-top-left-radius: 100%;
  border-left: 2vmin solid #079097;
  mask-image: linear-gradient(to top, transparent 25%, #079097 50%);
  position: relative;
  z-index: 1;
}
.flower__g-fr__leaf {
  position: absolute;
  top: 0;
  left: 0;
  width: 10vmin;
  height: 10vmin;
  border-radius: 100% 0% 0% 100%/100% 100% 0% 0%;
  box-shadow: inset 0 2px 1vmin rgba(44, 238, 252, 0.2);
  background-image: linear-gradient(to bottom left, transparent, var(--dark-color) 98%), linear-gradient(to bottom right, #23f0ff 45%, transparent 50%, transparent);
  mask-image: linear-gradient(135deg, #159faa 40%, transparent 50%, transparent);
}
.flower__g-fr__leaf--1 {
  left: 20vmin;
  transform: rotate(45deg);
  animation: flower__g-fr-leaft-ans-1 0.5s 5.2s linear backwards;
}
@keyframes flower__g-fr-leaft-ans-1 {
  0% {
    transform-origin: left;
    transform: rotate(45deg) scale(0);
  }
}
.flower__g-fr__leaf--2 {
  left: 12vmin;
  top: -7vmin;
  transform: rotate(25deg) rotateY(-180deg);
  animation: flower__g-fr-leaft-ans-6 0.5s 5s linear backwards;
}
.flower__g-fr__leaf--3 {
  left: 15vmin;
  top: 6vmin;
  transform: rotate(55deg);
  animation: flower__g-fr-leaft-ans-5 0.5s 4.8s linear backwards;
}
.flower__g-fr__leaf--4 {
  left: 6vmin;
  top: -2vmin;
  transform: rotate(25deg) rotateY(-180deg);
  animation: flower__g-fr-leaft-ans-6 0.5s 4.6s linear backwards;
}
.flower__g-fr__leaf--5 {
  left: 10vmin;
  top: 14vmin;
  transform: rotate(55deg);
  animation: flower__g-fr-leaft-ans-5 0.5s 4.4s linear backwards;
}
@keyframes flower__g-fr-leaft-ans-5 {
  0% {
    transform-origin: left;
    transform: rotate(55deg) scale(0);
  }
}
.flower__g-fr__leaf--6 {
  left: 0vmin;
  top: 6vmin;
  transform: rotate(25deg) rotateY(-180deg);
  animation: flower__g-fr-leaft-ans-6 0.5s 4.2s linear backwards;
}
@keyframes flower__g-fr-leaft-ans-6 {
  0% {
    transform-origin: right;
    transform: rotate(25deg) rotateY(-180deg) scale(0);
  }
}
.flower__g-fr__leaf--7 {
  left: 5vmin;
  top: 22vmin;
  transform: rotate(45deg);
  animation: flower__g-fr-leaft-ans-7 0.5s 4s linear backwards;
}
@keyframes flower__g-fr-leaft-ans-7 {
  0% {
    transform-origin: left;
    transform: rotate(45deg) scale(0);
  }
}
.flower__g-fr__leaf--8 {
  left: -4vmin;
  top: 15vmin;
  transform: rotate(15deg) rotateY(-180deg);
  animation: flower__g-fr-leaft-ans-8 0.5s 3.8s linear backwards;
}
@keyframes flower__g-fr-leaft-ans-8 {
  0% {
    transform-origin: right;
    transform: rotate(15deg) rotateY(-180deg) scale(0);
  }
}

.long-g {
  position: absolute;
  bottom: 25vmin;
  left: -42vmin;
  transform-origin: bottom left;
}
.long-g--1 {
  bottom: 0vmin;
  transform: scale(0.8) rotate(-5deg);
}
.long-g--1 .leaf {
mask-image: linear-gradient(to top, transparent 40%, #079097 80%) !important;
}
.long-g--1 .leaf--1 {
  --w: 5vmin;
  --h: 60vmin;
  left: -2vmin;
  transform: rotate(3deg) rotateY(-180deg);
}
.long-g--2, .long-g--3 {
  bottom: -3vmin;
  left: -35vmin;
  transform-origin: center;
  transform: scale(0.6) rotateX(60deg);
}
.long-g--2 .leaf, .long-g--3 .leaf {
  mask-image: linear-gradient(to top, transparent 50%, #079097 80%) !important;
}
.long-g--2 .leaf--1, .long-g--3 .leaf--1 {
  left: -1vmin;
  transform: rotateY(-180deg);
}
.long-g--3 {
  left: -17vmin;
  bottom: 0vmin;
}
.long-g--3 .leaf {
  mask-image: linear-gradient(to top, transparent 40%, #079097 80%) !important;
}
.long-g--4 {
  left: 25vmin;
  bottom: -3vmin;
  transform-origin: center;
  transform: scale(0.6) rotateX(60deg);
}
.long-g--4 .leaf {
  mask-image: linear-gradient(to top, transparent 50%, #079097 80%) !important;
}
.long-g--5 {
  left: 42vmin;
  bottom: 0vmin;
  transform: scale(0.8) rotate(2deg);
}
.long-g--6 {
  left: 0vmin;
  bottom: -20vmin;
  z-index: 100;
  filter: blur(0.3vmin);
  transform: scale(0.8) rotate(2deg);
}
.long-g--7 {
  left: 35vmin;
  bottom: 20vmin;
  z-index: -1;
  filter: blur(0.3vmin);
  transform: scale(0.6) rotate(2deg);
  opacity: 0.7;
}
.long-g .leaf {
  --w: 15vmin;
  --h: 40vmin;
  --c: #1aaa15;
  position: absolute;
  bottom: 0;
  width: var(--w);
  height: var(--h);
  border-top-left-radius: 100%;
  border-left: 2vmin solid var(--c);
  mask-image: linear-gradient(to top, transparent 20%, var(--dark-color));
  transform-origin: bottom center;
}
.long-g .leaf--0 {
  left: 2vmin;
  animation: leaf-ans-1 4s linear infinite;
}
.long-g .leaf--1 {
  --w: 5vmin;
  --h: 60vmin;
  animation: leaf-ans-1 4s linear infinite;
}
.long-g .leaf--2 {
  --w: 10vmin;
  --h: 40vmin;
  left: -0.5vmin;
  bottom: 5vmin;
  transform-origin: bottom left;
  transform: rotateY(-180deg);
  animation: leaf-ans-2 3s linear infinite;
}
.long-g .leaf--3 {
  --w: 5vmin;
  --h: 30vmin;
  left: -1vmin;
  bottom: 3.2vmin;
  transform-origin: bottom left;
  transform: rotate(-10deg) rotateY(-180deg);
  animation: leaf-ans-3 3s linear infinite;
}

@keyframes leaf-ans-1 {
  0%, 100% {
    transform: rotate(-5deg) scale(1);
  }
  50% {
    transform: rotate(5deg) scale(1.1);
  }
}
@keyframes leaf-ans-2 {
  0%, 100% {
    transform: rotateY(-180deg) rotate(5deg);
  }
  50% {
    transform: rotateY(-180deg) rotate(0deg) scale(1.1);
  }
}
@keyframes leaf-ans-3 {
  0%, 100% {
    transform: rotate(-10deg) rotateY(-180deg);
  }
  50% {
    transform: rotate(-20deg) rotateY(-180deg);
  }
}
.grow-ans {
  animation: grow-ans 2s var(--d) backwards;
}

@keyframes grow-ans {
  0% {
    transform: scale(0);
    opacity: 0;
  }
}
@keyframes light-ans {
  0% {
    opacity: 0;
    transform: translateY(0vmin);
  }
  25% {
    opacity: 1;
    transform: translateY(-5vmin) translateX(-2vmin);
  }
  50% {
    opacity: 1;
    transform: translateY(-15vmin) translateX(2vmin);
    filter: blur(0.2vmin);
  }
  75% {
    transform: translateY(-20vmin) translateX(-2vmin);
    filter: blur(0.2vmin);
  }
  100% {
    transform: translateY(-30vmin);
    opacity: 0;
    filter: blur(1vmin);
  }
}
@keyframes moving-flower-1 {
  0%, 100% {
    transform: rotate(2deg);
  }
  50% {
    transform: rotate(-2deg);
  }
}
@keyframes moving-flower-2 {
  0%, 100% {
    transform: rotate(18deg);
  }
  50% {
    transform: rotate(14deg);
  }
}
@keyframes moving-flower-3 {
  0%, 100% {
    transform: rotate(-18deg);
  }
  50% {
    transform: rotate(-20deg) rotateY(-10deg);
  }
}
@keyframes blooming-leaf-right {
  0% {
    transform-origin: left;
    transform: rotate(70deg) rotateY(30deg) scale(0);
  }
}
@keyframes blooming-leaf-left {
  0% {
    transform-origin: right;
    transform: rotate(-70deg) rotateY(30deg) scale(0);
  }
}
@keyframes grow-flower-tree {
  0% {
    height: 0;
    border-radius: 1vmin;
  }
}
@keyframes blooming-flower {
  0% {
    transform: scale(0);
  }
}
@keyframes moving-grass {
  0%, 100% {
    transform: rotate(-48deg) rotateY(40deg);
  }
  50% {
    transform: rotate(-50deg) rotateY(40deg);
  }
}
@keyframes moving-grass--2 {
  0%, 100% {
    transform: scale(0.5) rotate(75deg) rotateX(10deg) rotateY(-200deg);
  }
  50% {
    transform: scale(0.5) rotate(79deg) rotateX(10deg) rotateY(-200deg);
  }
}
.growing-grass {
  animation: growing-grass-ans 1s 2s backwards;
}

@keyframes growing-grass-ans {
  0% {
    transform: scale(0);
  }
}
.not-loaded * {
  animation-play-state: paused !important;
}

/* Romantic experience layer */
:root {
  --dark-color: #07030f;
  --ink: #fff8fb;
  --muted: rgba(255, 232, 244, 0.72);
  --rose: #ff6fae;
  --pink: #ff9ccd;
  --blush: #ffd6e9;
  --violet: #9b5cff;
  --paper: #fff8f4;
  --glass: rgba(255, 214, 233, 0.1);
  --glass-line: rgba(255, 255, 255, 0.22);
}

html {
  scroll-behavior: smooth;
  background: var(--dark-color);
}

body {
  display: block;
  min-height: 100vh;
  overflow-x: hidden;
  overflow-y: auto;
  color: var(--ink);
  font-family: "Georgia", "Times New Roman", serif;
  background:
    radial-gradient(circle at 18% 12%, rgba(255, 111, 174, 0.24), transparent 28rem),
    radial-gradient(circle at 78% 20%, rgba(155, 92, 255, 0.22), transparent 30rem),
    linear-gradient(180deg, #07030f 0%, #12071e 44%, #06020b 100%);
  perspective: none;
}

body::before,
body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
}

body::before {
  background:
    radial-gradient(circle at 50% 12%, rgba(255, 255, 255, 0.1), transparent 24rem),
    linear-gradient(90deg, transparent, rgba(255, 214, 233, 0.04), transparent);
  mix-blend-mode: screen;
}

body::after {
  box-shadow: inset 0 0 12rem rgba(0, 0, 0, 0.72);
}

button,
input {
  font: inherit;
}

.ambient-sky,
.intro-screen,
.romance-story,
.music-orb,
.volume-panel,
.lightbox {
  position: relative;
  z-index: 2;
}

.ambient-sky {
  position: fixed;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}

.stars-layer,
.stars-layer::before,
.stars-layer::after {
  position: absolute;
  inset: -10%;
  content: "";
  background-repeat: repeat;
  animation: stars-drift 32s linear infinite;
}

.stars-layer--one {
  background-image:
    radial-gradient(circle, rgba(255,255,255,0.9) 0 1px, transparent 1.5px),
    radial-gradient(circle, rgba(255,156,205,0.8) 0 1px, transparent 1.7px);
  background-size: 82px 82px, 137px 137px;
}

.stars-layer--two {
  opacity: 0.65;
  filter: blur(0.4px);
  background-image:
    radial-gradient(circle, rgba(255,255,255,0.8) 0 1px, transparent 1.5px),
    radial-gradient(circle, rgba(155,92,255,0.8) 0 1.2px, transparent 1.8px);
  background-size: 119px 119px, 173px 173px;
  animation-duration: 48s;
  animation-direction: reverse;
}

.stars-layer::before {
  opacity: 0.45;
  background-image: radial-gradient(circle, #fff 0 1px, transparent 1.7px);
  background-size: 211px 211px;
  animation: twinkle 3.2s ease-in-out infinite alternate;
}

.moon-glow {
  position: absolute;
  top: 8vh;
  right: 9vw;
  width: 18rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,0.28), rgba(255,156,205,0.08) 38%, transparent 68%);
  filter: blur(0.2rem);
}

.cinema-fog {
  position: absolute;
  left: -20%;
  width: 140%;
  height: 18rem;
  border-radius: 50%;
  filter: blur(2.8rem);
  background: linear-gradient(90deg, transparent, rgba(255, 214, 233, 0.12), rgba(155, 92, 255, 0.1), transparent);
  animation: fog-sail 22s ease-in-out infinite alternate;
}

.cinema-fog--one {
  bottom: 5vh;
}

.cinema-fog--two {
  top: 38vh;
  opacity: 0.75;
  animation-duration: 29s;
  animation-direction: alternate-reverse;
}

.floating-heart,
.falling-petal,
.sakura-petal,
.firefly {
  position: absolute;
  pointer-events: none;
}

.floating-heart {
  bottom: -3rem;
  color: rgba(255, 130, 186, 0.82);
  text-shadow: 0 0 1rem rgba(255, 111, 174, 0.8);
  animation: heart-rise var(--dur) linear infinite;
  font-size: var(--size);
}

.falling-petal,
.sakura-petal {
  top: -3rem;
  width: var(--size);
  height: calc(var(--size) * 0.72);
  border-radius: 90% 20% 90% 20%;
  background: radial-gradient(circle at 35% 30%, #fff, #ffc5df 42%, #ff78b6 100%);
  box-shadow: 0 0 1rem rgba(255, 156, 205, 0.44);
  animation: petal-fall var(--dur) linear infinite;
}

.music-orb {
  position: fixed;
  right: 1.2rem;
  bottom: 1.2rem;
  width: 3.4rem;
  height: 3.4rem;
  border: 1px solid rgba(255,255,255,0.26);
  border-radius: 50%;
  color: #fff;
  cursor: pointer;
  background:
    radial-gradient(circle at 35% 25%, rgba(255,255,255,0.34), transparent 24%),
    linear-gradient(135deg, rgba(255, 111, 174, 0.78), rgba(155, 92, 255, 0.78));
  box-shadow: 0 0 2.2rem rgba(255, 111, 174, 0.36);
  z-index: 40;
  backdrop-filter: blur(1rem);
}

.music-orb.is-playing {
  animation: music-pulse 1.6s ease-in-out infinite;
}

.music-orb__icon {
  font-size: 1.35rem;
}

.volume-panel {
  position: fixed;
  right: 5rem;
  bottom: 1.55rem;
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.55rem 0.8rem;
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 999px;
  color: rgba(255,255,255,0.84);
  font-family: Arial, sans-serif;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: rgba(13, 5, 23, 0.62);
  backdrop-filter: blur(1rem);
  z-index: 39;
}

.volume-panel input {
  width: 7rem;
  accent-color: var(--rose);
}

.intro-screen {
  min-height: 100vh;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 2rem;
  padding: 2rem;
  transition: opacity 0.8s ease, transform 0.8s ease, visibility 0.8s;
}

.intro-screen.is-hidden {
  opacity: 0;
  visibility: hidden;
  transform: translateY(-2rem) scale(0.98);
  pointer-events: none;
  position: fixed;
  inset: 0;
}

.intro-screen p {
  color: var(--blush);
  font-size: clamp(1.35rem, 4vw, 2.7rem);
  text-align: center;
  text-shadow: 0 0 1.6rem rgba(255, 111, 174, 0.55);
}

.intro-envelope {
  position: relative;
  width: min(18rem, 72vw);
  aspect-ratio: 1.45;
  border: 0;
  cursor: pointer;
  background: transparent;
  transform-style: preserve-3d;
  animation: envelope-float 3.4s ease-in-out infinite;
}

.intro-envelope__back,
.intro-envelope__front,
.intro-envelope__letter,
.intro-envelope__seal {
  position: absolute;
  inset: 0;
}

.intro-envelope__back {
  border-radius: 0.65rem;
  background: linear-gradient(135deg, #ffb2d2, #ff6fae 55%, #b96eff);
  box-shadow: 0 1.4rem 5rem rgba(255, 111, 174, 0.38);
}

.intro-envelope__front {
  clip-path: polygon(0 33%, 50% 72%, 100% 33%, 100% 100%, 0 100%);
  border-radius: 0 0 0.65rem 0.65rem;
  background: linear-gradient(160deg, #ff8fc2, #ff4f9d 52%, #8f50e8);
}

.intro-envelope__letter {
  inset: 12% 12% auto;
  height: 54%;
  border-radius: 0.45rem;
  background: linear-gradient(180deg, #fffaf6, #ffdce9);
  transform: translateY(8%);
  box-shadow: 0 0.8rem 2rem rgba(43, 8, 29, 0.28);
}

.intro-envelope__seal {
  inset: auto auto 21% 50%;
  width: 3.1rem;
  height: 3.1rem;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: radial-gradient(circle, #ff86bd, #d91f78);
  transform: translateX(-50%);
  box-shadow: 0 0 1.6rem rgba(255, 111, 174, 0.85);
}

.romance-story {
  display: none;
}

.romance-story.is-active {
  display: block;
}

.story-section {
  min-height: 100vh;
  padding: clamp(4.5rem, 8vw, 7rem) clamp(1rem, 4vw, 4rem);
}

.letter-section {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 2rem;
}

.letter-scene {
  width: min(45rem, 94vw);
  min-height: 34rem;
  display: grid;
  place-items: center;
  perspective: 1200px;
}

.letter-envelope {
  position: relative;
  width: min(34rem, 86vw);
  aspect-ratio: 1.55;
  transform-style: preserve-3d;
  filter: drop-shadow(0 2rem 4rem rgba(0,0,0,0.42));
}

.letter-envelope__back,
.letter-envelope__left,
.letter-envelope__right,
.letter-envelope__bottom,
.letter-envelope__flap {
  position: absolute;
  inset: 0;
  border-radius: 0.8rem;
}

.letter-envelope__back {
  background: linear-gradient(135deg, #ff9ccd, #ae66ff);
}

.letter-envelope__flap {
  clip-path: polygon(0 0, 50% 58%, 100% 0);
  background: linear-gradient(180deg, #ffc3dc, #ff71ad);
  transform-origin: top;
  z-index: 5;
  transition: transform 1.2s cubic-bezier(.2,.8,.2,1);
}

.letter-envelope__left {
  clip-path: polygon(0 0, 52% 52%, 0 100%);
  background: linear-gradient(135deg, #ff75b2, #dc4f99);
  z-index: 4;
}

.letter-envelope__right {
  clip-path: polygon(100% 0, 48% 52%, 100% 100%);
  background: linear-gradient(225deg, #bf73ff, #ff78b6);
  z-index: 4;
}

.letter-envelope__bottom {
  clip-path: polygon(0 100%, 50% 42%, 100% 100%);
  background: linear-gradient(0deg, #ff5ca5, #ff9ccd);
  z-index: 6;
}

.letter-envelope__paper {
  position: absolute;
  left: 50%;
  bottom: 14%;
  width: 82%;
  min-height: 120%;
  padding: clamp(1.2rem, 4vw, 2.4rem);
  border-radius: 0.8rem;
  color: #5d2341;
  background:
    linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0)),
    repeating-linear-gradient(180deg, transparent 0 2rem, rgba(255, 111, 174, 0.09) 2.05rem 2.1rem),
    var(--paper);
  box-shadow: inset 0 0 0 1px rgba(255, 111, 174, 0.18), 0 1.6rem 3rem rgba(41, 5, 31, 0.24);
  transform: translate(-50%, 34%) rotateX(8deg);
  opacity: 0;
  z-index: 3;
  max-height: min(68vh, 40rem);
  overflow-y: auto;
  scrollbar-color: rgba(255, 111, 174, 0.75) rgba(93, 35, 65, 0.12);
  transition: transform 1.25s cubic-bezier(.2,.8,.2,1) 0.35s, opacity 0.6s ease 0.35s;
}

.letter-section.is-open .letter-envelope__flap {
  transform: rotateX(178deg);
}

.letter-section.is-open .letter-envelope__paper {
  opacity: 1;
  transform: translate(-50%, -34%) rotateX(0deg);
  z-index: 7;
}

.typewriter-text {
  font-size: clamp(1rem, 2.2vw, 1.35rem);
  line-height: 1.75;
  white-space: pre-wrap;
}

.typewriter-text::after {
  content: "";
  display: inline-block;
  width: 0.5rem;
  height: 1.15em;
  margin-left: 0.2rem;
  vertical-align: middle;
  background: #d91f78;
  animation: caret 0.75s steps(1) infinite;
}

.primary-action {
  border: 1px solid rgba(255,255,255,0.28);
  border-radius: 999px;
  padding: 0.9rem 1.6rem;
  color: #fff;
  cursor: pointer;
  background: linear-gradient(135deg, rgba(255,111,174,0.9), rgba(155,92,255,0.9));
  box-shadow: 0 1rem 2.5rem rgba(255, 111, 174, 0.26);
  opacity: 0;
  transform: translateY(1rem);
  pointer-events: none;
  transition: opacity 0.5s ease, transform 0.5s ease;
}

.primary-action.is-ready {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.section-heading {
  max-width: 62rem;
  margin: 0 auto 2rem;
}

.section-heading span {
  display: block;
  margin-bottom: 0.5rem;
  color: var(--pink);
  font-family: Arial, sans-serif;
  font-size: 0.75rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.section-heading h1,
.final-section h1 {
  font-size: clamp(2.3rem, 7vw, 5.8rem);
  font-weight: 500;
  line-height: 1;
  text-shadow: 0 0 2.4rem rgba(255, 111, 174, 0.42);
}

.memory-gallery {
  width: min(72rem, 100%);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(0.75rem, 2vw, 1.1rem);
}

.memory-card {
  position: relative;
  min-height: 16rem;
  overflow: hidden;
  border: 1px solid var(--glass-line);
  border-radius: 0.5rem;
  cursor: pointer;
  background: var(--glass);
  box-shadow: 0 1.2rem 3rem rgba(0, 0, 0, 0.24);
  backdrop-filter: blur(1rem);
  transform: translateY(0);
  transition: transform 0.35s ease, box-shadow 0.35s ease, border-color 0.35s ease;
}

.memory-card:nth-child(1),
.memory-card:nth-child(6),
.memory-card:nth-child(11) {
  grid-row: span 2;
  min-height: 28rem;
}

.memory-card:nth-child(4),
.memory-card:nth-child(8) {
  grid-column: span 2;
}

.memory-card:hover {
  transform: translateY(-0.45rem) scale(1.01);
  border-color: rgba(255, 156, 205, 0.62);
  box-shadow: 0 1.8rem 4rem rgba(255, 111, 174, 0.18);
}

.memory-card img {
  width: 100%;
  height: 100%;
  min-height: inherit;
  display: block;
  object-fit: cover;
  transition: transform 0.8s ease, filter 0.8s ease;
}

.memory-card:hover img {
  transform: scale(1.08);
  filter: saturate(1.15) brightness(1.08);
}

.memory-card::after {
  content: attr(data-label);
  position: absolute;
  left: 0.8rem;
  right: 0.8rem;
  bottom: 0.8rem;
  padding: 0.55rem 0.7rem;
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 0.45rem;
  color: #fff;
  font-family: Arial, sans-serif;
  font-size: 0.74rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  background: rgba(8, 3, 14, 0.48);
  backdrop-filter: blur(0.8rem);
}

.memory-card.is-missing {
  display: grid;
  place-items: center;
  padding: 1rem;
  color: rgba(255,255,255,0.74);
  text-align: center;
  background:
    radial-gradient(circle at 30% 20%, rgba(255,156,205,0.2), transparent 34%),
    linear-gradient(135deg, rgba(255,255,255,0.08), rgba(255,111,174,0.12));
}

.memory-timeline {
  position: relative;
  width: min(58rem, 100%);
  margin: 0 auto;
  padding: 1rem 0;
}

.memory-timeline::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 1px;
  background: linear-gradient(transparent, rgba(255, 156, 205, 0.8), transparent);
  box-shadow: 0 0 1rem rgba(255, 111, 174, 0.7);
}

.timeline-card {
  position: relative;
  width: calc(50% - 2rem);
  margin: 0 0 2rem;
  padding: 1.25rem;
  border: 1px solid rgba(255,255,255,0.16);
  border-radius: 0.5rem;
  background: rgba(255, 214, 233, 0.08);
  backdrop-filter: blur(0.9rem);
}

.timeline-card:nth-child(even) {
  margin-left: calc(50% + 2rem);
}

.timeline-card span {
  color: var(--rose);
  font-family: Arial, sans-serif;
  font-size: 0.75rem;
  letter-spacing: 0.18em;
}

.timeline-card h2 {
  margin: 0.35rem 0 0.5rem;
  font-size: clamp(1.35rem, 3vw, 2rem);
  font-weight: 500;
}

.timeline-card p {
  color: var(--muted);
  line-height: 1.6;
}

.world-section {
  position: relative;
  overflow: hidden;
}

.world-map-3d {
  width: min(76rem, 100%);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(11rem, 0.42fr) minmax(0, 1fr);
  gap: clamp(1rem, 3vw, 1.6rem);
  align-items: center;
  perspective: 1200px;
}

.country-card {
  position: relative;
  min-height: 31rem;
  padding: clamp(1rem, 3vw, 1.4rem);
  display: grid;
  align-content: end;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 0.65rem;
  background:
    radial-gradient(circle at 30% 18%, rgba(255,255,255,0.16), transparent 28%),
    linear-gradient(145deg, rgba(255,214,233,0.13), rgba(155,92,255,0.09)),
    rgba(11, 4, 20, 0.64);
  box-shadow: 0 1.8rem 4rem rgba(0,0,0,0.32), inset 0 0 0 1px rgba(255,255,255,0.05);
  backdrop-filter: blur(1.1rem);
  transform-style: preserve-3d;
  animation: country-float 6s ease-in-out infinite;
}

.country-card--indonesia {
  transform: rotateY(10deg) rotateX(4deg);
}

.country-card--poland {
  transform: rotateY(-10deg) rotateX(4deg);
  animation-delay: 0.9s;
}

.country-card::before {
  content: "";
  position: absolute;
  inset: 9%;
  border-radius: 50%;
  background:
    radial-gradient(circle, rgba(255,156,205,0.16), transparent 62%),
    linear-gradient(120deg, transparent 40%, rgba(255,255,255,0.12), transparent 58%);
  filter: blur(0.1rem);
  transform: translateZ(-4rem);
}

.country-card > span,
.country-card h2,
.country-card p {
  position: relative;
  z-index: 3;
}

.country-card > span {
  color: var(--pink);
  font-family: Arial, sans-serif;
  font-size: 0.76rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.country-card h2 {
  margin: 0.35rem 0;
  color: #fff;
  font-family: Arial, sans-serif;
  font-size: clamp(2.4rem, 7vw, 4.8rem);
  font-weight: 700;
  letter-spacing: 0.02em;
  text-shadow: 0 0 1.8rem rgba(255,111,174,0.48);
}

.country-card p {
  color: var(--muted);
  font-family: Arial, sans-serif;
  letter-spacing: 0.08em;
}

.country-map {
  position: absolute;
  inset: 1.4rem 1.2rem auto;
  height: 17.5rem;
  transform: translateZ(4rem) rotateX(58deg) rotateZ(-6deg);
  transform-style: preserve-3d;
  filter: drop-shadow(0 1rem 1.5rem rgba(255,111,174,0.2));
}

.country-card--poland .country-map {
  transform: translateZ(4rem) rotateX(58deg) rotateZ(7deg);
}

.island,
.poland-body {
  position: absolute;
  display: block;
  background:
    linear-gradient(135deg, rgba(255,255,255,0.9), rgba(255,156,205,0.85) 45%, rgba(155,92,255,0.9));
  box-shadow:
    0 0 1.2rem rgba(255,111,174,0.58),
    0 0.8rem 0 rgba(124,45,116,0.42);
  transform-style: preserve-3d;
}

.island--sumatra {
  left: 4%;
  top: 45%;
  width: 28%;
  height: 18%;
  border-radius: 70% 35% 65% 40%;
  transform: rotate(-24deg);
}

.island--java {
  left: 28%;
  top: 66%;
  width: 34%;
  height: 8%;
  border-radius: 999px;
  transform: rotate(3deg);
}

.island--kalimantan {
  left: 38%;
  top: 31%;
  width: 26%;
  height: 26%;
  border-radius: 50% 62% 48% 58%;
  transform: rotate(-8deg);
}

.island--sulawesi {
  left: 62%;
  top: 37%;
  width: 17%;
  height: 22%;
  border-radius: 35% 70% 40% 72%;
  transform: rotate(32deg);
}

.island--papua {
  left: 78%;
  top: 46%;
  width: 19%;
  height: 17%;
  border-radius: 55% 40% 60% 35%;
  transform: rotate(-6deg);
}

.poland-body {
  left: 21%;
  top: 14%;
  width: 58%;
  height: 62%;
  clip-path: polygon(18% 10%, 46% 0, 74% 8%, 92% 28%, 84% 58%, 96% 78%, 72% 94%, 42% 88%, 20% 98%, 8% 72%, 14% 48%, 4% 24%);
}

.poland-body::after {
  content: "";
  position: absolute;
  inset: 50% 0 0;
  background: linear-gradient(135deg, rgba(255,111,174,0.9), rgba(155,92,255,0.8));
}

.map-pin {
  position: absolute;
  left: 50%;
  top: 43%;
  width: 1.1rem;
  height: 1.1rem;
  border-radius: 50% 50% 50% 0;
  background: #fff;
  box-shadow: 0 0 1rem rgba(255,255,255,0.9), 0 0 2rem rgba(255,111,174,0.85);
  transform: translate(-50%, -50%) rotate(-45deg) translateZ(3rem);
  animation: pin-pulse 1.8s ease-in-out infinite;
}

.map-pin::after {
  content: "";
  position: absolute;
  inset: 0.32rem;
  border-radius: 50%;
  background: var(--rose);
}

.connection-orbit {
  position: relative;
  min-height: 18rem;
  display: grid;
  place-items: center;
  transform-style: preserve-3d;
}

.connection-orbit span {
  width: min(11rem, 28vw);
  aspect-ratio: 1;
  border: 1px solid rgba(255,156,205,0.48);
  border-radius: 50%;
  box-shadow: 0 0 2rem rgba(255,111,174,0.2), inset 0 0 2rem rgba(155,92,255,0.15);
  transform: rotateX(68deg);
  animation: orbit-spin 9s linear infinite;
}

.connection-orbit i {
  position: absolute;
  width: 0.7rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 1.4rem #fff, 0 0 2.6rem var(--rose);
  animation: orbit-dot 4.5s ease-in-out infinite;
}

.message-section {
  position: relative;
}

.message-board {
  width: min(72rem, 100%);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(18rem, 0.95fr);
  gap: clamp(1rem, 3vw, 1.6rem);
  align-items: stretch;
}

.message-form,
.message-preview,
.message-note {
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 0.55rem;
  background:
    linear-gradient(135deg, rgba(255,255,255,0.12), rgba(255,111,174,0.07)),
    rgba(14, 5, 24, 0.58);
  box-shadow: 0 1.2rem 3.4rem rgba(0,0,0,0.25);
  backdrop-filter: blur(1rem);
}

.message-form {
  display: grid;
  gap: 1rem;
  padding: clamp(1rem, 3vw, 1.4rem);
}

.message-form label {
  display: grid;
  gap: 0.5rem;
}

.message-form label span,
.message-preview > span {
  color: var(--pink);
  font-family: Arial, sans-serif;
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.message-form input,
.message-form textarea {
  width: 100%;
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 0.45rem;
  padding: 0.9rem 1rem;
  color: #fff;
  outline: none;
  resize: vertical;
  background: rgba(255,255,255,0.08);
  box-shadow: inset 0 0 1.4rem rgba(255,111,174,0.04);
  transition: border-color 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;
}

.message-form input:focus,
.message-form textarea:focus {
  border-color: rgba(255,156,205,0.72);
  background: rgba(255,255,255,0.11);
  box-shadow: 0 0 0 0.25rem rgba(255,111,174,0.13), inset 0 0 1.4rem rgba(255,111,174,0.08);
}

.message-form input::placeholder,
.message-form textarea::placeholder {
  color: rgba(255,232,244,0.46);
}

.message-submit {
  justify-self: start;
}

.message-preview {
  position: relative;
  overflow: hidden;
  min-height: 18rem;
  padding: clamp(1.2rem, 4vw, 2rem);
}

.message-preview::before {
  content: "";
  position: absolute;
  inset: -25% -15% auto auto;
  width: 14rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,111,174,0.34), transparent 68%);
  filter: blur(0.2rem);
}

.message-preview h2 {
  position: relative;
  margin: 1.4rem 0 0.9rem;
  font-size: clamp(1.6rem, 4vw, 2.8rem);
  font-weight: 500;
  color: #fff8fb;
  text-shadow: 0 0 1.4rem rgba(255,111,174,0.42);
}

.message-preview p {
  position: relative;
  color: var(--muted);
  font-size: clamp(1rem, 2vw, 1.18rem);
  line-height: 1.75;
  white-space: pre-wrap;
}

.message-wall {
  width: min(72rem, 100%);
  margin: 1rem auto 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

.message-note {
  position: relative;
  min-height: 10rem;
  padding: 1rem;
  overflow: hidden;
}

.message-note::after {
  content: "♥";
  position: absolute;
  right: 0.8rem;
  bottom: 0.4rem;
  color: rgba(255,156,205,0.28);
  font-size: 3rem;
  text-shadow: 0 0 1rem rgba(255,111,174,0.5);
}

.message-note h3 {
  margin-bottom: 0.5rem;
  color: #fff;
  font-size: 1.15rem;
  font-weight: 500;
}

.message-note p {
  color: var(--muted);
  line-height: 1.6;
  white-space: pre-wrap;
}

.message-note time {
  display: block;
  margin-top: 0.9rem;
  color: rgba(255,232,244,0.48);
  font-family: Arial, sans-serif;
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.reveal {
  opacity: 0;
  transform: translateY(2rem);
  transition: opacity 0.9s ease, transform 0.9s ease;
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.garden-section {
  padding-left: 0;
  padding-right: 0;
  overflow: hidden;
}

.garden-heading {
  padding: 0 clamp(1rem, 4vw, 4rem);
}

.garden-stage {
  position: relative;
  height: min(58rem, 100vh);
  min-height: 44rem;
  overflow: hidden;
  transform-style: preserve-3d;
}

.garden-stage .night {
  position: absolute;
  inset: 0;
  left: 0;
  width: 100%;
  height: 100%;
  transform: none;
  background-image:
    radial-gradient(ellipse at top, rgba(255, 111, 174, 0.16), transparent 55%),
    radial-gradient(ellipse at bottom, rgba(255, 156, 205, 0.2), rgba(7, 3, 15, 0.88) 58%),
    linear-gradient(180deg, #07030f, #150723 58%, #030107);
  filter: none;
}

.garden-stage::before,
.garden-stage::after {
  content: "";
  position: absolute;
  inset: auto -10% 0;
  height: 40%;
  z-index: 3;
  pointer-events: none;
}

.garden-stage::before {
  background: radial-gradient(ellipse at center, rgba(255, 111, 174, 0.18), transparent 64%);
  filter: blur(2.5rem);
}

.garden-stage::after {
  background: linear-gradient(0deg, rgba(3,1,7,0.95), transparent);
}

.garden-stage .flowers {
  position: absolute;
  left: 50%;
  bottom: 1rem;
  z-index: 5;
  transform: translateX(-50%) scale(0.74);
  filter: drop-shadow(0 0 2rem rgba(255, 111, 174, 0.34));
  animation: garden-parallax 9s ease-in-out infinite;
}

.garden-stage .flower {
  --fl-speed: 1s;
  filter: drop-shadow(0 0 1.2rem rgba(255, 111, 174, 0.65));
}

.garden-stage .flower__leaf {
  background-color: #ff7db8;
  background-image: linear-gradient(to top, #ff4e9f, #ffd3e7 55%, #fff);
  box-shadow: inset 0 0 2vmin rgba(255,255,255,0.68), 0 0 1.4vmin rgba(255,111,174,0.64);
}

.garden-stage .flower__leaf--4 {
  background-image: linear-gradient(to top, #de53ff, #ff9ccd 60%, #fff);
}

.garden-stage .flower__white-circle {
  background: radial-gradient(circle, #fff 0 33%, #ffd2e6 36% 62%, #ff6fae 64%);
  box-shadow: 0 0 1.2rem rgba(255, 214, 233, 0.85);
}

.garden-stage .flower__white-circle::after {
  background-image: radial-gradient(circle, #fff8b8, #ff9ccd 52%, #a85cff);
}

.garden-stage .flower__line,
.garden-stage .flower__g-long__bottom,
.garden-stage .flower__g-front__line {
  background-image: linear-gradient(to top, transparent 8%, #3c7f63, #ff8fc2);
}

.garden-stage .flower__line__leaf,
.garden-stage .flower__grass__leaf,
.garden-stage .flower__g-front__leaf,
.garden-stage .flower__g-fr__leaf {
  background-image: linear-gradient(to top, rgba(70, 190, 132, 0.2), #ff8fc2);
  box-shadow: inset 0 0 1vmin rgba(255, 156, 205, 0.35);
}

.garden-stage .flower__light {
  background: #ffd6e9;
  box-shadow: 0 0 1rem #ff6fae;
}

.garden-stage .flower__light:nth-child(odd) {
  background: #d9c2ff;
  box-shadow: 0 0 1rem #9b5cff;
}

.garden-stage .flower__g-right .leaf,
.garden-stage .flower__g-fr .leaf,
.garden-stage .long-g .leaf {
  border-left-color: #ff8fc2;
  filter: drop-shadow(0 0 0.8rem rgba(255, 111, 174, 0.28));
}

.garden-stage .flower__grass {
  --c: #ff8fc2;
}

.sakura-layer,
.firefly-layer {
  position: absolute;
  inset: 0;
  z-index: 8;
  pointer-events: none;
}

.firefly {
  width: var(--size);
  height: var(--size);
  border-radius: 50%;
  background: #fff5b8;
  box-shadow: 0 0 1rem #fff5b8, 0 0 2rem rgba(255,111,174,0.45);
  animation: firefly-dance var(--dur) ease-in-out infinite;
}

.final-section {
  position: relative;
  display: grid;
  place-items: center;
  align-content: center;
  overflow: hidden;
  text-align: center;
}

.final-section h1 {
  max-width: 62rem;
  position: relative;
  z-index: 2;
}

.final-bloom {
  position: absolute;
  bottom: 8vh;
  display: flex;
  gap: 1rem;
}

.final-bloom span {
  width: clamp(3rem, 8vw, 6rem);
  aspect-ratio: 1;
  border-radius: 60% 40% 65% 35%;
  background: radial-gradient(circle at 40% 38%, #fff, #ffafd1 38%, #ff4f9d 70%);
  transform-origin: bottom;
  animation: final-bloom 3s ease-in-out infinite alternate;
  box-shadow: 0 0 2rem rgba(255, 111, 174, 0.42);
}

.final-bloom span:nth-child(even) {
  animation-delay: 0.8s;
}

.glowing-heart-cloud {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.glowing-heart-cloud span {
  position: absolute;
  color: rgba(255, 156, 205, 0.75);
  font-size: clamp(2rem, 7vw, 5rem);
  text-shadow: 0 0 2rem rgba(255, 111, 174, 0.7);
  animation: heart-hover 5s ease-in-out infinite;
}

.glowing-heart-cloud span:nth-child(1) { left: 12%; top: 26%; }
.glowing-heart-cloud span:nth-child(2) { left: 76%; top: 18%; animation-delay: 0.7s; }
.glowing-heart-cloud span:nth-child(3) { left: 66%; top: 68%; animation-delay: 1.4s; }
.glowing-heart-cloud span:nth-child(4) { left: 23%; top: 70%; animation-delay: 2.1s; }
.glowing-heart-cloud span:nth-child(5) { left: 48%; top: 14%; animation-delay: 2.8s; }

.lightbox {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 1.25rem;
  background: rgba(3, 1, 7, 0.86);
  backdrop-filter: blur(1.1rem);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.35s ease, visibility 0.35s;
  z-index: 80;
}

.lightbox.is-open {
  opacity: 1;
  visibility: visible;
}

.lightbox img {
  max-width: min(92vw, 76rem);
  max-height: 88vh;
  border-radius: 0.55rem;
  box-shadow: 0 2rem 5rem rgba(0,0,0,0.5), 0 0 2.5rem rgba(255,111,174,0.22);
}

.lightbox__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  width: 2.7rem;
  height: 2.7rem;
  border: 1px solid rgba(255,255,255,0.24);
  border-radius: 50%;
  color: #fff;
  cursor: pointer;
  background: rgba(255,255,255,0.08);
}

@keyframes stars-drift {
  to { transform: translate3d(-4rem, 3rem, 0); }
}

@keyframes twinkle {
  from { opacity: 0.25; }
  to { opacity: 0.9; }
}

@keyframes fog-sail {
  from { transform: translateX(-6%) scale(1); }
  to { transform: translateX(7%) scale(1.08); }
}

@keyframes heart-rise {
  from {
    transform: translate3d(0, 0, 0) rotate(0deg);
    opacity: 0;
  }
  12%, 72% { opacity: 1; }
  to {
    transform: translate3d(var(--drift), -112vh, 0) rotate(38deg);
    opacity: 0;
  }
}

@keyframes petal-fall {
  from {
    transform: translate3d(0, -4rem, 0) rotate(0deg);
    opacity: 0;
  }
  12%, 82% { opacity: 0.9; }
  to {
    transform: translate3d(var(--drift), 112vh, 0) rotate(520deg);
    opacity: 0;
  }
}

@keyframes envelope-float {
  0%, 100% { transform: translateY(0) rotateX(0deg); }
  50% { transform: translateY(-0.8rem) rotateX(5deg); }
}

@keyframes music-pulse {
  50% { box-shadow: 0 0 3.2rem rgba(255, 111, 174, 0.7); }
}

@keyframes caret {
  50% { opacity: 0; }
}

@keyframes garden-parallax {
  0%, 100% { transform: translateX(-50%) scale(0.74) rotateZ(-0.6deg); }
  50% { transform: translateX(calc(-50% + 1.2rem)) scale(0.75) rotateZ(0.6deg); }
}

@keyframes firefly-dance {
  0%, 100% {
    transform: translate3d(0,0,0);
    opacity: 0.25;
  }
  25% {
    transform: translate3d(2.6rem,-4rem,0);
    opacity: 1;
  }
  55% {
    transform: translate3d(-2rem,-7rem,0);
    opacity: 0.55;
  }
  80% {
    transform: translate3d(3rem,-2rem,0);
    opacity: 0.95;
  }
}

@keyframes final-bloom {
  from { transform: scale(0.72) rotate(-8deg); opacity: 0.64; }
  to { transform: scale(1) rotate(7deg); opacity: 1; }
}

@keyframes heart-hover {
  50% { transform: translateY(-1.2rem) scale(1.08); }
}

@keyframes country-float {
  0%, 100% {
    translate: 0 0;
  }
  50% {
    translate: 0 -0.8rem;
  }
}

@keyframes pin-pulse {
  50% {
    scale: 1.22;
    box-shadow: 0 0 1.6rem rgba(255,255,255,1), 0 0 3rem rgba(255,111,174,0.95);
  }
}

@keyframes orbit-spin {
  to {
    transform: rotateX(68deg) rotateZ(360deg);
  }
}

@keyframes orbit-dot {
  0%, 100% {
    transform: translate3d(-3.4rem, -1.1rem, 0);
  }
  50% {
    transform: translate3d(3.4rem, 1.1rem, 0);
  }
}

@media (max-width: 900px) {
  .memory-gallery {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .memory-card,
  .memory-card:nth-child(1),
  .memory-card:nth-child(6),
  .memory-card:nth-child(11) {
    grid-column: auto;
    grid-row: auto;
    min-height: 15rem;
  }

  .memory-card:nth-child(4),
  .memory-card:nth-child(8) {
    grid-column: auto;
  }

  .message-board {
    grid-template-columns: 1fr;
  }

  .message-wall {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .world-map-3d {
    grid-template-columns: 1fr;
  }

  .connection-orbit {
    min-height: 7rem;
  }

  .connection-orbit span {
    width: 8rem;
  }

  .garden-stage .flowers {
    transform: translateX(-50%) scale(0.58);
  }

  @keyframes garden-parallax {
    0%, 100% { transform: translateX(-50%) scale(0.58) rotateZ(-0.6deg); }
    50% { transform: translateX(calc(-50% + 0.8rem)) scale(0.59) rotateZ(0.6deg); }
  }
}

@media (max-width: 640px) {
  .story-section {
    padding: 4.5rem 1rem;
  }

  .letter-scene {
    min-height: 31rem;
  }

  .letter-envelope__paper {
    width: 90%;
    min-height: 132%;
  }

  .memory-gallery {
    grid-template-columns: 1fr;
  }

  .message-wall {
    grid-template-columns: 1fr;
  }

  .message-submit {
    width: 100%;
  }

  .country-card {
    min-height: 27rem;
  }

  .country-map {
    height: 14.5rem;
  }

  .memory-timeline::before {
    left: 0.6rem;
  }

  .timeline-card,
  .timeline-card:nth-child(even) {
    width: calc(100% - 2rem);
    margin-left: 2rem;
  }

  .volume-panel {
    right: 1rem;
    bottom: 5rem;
  }

  .garden-stage {
    min-height: 39rem;
  }

  .garden-stage .flowers {
    bottom: -1rem;
    transform: translateX(-50%) scale(0.48);
  }

  @keyframes garden-parallax {
    0%, 100% { transform: translateX(-50%) scale(0.48) rotateZ(-0.6deg); }
    50% { transform: translateX(calc(-50% + 0.55rem)) scale(0.49) rotateZ(0.6deg); }
  }
}


