/* ============================================================
   COMPONENTS.CSS — Shared UI components
   ============================================================ */

/* ---- PvP round bar & waiting indicator ---- */
.pvp-round-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: linear-gradient(90deg, rgba(0,212,255,.12), rgba(255,45,120,.12));
  border-top: 1px solid rgba(255,255,255,.08);
  border-bottom: 1px solid rgba(255,255,255,.08);
  padding: 0.625rem 1.25rem;
  gap: 1rem;
}

.pvp-round-tag {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.125rem;
  letter-spacing: 0.1875rem;
  color: rgba(255,255,255,.65);
  white-space: nowrap;
}

.pvp-matchup-bar {
  display: flex;
  align-items: center;
  gap: 0.875rem;
  flex: 1;
  justify-content: center;
}

.pvp-match-name {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.375rem;
  letter-spacing: 0.125rem;
  max-width: 12.5rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.p1-match { color: var(--electric-blue); }
.p2-match { color: var(--hot-pink); }

.pvp-match-vs {
  font-size: 1.125rem;
  opacity: .55;
}

.pvp-answered-msg {
  background: rgba(57,255,20,.1);
  border: 1px solid rgba(57,255,20,.3);
  border-radius: var(--radius-md);
  padding: 0.625rem 1rem;
  font-size: 0.8125rem;
  font-weight: 700;
  color: var(--neon-green);
  text-align: center;
  margin-top: 0.5rem;
  animation: fade-in .3s ease;
}

/* Active / inactive turn states for PvP split screen */
.pvp-active-turn {
  opacity: 1;
  transition: opacity .3s;
}
.pvp-inactive-turn {
  opacity: .38;
  pointer-events: none;
  transition: opacity .3s;
}
.pvp-match-active {
  text-shadow: 0 0 12px currentColor;
  font-size: 1.625rem;
}

/* ---- Buttons ---- */
.back-btn {
  background: rgba(255,255,255,.08);
  border: 1.5px solid rgba(255,255,255,.15);
  border-radius: var(--radius-pill);
  padding: 0.5rem 1.125rem;
  font-family: 'Nunito', sans-serif;
  font-size: 0.875rem; font-weight: 700;
  color: rgba(255,255,255,.7);
  cursor: pointer;
  transition: all .2s;
}
.back-btn:hover { background: rgba(255,255,255,.15); color: white; }

.pause-btn {
  background: rgba(139,92,246,.2);
  border: 1.5px solid rgba(139,92,246,.4);
  border-radius: var(--radius-pill);
  padding: 0.5rem 1rem;
  font-family: 'Bebas Neue', cursive;
  font-size: 0.8125rem;
  font-weight: 700;
  color: var(--purple);
  cursor: pointer;
  transition: all .2s;
  letter-spacing: 0.0625rem;
}
.pause-btn:hover {
  background: rgba(139,92,246,.35);
  border-color: var(--purple);
  color: white;
}
.pause-btn.paused {
  background: rgba(0,212,255,.2);
  border-color: rgba(0,212,255,.4);
  color: var(--electric-blue);
}
.pause-btn.paused:hover {
  background: rgba(0,212,255,.35);
  border-color: var(--electric-blue);
  color: white;
}

.submit-btn {
  background: linear-gradient(135deg, var(--electric-blue), var(--purple));
  border: none;
  border-radius: var(--radius-md);
  padding: 0.875rem 1.625rem;
  font-family: 'Bebas Neue', cursive;
  font-size: 1.375rem; letter-spacing: 0.125rem;
  color: white; cursor: pointer;
  transition: all .25s;
  white-space: nowrap;
}
.submit-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,212,255,.4); }
.submit-btn:active { transform: scale(.97); }
.submit-btn:disabled { opacity: .4; pointer-events: none; }

