@keyframes villageStar{0%,to{opacity:.25;transform:scale(1)}50%{opacity:.85;transform:scale(1.4)}}.village-star{animation:villageStar var(--animation-duration,3s) ease-in-out infinite}@keyframes windowGlow{0%,to{fill-opacity:.25;filter:drop-shadow(0 0 2px rgba(251,191,36,.2))}50%{fill-opacity:.55;filter:drop-shadow(0 0 6px rgba(251,191,36,.6))}}.window-glow{animation:windowGlow 2.8s ease-in-out infinite}@keyframes moonGlow{0%,to{filter:drop-shadow(0 0 14px rgba(254,243,199,.35));transform:scale(1)}50%{filter:drop-shadow(0 0 26px rgba(254,243,199,.65));transform:scale(1.04)}}.moon-glow{animation:moonGlow 5s ease-in-out infinite}@keyframes firefly{0%,to{transform:translate(0);opacity:.3}25%{transform:translate(18px,-12px);opacity:.9}50%{transform:translate(-8px,-22px);opacity:.5}75%{transform:translate(10px,6px);opacity:.8}}.firefly{animation:firefly var(--animation-duration,10s) ease-in-out infinite}@keyframes iconFloatY{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.icon-float{animation:iconFloatY 4s ease-in-out infinite}@keyframes iconShimmer{0%{background-position:-160% 0}to{background-position:160% 0}}.icon-shimmer{background-image:linear-gradient(110deg,hsla(0,0%,100%,0) 35%,hsla(0,0%,100%,.55) 50%,hsla(0,0%,100%,0) 65%);background-size:220% 100%;animation:iconShimmer 2.8s linear infinite}@keyframes pillPulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.pill-pulse{animation:pillPulse 1.6s ease-in-out infinite}.ripple{position:relative;overflow:hidden;isolation:isolate}.ripple-ring{position:absolute;left:var(--ripple-x,50%);top:var(--ripple-y,50%);width:var(--ripple-size,0);height:var(--ripple-size,0);border-radius:9999px;background:radial-gradient(circle,var(--ripple-color,rgba(56,189,248,.25)) 0,transparent 65%);transform:translate(-50%,-50%) scale(0);opacity:0;pointer-events:none;z-index:0;animation:rippleRing .9s ease-out forwards}@keyframes rippleRing{0%{transform:translate(-50%,-50%) scale(0);opacity:.55}70%{opacity:.18}to{transform:translate(-50%,-50%) scale(1);opacity:0}}.water-ripple{position:relative;overflow:hidden}.water-ripple>.water-ripple__ring{position:absolute;left:var(--ripple-x,50%);top:var(--ripple-y,50%);width:var(--ripple-size,0);height:var(--ripple-size,0);border-radius:9999px;border:2px solid var(--ripple-color,rgba(56,189,248,.5));transform:translate(-50%,-50%) scale(0);opacity:0;pointer-events:none;animation:waterRippleExpand 1.1s ease-out forwards}@keyframes waterRippleExpand{0%{transform:translate(-50%,-50%) scale(0);opacity:.4}to{transform:translate(-50%,-50%) scale(2.5);opacity:0}}.god-ray{position:absolute;top:-25%;height:150%;width:20%;background:linear-gradient(180deg,rgba(186,230,253,.38),rgba(186,230,253,0));filter:blur(28px);transform-origin:top center;mix-blend-mode:screen;pointer-events:none;opacity:.5;will-change:transform,opacity}.god-ray--1{left:6%;transform:rotate(11deg);animation:godRaySway 16s ease-in-out infinite}.god-ray--2{left:36%;width:15%;transform:rotate(6deg);opacity:.4;animation:godRaySway 21s ease-in-out infinite;animation-delay:-6s}.god-ray--3{left:66%;width:18%;transform:rotate(15deg);opacity:.45;animation:godRaySway 18s ease-in-out infinite;animation-delay:-11s}.god-ray--4{left:84%;width:12%;transform:rotate(9deg);opacity:.35;animation:godRaySway 24s ease-in-out infinite;animation-delay:-3s}@keyframes godRaySway{0%,to{transform:rotate(8deg) translateX(0);opacity:.4}50%{transform:rotate(14deg) translateX(26px);opacity:.62}}@keyframes flowBar{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.flow-bar{background-size:200% 200%;animation:flowBar 4s ease-in-out infinite}@keyframes floatSlow{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.animate-float-slow{animation:floatSlow 5s ease-in-out infinite}@keyframes floatGentle{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.animate-float-gentle{animation:floatGentle 4s ease-in-out infinite}@keyframes slideUpFade{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.animate-slide-up{animation:slideUpFade .7s ease-out forwards}@keyframes spinSlow{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.animate-spin-slow{animation:spinSlow 8s linear infinite}.value-badge{animation:badgeBreath 2.8s ease-in-out infinite}@keyframes badgeBreath{0%,to{transform:scale(1);box-shadow:0 0 0 0 rgba(34,211,238,0)}50%{transform:scale(1.12);box-shadow:0 0 12px 2px rgba(34,211,238,.35)}}