@import url('https://fonts.googleapis.com/css2?family=Sora:wght@600;700;800&family=Hanken+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&display=swap');

/* Hide scrollbars but keep functionality */
.hide-scrollbar::-webkit-scrollbar {
  display: none;
}
.hide-scrollbar {
  -ms-overflow-style: none; /* IE/Edge */
  scrollbar-width: none; /* Firefox */
}

/* Glassmorphism utility */
.glass-panel {
  background: rgba(30, 31, 37, 0.7);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(255, 255, 255, 0.08);
}

.glass-panel-light {
  background: rgba(255, 255, 255, 0.06);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255, 255, 255, 0.05);
}

/* Lyric scroll area fade effect at top and bottom */
.lyric-fade-mask {
  mask-image: linear-gradient(to bottom, transparent, black 12%, black 88%, transparent);
  -webkit-mask-image: linear-gradient(to bottom, transparent, black 12%, black 88%, transparent);
}

/* Animations for transitioning between screens */
.fade-in {
  animation: fadeIn 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.slide-up {
  animation: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes slideUp {
  from {
    transform: translateY(100%);
  }
  to {
    transform: translateY(0);
  }
}

/* Neomorphic Glowing shadows */
.glow-primary {
  box-shadow: 0 0 15px rgba(137, 129, 255, 0.35);
}

.glow-secondary {
  box-shadow: 0 0 15px rgba(235, 194, 62, 0.25);
}

.glow-pulse {
  animation: glowPulse 2s infinite ease-in-out;
}

@keyframes glowPulse {
  0%, 100% {
    box-shadow: 0 0 10px rgba(137, 129, 255, 0.2);
  }
  50% {
    box-shadow: 0 0 20px rgba(137, 129, 255, 0.55);
  }
}

/* Active line border highlight and style */
.active-lyric-line {
  border-color: rgba(235, 194, 62, 0.3);
  background: rgba(235, 194, 62, 0.06);
}

/* Custom styles for word token button */
.word-token {
  transition: all 0.15s ease-in-out;
}
.word-token:hover {
  background: rgba(235, 194, 62, 0.15);
  color: #ebc23e;
}

/* Audio Visualizer animation */
.visualizer-bar {
  display: inline-block;
  width: 3px;
  background-color: #ebc23e;
  animation: bounce 0.6s ease-in-out infinite alternate;
}

.visualizer-bar:nth-child(2) { animation-delay: 0.1s; }
.visualizer-bar:nth-child(3) { animation-delay: 0.25s; }
.visualizer-bar:nth-child(4) { animation-delay: 0.15s; }
.visualizer-bar:nth-child(5) { animation-delay: 0.3s; }

@keyframes bounce {
  from { height: 3px; }
  to { height: 18px; }
}

/* PWA App Shell overrides to prevent browser text selection during active tapping */
body {
  -webkit-tap-highlight-color: transparent;
  user-select: none;
  -webkit-user-select: none;
}

/* Dynamic height safe area padding for modern notch screens */
.pb-safe {
  padding-bottom: env(safe-area-inset-bottom, 16px);
}
.pt-safe {
  padding-top: env(safe-area-inset-top, 16px);
}