.start-challenge-btn {
  background: linear-gradient(135deg, var(--purple), var(--hot-pink));
  border: none;
  border-radius: var(--radius-pill);
  padding: 1rem 3.125rem;
  font-family: 'Bebas Neue', cursive;
  font-size: 1.625rem; letter-spacing: 0.1875rem;
  color: white; cursor: pointer;
  transition: all .3s;
  box-shadow: 0 4px 20px rgba(139,92,246,.5);
  display: block; width: 100%; margin-bottom: 0.75rem;
}
.start-challenge-btn:hover { transform: translateY(-3px); box-shadow: 0 8px 30px rgba(139,92,246,.6); }

.skip-challenge-btn {
  background: transparent;
  border: 1.5px solid rgba(255,255,255,.15);
  border-radius: var(--radius-pill);
  padding: 0.625rem 1.875rem;
  font-family: 'Nunito', sans-serif;
  font-size: 0.875rem; font-weight: 700;
  color: rgba(255,255,255,.4);
  cursor: pointer;
  transition: all .2s;
  display: block; width: 100%;
}
.skip-challenge-btn:hover { color: rgba(255,255,255,.7); border-color: rgba(255,255,255,.3); }

.result-btn {
  display: block; width: 100%;
  border: none;
  border-radius: var(--radius-md);
  padding: 1rem;
  font-family: 'Bebas Neue', cursive;
  font-size: 1.375rem; letter-spacing: 0.1875rem;
  color: white; cursor: pointer;
  transition: all .3s;
  margin-bottom: 0.625rem;
}
.result-btn.primary   { background: linear-gradient(135deg, var(--electric-blue), var(--purple)); }
.result-btn.secondary { background: rgba(255,255,255,.08); border: 2px solid rgba(255,255,255,.15); }
.result-btn:hover { transform: translateY(-2px); }

/* ---- Stat pills ---- */
.stat-pill {
  background: var(--card);
  border: 1.5px solid rgba(255,255,255,.1);
  border-radius: var(--radius-pill);
  padding: 0.5rem 1rem;
  display: flex; align-items: center; gap: 0.375rem;
  font-weight: 700; font-size: 0.9375rem;
}
.score-pill  { border-color: rgba(57,255,20,.4);   color: var(--neon-green); }
.lives-pill  { border-color: rgba(255,45,120,.4);  color: var(--hot-pink); }
.streak-pill { border-color: rgba(255,107,53,.4);  color: var(--orange); }

/* ---- Eq type badge ---- */
.eq-type-badge {
  display: inline-block;
  background: rgba(0,212,255,.15);
  color: var(--electric-blue);
  border: 1px solid rgba(0,212,255,.3);
  border-radius: var(--radius-pill);
  padding: 0.25rem 0.875rem;
  font-size: 0.6875rem; font-weight: 700;
  letter-spacing: 0.125rem; text-transform: uppercase;
  margin-bottom: 0.875rem;
}

/* ---- Active challenge banner ---- */
.challenge-banner {
  background: linear-gradient(135deg, rgba(139,92,246,.3), rgba(255,45,120,.2));
  border: 2px solid var(--purple);
  border-radius: var(--radius-md);
  padding: 0.75rem 1.125rem;
  margin-bottom: 0.875rem;
  display: none;
  align-items: center;
  gap: 0.75rem;
  animation: slide-in .4s cubic-bezier(.34,1.56,.64,1);
}
.challenge-banner.visible { display: flex; }
.challenge-icon  { font-size: 1.875rem; }
.challenge-title { font-family: 'Bebas Neue', cursive; font-size: 1.125rem; letter-spacing: 0.125rem; color: var(--purple); }
.challenge-desc  { font-size: 0.75rem; font-weight: 600; opacity: .8; }

/* ---- Toast ---- */
.feedback-toast {
  position: fixed;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%) scale(0.5);
  opacity: 0;
  background: var(--card);
  border: 3px solid var(--neon-green);
  border-radius: var(--radius-pill);
  padding: 1.125rem 2.5rem;
  font-family: 'Bebas Neue', cursive;
  font-size: clamp(1.5rem, 6vw, 2.5rem);
  letter-spacing: 0.1875rem;
  color: var(--neon-green);
  z-index: 9999;
  transition: all .4s cubic-bezier(.34,1.56,.64,1);
  white-space: nowrap;
  box-shadow: 0 0 50px rgba(57,255,20,.6);
}
.feedback-toast.wrong-toast { border-color: var(--hot-pink); color: var(--hot-pink); box-shadow: 0 0 50px rgba(255,45,120,.6); }
.feedback-toast.show { transform: translate(-50%, -50%) scale(1); opacity: 1; }

