/* Jump Rope Challenge at the Fitness Center. */
.jump-card { display: flex; flex-direction: column; align-items: center; gap: 14px; min-height: 0; }
.jump-hud { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
.jump-hud span { padding: 6px 14px; border: 2px solid #c9dcd9; border-radius: 99px; background: #f3faf8; color: #3f6670; font-weight: 800; }
.jump-hud strong { color: #e0662e; font-size: 18px; }
.jump-stage {
  position: relative;
  flex: none;
  width: 400px;
  height: 380px;
  overflow: hidden;
  border: 4px solid #2f6e8b;
  border-radius: 18px;
  background: linear-gradient(#e7f1f3 0 66%, #c98f5a 66% 67%, #d9a36c 67%);
  box-shadow: inset 0 -30px 0 #c48a55, 0 5px 0 #24546a;
  touch-action: manipulation;
  user-select: none;
}
.jump-stage::before { content: ''; position: absolute; inset: 0 0 34% 0; background: repeating-linear-gradient(90deg, transparent 0 58px, #d7e6ea 58px 62px); }
.jump-banner { position: absolute; top: 16px; left: 50%; transform: translateX(-50%); padding: 6px 16px; border: 3px solid #24546a; border-radius: 8px; background: #ef7a3a; color: #fff; font: 900 14px Nunito, system-ui, sans-serif; letter-spacing: 2px; white-space: nowrap; }
.jump-rope { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; }
.jump-rope path { stroke: #7a3b2a; stroke-width: 3.4; stroke-linecap: round; }
.jump-rope-front { z-index: 3; }
#jump-buddy { bottom: 20px; z-index: 2; transform: translateX(-50%) scale(.9); transform-origin: bottom center; }
.jump-feedback { position: absolute; top: 70px; left: 50%; z-index: 4; transform: translate(-50%, 6px); color: #2f8f5a; font: 900 26px Nunito, system-ui, sans-serif; text-shadow: 0 2px 0 #fff; opacity: 0; transition: opacity .15s, transform .15s; pointer-events: none; }
.jump-feedback.show { opacity: 1; transform: translate(-50%, 0); }
.jump-feedback.bad { color: #d9493f; }
.jump-overlay { position: absolute; inset: 0; z-index: 5; display: grid; place-items: center; padding: 18px; background: #1f3d4c88; }
.jump-overlay[hidden] { display: none; }
.jump-panel { max-width: 300px; padding: 20px 22px; border: 3px solid #2f6e8b; border-radius: 16px; background: #fffdf4; box-shadow: 0 5px 0 #24546a; text-align: center; }
.jump-panel h3 { margin: 0 0 6px; color: #24546a; font-size: 26px; }
.jump-panel p { margin: 0 0 12px; color: #5f7275; font-size: 14px; }
.jump-result { display: grid; gap: 4px; margin-bottom: 14px; color: #3f5f45; font-weight: 800; }
.jump-result strong { color: #e0662e; font-size: 30px; }
.jump-result em { color: #d9493f; font-style: normal; }
.jump-result span { color: #7a6427; }
.jump-button { min-width: 220px; font-size: 18px; }
.cabinet-gym .cabinet-screen { background: radial-gradient(circle, #9a5a3a 0, #33190f 75%); }
@media (max-width: 650px) {
  .jump-stage { transform: scale(.8); transform-origin: top center; margin-bottom: -76px; }
}
@media (max-width: 380px) {
  .jump-stage { transform: scale(.72); margin-bottom: -106px; }
}
