/* App-specific styles for gestión and prácticas views */

/* ============ gestion ============ */
.gestion-layout {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 1.5em;
  align-items: start;
}
@media (max-width: 820px) {
  .gestion-layout { grid-template-columns: 1fr; }
}

.alumnos-list {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: .8em;
  max-height: calc(100vh - 140px);
  overflow-y: auto;
}
.alumnos-list h3 {
  font-size: .9em;
  color: var(--fg-dim);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin: .4em .4em 0.8em;
}
.alumno-item {
  padding: .6em .8em;
  border-radius: var(--radius);
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: .5em;
  border: 1px solid transparent;
}
.alumno-item:hover { background: var(--bg-3); }
.alumno-item.active {
  background: var(--bg-3);
  border-color: var(--accent);
}
.alumno-item .name { font-weight: 500; }
.alumno-item .login { font-size: .8em; color: var(--fg-dim); font-family: var(--font-mono); }
.alumno-item .nivel {
  background: var(--accent);
  color: #0b0d1a;
  font-size: .7em;
  padding: .1em .5em;
  border-radius: 999px;
  font-weight: 600;
}

.alumno-detail {
  display: flex;
  flex-direction: column;
  gap: 1em;
}
.alumno-actions {
  display: flex;
  gap: .5em;
  flex-wrap: wrap;
}

.nivel-control {
  display: flex;
  align-items: center;
  gap: .5em;
}
.nivel-control .big {
  font-size: 1.4em;
  font-weight: 700;
  color: var(--accent);
  font-family: var(--font-mono);
  min-width: 2em;
  text-align: center;
}

.empty-state {
  text-align: center;
  padding: 3em 1em;
  color: var(--fg-dim);
}

/* ============ prácticas ============ */
.practica-layout {
  display: flex;
  flex-direction: column;
  gap: 1em;
  max-width: 1200px;
  margin: 0 auto;
}

.metrics-bar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: .8em;
}
.metric {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: .7em 1em;
  text-align: center;
}
.metric .label {
  font-size: .75em;
  color: var(--fg-dim);
  text-transform: uppercase;
  letter-spacing: .05em;
}
.metric .value {
  font-size: 1.6em;
  font-family: var(--font-mono);
  font-weight: 700;
}
.metric .sub { font-size: .75em; color: var(--fg-dim); }

.metric.wpm .value { color: var(--accent); }
.metric.accuracy .value.good { color: var(--ok); }
.metric.accuracy .value.bad { color: var(--err); }

.speed-bar {
  height: 8px;
  background: var(--bg-3);
  border-radius: 4px;
  overflow: hidden;
  margin-top: .3em;
}
.speed-bar .fill {
  height: 100%;
  background: linear-gradient(90deg, var(--accent), var(--ok));
  transition: width .2s ease;
}

/* exercise text */
.ejercicio {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.5em 2em;
  font-family: var(--font-mono);
  font-size: 1.6em;
  line-height: 1.8;
  letter-spacing: .02em;
  white-space: pre-wrap;
  word-break: break-word;
  min-height: 6em;
  position: relative;
}
.ejercicio .ch { transition: color 0.08s, background 0.08s; }
.ejercicio .ch.pending { color: var(--fg-dim); }
.ejercicio .ch.done { color: var(--fg); }
.ejercicio .ch.error {
  color: var(--err);
  background: rgba(248, 113, 113, 0.18);
  border-radius: 3px;
}
.ejercicio .ch.current {
  background: var(--accent);
  color: #0b0d1a;
  border-radius: 3px;
  animation: cursorPulse 0.9s ease-in-out infinite;
}
.ejercicio .ch.space.done { background: rgba(74, 222, 128, 0.1); }
.ejercicio .ch.space.error { background: rgba(248, 113, 113, 0.25); }
@keyframes cursorPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.65; }
}