/* ================ PvP STYLES ================ */

/* Players Input Screen */
.pvp-header {
  text-align: center;
  margin-bottom: 2.5rem;
}
.pvp-icon {
  font-size: 5rem;
  display: block;
  margin-bottom: 1rem;
}
.pvp-header h2 {
  font-family: 'Bebas Neue', cursive;
  font-size: 2.625rem;
  color: var(--hot-pink);
  letter-spacing: 0.1875rem;
  margin: 0;
}

.players-form {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  margin-bottom: 2.5rem;
  max-width: 18.75rem;
  margin-left: auto;
  margin-right: auto;
}

.player-input-group {
  display: flex;
  flex-direction: column;
}
.player-input-group label {
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--neon-green);
  text-transform: uppercase;
  letter-spacing: 0.125rem;
  margin-bottom: 0.5rem;
}
.player-input-group input {
  background: rgba(57,255,20,.08);
  border: 2px solid rgba(57,255,20,.3);
  border-radius: var(--radius-md);
  padding: 0.875rem 1rem;
  font-family: 'Nunito', sans-serif;
  font-size: 1rem;
  color: white;
  transition: all .3s;
}
.player-input-group input:focus {
  outline: none;
  border-color: var(--neon-green);
  background: rgba(57,255,20,.15);
  box-shadow: 0 0 20px rgba(57,255,20,.3);
}
.player-input-group input::placeholder {
  color: rgba(255,255,255,.5);
}

.vs-divider {
  text-align: center;
  font-size: 1.5rem;
  font-weight: 900;
  color: var(--electric-blue);
  margin: 0.625rem 0;
}

.start-pvp-btn {
  background: linear-gradient(135deg, var(--electric-blue), var(--hot-pink));
  border: none;
  border-radius: var(--radius-pill);
  padding: 1rem 2.5rem;
  font-family: 'Bebas Neue', cursive;
  font-size: 1.5rem;
  letter-spacing: 0.125rem;
  color: white;
  cursor: pointer;
  transition: all .3s;
  box-shadow: 0 8px 30px rgba(0,212,255,.3);
  margin-bottom: 0.75rem;
}
.start-pvp-btn:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 40px rgba(0,212,255,.5);
}

.back-to-mode-btn {
  background: rgba(255,255,255,.08);
  border: 1.5px solid rgba(255,255,255,.15);
  border-radius: var(--radius-pill);
  padding: 0.625rem 1.25rem;
  font-size: 0.875rem;
  font-weight: 700;
  color: rgba(255,255,255,.5);
  cursor: pointer;
  transition: all .2s;
  width: 100%;
}
.back-to-mode-btn:hover {
  background: rgba(255,255,255,.15);
  color: white;
}

/* PvP Game Screen */
.pvp-top-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1.25rem;
  background: linear-gradient(180deg, rgba(0,212,255,.08) 0%, transparent 100%);
  border-bottom: 1px solid rgba(255,45,120,.15);
  margin-bottom: 0.75rem;
}

.pvp-scores {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  flex: 1;
  justify-content: center;
}

.player-score {
  text-align: center;
  padding: 0.625rem 1.25rem;
  border-radius: var(--radius-md);
  min-width: 6.25rem;
  background: rgba(57,255,20,.08);
  border: 1px solid rgba(57,255,20,.2);
}

.player1-score {
  border-color: rgba(0,212,255,.4);
  background: rgba(0,212,255,.08);
}

.player2-score {
  border-color: rgba(255,45,120,.4);
  background: rgba(255,45,120,.08);
}

.player-name {
  font-size: 0.75rem;
  font-weight: 700;
  color: rgba(255,255,255,.7);
  text-transform: uppercase;
  letter-spacing: 0.0625rem;
  margin-bottom: 0.25rem;
}

