/* =============================================================================
   Las piezas de interfaz. Paneles limpios con borde fino, esquinas suavemente
   redondeadas y luz solo donde hace falta. Nada de estética de píxel aquí: el
   píxel es del juego.
   Cualquier pantalla se monta con estas piezas; si falta una, se añade AQUÍ.
============================================================================= */

/* --- PANEL: la caja base de todo ------------------------------------------ */
.dev-panel {
  position: relative;
  background: var(--panel);
  border: 1px solid var(--panel-edge);
  border-radius: var(--r);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 18px 40px rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(10px);
}

.dev-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gap);
  padding: 13px 18px;
  background: linear-gradient(180deg, rgba(124, 58, 237, 0.24), rgba(124, 58, 237, 0.06));
  border-bottom: 1px solid var(--panel-edge);
  border-radius: var(--r) var(--r) 0 0;
  font-size: var(--t-small);
  font-weight: 500;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--ink);
}
.dev-panel-body { padding: 18px; }

/* --- TIPOGRAFÍA ------------------------------------------------------------ */
.dev-label {
  font-size: var(--t-micro);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--ink-dim);
}
.dev-label--key { color: var(--ink); }

.dev-legal {
  font-size: var(--t-nano);
  letter-spacing: 0.02em;
  color: var(--ink-faint);
}

.dev-text {
  font-size: var(--t-body);
  line-height: 1.6;
  color: var(--ink-dim);
}

.dev-title {
  margin: 0;
  font-size: var(--t-head);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--ink);
}

/* --- ETIQUETA -------------------------------------------------------------- */
.dev-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 99px;
  font-size: var(--t-nano);
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-dim);
  background: rgba(124, 92, 220, 0.14);
  border: 1px solid var(--panel-edge);
  white-space: nowrap;
}
.dev-tag--live { color: var(--slime); border-color: rgba(139, 249, 74, 0.4); background: rgba(139, 249, 74, 0.1); }
.dev-tag--warn { color: var(--danger); border-color: rgba(255, 93, 120, 0.4); background: rgba(255, 93, 120, 0.1); }
.dev-tag--cool { color: var(--cyan); border-color: rgba(34, 211, 238, 0.4); background: rgba(34, 211, 238, 0.1); }

/* --- SEPARADOR ------------------------------------------------------------- */
.dev-groove {
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--panel-edge), transparent);
}

/* --- CAMPO DE TEXTO -------------------------------------------------------- */
.dev-field { display: block; }
.dev-field > .dev-label { display: block; margin-bottom: 8px; }

.dev-slot {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 14px;
  height: 50px;
  background: rgba(8, 5, 20, 0.72);
  border: 1px solid var(--panel-edge);
  border-radius: var(--r-sm);
  transition: border-color 160ms ease, box-shadow 160ms ease;
}
.dev-slot:focus-within {
  border-color: var(--slime);
  box-shadow: 0 0 0 3px rgba(139, 249, 74, 0.14);
}
.dev-slot > input {
  flex: 1;
  min-width: 0;
  background: none;
  border: 0;
  outline: none;
  color: var(--ink);
  font-family: var(--face-ui);
  font-size: var(--t-body);
}
.dev-slot > input::placeholder { color: var(--ink-faint); }
.dev-slot > .marker { color: var(--slime); font-weight: 700; user-select: none; }

/* --- BOTÓN PRINCIPAL ------------------------------------------------------- */
.dev-switch {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  min-height: 52px;
  padding: 0 26px;
  border: 0;
  border-radius: var(--r-sm);
  background: linear-gradient(180deg, var(--violet-lit), var(--violet) 60%, #6425d0);
  color: #fff;
  font-family: var(--face-ui);
  font-size: var(--t-small);
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.32),
    0 8px 20px rgba(124, 58, 237, 0.36);
  transition: transform 140ms var(--ease-out), box-shadow 180ms ease, filter 160ms ease;
}
.dev-switch:hover:not(:disabled) {
  filter: brightness(1.1);
  transform: translateY(-2px);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.32), 0 12px 28px rgba(124, 58, 237, 0.5);
}
.dev-switch:active:not(:disabled) { transform: translateY(0); }
.dev-switch:disabled {
  cursor: not-allowed;
  background: rgba(124, 92, 220, 0.18);
  color: var(--ink-faint);
  box-shadow: none;
}

