/* ==============================================================
   fireflies.css — decorative firefly swarm for the night scene.

   Loaded only by the pages that carry the sheep background
   (index, 404, offline). The whole layer is invisible in the light
   theme and cross-fades in with the night photo.

   Every keyframe below is pre-generated: the site CSP sets
   style-src 'self', so the per-firefly randomness cannot be handed
   out as inline style attributes at runtime the way the original
   Sass pen did. Regenerate rather than hand-edit — see
   assets/fireflies.txt for the source the effect came from.
   ============================================================== */

.fireflies {
  position: fixed;
  inset: 0;
  /* Between the photo layers (-2) and the page content, so the swarm drifts
     behind the glass and is seen through it. That does put 15 permanently
     animating elements inside the frosted panels' backdrop, which the
     compositor cannot cache — acceptable now that the card no longer
     changes width on every keystroke. pointer-events stays none. */
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  transition: opacity 700ms ease;
}
:root[data-theme="dark"] .fireflies { opacity: 1; }

.firefly {
  position: absolute;
  left: 50%;
  top: 50%;
  width: clamp(2px, 0.4vw, 5px);
  height: clamp(2px, 0.4vw, 5px);
  /* The pseudo-elements orbit a point 10vw to their left, so the whole
     firefly is nudged 9.8vw right to keep that orbit centred. */
  margin: -0.2vw 0 0 9.8vw;
  animation: ease 200s alternate infinite;
  will-change: transform;
}

.firefly::before,
.firefly::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 50%;
  transform-origin: -10vw;
}

/* The body of the insect — a dark speck that is only visible against
   the glow it casts. */
.firefly::before {
  background: #000;
  opacity: 0.4;
  animation: firefly-drift ease alternate infinite;
}

/* The lantern. Dark until flash() fires, then a brief warm burst. */
.firefly::after {
  background: #fff;
  opacity: 0;
  box-shadow: 0 0 0 0 #ffe066;
  animation: firefly-drift ease alternate infinite, firefly-flash ease infinite;
}

