/* Five physical entrances: no fades, non-interactive, behind content. */
.candy-encounter{position:absolute;pointer-events:none;width:65px;height:104px;z-index:0;will-change:transform;animation-duration:19s;animation-iteration-count:infinite;animation-fill-mode:both;animation-timing-function:ease-in-out}
.candy-encounter svg{position:absolute;inset:0;width:100%;height:100%}.candy-encounter img{position:absolute;width:56px;height:65px;object-fit:contain;bottom:0;left:4px;filter:drop-shadow(0 2px 1px #007faa33)}
.encounter-parachute{left:2%;top:0;height:148px;animation-name:candy-parachute;animation-delay:-3s}.encounter-parachute img{bottom:0;height:54px}
.encounter-somersault{right:-5px;top:37%;height:72px;animation-name:candy-somersault;animation-delay:-9s}
.encounter-swing{right:0;top:4%;height:155px;transform-origin:50% -50px;animation-name:candy-swing;animation-delay:-12s}.encounter-swing img{bottom:21px}
.encounter-surfer{left:-6px;top:71%;width:76px;height:90px;animation-name:candy-surf;animation-delay:-5s}.encounter-surfer img{bottom:17px;left:10px}
.encounter-peek{right:-9px;top:83%;height:70px;animation-name:candy-peek;animation-delay:-15s}
@keyframes candy-parachute{0%{transform:translateY(-180px) rotate(-8deg)}10%{transform:translateY(65px) rotate(8deg)}22%{transform:translateY(120px) rotate(-9deg)}34%{transform:translate(-95px,180px) rotate(14deg)}35%,100%{transform:translate(-140px,190px)}}
@keyframes candy-somersault{0%,4%{transform:translateX(100px)}10%{transform:translateX(0) rotate(-15deg)}15%{transform:translate(-8px,-34px) rotate(-180deg)}21%{transform:translate(0,0) rotate(-360deg)}25%{transform:translate(0,4px) rotate(-360deg)}30%,100%{transform:translateX(100px) rotate(-360deg)}}
@keyframes candy-swing{0%{transform:rotate(-80deg) translateY(-200px)}12%{transform:rotate(11deg)}22%{transform:rotate(-8deg)}30%{transform:rotate(9deg)}38%,100%{transform:rotate(-80deg) translateY(-200px)}}
@keyframes candy-surf{0%{transform:translateX(-120px) rotate(-12deg)}9%{transform:translate(0,-12px) rotate(8deg)}18%{transform:translate(6px,9px) rotate(-6deg)}28%{transform:translate(0,-8px) rotate(8deg)}36%,100%{transform:translateX(-120px) rotate(-12deg)}}
@keyframes candy-peek{0%{transform:translateX(100px) rotate(-20deg)}10%{transform:translateX(0) rotate(-18deg)}16%{transform:translate(0,-18px) rotate(8deg)}23%{transform:translate(0,0) rotate(-8deg)}31%,100%{transform:translateX(100px) rotate(35deg)}}
.paused .candy-encounter,.page-hidden .candy-encounter{animation-play-state:paused!important}
@media(min-width:751px){.candy-encounter{width:100px;height:140px}.candy-encounter img{width:80px;height:86px}.encounter-parachute,.encounter-swing{height:205px}.encounter-somersault,.encounter-peek{right:12%}.encounter-surfer{left:14%}.encounter-parachute{left:16%}.encounter-swing{right:18%}}
@media(prefers-reduced-motion:reduce){.candy-encounter{display:none}}
.high-contrast .candy-encounter{display:none}
/* Swing ropes are anchored to the top edge, never floating midway down the sky. */
.encounter-swing{top:0!important;right:-7px!important;height:184px!important;transform-origin:50% 0;animation-name:candy-swing-anchored;animation-timing-function:cubic-bezier(.45,0,.55,1)}
.encounter-swing svg{height:100%;overflow:visible}.encounter-swing img{bottom:26px}
@keyframes candy-swing-anchored{0%,5%{transform:rotate(-100deg)}14%{transform:rotate(12deg)}24%{transform:rotate(-16deg)}34%{transform:rotate(9deg)}43%,100%{transform:rotate(-100deg)}}
@media(min-width:751px){.encounter-swing{right:0!important;height:230px!important}}

.encounter-swing img{bottom:20%;left:4px}

/* A single rigid swing assembly: parallel ropes, seat and rider share one pivot. */
.candy-encounter{animation-duration:30s!important}
.encounter-parachute{animation-delay:-3s}.encounter-somersault{animation-delay:-11s}.encounter-surfer{animation-delay:-17s}.encounter-peek{animation-delay:-23s}
.encounter-swing{top:0!important;right:3px!important;width:73px!important;height:171px!important;animation:none!important;transform:none!important}
.encounter-swing svg{width:100%;height:100%;overflow:visible}
.swing-rig{transform-origin:50px -55px;animation:swing-slow 30s cubic-bezier(.45,0,.55,1) -5s infinite}
@keyframes swing-slow{0%,5%{transform:rotate(-65deg)}19%{transform:rotate(7deg)}32%{transform:rotate(-9deg)}45%{transform:rotate(6deg)}58%{transform:rotate(-8deg)}74%,100%{transform:rotate(-65deg)}}
.paused .swing-rig,.page-hidden .swing-rig{animation-play-state:paused!important}
@media(min-width:751px){.encounter-swing{right:25px!important;width:98px!important;height:225px!important}}
@media(prefers-reduced-motion:reduce){.encounter-swing{display:none!important}.swing-rig{animation:none!important}}

/* Two curious friends: arrive, offer a real SweetBox, receive, nod, depart.
   Each image keeps its native aspect ratio. No squash, stretch, or fading. */
.candy-friends{position:absolute;left:0;top:56%;width:128px;height:100px;overflow:hidden;pointer-events:none!important;user-select:none;z-index:0}
.candy-friends svg{display:block;width:100%;height:100%;overflow:hidden;pointer-events:none}
.friend-giver,.friend-receiver,.friend-present{animation-duration:36s;animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite;animation-fill-mode:both;animation-delay:-6s;pointer-events:none}
.friend-giver{transform-origin:41px 114px;animation-name:friend-offer}
.friend-receiver{transform-origin:137px 116px;animation-name:friend-thanks}
.friend-present{animation-name:friend-pass}
@keyframes friend-offer{
 0%,5%{transform:translate(-110px,0) rotate(-7deg)}
 17%{transform:translate(0,0) rotate(0)}
 22%{transform:translate(1px,-3px) rotate(5deg)}
 29%,36%{transform:translate(1px,0) rotate(5deg)}
 41%{transform:translate(0,-4px) rotate(-3deg)}
 46%,53%{transform:translate(0,0) rotate(0)}
 66%,100%{transform:translate(-110px,0) rotate(-7deg)}
}
@keyframes friend-thanks{
 0%,10%{transform:translate(110px,0) rotate(6deg)}
 23%{transform:translate(0,0) rotate(0)}
 29%,34%{transform:translate(-2px,0) rotate(-8deg)}
 39%{transform:translate(0,-6px) rotate(3deg)}
 44%{transform:translate(0,0) rotate(0)}
 48%{transform:translate(0,2px) rotate(-4deg)}
 53%{transform:translate(0,0) rotate(0)}
 68%,100%{transform:translate(110px,0) rotate(6deg)}
}
@keyframes friend-pass{
 0%,5%{transform:translate(-110px,0) rotate(-7deg)}
 17%,22%{transform:translate(0,0) rotate(0)}
 29%{transform:translate(12px,-7px) rotate(3deg)}
 35%{transform:translate(30px,0) rotate(0)}
 39%{transform:translate(30px,-6px) rotate(3deg)}
 44%{transform:translate(30px,0) rotate(0)}
 48%{transform:translate(30px,2px) rotate(-4deg)}
 53%{transform:translate(30px,0) rotate(0)}
 68%,100%{transform:translate(140px,0) rotate(6deg)}
}
.paused .candy-friends g,.page-hidden .candy-friends g{animation-play-state:paused!important}
@media(min-width:751px){.candy-friends{left:clamp(0px,calc((100vw - 730px)/2 - 165px),15%);width:166px;height:125px;top:54%}}
@media(max-width:400px){.candy-friends{width:105px;height:80px}}
@media(prefers-reduced-motion:reduce){.candy-friends{display:none!important}.candy-friends g{animation:none!important}}
.high-contrast .candy-friends{display:none!important}
