/* ============================================================================
   WeaveArena engine · the juice kit

   The feel layer every game inherits. Doctrine: everything the finger touches
   deforms; presses answer on pointerdown; enters decelerate, exits accelerate,
   playful things overshoot once and settle; motion respects the guest who
   asked for less of it. One include, floor-wide.
   ============================================================================ */
:root{
  --wa-spring: cubic-bezier(.34,1.56,.64,1);      /* one overshoot, quick settle */
  --wa-enter:  cubic-bezier(.16,1,.3,1);          /* fast in, soft landing */
  --wa-exit:   cubic-bezier(.7,0,.84,0);          /* gathers speed on the way out */
}

/* every pressable surface dips under the finger, volume conserved */
.btn, .chip, .cta, .ghost, button.typebtn, #pad button, #spinBtn, #lockBtn,
.gcard, .machine, .sw, #odds, .waHub {
  transition: transform .16s var(--wa-spring), box-shadow .2s ease,
              filter .2s ease;
}
.btn:active, .chip:active, .cta:active, .ghost:active, button.typebtn:active,
#pad button:active, #spinBtn:active, #lockBtn:active, .sw:active,
#odds:active, .waHub:active {
  transform: scale(.955);
  filter: brightness(1.06);
}

/* primary gold actions breathe faintly at rest so the next step is never lost */
@keyframes waBreath {
  0%, 100% { box-shadow: 0 10px 24px rgba(190,130,40,.32); }
  50%      { box-shadow: 0 12px 30px rgba(190,130,40,.46); }
}
.btn, #spinBtn, #lockBtn { animation: waBreath 3.2s ease-in-out infinite; }

/* reveals and cards land with a settle, not a snap */
@keyframes waLand {
  0%   { transform: translateY(14px) scale(.97); opacity: 0; }
  70%  { transform: translateY(-2px) scale(1.005); opacity: 1; }
  100% { transform: none; opacity: 1; }
}
.wrv, .wbCard { animation: waLand .42s var(--wa-enter) both; }

/* the guest who asked for calm gets calm; feedback stays, theatrics go */
@media (prefers-reduced-motion: reduce) {
  .btn, #spinBtn, #lockBtn { animation: none; }
  .wrv, .wbCard { animation: none; opacity: 1; transform: none; }
  * { scroll-behavior: auto !important; }
}