.controles-practica {
  display: flex;
  gap: .5em;
  justify-content: center;
  flex-wrap: wrap;
}
.mensaje-dialogo {
  padding: .8em 1em;
  border-radius: var(--radius);
  background: var(--bg-2);
  border-left: 4px solid var(--accent);
  font-size: .95em;
}
.mensaje-dialogo.ok { border-left-color: var(--ok); }
.mensaje-dialogo.warn { border-left-color: var(--warn); }
.mensaje-dialogo.err { border-left-color: var(--err); }

/* session progress badges */
.session-progress {
  display: flex;
  gap: .4em;
  align-items: center;
  justify-content: center;
}
.session-dot {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--bg-3);
  border: 2px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .75em;
}
.session-dot.ok { background: var(--ok); border-color: var(--ok); color: #0b0d1a; font-weight: 700; }
.session-dot.fail { background: #3a1f2a; border-color: var(--err); color: var(--err); }

/* login screen */
.login-screen {
  max-width: 420px;
  margin: 6vh auto;
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 2em;
  text-align: center;
}
.login-screen h2 { color: var(--accent); }
.login-alumnos {
  display: flex;
  flex-wrap: wrap;
  gap: .4em;
  justify-content: center;
  margin-top: 1em;
}
.login-alumnos .chip {
  padding: .3em .7em;
  background: var(--bg-3);
  border: 1px solid var(--border);
  border-radius: 999px;
  cursor: pointer;
  font-size: .8em;
  font-family: var(--font-mono);
}
.login-alumnos .chip:hover { border-color: var(--accent); }

/* activity menu */
.actividades-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 1em;
  margin: 1em 0 2em;
}
.actividad-card {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.5em;
  cursor: pointer;
  text-align: center;
  transition: transform .15s, border-color .15s;
}
.actividad-card:hover {
  transform: translateY(-3px);
  border-color: var(--accent);
}
.actividad-card .icon { font-size: 2.5em; }
.actividad-card h3 { margin: .3em 0 .2em; }
.actividad-card p { color: var(--fg-dim); font-size: .85em; margin: 0; }

/* resumen final */
.resumen {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 2em;
  text-align: center;
}
.resumen .big-number {
  font-family: var(--font-mono);
  font-size: 3em;
  font-weight: 700;
}
.resumen.superado .big-number { color: var(--ok); }
.resumen.fallado .big-number { color: var(--err); }

/* juego: palabras cayendo */
.juego-canvas {
  background: #0a0c1c;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  position: relative;
  overflow: hidden;
  height: 60vh;
  min-height: 400px;
}
.juego-palabra {
  position: absolute;
  font-family: var(--font-mono);
  font-size: 1.1em;
  padding: .3em .8em;
  background: var(--bg-3);
  border: 1px solid var(--accent);
  border-radius: var(--radius);
  transition: background .1s;
  white-space: nowrap;
}
.juego-palabra.typing-ok { background: rgba(74, 222, 128, 0.2); }
.juego-palabra .typed { color: var(--ok); }
.juego-palabra .rest { color: var(--fg); }

.juego-hud {
  display: flex;
  justify-content: space-around;
  padding: 0.8em;
  background: var(--bg-2);
  border-radius: var(--radius);
  border: 1px solid var(--border);
  margin-bottom: 1em;
  font-family: var(--font-mono);
}
.juego-hud .hud-item { text-align: center; }
.juego-hud .hud-item .label { font-size: .7em; color: var(--fg-dim); text-transform: uppercase; }
.juego-hud .hud-item .value { font-size: 1.4em; font-weight: 700; color: var(--accent); }

/* key select grid */
.key-select {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(50px, 1fr));
  gap: .4em;
  margin: .8em 0;
}
.key-select label {
  background: var(--bg-3);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: .4em;
  text-align: center;
  cursor: pointer;
  font-family: var(--font-mono);
  margin: 0;
  transition: background .1s;
  user-select: none;
}
.key-select label.selected {
  background: var(--accent);
  color: #0b0d1a;
  border-color: var(--accent);
  font-weight: 600;
}
.key-select input { display: none; }
