/* ============================================================
   GIGA BUDDY — mascot styles for Gigapex
   All animation rules scoped under .giga-stage so nothing leaks
   into the host page. Approved 13-action engine, verbatim.
   ============================================================ */

/* ---- Giga base ---- */
.giga-stage{shape-rendering:crispEdges}
.giga-stage .giga-body{animation:g-bounce 2s ease-in-out infinite}
@keyframes g-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.4px)}}
.giga-stage .giga-eye{transform-box:fill-box;transform-origin:center;animation:g-blink 3.6s ease-in-out infinite}
@keyframes g-blink{0%,90%,100%{transform:scaleY(1)}95%{transform:scaleY(.12)}}
.giga-stage .giga-hand-l{transform-origin:0px 22px}
.giga-stage .giga-hand-r{transform-origin:44px 22px}

/* ---- WALK engine ---- */
.giga-stage.walk .giga-body{animation:g-walkbob .5s ease-in-out infinite}
@keyframes g-walkbob{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.8px)}}
.giga-stage.walk .gleg-a{animation:g-step .5s ease-in-out infinite}
.giga-stage.walk .gleg-b{animation:g-step .5s ease-in-out infinite;animation-delay:.25s}
@keyframes g-step{0%,100%{transform:translate(0,0)}50%{transform:translate(1.5px,-3px)}}
.giga-stage .ground-scroll{animation:g-tread 1.1s linear infinite}
@keyframes g-tread{0%{transform:translateX(0)}100%{transform:translateX(-24px)}}

/* ---- BODY engine — per-action realistic motion (pivot feet 22,44) ---- */
.giga-stage.lean .gleg-a{animation:g-shift 1.1s ease-in-out infinite}
.giga-stage.lean .gleg-b{animation:g-shift 1.1s ease-in-out infinite;animation-delay:.55s}
@keyframes g-shift{0%,100%{transform:translateY(0)}50%{transform:translateY(-1px)}}
.giga-stage.sc-wash .giga-body{animation:g-b-brace .4s ease-in-out infinite}
@keyframes g-b-brace{0%,100%{transform:translate(22px,44px) rotate(3deg) translate(-22px,-44px)}50%{transform:translate(22px,44px) rotate(1.3deg) translate(-22px,-44px)}}
.giga-stage.sc-sqg .giga-body{animation:g-b-reach 1.2s ease-in-out infinite}
@keyframes g-b-reach{0%,100%{transform:translateY(-2px)}50%{transform:translateY(2.4px)}}
.giga-stage.sc-mop .giga-body{animation:g-b-mop 1.1s ease-in-out infinite}
@keyframes g-b-mop{0%,100%{transform:translate(22px,44px) rotate(-1.8deg) translate(-22px,-44px)}50%{transform:translate(22px,44px) rotate(3.4deg) translate(-22px,-44px)}}
.giga-stage.sc-hedge .giga-body{animation:g-b-hedge 1s ease-in-out infinite}
@keyframes g-b-hedge{0%,100%{transform:translate(22px,44px) rotate(2.2deg) translate(-22px,-44px)}50%{transform:translate(22px,44px) rotate(3.4deg) translate(-22px,-44px)}}
.giga-stage.sc-water .giga-body{animation:g-b-water 3.4s ease-in-out infinite}
@keyframes g-b-water{0%,15%{transform:translate(22px,44px) rotate(0.4deg) translate(-22px,-44px)}55%,100%{transform:translate(22px,44px) rotate(2.8deg) translate(-22px,-44px)}}
.giga-stage.sc-rake .giga-body{animation:g-b-rake 1.4s ease-in-out infinite}
@keyframes g-b-rake{0%,100%{transform:translate(22px,44px) rotate(3.6deg) translate(-22px,-44px)}50%{transform:translate(22px,44px) rotate(-3.6deg) translate(-22px,-44px)}}
.giga-stage.sc-hammer .giga-body{animation:g-b-hammer .9s ease-in-out infinite}
@keyframes g-b-hammer{0%{transform:translate(22px,44px) rotate(-3deg) translate(-22px,-44px)}45%{transform:translate(22px,44px) rotate(5deg) translate(-22px,-44px)}55%{transform:translate(22px,44px) rotate(5deg) translate(-22px,-44px)}100%{transform:translate(22px,44px) rotate(-3deg) translate(-22px,-44px)}}
.giga-stage.sc-paint .giga-body{animation:g-b-paint 1.2s ease-in-out infinite}
@keyframes g-b-paint{0%,100%{transform:translateY(-2.6px)}50%{transform:translateY(1.8px)}}
.giga-stage.sc-saw .giga-body{animation:g-b-saw .6s ease-in-out infinite}
@keyframes g-b-saw{0%,100%{transform:translate(22px,44px) rotate(-2.8deg) translate(-22px,-44px)}50%{transform:translate(22px,44px) rotate(2.8deg) translate(-22px,-44px)}}
.giga-stage.sc-drill .giga-body{animation:g-b-drill .12s ease-in-out infinite}
@keyframes g-b-drill{0%,100%{transform:translate(21.6px,44px) rotate(3deg) translate(-22px,-44px)}50%{transform:translate(22.4px,44px) rotate(3deg) translate(-22px,-44px)}}

