/* أنماط مخصصة وتأثيرات أركيد النيون ومنصة رقص الولد */
@keyframes gridMove {
  0% { background-position: 0 0; }
  100% { background-position: 0 40px; }
}

/* حركات واهتزازات الولد الراقص المتفاعل */
@keyframes dancerGroove {
  0% { transform: scale(1) translateY(0); }
  50% { transform: scale(1.04, 0.96) translateY(3px); }
  100% { transform: scale(1) translateY(0); }
}

@keyframes dancerLeftStep {
  0% { transform: translateX(0) rotate(0deg); }
  40% { transform: translateX(-18px) rotate(-8deg) scale(1.08); }
  100% { transform: translateX(0) rotate(0deg); }
}

@keyframes dancerRightStep {
  0% { transform: translateX(0) rotate(0deg); }
  40% { transform: translateX(18px) rotate(8deg) scale(1.08); }
  100% { transform: translateX(0) rotate(0deg); }
}

@keyframes dancerJumpUp {
  0% { transform: translateY(0) scale(1); }
  40% { transform: translateY(-28px) scale(1.12); }
  100% { transform: translateY(0) scale(1); }
}

@keyframes dancerDuckDown {
  0% { transform: translateY(0) scale(1); }
  40% { transform: translateY(12px) scale(1.15, 0.82); }
  100% { transform: translateY(0) scale(1); }
}

@keyframes dancerSpinCombo {
  0% { transform: rotateY(0deg) scale(1); }
  50% { transform: rotateY(180deg) scale(1.15) translateY(-15px); }
  100% { transform: rotateY(360deg) scale(1); }
}

.dancer-groove {
  animation: dancerGroove 0.22s ease-out;
}

.dancer-step-left {
  animation: dancerLeftStep 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}

.dancer-step-right {
  animation: dancerRightStep 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}

.dancer-jump {
  animation: dancerJumpUp 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.dancer-duck {
  animation: dancerDuckDown 0.24s cubic-bezier(0.22, 1, 0.36, 1);
}

.dancer-spin {
  animation: dancerSpinCombo 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.dancer-fail {
  transform: rotate(-25deg) translateY(20px) scale(0.85) !important;
  filter: grayscale(0.9) brightness(0.6) !important;
  opacity: 0.6;
  transition: all 0.3s ease-out;
}

.cyber-grid {
  background-image: 
    linear-gradient(to right, rgba(0, 240, 255, 0.15) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(148, 163, 184, 0.18) 1px, transparent 1px);
  background-size: 36px 36px;
  transform: perspective(300px) rotateX(60deg);
  transform-origin: bottom center;
  animation: gridMove 2s linear infinite;
}

/* فتحات الأهداف في الأعلى */
.target-slot {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.slot-inner {
  width: 100%;
  aspect-ratio: 1 / 1;
  max-width: 68px;
  border-radius: 16px;
  border-width: 2px;
  background: rgba(15, 10, 30, 0.7);
  backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.1s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.target-slot.active .slot-inner {
  transform: scale(0.92);
  background: rgba(255, 255, 255, 0.25);
  box-shadow: 0 0 25px currentColor;
}

.key-hint {
  font-size: 10px;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.4);
  margin-top: 4px;
}

/* منصات اللمس السفلية للهواتف */
.touch-pad {
  height: 68px;
  border-radius: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  touch-action: none;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
  transition: transform 0.08s ease, filter 0.08s ease;
}

.touch-pad:active, .touch-pad.pressed {
  transform: scale(0.92) translateY(2px);
  filter: brightness(1.3);
}

/* النوتات السهمية المتحركة */
.arrow-note {
  position: absolute;
  width: calc(25% - 8px);
  aspect-ratio: 1 / 1;
  max-width: 64px;
  border-radius: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
  will-change: transform;
  z-index: 20;
}

/* نبض السماعات */
.speaker-pulse {
  animation: speakerBeat 0.15s ease-out;
}

@keyframes speakerBeat {
  0% { transform: translateY(-50%) scale(1); }
  50% { transform: translateY(-50%) scale(1.18); }
  100% { transform: translateY(-50%) scale(1); }
}

@keyframes popIn {
  0% { transform: scale(0.85); opacity: 0; }
  100% { transform: scale(1); opacity: 1; }
}

.animate-pop {
  animation: popIn 0.25s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

/* تعطيل تحديد النصوص والتكبير غير المقصود */
* {
  user-select: none;
  -webkit-touch-callout: none;
}