/* GGE Project Cycle — animated 3-stage cycle (Ferris-wheel rotation) */
.ggcyc{
  --spd:10s;
  --max:460px;
  --arrow:#8FD14F;
  --card-bg:#ffffff;
  --card-shadow:#B8DC8B;
  --card-fg:#1A4029;
  --center-fg:#ffffff;
  position:relative;
  width:100%;
  max-width:var(--max);
  margin:0 auto;
  aspect-ratio:1/1;
  font-family:Montserrat,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
}
.ggcyc-wheel{
  position:absolute;
  inset:0;
}
.ggcyc-arrows{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:visible}
.ggcyc-arrows path{fill:var(--arrow)}
/* node wrapper is sized as % of the wheel so cards scale with the component */
.ggcyc-node{position:absolute;width:28%;transform:translate(-50%,-50%)}
.ggcyc-card{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:8px;
  width:100%;
  aspect-ratio:1/1;
  background:var(--card-bg);
  border:none;
  border-radius:20px;
  box-shadow:9px 9px 0 0 var(--card-shadow);
  padding:8px 12px;
  box-sizing:border-box;
  font-size:15px;
  font-weight:600;
  line-height:1.35;
  color:var(--card-fg);
  text-align:center;
  text-decoration:none;
}
a.ggcyc-card:hover{filter:brightness(1.08)}
.ggcyc-ci{display:block;height:32px}
.ggcyc-ci svg{height:100%;width:auto;display:block;margin:0 auto}
.ggcyc-center{
  position:absolute;top:50%;left:50%;
  transform:translate(-50%,-50%);
  text-align:center;
  color:var(--center-fg);
  font-size:14px;font-weight:600;line-height:1.55;
  pointer-events:none;
  max-width:52%;
}
.ggcyc-center::after{content:"";display:block;width:70%;height:2px;background:var(--arrow);margin:14px auto 0;opacity:.9}
/* pause on hover */
.ggcyc:hover .ggcyc-arrows path{animation-play-state:paused}
/* static variant (spin="off") */
.ggcyc--static .ggcyc-arrows *{animation:none!important}.ggcyc--static .ggcyc-arrows path{opacity:1}
/* light theme (e.g. Delivery page, light background) */
.ggcyc.theme-light{--center-fg:#1A4029}
@media(prefers-reduced-motion:reduce){
  .ggcyc-arrows *{animation:none!important}
}
@media(max-width:600px){
  .ggcyc-card{font-size:12px;border-radius:15px;box-shadow:6px 6px 0 0 var(--card-shadow)}
  .ggcyc-center{font-size:12px}
}

/* ---- effects ---- */
.ggcyc--fx-flow .fxbase path{opacity:.85}
.ggcyc--fx-pulse .ggcyc-arrows path{opacity:.38;animation:ggcyc-flow calc(var(--spd)/3) ease-in-out infinite}.ggcyc--fx-pulse .ggcyc-arrows path:nth-of-type(2){animation-delay:calc(var(--spd)/9)}.ggcyc--fx-pulse .ggcyc-arrows path:nth-of-type(3){animation-delay:calc(var(--spd)/9*2)}@keyframes ggcyc-flow{0%,58%,100%{opacity:.38;fill:var(--arrow);filter:drop-shadow(0 0 0 rgba(160,225,80,0))}20%{opacity:1;fill:#C8EA6A;filter:drop-shadow(0 0 10px rgba(180,235,95,.95))}}
.ggcyc--fx-dash .dashln{fill:none;stroke:var(--arrow);stroke-width:7;stroke-linecap:round;stroke-dasharray:13 11;animation:ggcyc-dash calc(var(--spd)/8) linear infinite}@keyframes ggcyc-dash{to{stroke-dashoffset:-48}}
.ggcyc--fx-gradient .ggcyc-arrows path{animation:ggcyc-gchase calc(var(--spd)/3) ease-in-out infinite}.ggcyc--fx-gradient .ggcyc-arrows path:nth-of-type(2){animation-delay:calc(var(--spd)/9)}.ggcyc--fx-gradient .ggcyc-arrows path:nth-of-type(3){animation-delay:calc(var(--spd)/9*2)}@keyframes ggcyc-gchase{0%,60%,100%{filter:brightness(1)}20%{filter:brightness(1.35) drop-shadow(0 0 8px rgba(190,240,110,.8))}}
.ggcyc--fx-grow .ggcyc-arrows path{transform-box:fill-box;transform-origin:center;animation:ggcyc-grow var(--spd) ease-out infinite}.ggcyc--fx-grow .ggcyc-arrows path:nth-of-type(1){animation-delay:calc(var(--spd)*-1)}.ggcyc--fx-grow .ggcyc-arrows path:nth-of-type(2){animation-delay:calc(var(--spd)/3 - var(--spd))}.ggcyc--fx-grow .ggcyc-arrows path:nth-of-type(3){animation-delay:calc(var(--spd)/3*2 - var(--spd))}@keyframes ggcyc-grow{0%{opacity:0;transform:scale(.25)}10%{opacity:1;transform:scale(1.08)}14%{transform:scale(1)}88%{opacity:1;transform:scale(1)}96%,100%{opacity:0;transform:scale(.25)}}
.ggcyc--fx-energy .fxbase path{opacity:.45}
.ggcyc--fx-particles .fxbase path{opacity:.10}
.ggcyc--fx-spiral .stripes{animation:ggcyc-stripe calc(var(--spd)/6) linear infinite}@keyframes ggcyc-stripe{to{transform:translateX(26px)}}
.ggcyc--fx-alternate .ggcyc-arrows path{animation:ggcyc-alt calc(var(--spd)/3) ease-in-out infinite}.ggcyc--fx-alternate .ggcyc-arrows path:nth-of-type(2){animation-delay:calc(var(--spd)/9)}.ggcyc--fx-alternate .ggcyc-arrows path:nth-of-type(3){animation-delay:calc(var(--spd)/9*2)}@keyframes ggcyc-alt{0%,100%{fill:#4F8F28}50%{fill:#CDEB6E}}
.ggcyc--fx-dissolve .dsa{animation:ggcyc-dsa var(--spd) ease-in-out infinite}.ggcyc--fx-dissolve .dsp{opacity:0;animation:ggcyc-dsp var(--spd) ease-out infinite}.ggcyc--fx-dissolve .dsg .dsa:nth-of-type(1){animation-delay:calc(var(--spd)/3*0 - var(--spd))}.ggcyc--fx-dissolve .dsp-0{animation-delay:calc(var(--spd)/3*0 - var(--spd))}.ggcyc--fx-dissolve .dsg .dsa:nth-of-type(2){animation-delay:calc(var(--spd)/3*1 - var(--spd))}.ggcyc--fx-dissolve .dsp-1{animation-delay:calc(var(--spd)/3*1 - var(--spd))}.ggcyc--fx-dissolve .dsg .dsa:nth-of-type(3){animation-delay:calc(var(--spd)/3*2 - var(--spd))}.ggcyc--fx-dissolve .dsp-2{animation-delay:calc(var(--spd)/3*2 - var(--spd))}@keyframes ggcyc-dsa{0%,26%{opacity:1}8%{opacity:1}14%{opacity:0}20%{opacity:0}26%{opacity:1}100%{opacity:1}}@keyframes ggcyc-dsp{0%,8%{opacity:0;transform:translate(0,0)}13%{opacity:1}20%{opacity:0;transform:translate(var(--dx),var(--dy))}21%,100%{opacity:0;transform:translate(0,0)}}