/* ---- shared fade (grime/sprigs clear) ---- */
.giga-stage .fadeout{animation:g-fadeloop 3.4s ease-in-out infinite}
@keyframes g-fadeloop{0%,12%{opacity:1}68%,100%{opacity:0}}

/* idle: hands STAY STILL — wave only briefly on appear (.greet), gesture only while talking (.gtalk) */
.giga-stage.sc-idle.greet .giga-hand-r{animation:g-wave .5s ease-in-out 4 alternate}
@keyframes g-wave{0%{transform:rotate(6deg)}100%{transform:rotate(-42deg)}}
.giga-stage.sc-idle.gtalk .giga-hand-r{animation:g-explain-r 1.7s ease-in-out infinite}
.giga-stage.sc-idle.gtalk .giga-hand-l{animation:g-explain-l 1.7s ease-in-out infinite .35s}
@keyframes g-explain-r{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(-24deg)}}
@keyframes g-explain-l{0%,100%{transform:rotate(4deg)}50%{transform:rotate(24deg)}}

/* cheer — both arms up, happy bounce */
.giga-stage.sc-cheer .giga-hand-l{animation:g-cheerL .5s ease-in-out infinite alternate}
.giga-stage.sc-cheer .giga-hand-r{animation:g-cheerR .5s ease-in-out infinite alternate}
@keyframes g-cheerL{0%{transform:rotate(6deg)}100%{transform:rotate(40deg)}}
@keyframes g-cheerR{0%{transform:rotate(-6deg)}100%{transform:rotate(-40deg)}}
.giga-stage.sc-cheer .giga-body{animation:g-cheerbob .5s ease-in-out infinite}
@keyframes g-cheerbob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}

/* 1 pressure wash */
.giga-stage.sc-wash .giga-hand-r{transform:rotate(18deg);animation:g-recoil .16s ease-in-out infinite alternate}
@keyframes g-recoil{0%{transform:rotate(18deg)}100%{transform:rotate(13deg)}}
.giga-stage .drop{animation:g-drop .5s linear infinite}
.giga-stage .drop:nth-child(2){animation-delay:.08s}.giga-stage .drop:nth-child(3){animation-delay:.16s}.giga-stage .drop:nth-child(4){animation-delay:.24s}.giga-stage .drop:nth-child(5){animation-delay:.32s}.giga-stage .drop:nth-child(6){animation-delay:.40s}.giga-stage .drop:nth-child(7){animation-delay:.12s}.giga-stage .drop:nth-child(8){animation-delay:.28s}
@keyframes g-drop{0%{transform:translate(0,0);opacity:0}15%{opacity:1}100%{transform:translate(34px,9px);opacity:0}}

