/* Goose Game Global Styles */
/* Geese are absolute to the page, not fixed to viewport */
.goose {
  position: absolute;
  transform-origin: center;
  will-change: transform, opacity, left, top;
  cursor: pointer;
  pointer-events: auto;
  user-select: none;
  z-index: 45;
}

.goose.found { opacity: 0.35; }

/* Inner wrapper for wobble animation without interfering with outer translate */
.goose-inner {
  display: inline-block;
  width: 100%;
  height: 100%;
  pointer-events: none; /* click handled by outer .goose */
  filter: drop-shadow(0 1px 0.5px rgba(0,0,0,0.25)) drop-shadow(0 2px 4px rgba(0,0,0,0.15));
}

/* waddling while running to target */
@keyframes gooseWaddle {
  /* 内层轻微前后与上下抖动，模拟迈步；不影响外层位移 */
  0% { transform: translateX(0px) translateY(0px) rotate(0deg); }
  20% { transform: translateX(2.5px) translateY(-0.8px) rotate(-8.5deg); }
  50% { transform: translateX(0px) translateY(0px) rotate(0deg); }
  80% { transform: translateX(-2.5px) translateY(0.8px) rotate(8.5deg); }
  100% { transform: translateX(0px) translateY(0px) rotate(0deg); }
}

/* Fireworks canvas fixed to viewport */
#goose-fireworks {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 40;
}

/* Trophy overlay */
#goose-trophy {
  position: fixed;
  inset: 0;
  /* premium focus backdrop with subtle vignette */
  background: radial-gradient(circle at 50% 50%, rgba(255,255,255,0.97) 0%, rgba(255,255,255,0.93) 55%, rgba(255,255,255,0.88) 100%);
  backdrop-filter: blur(2px);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 9999; /* ensure overlay sits above any site headers */
}
#goose-trophy.show { display: flex; }

#goose-trophy .content {
  text-align: center;
  color: rgb(var(--black));
}
#goose-trophy .trophy-emoji { font-size: clamp(96px, 20vmin, 22vw); position: relative; z-index: 2; }
#goose-trophy .title { font-size: 24px; margin-top: 0.5rem; }
#goose-trophy .desc { font-size: 16px; opacity: 0.8; margin-top: 0.25rem; }

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  .goose { transition: none !important; }
  .goose-inner { animation: none !important; }
}
/* ===== Stage Trophy Badge (milestones) ===== */
.goose-stage {
  position: fixed;
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 120;
}
.goose-stage .badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: rgba(255, 255, 255, 0.95);
  border: 1px solid rgba(0, 0, 0, 0.28);
  border-radius: 10px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
  color: rgb(var(--black));
  animation: gooseStagePop 1600ms ease-out forwards;
}
.goose-stage .badge .emoji { font-size: 20px; }
.goose-stage .badge .text { font-size: 14px; white-space: nowrap; }

@keyframes gooseStagePop {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(0.82) translateY(0); }
  25% { opacity: 1; transform: translate(-50%, -50%) scale(1.08) translateY(-6px); }
  60% { transform: translate(-50%, -50%) scale(1.0) translateY(-18px); }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(1.0) translateY(-36px); }
}

/* ===== Fullscreen Trophy Enhancements ===== */
#goose-trophy .content { position: relative; text-align: center; }
#goose-trophy .trophy-emoji { position: relative; z-index: 3; filter: drop-shadow(0 10px 24px rgba(0,0,0,0.18)); }
#goose-trophy .trophy-emoji::before {
  content: '';
  position: absolute;
  left: 50%; top: 50%;
  /* expand rays to full-screen coverage from center */
  width: 120vmax; height: 120vmax;
  transform: translate(-50%, -50%);
  /* colorful multi-layer rays with wider stripes and spacing */
  background:
    repeating-conic-gradient(from 0deg,  rgba(255,  70,  70,  0.28) 0deg 8deg, transparent 8deg 20deg),
    repeating-conic-gradient(from 8deg,  rgba(255, 200,  60,  0.28) 0deg 8deg, transparent 8deg 20deg),
    repeating-conic-gradient(from 16deg, rgba( 60, 200, 255,  0.28) 0deg 8deg, transparent 8deg 20deg),
    repeating-conic-gradient(from 24deg, rgba(140,  85, 255,  0.28) 0deg 8deg, transparent 8deg 20deg);
  /* make a hole in the center so rays never cover the trophy itself */
  mask: radial-gradient(circle, transparent 2.4em, rgba(0,0,0,0.96) 2.8em);
  -webkit-mask: radial-gradient(circle, transparent 2.4em, rgba(0,0,0,0.96) 2.8em);
  z-index: 0; /* keep rays behind trophy */
  pointer-events: none;
  animation: raysSpin 3200ms linear infinite;
}
/* variant tints for rays */
#goose-trophy[data-variant="bronze"] .trophy-emoji::before { filter: hue-rotate(-20deg) saturate(1.05); }
#goose-trophy[data-variant="silver"] .trophy-emoji::before { filter: hue-rotate(160deg) saturate(0.95) brightness(0.98); }
#goose-trophy[data-variant="gold"] .trophy-emoji::before { filter: hue-rotate(-50deg) saturate(1.15); }
#goose-trophy[data-variant="crown"] .trophy-emoji::before { filter: hue-rotate(120deg) saturate(1.1); }
#goose-trophy[data-variant="star"] .trophy-emoji::before { filter: hue-rotate(210deg) saturate(1.1); }
/* neutral for cup retains default */
#goose-trophy .title, #goose-trophy .desc { position: relative; z-index: 3; }
.trophy-emoji.pop {
  animation: trophyPop 650ms ease-out forwards;
  transform-origin: center;
}
@keyframes trophyPop {
  0% { transform: scale(0.6); opacity: 0; }
  50% { transform: scale(1.15); opacity: 1; }
  100% { transform: scale(1.0); opacity: 1; }
}
@keyframes raysSpin {
  from { transform: translate(-50%, -50%) rotate(0deg); }
  to { transform: translate(-50%, -50%) rotate(360deg); }
}

/* ===== Start Button Tweak ===== */
#goose-start, button#goose-start, a#goose-start {
  font-size: clamp(18px, 2.6vmin, 24px);
  position: relative;
  z-index: 200; /* above .goose (45) and fireworks (40) */
  pointer-events: auto;
}

/* elegant shine sweep over the trophy surface */
#goose-trophy .trophy-emoji::after {
  content: '';
  position: absolute;
  left: 0; top: 50%;
  width: 120%; height: 42%;
  transform: translate(-10%, -50%) rotate(-18deg);
  background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.85) 50%, rgba(255,255,255,0) 100%);
  mix-blend-mode: screen;
  opacity: 0;
  pointer-events: none;
}
#goose-trophy .trophy-emoji.pop::after {
  animation: shineSweep 1100ms 200ms ease-out forwards;
}
@keyframes shineSweep {
  0% { opacity: 0; transform: translate(-60%, -50%) rotate(-18deg); }
  15% { opacity: 0.65; }
  100% { opacity: 0; transform: translate(40%, -50%) rotate(-18deg); }
}

/* text soft rise for premium polish */
#goose-trophy.show .title, #goose-trophy.show .desc {
  animation: textRise 480ms ease-out both;
}
@keyframes textRise {
  0% { opacity: 0; transform: translateY(8px); }
  100% { opacity: 1; transform: translateY(0); }
}