/* Botón secundario. */
.dev-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 11px 18px;
  border: 1px solid var(--panel-edge);
  border-radius: var(--r-sm);
  background: rgba(124, 92, 220, 0.1);
  color: var(--ink-dim);
  font-family: var(--face-ui);
  font-size: var(--t-micro);
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  transition: transform 140ms var(--ease-out), color 160ms ease, border-color 160ms ease, background 160ms ease;
}
.dev-btn:hover:not(:disabled) {
  color: var(--ink);
  border-color: var(--panel-edge-lit);
  background: rgba(124, 92, 220, 0.2);
  transform: translateY(-2px);
}
.dev-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.dev-btn--danger:hover:not(:disabled) { color: var(--danger); border-color: rgba(255, 93, 120, 0.5); background: rgba(255, 93, 120, 0.12); }
.dev-btn--slime { color: var(--slime); border-color: rgba(139, 249, 74, 0.4); }
.dev-btn--slime:hover:not(:disabled) { color: #06210a; background: var(--slime); border-color: var(--slime); }

/* --- TESTIGOS Y BARRAS ----------------------------------------------------- */
.dev-lamp {
  width: 9px;
  height: 9px;
  flex: none;
  border-radius: 50%;
  background: rgba(124, 92, 220, 0.3);
}
.dev-lamp.on { background: var(--slime); box-shadow: 0 0 10px rgba(139, 249, 74, 0.8); }
.dev-lamp.err { background: var(--danger); box-shadow: 0 0 10px rgba(255, 93, 120, 0.8); }

.dev-ledbar {
  display: flex;
  gap: 4px;
  padding: 5px;
  background: rgba(8, 5, 20, 0.72);
  border: 1px solid var(--panel-edge);
  border-radius: 99px;
}
.dev-ledbar > i {
  flex: 1;
  height: 7px;
  border-radius: 99px;
  background: rgba(124, 92, 220, 0.25);
  transition: background 140ms ease, box-shadow 140ms ease;
}
.dev-ledbar > i.on { background: var(--slime); box-shadow: 0 0 8px rgba(139, 249, 74, 0.7); }
.dev-ledbar > i.hot { background: var(--danger); }

/* --- SUPERFICIE DE LISTADO ------------------------------------------------- */
.dev-screen {
  position: relative;
  background: rgba(8, 5, 20, 0.6);
  border: 1px solid var(--panel-edge);
  border-radius: var(--r);
  color: var(--ink);
  overflow: hidden;
}
.dev-screen--off { color: var(--ink-faint); }

/* --- AVISO DE ERROR -------------------------------------------------------- */
.dev-fault {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 20px;
  font-size: var(--t-micro);
  color: var(--danger);
}
.dev-fault:empty { visibility: hidden; }


/* La pila: una rayita que baja y no vuelve a subir. Sin números — lo que hace
   falta saber es «va quedando poca», no cuántos segundos. */
.ap-pilafila { display: flex; align-items: center; gap: 8px; margin: 8px 10px 0; }
.ap-pilafila .ap-pila { flex: 1; margin: 0; }
.ap-pilanum {
  font-family: var(--face-pixel);
  font-size: 12px;
  color: rgba(255, 255, 255, .6);
  font-variant-numeric: tabular-nums;
}
.ap-pilanum.poca { color: #ffb14d; }

.ap-pila {
  height: 5px;
  border-radius: 3px;
  background: rgba(255, 255, 255, .12);
  overflow: hidden;
  margin: 8px 10px 0;
}
.ap-pila i {
  display: block;
  height: 100%;
  background: var(--lime, #a8f425);
  transition: width .4s linear;
}
.ap-pila.poca i { background: #ffb14d; }
.ap-pila.nada i { background: #ff5a5a; }
.ap-lectura.poca { color: #ffb14d; }
