/* Apex-Treinador — components (botões, fields, badges, chips) */

/* ── Botões ───────────────────────────────────────────────────────────── */

.btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: 8px;
  padding: 9px 16px;
  font-size: var(--fs-sm);
  font-weight: 500;
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  cursor: pointer;
  transition: all var(--duration-fast) var(--ease);
  white-space: nowrap;
  min-height: 36px;
}
.btn-primary {
  background: var(--green);
  color: #042018;
  font-weight: 600;
  border-color: var(--green);
}
.btn-primary:hover:not(:disabled) {
  background: var(--green-deep);
  border-color: var(--green-deep);
}
.btn-outline {
  background: var(--bg-2);
  color: var(--text);
  border-color: var(--line-3);
}
.btn-outline:hover:not(:disabled) {
  background: var(--bg-3);
  border-color: var(--line-4);
}
.btn-ghost {
  background: transparent;
  color: var(--text-2);
}
.btn-ghost:hover:not(:disabled) {
  color: var(--text);
  background: var(--bg-2);
}
.btn-danger {
  background: var(--crit-tint);
  color: var(--crit);
  border-color: var(--crit);
}
.btn-lg { padding: 12px 22px; font-size: var(--fs-md); min-height: 44px; }
.btn-sm { padding: 5px 10px; font-size: var(--fs-xs); min-height: 28px; }
.btn-full { width: 100%; }

/* ── Fields ───────────────────────────────────────────────────────────── */

.field-group { margin-bottom: var(--sp-4); }
.field-label {
  display: block;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.10em;
  color: var(--text-2);
  text-transform: uppercase;
  margin-bottom: 6px;
}
.field {
  display: block;
  width: 100%;
  padding: 10px 12px;
  font-size: var(--fs-md);
  color: var(--text);
  background: var(--bg-2);
  border: 1px solid var(--line-2);
  border-radius: var(--radius-sm);
  min-height: 38px;
  transition: border-color var(--duration-fast) var(--ease),
              box-shadow var(--duration-fast) var(--ease);
}
.field:hover { border-color: var(--line-3); }
.field:focus {
  border-color: var(--green);
  background: var(--bg-3);
  box-shadow: 0 0 0 3px var(--green-tint);
  outline: none;
}
.field::placeholder { color: var(--text-3); }
.field-error { border-color: var(--crit); }
.field-error-msg {
  font-size: var(--fs-xs);
  color: var(--crit);
  margin-top: 4px;
}

/* ── Chips / badges ───────────────────────────────────────────────────── */

.chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 8px;
  font-size: var(--fs-xs);
  font-weight: 500;
  border-radius: var(--radius-sm);
  background: var(--bg-2);
  color: var(--text-2);
  border: 1px solid var(--line-2);
}
.chip-green { background: var(--green-tint); color: var(--green); border-color: var(--green); }
.chip-warn  { background: var(--warn-tint);  color: var(--warn);  border-color: var(--warn); }
.chip-crit  { background: var(--crit-tint);  color: var(--crit);  border-color: var(--crit); }
.chip-info  { background: var(--info-tint);  color: var(--info);  border-color: var(--info); }

.chip-dot {
  display: inline-block;
  width: 6px; height: 6px;
  border-radius: 50%;
  margin-right: 4px;
}

/* ── Alert (banner narrativo para padrões IA) ─────────────────────────── */

.alert {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 14px 16px;
  border: 1px solid var(--line-3);
  border-left-width: 3px;
  border-radius: var(--radius);
  background: var(--bg-1);
  margin-bottom: var(--sp-4);
}
.alert-info { border-left-color: var(--info); }
.alert-warn { border-left-color: var(--warn); }
.alert-crit { border-left-color: var(--crit); }
.alert-ok   { border-left-color: var(--green); }
.alert-icon { color: var(--text-3); margin-top: 2px; flex-shrink: 0; }
.alert-body { flex: 1; }
.alert-title {
  font-weight: 500;
  color: var(--text);
  margin-bottom: 4px;
}
.alert-text {
  color: var(--text-2);
  font-size: var(--fs-sm);
  line-height: 1.5;
}
.alert-action {
  margin-top: 8px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-sm);
  color: var(--green);
  cursor: pointer;
}
.alert-action:hover { text-decoration: underline; }

/* ── Toast ────────────────────────────────────────────────────────────── */

.toast-wrap {
  position: fixed; top: 16px; right: 16px;
  z-index: var(--z-toast);
  display: flex; flex-direction: column; gap: 8px;
}
.toast {
  background: var(--bg-2);
  border: 1px solid var(--line-3);
  border-radius: var(--radius-sm);
  padding: 10px 16px;
  font-size: var(--fs-sm);
  box-shadow: var(--shadow-lg);
  min-width: 240px;
  animation: toast-in 0.18s var(--ease-out);
}
.toast-success { border-color: var(--green); color: var(--text); }
.toast-error   { border-color: var(--crit);  color: var(--text); }
.toast-info    { border-color: var(--info);  color: var(--text); }
@keyframes toast-in {
  from { opacity: 0; transform: translateX(20px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* ── Spinner ──────────────────────────────────────────────────────────── */

.spinner {
  display: inline-block;
  width: 16px; height: 16px;
  border: 2px solid var(--line-3);
  border-top-color: var(--green);
  border-radius: 50%;
  animation: spin 0.6s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* Sparkline mini-svg dentro de células */
.sparkline { display: inline-block; vertical-align: middle; }