/* 2 squeegee */
.giga-stage.sc-sqg .giga-hand-r{animation:g-wipe 1.2s ease-in-out infinite}
@keyframes g-wipe{0%,100%{transform:translateY(-3px)}50%{transform:translateY(6px)}}
.giga-stage .spk{animation:g-spk 1.6s ease-in-out infinite}.giga-stage .spk:nth-child(2){animation-delay:.5s}
@keyframes g-spk{0%,60%,100%{opacity:0}78%{opacity:1}}

/* 3 mop */
.giga-stage.sc-mop .giga-hand-r{animation:g-mopmove 1.1s ease-in-out infinite}
@keyframes g-mopmove{0%,100%{transform:translateX(-4px)}50%{transform:translateX(7px)}}

/* 4 vacuum */
.giga-stage .vac{animation:g-bob 1.1s ease-in-out infinite}
@keyframes g-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-1px)}}
.giga-stage .suck{animation:g-suck .9s ease-in infinite}.giga-stage .suck:nth-child(2){animation-delay:.3s}.giga-stage .suck:nth-child(3){animation-delay:.6s}
@keyframes g-suck{0%{opacity:1;transform:translate(0,0)}100%{opacity:0;transform:translate(var(--dx,-12px),2px)}}

/* 5 mow */
.giga-stage .grass-belt{animation:g-belt 1.1s linear infinite}
@keyframes g-belt{0%{transform:translateX(0)}100%{transform:translateX(-24px)}}
.giga-stage .clip{opacity:0;animation:g-clip .5s ease-out infinite}
.giga-stage .clip:nth-child(2){animation-delay:.12s}.giga-stage .clip:nth-child(3){animation-delay:.26s}.giga-stage .clip:nth-child(4){animation-delay:.38s}
@keyframes g-clip{0%{opacity:0;transform:translate(0,0)}20%{opacity:1}100%{opacity:0;transform:translate(var(--dx),-12px)}}

/* 6 hedge */
.giga-stage.sc-hedge .blade-top{transform-box:fill-box;transform-origin:0% 100%;animation:g-snipT .9s ease-in-out infinite}
.giga-stage.sc-hedge .blade-bot{transform-box:fill-box;transform-origin:0% 0%;animation:g-snipB .9s ease-in-out infinite}
@keyframes g-snipT{0%,100%{transform:rotate(-16deg)}50%{transform:rotate(0)}}
@keyframes g-snipB{0%,100%{transform:rotate(16deg)}50%{transform:rotate(0)}}
.giga-stage.sc-hedge .htuft{transform-box:fill-box;transform-origin:bottom;animation:g-trim .9s ease-in-out infinite}
@keyframes g-trim{0%,38%{transform:scaleY(1)}55%,82%{transform:scaleY(.14)}100%{transform:scaleY(1)}}
.giga-stage .leafbit{opacity:0;animation:g-leaf .8s ease-out infinite}
.giga-stage .leafbit:nth-child(2){animation-delay:.25s}.giga-stage .leafbit:nth-child(3){animation-delay:.5s}
@keyframes g-leaf{0%{opacity:0;transform:translate(0,0)}20%{opacity:1}100%{opacity:0;transform:translate(var(--dx,8px),-10px)}}

/* 7 watering */
.giga-stage.sc-water .plant{transform-box:fill-box;transform-origin:bottom;animation:g-grow 3.4s ease-in-out infinite}
@keyframes g-grow{0%,10%{transform:scaleY(.4)}70%,100%{transform:scaleY(1)}}
.giga-stage.sc-water .bloom{transform-box:fill-box;transform-origin:center;animation:g-bloom 3.4s ease-in-out infinite}
@keyframes g-bloom{0%,45%{opacity:0;transform:scale(0)}70%,100%{opacity:1;transform:scale(1)}}
.giga-stage .pour{animation:g-pour .7s linear infinite}.giga-stage .pour:nth-child(2){animation-delay:.22s}.giga-stage .pour:nth-child(3){animation-delay:.44s}
@keyframes g-pour{0%{opacity:0;transform:translate(0,0)}20%{opacity:1}100%{opacity:0;transform:translate(2px,12px)}}