.player-points {
  font-family: 'Bebas Neue', cursive;
  font-size: 2rem;
  font-weight: 900;
  color: white;
  letter-spacing: 0.0625rem;
}

.vs-text {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--hot-pink);
  letter-spacing: 0.125rem;
}

.current-player-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  background: linear-gradient(90deg, rgba(0,212,255,.15), rgba(255,45,120,.15));
  border: 1px solid rgba(255,255,255,.1);
  border-radius: var(--radius-md);
  padding: 0.75rem 1.25rem;
  margin-bottom: 0.75rem;
  animation: pulse 2s ease-in-out infinite;
}

#current-player-icon {
  font-size: 1.5rem;
}

#current-player-name {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.125rem;
  color: var(--electric-blue);
  letter-spacing: 0.125rem;
  text-transform: uppercase;
}

@keyframes pulse {
  0%, 100% { background: linear-gradient(90deg, rgba(0,212,255,.15), rgba(255,45,120,.15)); }
  50% { background: linear-gradient(90deg, rgba(0,212,255,.25), rgba(255,45,120,.25)); }
}

/* PvP Result Screen */
.result-header {
  text-align: center;
  margin-bottom: 2.5rem;
}
#result-icon {
  font-size: 6.25rem;
  display: block;
  margin-bottom: 1.25rem;
  animation: bounce 0.6s ease-in-out;
}
#result-title {
  font-family: 'Bebas Neue', cursive;
  font-size: 3rem;
  background: linear-gradient(135deg, var(--neon-green), var(--hot-pink));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  letter-spacing: 0.125rem;
} 

.pvp-final-scores {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 1.25rem;
  max-width: 31.25rem;
  margin: 0 auto 2.5rem;
  align-items: center;
}

.final-player-card {
  background: var(--card);
  border: 2px solid rgba(57,255,20,.2);
  border-radius: var(--radius-lg);
  padding: 1.875rem 1.25rem;
  text-align: center;
}

.final-player-card:nth-child(1) {
  border-color: rgba(0,212,255,.4);
}

.final-player-card:nth-child(3) {
  border-color: rgba(255,45,120,.4);
}

.final-player-name {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.125rem;
  color: rgba(255,255,255,.8);
  letter-spacing: 0.0625rem;
  margin-bottom: 0.75rem;
}

.final-player-score {
  font-family: 'Bebas Neue', cursive;
  font-size: 3rem;
  font-weight: 900;
  color: white;
  margin-bottom: 0.75rem;
}

.final-player-status {
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.0625rem;
}

.winner {
  color: var(--neon-green);
  text-transform: uppercase;
  background: rgba(57,255,20,.15);
  padding: 0.375rem 0.75rem;
  border-radius: var(--radius-sm);
  display: inline-block;
}

.loser {
  color: rgba(255,255,255,.6);
  text-transform: uppercase;
  letter-spacing: 0.0625rem;
}

.tie {
  color: var(--electric-blue);
  text-transform: uppercase;
  background: rgba(0,212,255,.15);
  padding: 0.375rem 0.75rem;
  border-radius: var(--radius-sm);
  display: inline-block;
}

.vs-separator {
  font-size: 2rem;
  font-weight: 900;
  color: var(--hot-pink);
  letter-spacing: 0.125rem;
}

.pvp-stats {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  max-width: 31.25rem;
  margin: 0 auto 2.5rem;
}

.stat-box {
  background: rgba(57,255,20,.08);
  border: 1px solid rgba(57,255,20,.2);
  border-radius: var(--radius-md);
  padding: 1.25rem;
  text-align: center;
}

.stat-label {
  font-size: 0.6875rem;
  font-weight: 700;
  color: var(--neon-green);
  text-transform: uppercase;
  letter-spacing: 0.125rem;
  margin-bottom: 0.75rem;
}

.stat-value {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.75rem;
  color: white;
  letter-spacing: 0.0625rem;
}

.stat-row {
  display: flex;
  justify-content: space-around;
  font-family: 'Bebas Neue', cursive;
  font-size: 1.375rem;
  color: white;
}

.result-buttons {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  max-width: 18.75rem;
  margin: 0 auto;
}

