.gdb-layer {
  position: fixed;
  inset: 0;
  z-index: 2147482000;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  pointer-events: none;
  contain: layout style paint;
}

.gdb-bee,
.gdb-flower {
  position: fixed;
  left: 0;
  top: 0;
  pointer-events: none;
  transform-origin: center center;
  will-change: transform, opacity;
}

.gdb-bee {
  z-index: 2;
  width: 52px;
  height: 40px;
  opacity: 0;
  visibility: hidden;
}

.gdb-bee.is-visible {
  opacity: 1;
  visibility: visible;
}

.gdb-bee-view {
  position: relative;
  width: 100%;
  height: 100%;
  transition: transform 180ms linear;
  filter: drop-shadow(0 1px 1px rgba(25, 18, 10, 0.16));
  transform-origin: 50% 55%;
}

.gdb-bee-view img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  user-select: none;
  -webkit-user-drag: none;
  transform-origin: 50% 50%;
}

.gdb-bee-base {
  z-index: 1;
}

.gdb-bee-wings {
  z-index: 2;
  opacity: .88;
}

.gdb-bee-legs {
  z-index: 3;
  opacity: 0;
}

/*
 * The approved new bee artwork is raster. The full approved view is always the
 * base image. Separate locally-derived wing/leg masks are layered on top so the
 * approved drawing itself remains visible while motion is added non-destructively.
 */
.gdb-bee.is-flying .gdb-bee-wings {
  animation: gdb-raster-wing-flight 105ms ease-in-out infinite alternate;
}

.gdb-bee.is-preparing .gdb-bee-wings {
  animation-duration: 155ms;
}

.gdb-bee.is-landed .gdb-bee-wings {
  animation: gdb-raster-wing-rest 620ms ease-in-out infinite alternate;
  opacity: .42;
}

.gdb-bee.is-crawling .gdb-bee-legs {
  opacity: .96;
  animation: gdb-raster-leg-crawl 190ms ease-in-out infinite alternate;
}

.gdb-bee.is-preparing .gdb-bee-legs {
  opacity: .55;
  transform: translateY(1px) scaleY(1.03);
}

.gdb-bee.is-crawling .gdb-bee-base {
  animation: gdb-raster-crawl-bob 520ms ease-in-out infinite alternate;
}

.gdb-flower {
  z-index: 0;
  width: var(--gdb-bouquet-size, 280px);
  height: var(--gdb-bouquet-size, 280px);
  opacity: 0;
  visibility: hidden;
  transition: opacity 220ms ease;
}

.gdb-flower.is-visible {
  opacity: 1;
  visibility: visible;
}

.gdb-bouquet-img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  user-select: none;
  -webkit-user-drag: none;
  filter: drop-shadow(0 3px 6px rgba(45, 31, 19, 0.12));
}

@keyframes gdb-raster-wing-flight {
  from { transform: translateY(0) rotate(-1deg) scaleY(.98); opacity: .82; }
  to { transform: translateY(-1.4px) rotate(2deg) scaleY(.88); opacity: .58; }
}

@keyframes gdb-raster-wing-rest {
  from { transform: rotate(-.7deg) scaleY(1); }
  to { transform: rotate(.7deg) scaleY(.97); }
}

@keyframes gdb-raster-leg-crawl {
  from { transform: translateX(-2.6px) translateY(.1px) rotate(-6deg) scaleX(.97); }
  to { transform: translateX(2.6px) translateY(1.8px) rotate(6deg) scaleX(1.03); }
}

@keyframes gdb-raster-crawl-bob {
  from { transform: translateY(0); }
  to { transform: translateY(-1px); }
}

@media (prefers-reduced-motion: reduce) {
  .gdb-layer {
    display: none !important;
  }
}