/* 8 rake */
.giga-stage.sc-rake .giga-hand-r{animation:g-rake 1.4s ease-in-out infinite}
@keyframes g-rake{0%,100%{transform:translateX(6px)}50%{transform:translateX(-3px)}}
.giga-stage .rleaf{animation:g-gather 3s ease-in-out infinite}
@keyframes g-gather{0%{transform:translateX(0)}80%,100%{transform:translateX(var(--gx,20px))}}
.giga-stage .rpile{transform-box:fill-box;transform-origin:bottom;animation:g-pilegrow 3s ease-in-out infinite}
@keyframes g-pilegrow{0%,20%{transform:scaleY(.3)}90%,100%{transform:scaleY(1)}}

/* 9 hammer */
.giga-stage.sc-hammer .giga-hand-r{animation:g-swing .9s cubic-bezier(.5,0,.9,.4) infinite}
@keyframes g-swing{0%{transform:rotate(-32deg)}45%{transform:rotate(42deg)}55%{transform:rotate(42deg)}100%{transform:rotate(-32deg)}}
.giga-stage .nail{animation:g-nail .9s ease-in-out infinite}
@keyframes g-nail{0%,44%{transform:translateY(0)}55%{transform:translateY(3px)}100%{transform:translateY(3px)}}
.giga-stage .chip{opacity:0;animation:g-chip .9s ease-out infinite}.giga-stage .chip:nth-child(2){animation-delay:.02s}.giga-stage .chip:nth-child(3){animation-delay:.04s}
@keyframes g-chip{0%,44%{opacity:0;transform:translate(0,0)}50%{opacity:1}100%{opacity:0;transform:translate(var(--dx),-9px)}}

/* 10 paint */
.giga-stage.sc-paint .giga-hand-r{animation:g-roll 1.2s ease-in-out infinite}
@keyframes g-roll{0%,100%{transform:translateY(-8px)}50%{transform:translateY(4px)}}
.giga-stage.sc-paint .paintfill{transform-box:fill-box;transform-origin:bottom;animation:g-fill 4s ease-in-out infinite}
@keyframes g-fill{0%,10%{transform:scaleY(0)}80%,100%{transform:scaleY(1)}}
.giga-stage .drip{opacity:0;animation:g-drip 4s ease-in infinite}
@keyframes g-drip{0%,60%{opacity:0;transform:translateY(0)}70%{opacity:1}100%{opacity:0;transform:translateY(10px)}}

/* 11 saw */
.giga-stage.sc-saw .giga-hand-r{animation:g-sawmove .3s ease-in-out infinite}
@keyframes g-sawmove{0%,100%{transform:translateX(-3px)}50%{transform:translateX(6px)}}
.giga-stage .sfall{opacity:0;animation:g-fall .6s ease-in infinite}.giga-stage .sfall:nth-child(2){animation-delay:.2s}.giga-stage .sfall:nth-child(3){animation-delay:.4s}
@keyframes g-fall{0%{opacity:0;transform:translate(0,0)}20%{opacity:1}100%{opacity:0;transform:translate(1px,10px)}}
.giga-stage.sc-saw .cut{transform-box:fill-box;transform-origin:top;animation:g-cut 3s ease-in-out infinite}
@keyframes g-cut{0%,10%{transform:scaleY(0)}80%,100%{transform:scaleY(1)}}