.result-btn {
  background: linear-gradient(135deg, var(--electric-blue), var(--hot-pink));
  border: none;
  border-radius: var(--radius-pill);
  padding: 1rem 2rem;
  font-family: 'Bebas Neue', cursive;
  font-size: 1.25rem;
  letter-spacing: 0.125rem;
  color: white;
  cursor: pointer;
  transition: all .3s;
  box-shadow: 0 8px 30px rgba(0,212,255,.3);
}
.result-btn:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 40px rgba(0,212,255,.5);
}

.result-btn.secondary {
  background: rgba(255,255,255,.08);
  border: 1.5px solid rgba(255,255,255,.15);
  box-shadow: none;
}
.result-btn.secondary:hover {
  background: rgba(255,255,255,.15);
  box-shadow: 0 4px 20px rgba(0,212,255,.2);
}

/* =========================================================
   PvP multi-player input form
   ========================================================= */
.pvp-subtitle {
  font-size: 0.8125rem;
  color: rgba(255,255,255,.55);
  margin: 0.25rem 0 0;
  letter-spacing: 0.0625rem;
}

.pvp-teams-form {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 1rem;
  align-items: start;
  width: 100%;
  max-width: 35rem;
  margin: 0 auto 1.75rem;
}

.pvp-team-form {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
}

.pvp-side-title {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.25rem;
  letter-spacing: 0.125rem;
  margin: 0 0 0.375rem;
  color: rgba(255,255,255,.85);
}

.pvp-players-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.pvp-player-row {
  display: flex;
  gap: 0.375rem;
  align-items: center;
}

.pvp-player-input {
  flex: 1;
  background: rgba(57,255,20,.07);
  border: 1.5px solid rgba(57,255,20,.25);
  border-radius: var(--radius-md);
  padding: 0.625rem 0.75rem;
  font-family: 'Nunito', sans-serif;
  font-size: 0.9375rem;
  color: white;
  transition: border-color .2s;
}
.pvp-player-input:focus {
  outline: none;
  border-color: var(--neon-green);
  background: rgba(57,255,20,.14);
}
.pvp-player-input::placeholder { color: rgba(255,255,255,.35); }

.remove-pvp-player-btn {
  background: rgba(255,45,120,.15);
  border: 1px solid rgba(255,45,120,.3);
  border-radius: var(--radius-sm);
  color: var(--hot-pink);
  font-size: 0.8125rem;
  font-weight: 700;
  padding: 0.375rem 0.5rem;
  cursor: pointer;
  transition: background .2s;
  line-height: 1;
  flex-shrink: 0;
}
.remove-pvp-player-btn:hover { background: rgba(255,45,120,.35); }

.add-pvp-player-btn {
  background: rgba(57,255,20,.1);
  border: 1.5px dashed rgba(57,255,20,.35);
  border-radius: var(--radius-md);
  padding: 0.5rem 0.75rem;
  font-size: 0.8125rem;
  font-weight: 700;
  color: var(--neon-green);
  cursor: pointer;
  transition: background .2s;
  width: 100%;
}
.add-pvp-player-btn:hover { background: rgba(57,255,20,.2); }

.pvp-vs-sep {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.75rem;
  font-weight: 900;
  color: var(--hot-pink);
  letter-spacing: 0.125rem;
  padding-top: 2rem;
  text-align: center;
}

/* =========================================================
   PvP result — per-player side cards
   ========================================================= */
.final-side-card {
  background: var(--card);
  border: 2px solid rgba(57,255,20,.2);
  border-radius: var(--radius-lg);
  padding: 1.25rem 1rem;
  text-align: center;
}
.final-side-card.winning-side { border-color: var(--neon-green); }
.final-side-card.losing-side  { border-color: rgba(255,255,255,.15); }

.final-side-label {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.125rem;
  letter-spacing: 0.125rem;
  color: rgba(255,255,255,.85);
  margin-bottom: 0.25rem;
}
.final-side-total {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.875rem;
  color: white;
  margin-bottom: 0.75rem;
}

