.btn {
  padding: 0.9rem 2rem; border-radius: 10px; font-weight: 600;
  font-size: 1rem; cursor: pointer; border: none; transition: all 0.25s;
  text-decoration: none; display: inline-block;
}
.btn-primary {
  background: linear-gradient(135deg, var(--primary), var(--accent));
  color: #fff; box-shadow: 0 8px 30px rgba(139, 92, 246, 0.35);
}
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 12px 40px rgba(139, 92, 246, 0.5); }
.btn-ghost { background: transparent; color: var(--text); border: 1px solid var(--border); }
.btn-ghost:hover { border-color: var(--primary); background: rgba(139, 92, 246, 0.08); }
.btn:disabled { opacity: 0.6; cursor: not-allowed; transform: none; }

.cta-row { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }

.pulse {
  display: inline-block; width: 8px; height: 8px; border-radius: 50%;
  background: var(--success);
  animation: pulse 2s infinite;
}

/* Формы */
.field label { display: block; font-size: 0.85rem; color: var(--muted); margin-bottom: 0.4rem; }
.field input, .field select {
  width: 100%; padding: 0.85rem; border-radius: 10px;
  border: 1px solid var(--border); background: var(--bg-soft);
  color: var(--text); font-size: 1rem; font-family: inherit;
  outline: none; transition: border-color 0.2s;
}
.field input:focus, .field select:focus { border-color: var(--primary); }

/* Тогглы */
.toggle-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 0.9rem 1rem; background: var(--bg-soft);
  border: 1px solid var(--border); border-radius: 10px; margin-bottom: 0.8rem;
}
.toggle-row span { font-size: 0.95rem; }
.switch { position: relative; width: 46px; height: 26px; flex-shrink: 0; }
.switch input { opacity: 0; width: 0; height: 0; }
.slider {
  position: absolute; inset: 0; cursor: pointer; background: var(--border);
  border-radius: 100px; transition: 0.3s;
}
.slider::before {
  content: ""; position: absolute; width: 20px; height: 20px;
  left: 3px; bottom: 3px; background: #fff; border-radius: 50%; transition: 0.3s;
}
.switch input:checked + .slider { background: var(--primary); }
.switch input:checked + .slider::before { transform: translateX(20px); }

/* Подсветка JSON */
.key { color: #ffa657; }
.str { color: #7ee787; }
.num { color: #79c0ff; }

/* Toasts */
.toast-container {
  position: fixed; bottom: 2rem; right: 2rem; z-index: 999;
  display: flex; flex-direction: column; gap: 0.8rem;
}
.toast {
  background: var(--card); border: 1px solid var(--border);
  border-left: 4px solid var(--primary);
  padding: 1rem 1.4rem; border-radius: 10px;
  min-width: 280px; max-width: 360px;
  box-shadow: 0 10px 40px rgba(0,0,0,0.5);
  animation: slideIn 0.3s ease; font-size: 0.9rem;
}
.toast.success { border-left-color: var(--success); }
.toast.error   { border-left-color: var(--danger); }
.toast.warn    { border-left-color: var(--warn); }