/* 12 drill */
.giga-stage.sc-drill .bit{transform-box:fill-box;transform-origin:left;animation:g-spin .09s linear infinite}
@keyframes g-spin{0%{transform:scaleY(1)}50%{transform:scaleY(.35)}100%{transform:scaleY(1)}}
.giga-stage.sc-drill .giga-hand-r{animation:g-vibe .1s ease-in-out infinite}
@keyframes g-vibe{0%,100%{transform:translate(0,0)}50%{transform:translate(-.6px,.6px)}}
.giga-stage .screw{animation:g-screw 3s ease-in-out infinite}
@keyframes g-screw{0%,10%{transform:translateY(-4px)}80%,100%{transform:translateY(2px)}}
.giga-stage .spark{opacity:0;animation:g-spark .5s ease-out infinite}.giga-stage .spark:nth-child(2){animation-delay:.2s}
@keyframes g-spark{0%{opacity:0;transform:translate(0,0)}30%{opacity:1}100%{opacity:0;transform:translate(var(--dx,4px),-4px)}}

/* 13 portal */
.giga-stage .chat-line{opacity:0;animation:g-blip 3s ease-in-out infinite}
.giga-stage .chat-line.c2{animation-delay:1s}.giga-stage .chat-line.c3{animation-delay:1.9s}
@keyframes g-blip{0%{opacity:0;transform:translateY(3px)}12%,88%{opacity:1;transform:translateY(0)}100%{opacity:1}}
.giga-stage .pulse{transform-box:fill-box;transform-origin:center;animation:g-pulse 1s ease-in-out infinite}
@keyframes g-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.6);opacity:.4}}

/* ============================================================
   BUDDY CHROME — transparent floating mascot (Gigabound-style)
   ============================================================ */
.gbud{position:fixed;left:22px;bottom:18px;z-index:25;cursor:grab;
  -webkit-user-select:none;user-select:none;touch-action:none;
  opacity:0;transform:translateY(14px);transition:opacity .4s ease,transform .4s ease}
.gbud.ready{opacity:1;transform:none}
.gbud.dragging{cursor:grabbing;transition:none}
.gbud .giga-stage{display:block;width:186px;height:auto;overflow:visible;background:none;
  filter:drop-shadow(0 3px 9px rgba(153,27,27,.42));transition:filter .3s}
.gbud:hover .giga-stage{filter:drop-shadow(0 3px 16px rgba(153,27,27,.7)) drop-shadow(0 0 12px rgba(127,29,29,.35))}
.gbud-bubble{position:absolute;left:6px;bottom:calc(100% - 8px);z-index:3;max-width:214px;width:max-content;
  background:linear-gradient(135deg,#141019,#0c0b10);color:#f4ecd8;
  border:1px solid rgba(201,159,78,.55);border-radius:12px;padding:8px 13px;
  font:600 12.5px/1.4 'Segoe UI',system-ui,sans-serif;
  box-shadow:0 8px 22px rgba(0,0,0,.5);
  opacity:0;transform:translateY(6px);transition:opacity .28s ease,transform .28s ease;pointer-events:none}
.gbud-bubble.show{opacity:1;transform:none}
.gbud-bubble:after{content:'';position:absolute;left:28px;top:100%;margin-top:-5px;width:10px;height:10px;
  background:linear-gradient(135deg,#141019,#0c0b10);
  border-right:1px solid rgba(201,159,78,.55);border-bottom:1px solid rgba(201,159,78,.55);transform:rotate(45deg)}
.gbud.flip .gbud-bubble{left:auto;right:6px}
.gbud.flip .gbud-bubble:after{left:auto;right:28px}

@media(max-width:640px){
  .gbud{left:10px;bottom:12px}
  .gbud .giga-stage{width:136px}
  .gbud-bubble{font-size:11px;max-width:min(168px,calc(100vw - 28px));padding:7px 10px}
}
@media(prefers-reduced-motion:reduce){
  .giga-stage *{animation:none !important}
}