.pvp-player-result-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  font-size: 0.8125rem;
  padding: 0.3125rem 0.5rem;
  border-radius: var(--radius-sm);
  background: rgba(255,255,255,.05);
  margin-bottom: 0.3125rem;
}
.pvp-player-result-name {
  font-weight: 700;
  color: rgba(255,255,255,.85);
  flex: 1;
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pvp-player-result-score {
  font-family: 'Bebas Neue', cursive;
  font-size: 1rem;
  color: var(--neon-green);
  letter-spacing: 0.0625rem;
}
.pvp-player-result-correct {
  font-size: 0.75rem;
  font-weight: 700;
  color: rgba(255,255,255,.45);
}

/* =========================================================
   Explanation Modal (Step by Step Solution)
   ========================================================= */
.explanation-modal {
  position: fixed;
  top: 0; left: 0; width: 100vw; height: 100vh;
  background: rgba(10, 10, 15, 0.95);
  display: flex; align-items: center; justify-content: center;
  z-index: 1000;
  opacity: 0; pointer-events: none;
  transition: opacity 0.3s;
}
.explanation-modal.show {
  opacity: 1; pointer-events: auto;
}
.explanation-content {
  background: #1a1a2e;
  border: 2px solid var(--electric-blue);
  border-radius: 28px;
  padding: 2.125rem;
  width: 92%; max-width: min(30rem, 90vw);
  text-align: center;
  transform: translateY(20px);
  transition: transform 0.4s cubic-bezier(.34,1.56,.64,1);
  box-shadow: 0 0 60px rgba(0, 212, 255, 0.25);
}
.explanation-modal.show .explanation-content {
  transform: translateY(0);
}
.explanation-title {
  font-family: 'Bebas Neue', cursive;
  font-size: 2.125rem;
  color: var(--hot-pink);
  letter-spacing: 0.1875rem;
  margin-bottom: 1.625rem;
  margin-top: 0;
  text-transform: uppercase;
}
.explanation-steps {
  text-align: left;
  font-size: 1rem;
  color: white;
  margin-bottom: 2rem;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  max-height: 55vh;
  overflow-y: auto;
  padding-right: 0.375rem;
}
.explanation-steps::-webkit-scrollbar { width: 5px; }
.explanation-steps::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 10px; }

.explanation-step {
  background: rgba(255, 255, 255, 0.04);
  padding: 1.125rem 1.375rem;
  border-radius: 18px;
  border-left: 5px solid var(--electric-blue);
  font-family: 'Nunito', sans-serif;
  font-weight: 600;
  line-height: 1.5;
  box-shadow: 0 4px 15px rgba(0,0,0,0.2);
  animation: slide-in .4s ease-out;
}
.explanation-btn {
  width: 100%;
  background: linear-gradient(90deg, #00d4ff, #8b5cf6);
  border-radius: 18px;
  border: none;
  padding: 1rem;
  font-family: 'Bebas Neue', cursive;
  font-size: 1.5rem;
  letter-spacing: 0.125rem;
  color: white;
  cursor: pointer;
  transition: all .3s;
}
.explanation-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 25px rgba(0, 212, 255, 0.4);
}

/* ---- Loading Overlay ---- */
.loading-overlay {
  position: fixed;
  top: 0; left: 0; width: 100vw; height: 100vh;
  background: rgba(10, 10, 15, 0.95);
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 10000;
  transition: opacity 0.3s;
}

.loading-overlay.visible {
  display: flex;
  animation: fade-in 0.3s ease-out;
}

.loading-spinner {
  width: 3.75rem;
  height: 3.75rem;
  border: 5px solid rgba(0, 212, 255, 0.1);
  border-top-color: var(--electric-blue);
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin-bottom: 1.25rem;
  box-shadow: 0 0 20px rgba(0, 212, 255, 0.3);
}

.loading-overlay p {
  font-family: 'Bebas Neue', cursive;
  font-size: 1.5rem;
  color: var(--electric-blue);
  letter-spacing: 0.1875rem;
  text-transform: uppercase;
  margin: 0;
  animation: pulse-bar 1.5s ease-in-out infinite;
}
