/* ============================================================
   Buttons, icon buttons, segmented control
   ============================================================ */

.btn {
  --_bg: var(--color-primary);
  --_fg: var(--text-on-primary);
  --_bd: transparent;
  --_hover: var(--color-primary-hover);
  --_active: var(--color-primary-active);

  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  height: 38px;
  padding: 0 16px;
  font-family: var(--font-sans);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  line-height: 1;
  letter-spacing: var(--tracking-snug);
  white-space: nowrap;
  color: var(--_fg);
  background: var(--_bg);
  border: 1.5px solid var(--_bd);
  border-radius: var(--radius-md);
  cursor: pointer;
  user-select: none;
  transition: background var(--duration-fast) var(--ease-standard),
              border-color var(--duration-fast) var(--ease-standard),
              color var(--duration-fast) var(--ease-standard),
              transform var(--duration-fast) var(--ease-standard),
              box-shadow var(--duration-fast) var(--ease-standard);
}
.btn:hover:not(:disabled)  { background: var(--_hover); }
.btn:active:not(:disabled) { background: var(--_active); transform: translateY(0.5px); }
.btn:focus-visible { box-shadow: var(--focus-ring); }
.btn:disabled { cursor: not-allowed; opacity: 0.55; }

.btn--sm    { height: 30px; padding: 0 11px; font-size: var(--text-sm); gap: var(--space-2); }
.btn--xs    { height: 26px; padding: 0 9px;  font-size: var(--text-xs); gap: var(--space-2); }
.btn--lg    { height: 46px; padding: 0 22px; font-size: var(--text-lg); }
.btn--block { width: 100%; }

.btn__icon { display: inline-flex; width: 1.1em; height: 1.1em; flex: 0 0 auto; }
.btn__icon svg { width: 100%; height: 100%; }

.btn--primary   { --_bg: var(--color-primary);   --_hover: var(--color-primary-hover); --_active: var(--color-primary-active); }
.btn--secondary { --_bg: var(--color-secondary); --_hover: var(--tx-navy-500); --_active: var(--tx-navy-900); }
.btn--danger    { --_bg: var(--tx-danger-600);   --_hover: #c91212; --_active: #a30f0f; }
.btn--success   { --_bg: var(--tx-success-600);  --_hover: #12876d; --_active: #0e6f59; }
.btn--ai        { --_bg: var(--color-ai); --_hover: var(--color-ai-hover); --_active: var(--tx-violet-700); }

.btn--outline {
  --_bg: transparent; --_fg: var(--color-primary); --_bd: var(--color-primary);
  --_hover: var(--color-primary-soft); --_active: var(--color-primary-tint);
}
.btn--subtle {
  --_bg: var(--surface-card); --_fg: var(--text-body); --_bd: var(--border-default);
  --_hover: var(--surface-sunken); --_active: var(--border-subtle);
}
.btn--ghost {
  --_bg: transparent; --_fg: var(--text-body); --_bd: transparent;
  --_hover: var(--surface-sunken); --_active: var(--border-subtle);
}

/* ---------- Icon button ---------- */
.iconbtn {
  display: inline-grid;
  place-items: center;
  width: 34px; height: 34px;
  flex: 0 0 auto;
  border: 1px solid transparent;
  border-radius: var(--radius-md);
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  transition: background var(--duration-fast) var(--ease-standard),
              color var(--duration-fast) var(--ease-standard),
              border-color var(--duration-fast) var(--ease-standard);
}
.iconbtn:hover { background: var(--surface-sunken); color: var(--text-strong); }
.iconbtn:focus-visible { box-shadow: var(--focus-ring); }
.iconbtn svg { width: 17px; height: 17px; }
.iconbtn--sm { width: 28px; height: 28px; }
.iconbtn--sm svg { width: 15px; height: 15px; }
.iconbtn--bordered { border-color: var(--border-default); background: var(--surface-card); }
.iconbtn--danger:hover { background: var(--status-danger-bg); color: var(--status-danger-fg); }

/* ---------- Segmented control ---------- */
.seg {
  display: inline-flex;
  padding: 3px;
  gap: 2px;
  background: var(--surface-sunken);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
}
.seg__btn {
  border: none;
  background: transparent;
  color: var(--text-muted);
  font: var(--font-label);
  padding: 0 13px;
  height: 30px;
  border-radius: var(--radius-sm);
  cursor: pointer;
  white-space: nowrap;
  display: inline-flex; align-items: center; gap: 6px;
  transition: background var(--duration-fast) var(--ease-standard),
              color var(--duration-fast) var(--ease-standard),
              box-shadow var(--duration-fast) var(--ease-standard);
}
.seg__btn:hover { color: var(--text-strong); }
.seg__btn.is-on {
  background: var(--surface-card);
  color: var(--color-primary);
  box-shadow: var(--shadow-xs);
  font-weight: var(--weight-semibold);
}
.seg__btn:focus-visible { box-shadow: var(--focus-ring); }
.seg__btn svg { width: 14px; height: 14px; }

/* ---------- Spinner ---------- */
.spinner {
  display: inline-block; flex: 0 0 auto;
  width: 14px; height: 14px;
  border-radius: 50%;
  border: 2px solid currentColor;
  border-top-color: transparent;
  animation: spin 0.7s linear infinite;
}
.spinner--lg { width: 22px; height: 22px; border-width: 2.5px; }
@keyframes spin { to { transform: rotate(360deg); } }
