/* ============================================================
   CCW Portal — Buttons
   ============================================================ */

.ccw-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: 0 var(--space-5);
  height: 40px;
  font-size: var(--text-sm);
  font-weight: var(--font-weight-medium);
  font-family: var(--font-family);
  border-radius: var(--radius-md);
  border: 1px solid transparent;
  cursor: pointer;
  transition: background-color var(--transition-fast), color var(--transition-fast),
              border-color var(--transition-fast), box-shadow var(--transition-fast),
              transform var(--transition-fast), opacity var(--transition-fast);
  text-decoration: none;
  white-space: nowrap;
  user-select: none;
  position: relative;
  overflow: hidden;
}

.ccw-btn:active {
  transform: scale(0.98);
}

.ccw-btn:disabled,
.ccw-btn--loading {
  opacity: 0.55;
  cursor: not-allowed;
  pointer-events: none;
}

/* Primary */
.ccw-btn--primary {
  background-color: var(--color-brand-primary);
  color: white;
  border-color: var(--color-brand-primary);
}

.ccw-btn--primary:hover {
  background-color: var(--color-brand-primary-hover);
  border-color: var(--color-brand-primary-hover);
}

/* Secondary */
.ccw-btn--secondary {
  background-color: transparent;
  color: var(--color-brand-primary);
  border-color: var(--color-brand-primary);
}

.ccw-btn--secondary:hover {
  background-color: var(--color-brand-primary-light);
}

/* Danger */
.ccw-btn--danger {
  background-color: var(--color-error);
  color: white;
  border-color: var(--color-error);
}

.ccw-btn--danger:hover {
  background-color: #b91c1c;
  border-color: #b91c1c;
}

/* Ghost */
.ccw-btn--ghost {
  background-color: transparent;
  color: var(--color-text-secondary);
  border-color: transparent;
}

.ccw-btn--ghost:hover {
  background-color: var(--color-bg-tertiary);
  color: var(--color-text-primary);
}

/* Sizes */
.ccw-btn--sm {
  height: 32px;
  padding: 0 var(--space-3);
  font-size: var(--text-xs);
}

.ccw-btn--lg {
  height: 48px;
  padding: 0 var(--space-6);
  font-size: var(--text-base);
}

.ccw-btn--full {
  width: 100%;
}

/* Icon button */
.ccw-btn--icon {
  width: 36px;
  height: 36px;
  padding: 0;
  flex-shrink: 0;
}

.ccw-btn--icon.ccw-btn--sm {
  width: 28px;
  height: 28px;
}

/* Loading spinner inside button */
.ccw-btn__spinner {
  width: 16px;
  height: 16px;
  border: 2px solid rgba(255,255,255,0.3);
  border-top-color: white;
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
}

.ccw-btn--secondary .ccw-btn__spinner,
.ccw-btn--ghost .ccw-btn__spinner {
  border-color: rgba(0,0,0,0.15);
  border-top-color: var(--color-brand-primary);
}