@keyframes firefly-drift {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes firefly-flash {
  0%, 30%, 100% { opacity: 0; box-shadow: 0 0 0vw 0vw #ffe066; }
  5%            { opacity: 1; box-shadow: 0 0 2vw 0.4vw #ffe066; }
}

/* Pure decoration: nothing here conveys meaning, so it all goes away
   when the visitor asks for less motion. */
@media (prefers-reduced-motion: reduce) {
  .fireflies { display: none; }
}

/* ── Per-firefly randomisation ─────────────────────────────── */

.firefly:nth-child(1) { animation-name: firefly-move-1; }
.firefly:nth-child(1)::before { animation-duration: 16s; }
.firefly:nth-child(1)::after {
  animation-duration: 16s, 7150ms;
  animation-delay: 0ms, 2691ms;
}
@keyframes firefly-move-1 {
  0% { transform: translateX(-19vw) translateY(34vh) scale(0.68); }
  5.88% { transform: translateX(47vw) translateY(16vh) scale(0.35); }
  11.76% { transform: translateX(24vw) translateY(32vh) scale(0.36); }
  17.65% { transform: translateX(22vw) translateY(-19vh) scale(0.92); }
  23.53% { transform: translateX(0vw) translateY(-42vh) scale(0.89); }
  29.41% { transform: translateX(-33vw) translateY(27vh) scale(0.47); }
  35.29% { transform: translateX(43vw) translateY(-26vh) scale(0.92); }
  41.18% { transform: translateX(-28vw) translateY(44vh) scale(0.74); }
  47.06% { transform: translateX(40vw) translateY(44vh) scale(0.26); }
  52.94% { transform: translateX(12vw) translateY(26vh) scale(1); }
  58.82% { transform: translateX(41vw) translateY(21vh) scale(0.37); }
  64.71% { transform: translateX(6vw) translateY(-17vh) scale(0.63); }
  70.59% { transform: translateX(13vw) translateY(-36vh) scale(0.3); }
  76.47% { transform: translateX(-1vw) translateY(-40vh) scale(0.39); }
  82.35% { transform: translateX(22vw) translateY(16vh) scale(0.7); }
  88.24% { transform: translateX(47vw) translateY(-14vh) scale(0.32); }
  94.12% { transform: translateX(19vw) translateY(40vh) scale(0.67); }
  100% { transform: translateX(3vw) translateY(13vh) scale(0.61); }
}

.firefly:nth-child(2) { animation-name: firefly-move-2; }
.firefly:nth-child(2)::before { animation-duration: 16s; }
.firefly:nth-child(2)::after {
  animation-duration: 16s, 10242ms;
  animation-delay: 0ms, 4569ms;
}
@keyframes firefly-move-2 {
  0% { transform: translateX(43vw) translateY(12vh) scale(0.35); }
  4.76% { transform: translateX(-10vw) translateY(-36vh) scale(0.83); }
  9.52% { transform: translateX(-26vw) translateY(-39vh) scale(0.72); }
  14.29% { transform: translateX(4vw) translateY(-5vh) scale(0.51); }
  19.05% { transform: translateX(-37vw) translateY(15vh) scale(0.87); }
  23.81% { transform: translateX(-3vw) translateY(-49vh) scale(0.56); }
  28.57% { transform: translateX(23vw) translateY(50vh) scale(0.81); }
  33.33% { transform: translateX(35vw) translateY(-18vh) scale(0.94); }
  38.1% { transform: translateX(-47vw) translateY(39vh) scale(0.75); }
  42.86% { transform: translateX(20vw) translateY(-18vh) scale(1); }
  47.62% { transform: translateX(25vw) translateY(48vh) scale(0.98); }
  52.38% { transform: translateX(45vw) translateY(47vh) scale(0.85); }
  57.14% { transform: translateX(-27vw) translateY(-23vh) scale(0.4); }
  61.9% { transform: translateX(-10vw) translateY(22vh) scale(0.39); }
  66.67% { transform: translateX(-13vw) translateY(-28vh) scale(0.26); }
  71.43% { transform: translateX(32vw) translateY(-6vh) scale(0.58); }
  76.19% { transform: translateX(32vw) translateY(45vh) scale(0.57); }
  80.95% { transform: translateX(-31vw) translateY(11vh) scale(0.56); }
  85.71% { transform: translateX(-28vw) translateY(-45vh) scale(0.49); }
  90.48% { transform: translateX(27vw) translateY(38vh) scale(0.51); }
  95.24% { transform: translateX(-27vw) translateY(-17vh) scale(0.7); }
  100% { transform: translateX(-42vw) translateY(-38vh) scale(0.31); }
}

.firefly:nth-child(3) { animation-name: firefly-move-3; }
.firefly:nth-child(3)::before { animation-duration: 16s; }
.firefly:nth-child(3)::after {
  animation-duration: 16s, 9940ms;
  animation-delay: 0ms, 4749ms;
}
@keyframes firefly-move-3 {
  0% { transform: translateX(-31vw) translateY(48vh) scale(0.25); }
  6.25% { transform: translateX(41vw) translateY(21vh) scale(0.58); }
  12.5% { transform: translateX(-44vw) translateY(19vh) scale(0.49); }
  18.75% { transform: translateX(-41vw) translateY(17vh) scale(0.28); }
  25% { transform: translateX(-39vw) translateY(-33vh) scale(0.36); }
  31.25% { transform: translateX(16vw) translateY(-13vh) scale(0.61); }
  37.5% { transform: translateX(39vw) translateY(35vh) scale(0.59); }
  43.75% { transform: translateX(-45vw) translateY(-50vh) scale(0.62); }
  50% { transform: translateX(21vw) translateY(-39vh) scale(0.78); }
  56.25% { transform: translateX(-35vw) translateY(-45vh) scale(0.29); }
  62.5% { transform: translateX(36vw) translateY(-25vh) scale(0.75); }
  68.75% { transform: translateX(34vw) translateY(34vh) scale(0.49); }
  75% { transform: translateX(0vw) translateY(15vh) scale(0.41); }
  81.25% { transform: translateX(5vw) translateY(-26vh) scale(0.98); }
  87.5% { transform: translateX(-35vw) translateY(41vh) scale(0.63); }
  93.75% { transform: translateX(-20vw) translateY(-26vh) scale(0.95); }
  100% { transform: translateX(-17vw) translateY(27vh) scale(0.79); }
}

.firefly:nth-child(4) { animation-name: firefly-move-4; }
.firefly:nth-child(4)::before { animation-duration: 13s; }
.firefly:nth-child(4)::after {
  animation-duration: 13s, 10743ms;
  animation-delay: 0ms, 7253ms;
}
@keyframes firefly-move-4 {
  0% { transform: translateX(23vw) translateY(26vh) scale(0.26); }
  5.56% { transform: translateX(9vw) translateY(41vh) scale(0.26); }
  11.11% { transform: translateX(13vw) translateY(34vh) scale(0.75); }
  16.67% { transform: translateX(-31vw) translateY(-1vh) scale(0.93); }
  22.22% { transform: translateX(-16vw) translateY(-48vh) scale(0.42); }
  27.78% { transform: translateX(27vw) translateY(-23vh) scale(0.25); }
  33.33% { transform: translateX(21vw) translateY(7vh) scale(0.67); }
  38.89% { transform: translateX(-46vw) translateY(2vh) scale(0.86); }
  44.44% { transform: translateX(-47vw) translateY(36vh) scale(0.79); }
  50% { transform: translateX(-11vw) translateY(-21vh) scale(0.75); }
  55.56% { transform: translateX(-40vw) translateY(31vh) scale(0.86); }
  61.11% { transform: translateX(27vw) translateY(-5vh) scale(0.96); }
  66.67% { transform: translateX(-23vw) translateY(-28vh) scale(0.83); }
  72.22% { transform: translateX(-39vw) translateY(10vh) scale(0.57); }
  77.78% { transform: translateX(37vw) translateY(-44vh) scale(0.91); }
  83.33% { transform: translateX(-45vw) translateY(2vh) scale(0.39); }
  88.89% { transform: translateX(33vw) translateY(-37vh) scale(0.44); }
  94.44% { transform: translateX(-45vw) translateY(-47vh) scale(0.42); }
  100% { transform: translateX(-16vw) translateY(-4vh) scale(0.99); }
}

.firefly:nth-child(5) { animation-name: firefly-move-5; }
.firefly:nth-child(5)::before { animation-duration: 11s; }
.firefly:nth-child(5)::after {
  animation-duration: 11s, 5723ms;
  animation-delay: 0ms, 3561ms;
}
@keyframes firefly-move-5 {
  0% { transform: translateX(-4vw) translateY(-13vh) scale(0.8); }
  4.55% { transform: translateX(5vw) translateY(48vh) scale(0.96); }
  9.09% { transform: translateX(32vw) translateY(-29vh) scale(0.5); }
  13.64% { transform: translateX(-47vw) translateY(-48vh) scale(0.76); }
  18.18% { transform: translateX(-5vw) translateY(-19vh) scale(0.88); }
  22.73% { transform: translateX(-36vw) translateY(9vh) scale(1); }
  27.27% { transform: translateX(-1vw) translateY(7vh) scale(0.91); }
  31.82% { transform: translateX(-2vw) translateY(45vh) scale(0.77); }
  36.36% { transform: translateX(28vw) translateY(-7vh) scale(0.63); }
  40.91% { transform: translateX(25vw) translateY(31vh) scale(0.6); }
  45.45% { transform: translateX(-9vw) translateY(31vh) scale(0.66); }
  50% { transform: translateX(-30vw) translateY(-36vh) scale(0.59); }
  54.55% { transform: translateX(0vw) translateY(33vh) scale(0.45); }
  59.09% { transform: translateX(-35vw) translateY(2vh) scale(0.78); }
  63.64% { transform: translateX(-30vw) translateY(13vh) scale(0.52); }
  68.18% { transform: translateX(-14vw) translateY(-33vh) scale(0.5); }
  72.73% { transform: translateX(-3vw) translateY(36vh) scale(0.47); }
  77.27% { transform: translateX(-7vw) translateY(6vh) scale(0.86); }
  81.82% { transform: translateX(34vw) translateY(40vh) scale(0.42); }
  86.36% { transform: translateX(8vw) translateY(27vh) scale(0.91); }
  90.91% { transform: translateX(28vw) translateY(-23vh) scale(0.86); }
  95.45% { transform: translateX(-20vw) translateY(-46vh) scale(0.94); }
  100% { transform: translateX(19vw) translateY(22vh) scale(0.49); }
}

.firefly:nth-child(6) { animation-name: firefly-move-6; }
.firefly:nth-child(6)::before { animation-duration: 18s; }
.firefly:nth-child(6)::after {
  animation-duration: 18s, 8142ms;
  animation-delay: 0ms, 519ms;
}
@keyframes firefly-move-6 {
  0% { transform: translateX(-13vw) translateY(-21vh) scale(0.93); }
  4.55% { transform: translateX(10vw) translateY(36vh) scale(0.5); }
  9.09% { transform: translateX(13vw) translateY(4vh) scale(0.83); }
  13.64% { transform: translateX(-26vw) translateY(-34vh) scale(0.97); }
  18.18% { transform: translateX(-45vw) translateY(-18vh) scale(0.52); }
  22.73% { transform: translateX(9vw) translateY(-44vh) scale(0.94); }
  27.27% { transform: translateX(29vw) translateY(-32vh) scale(0.25); }
  31.82% { transform: translateX(9vw) translateY(0vh) scale(0.65); }
  36.36% { transform: translateX(-38vw) translateY(-1vh) scale(0.71); }
  40.91% { transform: translateX(-21vw) translateY(25vh) scale(0.42); }
  45.45% { transform: translateX(16vw) translateY(-2vh) scale(0.36); }
  50% { transform: translateX(-34vw) translateY(20vh) scale(0.79); }
  54.55% { transform: translateX(38vw) translateY(-31vh) scale(0.26); }
  59.09% { transform: translateX(4vw) translateY(49vh) scale(0.64); }
  63.64% { transform: translateX(3vw) translateY(26vh) scale(0.47); }
  68.18% { transform: translateX(-22vw) translateY(7vh) scale(0.47); }
  72.73% { transform: translateX(44vw) translateY(35vh) scale(0.39); }
  77.27% { transform: translateX(11vw) translateY(28vh) scale(0.83); }
  81.82% { transform: translateX(-47vw) translateY(-48vh) scale(0.4); }
  86.36% { transform: translateX(47vw) translateY(-49vh) scale(0.34); }
  90.91% { transform: translateX(-25vw) translateY(-48vh) scale(0.49); }
  95.45% { transform: translateX(-34vw) translateY(-14vh) scale(0.65); }
  100% { transform: translateX(-21vw) translateY(-43vh) scale(0.27); }
}

.firefly:nth-child(7) { animation-name: firefly-move-7; }
.firefly:nth-child(7)::before { animation-duration: 13s; }
.firefly:nth-child(7)::after {
  animation-duration: 13s, 7160ms;
  animation-delay: 0ms, 8384ms;
}
@keyframes firefly-move-7 {
  0% { transform: translateX(-30vw) translateY(41vh) scale(0.97); }
  4.17% { transform: translateX(-11vw) translateY(17vh) scale(0.79); }
  8.33% { transform: translateX(-42vw) translateY(-41vh) scale(0.36); }
  12.5% { transform: translateX(-13vw) translateY(42vh) scale(0.56); }
  16.67% { transform: translateX(-17vw) translateY(24vh) scale(0.48); }
  20.83% { transform: translateX(-32vw) translateY(14vh) scale(0.84); }
  25% { transform: translateX(-14vw) translateY(28vh) scale(0.82); }
  29.17% { transform: translateX(50vw) translateY(-30vh) scale(0.85); }
  33.33% { transform: translateX(-1vw) translateY(-42vh) scale(0.85); }
  37.5% { transform: translateX(49vw) translateY(32vh) scale(0.49); }
  41.67% { transform: translateX(-41vw) translateY(-26vh) scale(0.72); }
  45.83% { transform: translateX(-5vw) translateY(46vh) scale(0.73); }
  50% { transform: translateX(-10vw) translateY(-20vh) scale(0.48); }
  54.17% { transform: translateX(20vw) translateY(19vh) scale(0.73); }
  58.33% { transform: translateX(-28vw) translateY(8vh) scale(0.5); }
  62.5% { transform: translateX(25vw) translateY(-36vh) scale(0.89); }
  66.67% { transform: translateX(-11vw) translateY(46vh) scale(0.46); }
  70.83% { transform: translateX(-44vw) translateY(32vh) scale(0.33); }
  75% { transform: translateX(-25vw) translateY(25vh) scale(0.93); }
  79.17% { transform: translateX(-44vw) translateY(-5vh) scale(0.38); }
  83.33% { transform: translateX(-50vw) translateY(10vh) scale(0.79); }
  87.5% { transform: translateX(-50vw) translateY(-38vh) scale(0.35); }
  91.67% { transform: translateX(-1vw) translateY(-46vh) scale(0.32); }
  95.83% { transform: translateX(-50vw) translateY(-29vh) scale(0.34); }
  100% { transform: translateX(33vw) translateY(1vh) scale(0.48); }
}

.firefly:nth-child(8) { animation-name: firefly-move-8; }
.firefly:nth-child(8)::before { animation-duration: 8s; }
.firefly:nth-child(8)::after {
  animation-duration: 8s, 6956ms;
  animation-delay: 0ms, 4768ms;
}
@keyframes firefly-move-8 {
  0% { transform: translateX(30vw) translateY(16vh) scale(0.64); }
  4.35% { transform: translateX(-49vw) translateY(-31vh) scale(0.39); }
  8.7% { transform: translateX(-32vw) translateY(-9vh) scale(0.84); }
  13.04% { transform: translateX(17vw) translateY(-30vh) scale(0.6); }
  17.39% { transform: translateX(-14vw) translateY(38vh) scale(0.26); }
  21.74% { transform: translateX(-39vw) translateY(-21vh) scale(0.31); }
  26.09% { transform: translateX(49vw) translateY(11vh) scale(0.95); }
  30.43% { transform: translateX(-44vw) translateY(-27vh) scale(0.25); }
  34.78% { transform: translateX(-8vw) translateY(13vh) scale(0.26); }
  39.13% { transform: translateX(12vw) translateY(-35vh) scale(0.94); }
  43.48% { transform: translateX(-24vw) translateY(-33vh) scale(0.45); }
  47.83% { transform: translateX(17vw) translateY(19vh) scale(0.93); }
  52.17% { transform: translateX(1vw) translateY(2vh) scale(0.25); }
  56.52% { transform: translateX(-50vw) translateY(-47vh) scale(0.62); }
  60.87% { transform: translateX(11vw) translateY(26vh) scale(0.5); }
  65.22% { transform: translateX(14vw) translateY(21vh) scale(0.69); }
  69.57% { transform: translateX(-7vw) translateY(33vh) scale(0.96); }
  73.91% { transform: translateX(-11vw) translateY(-29vh) scale(0.59); }
  78.26% { transform: translateX(-5vw) translateY(41vh) scale(0.74); }
  82.61% { transform: translateX(25vw) translateY(-38vh) scale(0.79); }
  86.96% { transform: translateX(-25vw) translateY(42vh) scale(0.45); }
  91.3% { transform: translateX(32vw) translateY(17vh) scale(1); }
  95.65% { transform: translateX(-40vw) translateY(42vh) scale(0.7); }
  100% { transform: translateX(18vw) translateY(30vh) scale(0.59); }
}

.firefly:nth-child(9) { animation-name: firefly-move-9; }
.firefly:nth-child(9)::before { animation-duration: 18s; }
.firefly:nth-child(9)::after {
  animation-duration: 18s, 6459ms;
  animation-delay: 0ms, 5515ms;
}
@keyframes firefly-move-9 {
  0% { transform: translateX(-2vw) translateY(15vh) scale(0.59); }
  5.56% { transform: translateX(-6vw) translateY(-22vh) scale(0.75); }
  11.11% { transform: translateX(-44vw) translateY(-48vh) scale(0.77); }
  16.67% { transform: translateX(-29vw) translateY(-5vh) scale(0.88); }
  22.22% { transform: translateX(16vw) translateY(-34vh) scale(0.85); }
  27.78% { transform: translateX(-33vw) translateY(-17vh) scale(0.72); }
  33.33% { transform: translateX(-40vw) translateY(36vh) scale(0.49); }
  38.89% { transform: translateX(-30vw) translateY(-6vh) scale(0.68); }
  44.44% { transform: translateX(16vw) translateY(4vh) scale(0.44); }
  50% { transform: translateX(17vw) translateY(-37vh) scale(0.6); }
  55.56% { transform: translateX(2vw) translateY(29vh) scale(0.83); }
  61.11% { transform: translateX(42vw) translateY(-18vh) scale(0.83); }
  66.67% { transform: translateX(-47vw) translateY(-40vh) scale(0.68); }
  72.22% { transform: translateX(32vw) translateY(16vh) scale(0.53); }
  77.78% { transform: translateX(-47vw) translateY(8vh) scale(0.35); }
  83.33% { transform: translateX(-45vw) translateY(41vh) scale(0.98); }
  88.89% { transform: translateX(-16vw) translateY(10vh) scale(0.31); }
  94.44% { transform: translateX(-38vw) translateY(-14vh) scale(0.57); }
  100% { transform: translateX(23vw) translateY(38vh) scale(0.89); }
}

.firefly:nth-child(10) { animation-name: firefly-move-10; }
.firefly:nth-child(10)::before { animation-duration: 15s; }
.firefly:nth-child(10)::after {
  animation-duration: 15s, 8012ms;
  animation-delay: 0ms, 4984ms;
}
@keyframes firefly-move-10 {
  0% { transform: translateX(20vw) translateY(14vh) scale(0.81); }
  4% { transform: translateX(35vw) translateY(-23vh) scale(0.52); }
  8% { transform: translateX(50vw) translateY(5vh) scale(0.92); }
  12% { transform: translateX(42vw) translateY(-48vh) scale(0.38); }
  16% { transform: translateX(47vw) translateY(15vh) scale(0.73); }
  20% { transform: translateX(27vw) translateY(11vh) scale(0.4); }
  24% { transform: translateX(-43vw) translateY(49vh) scale(0.86); }
  28% { transform: translateX(45vw) translateY(50vh) scale(0.25); }
  32% { transform: translateX(-6vw) translateY(-20vh) scale(0.39); }
  36% { transform: translateX(23vw) translateY(45vh) scale(0.86); }
  40% { transform: translateX(13vw) translateY(-48vh) scale(0.75); }
  44% { transform: translateX(16vw) translateY(31vh) scale(0.65); }
  48% { transform: translateX(-47vw) translateY(-28vh) scale(0.83); }
  52% { transform: translateX(6vw) translateY(41vh) scale(0.47); }
  56% { transform: translateX(-49vw) translateY(-18vh) scale(0.68); }
  60% { transform: translateX(2vw) translateY(-18vh) scale(0.58); }
  64% { transform: translateX(-31vw) translateY(32vh) scale(0.53); }
  68% { transform: translateX(-25vw) translateY(23vh) scale(0.79); }
  72% { transform: translateX(35vw) translateY(-2vh) scale(0.48); }
  76% { transform: translateX(-6vw) translateY(9vh) scale(0.81); }
  80% { transform: translateX(41vw) translateY(30vh) scale(0.99); }
  84% { transform: translateX(14vw) translateY(39vh) scale(0.74); }
  88% { transform: translateX(4vw) translateY(-49vh) scale(0.43); }
  92% { transform: translateX(-42vw) translateY(42vh) scale(0.62); }
  96% { transform: translateX(10vw) translateY(-5vh) scale(0.83); }
  100% { transform: translateX(44vw) translateY(-32vh) scale(0.32); }
}

.firefly:nth-child(11) { animation-name: firefly-move-11; }
.firefly:nth-child(11)::before { animation-duration: 16s; }
.firefly:nth-child(11)::after {
  animation-duration: 16s, 7474ms;
  animation-delay: 0ms, 1379ms;
}
@keyframes firefly-move-11 {
  0% { transform: translateX(-16vw) translateY(44vh) scale(0.63); }
  5% { transform: translateX(-25vw) translateY(42vh) scale(0.61); }
  10% { transform: translateX(-20vw) translateY(45vh) scale(0.55); }
  15% { transform: translateX(28vw) translateY(-10vh) scale(0.82); }
  20% { transform: translateX(26vw) translateY(-36vh) scale(0.86); }
  25% { transform: translateX(3vw) translateY(-28vh) scale(0.95); }
  30% { transform: translateX(17vw) translateY(43vh) scale(0.93); }
  35% { transform: translateX(40vw) translateY(-34vh) scale(0.75); }
  40% { transform: translateX(16vw) translateY(26vh) scale(0.8); }
  45% { transform: translateX(-22vw) translateY(30vh) scale(0.82); }
  50% { transform: translateX(-37vw) translateY(32vh) scale(0.41); }
  55% { transform: translateX(18vw) translateY(-47vh) scale(0.6); }
  60% { transform: translateX(-7vw) translateY(-16vh) scale(0.59); }
  65% { transform: translateX(38vw) translateY(10vh) scale(0.33); }
  70% { transform: translateX(24vw) translateY(-15vh) scale(0.26); }
  75% { transform: translateX(41vw) translateY(-16vh) scale(0.86); }
  80% { transform: translateX(27vw) translateY(7vh) scale(0.32); }
  85% { transform: translateX(23vw) translateY(-27vh) scale(1); }
  90% { transform: translateX(-44vw) translateY(-27vh) scale(0.75); }
  95% { transform: translateX(14vw) translateY(-24vh) scale(0.87); }
  100% { transform: translateX(-43vw) translateY(-38vh) scale(0.9); }
}

.firefly:nth-child(12) { animation-name: firefly-move-12; }
.firefly:nth-child(12)::before { animation-duration: 11s; }
.firefly:nth-child(12)::after {
  animation-duration: 11s, 10200ms;
  animation-delay: 0ms, 3797ms;
}
@keyframes firefly-move-12 {
  0% { transform: translateX(-16vw) translateY(39vh) scale(0.68); }
  4.17% { transform: translateX(-15vw) translateY(-47vh) scale(0.86); }
  8.33% { transform: translateX(36vw) translateY(48vh) scale(0.28); }
  12.5% { transform: translateX(-18vw) translateY(-31vh) scale(0.49); }
  16.67% { transform: translateX(-15vw) translateY(-20vh) scale(0.31); }
  20.83% { transform: translateX(-49vw) translateY(-15vh) scale(0.81); }
  25% { transform: translateX(30vw) translateY(43vh) scale(0.57); }
  29.17% { transform: translateX(-28vw) translateY(7vh) scale(0.48); }
  33.33% { transform: translateX(19vw) translateY(-10vh) scale(0.35); }
  37.5% { transform: translateX(-19vw) translateY(1vh) scale(0.67); }
  41.67% { transform: translateX(4vw) translateY(4vh) scale(0.71); }
  45.83% { transform: translateX(12vw) translateY(13vh) scale(0.41); }
  50% { transform: translateX(-31vw) translateY(16vh) scale(0.31); }
  54.17% { transform: translateX(-24vw) translateY(-49vh) scale(0.45); }
  58.33% { transform: translateX(-20vw) translateY(31vh) scale(0.92); }
  62.5% { transform: translateX(37vw) translateY(8vh) scale(0.3); }
  66.67% { transform: translateX(28vw) translateY(34vh) scale(0.77); }
  70.83% { transform: translateX(40vw) translateY(29vh) scale(0.56); }
  75% { transform: translateX(36vw) translateY(-26vh) scale(0.7); }
  79.17% { transform: translateX(-20vw) translateY(12vh) scale(0.95); }
  83.33% { transform: translateX(-3vw) translateY(-9vh) scale(0.27); }
  87.5% { transform: translateX(-45vw) translateY(34vh) scale(0.97); }
  91.67% { transform: translateX(-13vw) translateY(-16vh) scale(0.88); }
  95.83% { transform: translateX(49vw) translateY(34vh) scale(0.83); }
  100% { transform: translateX(30vw) translateY(26vh) scale(0.62); }
}

.firefly:nth-child(13) { animation-name: firefly-move-13; }
.firefly:nth-child(13)::before { animation-duration: 17s; }
.firefly:nth-child(13)::after {
  animation-duration: 17s, 5630ms;
  animation-delay: 0ms, 6729ms;
}
@keyframes firefly-move-13 {
  0% { transform: translateX(-33vw) translateY(35vh) scale(0.75); }
  4.17% { transform: translateX(-40vw) translateY(-41vh) scale(0.81); }
  8.33% { transform: translateX(1vw) translateY(-30vh) scale(0.66); }
  12.5% { transform: translateX(40vw) translateY(20vh) scale(0.77); }
  16.67% { transform: translateX(48vw) translateY(-2vh) scale(0.51); }
  20.83% { transform: translateX(-13vw) translateY(-1vh) scale(0.26); }
  25% { transform: translateX(44vw) translateY(-32vh) scale(0.52); }
  29.17% { transform: translateX(26vw) translateY(-7vh) scale(0.6); }
  33.33% { transform: translateX(27vw) translateY(-16vh) scale(0.34); }
  37.5% { transform: translateX(-26vw) translateY(-27vh) scale(0.98); }
  41.67% { transform: translateX(-34vw) translateY(-46vh) scale(0.54); }
  45.83% { transform: translateX(31vw) translateY(-34vh) scale(0.93); }
  50% { transform: translateX(24vw) translateY(8vh) scale(0.46); }
  54.17% { transform: translateX(18vw) translateY(35vh) scale(0.92); }
  58.33% { transform: translateX(12vw) translateY(13vh) scale(0.6); }
  62.5% { transform: translateX(-17vw) translateY(14vh) scale(0.45); }
  66.67% { transform: translateX(34vw) translateY(35vh) scale(0.91); }
  70.83% { transform: translateX(-30vw) translateY(5vh) scale(0.89); }
  75% { transform: translateX(8vw) translateY(22vh) scale(0.42); }
  79.17% { transform: translateX(3vw) translateY(37vh) scale(0.78); }
  83.33% { transform: translateX(8vw) translateY(-45vh) scale(0.84); }
  87.5% { transform: translateX(-14vw) translateY(20vh) scale(0.79); }
  91.67% { transform: translateX(21vw) translateY(11vh) scale(0.38); }
  95.83% { transform: translateX(5vw) translateY(14vh) scale(0.42); }
  100% { transform: translateX(8vw) translateY(-38vh) scale(0.58); }
}

.firefly:nth-child(14) { animation-name: firefly-move-14; }
.firefly:nth-child(14)::before { animation-duration: 14s; }
.firefly:nth-child(14)::after {
  animation-duration: 14s, 6618ms;
  animation-delay: 0ms, 3940ms;
}
@keyframes firefly-move-14 {
  0% { transform: translateX(9vw) translateY(-13vh) scale(1); }
  4.35% { transform: translateX(-15vw) translateY(-24vh) scale(0.85); }
  8.7% { transform: translateX(-9vw) translateY(17vh) scale(0.48); }
  13.04% { transform: translateX(26vw) translateY(3vh) scale(0.5); }
  17.39% { transform: translateX(4vw) translateY(24vh) scale(0.71); }
  21.74% { transform: translateX(18vw) translateY(-37vh) scale(0.31); }
  26.09% { transform: translateX(40vw) translateY(-10vh) scale(0.69); }
  30.43% { transform: translateX(-24vw) translateY(-2vh) scale(0.81); }
  34.78% { transform: translateX(-5vw) translateY(-20vh) scale(0.44); }
  39.13% { transform: translateX(-26vw) translateY(-20vh) scale(0.4); }
  43.48% { transform: translateX(44vw) translateY(8vh) scale(0.8); }
  47.83% { transform: translateX(-41vw) translateY(-14vh) scale(0.41); }
  52.17% { transform: translateX(-42vw) translateY(16vh) scale(0.86); }
  56.52% { transform: translateX(-9vw) translateY(-1vh) scale(0.79); }
  60.87% { transform: translateX(-36vw) translateY(-36vh) scale(0.47); }
  65.22% { transform: translateX(16vw) translateY(41vh) scale(0.98); }
  69.57% { transform: translateX(5vw) translateY(-16vh) scale(0.97); }
  73.91% { transform: translateX(-25vw) translateY(31vh) scale(0.25); }
  78.26% { transform: translateX(27vw) translateY(10vh) scale(0.77); }
  82.61% { transform: translateX(12vw) translateY(-6vh) scale(0.84); }
  86.96% { transform: translateX(-22vw) translateY(11vh) scale(0.72); }
  91.3% { transform: translateX(-40vw) translateY(32vh) scale(0.32); }
  95.65% { transform: translateX(-43vw) translateY(-29vh) scale(0.8); }
  100% { transform: translateX(22vw) translateY(-2vh) scale(0.58); }
}

.firefly:nth-child(15) { animation-name: firefly-move-15; }
.firefly:nth-child(15)::before { animation-duration: 18s; }
.firefly:nth-child(15)::after {
  animation-duration: 18s, 7096ms;
  animation-delay: 0ms, 8075ms;
}
@keyframes firefly-move-15 {
  0% { transform: translateX(47vw) translateY(33vh) scale(0.56); }
  6.25% { transform: translateX(-48vw) translateY(17vh) scale(0.98); }
  12.5% { transform: translateX(2vw) translateY(20vh) scale(0.81); }
  18.75% { transform: translateX(-12vw) translateY(8vh) scale(0.8); }
  25% { transform: translateX(-11vw) translateY(25vh) scale(0.52); }
  31.25% { transform: translateX(-48vw) translateY(43vh) scale(0.41); }
  37.5% { transform: translateX(6vw) translateY(-2vh) scale(0.42); }
  43.75% { transform: translateX(-2vw) translateY(31vh) scale(0.28); }
  50% { transform: translateX(16vw) translateY(31vh) scale(0.67); }
  56.25% { transform: translateX(-14vw) translateY(-22vh) scale(0.36); }
  62.5% { transform: translateX(-8vw) translateY(-20vh) scale(0.69); }
  68.75% { transform: translateX(-47vw) translateY(44vh) scale(0.83); }
  75% { transform: translateX(39vw) translateY(-49vh) scale(0.44); }
  81.25% { transform: translateX(-5vw) translateY(-26vh) scale(0.93); }
  87.5% { transform: translateX(-36vw) translateY(12vh) scale(0.43); }
  93.75% { transform: translateX(20vw) translateY(30vh) scale(0.87); }
  100% { transform: translateX(-46vw) translateY(37vh) scale(0.89); }
}
