:root {
    --sofl-btn-primary: #0f172a;
    --sofl-btn-primary-hover: #1e293b;
    --sofl-btn-gold: #c9982f;
    --sofl-btn-gold-hover: #c8982e;
    --sofl-btn-bg: #ffffff;
    --sofl-btn-bg-soft: #f8f6f2;
    --sofl-btn-border: #e5e7eb;
    --sofl-btn-muted: #64748b;
    --sofl-btn-success: #15803d;
    --sofl-btn-danger: #b91c1c;
    --sofl-btn-warning: #c2410c;
    --sofl-btn-info: #1d4ed8;
    --sofl-btn-shadow: 0 10px 22px rgba(15, 23, 42, .08);
    --sofl-btn-shadow-hover: 0 14px 30px rgba(15, 23, 42, .12);
    --sofl-btn-focus: 0 0 0 .2rem rgba(212, 168, 67, .28);
}

.btn,
.sofl-btn-primary,
.sofl-btn-gold,
.sofl-btn-outline,
.sofl-btn-danger,
.sofl-btn-danger-soft,
.sofl-btn-success,
.sofl-btn-soft,
.sofl-btn-dark,
.sofl-btn-secondary {
  --bs-btn-focus-box-shadow: var(--sofl-btn-focus);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  min-height: 42px;
  padding: .625rem 1rem;
  border: 1px solid transparent;
  border-radius: 8px;
  font-size: .925rem;
  font-weight: 750;
  line-height: 1.15;
  text-decoration: none;
  box-shadow: none;
  transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

.btn:hover,
.sofl-btn-primary:hover,
.sofl-btn-gold:hover,
.sofl-btn-outline:hover,
.sofl-btn-danger:hover,
.sofl-btn-danger-soft:hover,
.sofl-btn-success:hover,
.sofl-btn-soft:hover,
.sofl-btn-dark:hover,
.sofl-btn-secondary:hover {
  transform: translateY(-1px);
  text-decoration: none;
}

.btn:focus-visible,
.sofl-btn-primary:focus-visible,
.sofl-btn-gold:focus-visible,
.sofl-btn-outline:focus-visible,
.sofl-btn-danger:focus-visible,
.sofl-btn-danger-soft:focus-visible,
.sofl-btn-success:focus-visible,
.sofl-btn-soft:focus-visible,
.sofl-btn-icon:focus-visible,
.sofl-icon-btn:focus-visible {
  outline: 0;
  box-shadow: var(--sofl-btn-focus);
}

.btn-primary,
.sofl-btn-primary,
.sofl-btn-dark,
.btn-dark {
  border-color: var(--sofl-btn-primary) !important;
  background: var(--sofl-btn-primary) !important;
  color: #ffffff !important;
  box-shadow: var(--sofl-btn-shadow);
}

.btn-primary:hover,
.btn-primary:focus,
.sofl-btn-primary:hover,
.sofl-btn-primary:focus,
.sofl-btn-dark:hover,
.btn-dark:hover {
  border-color: var(--sofl-btn-primary-hover) !important;
  background: var(--sofl-btn-primary-hover) !important;
  color: #ffffff !important;
  box-shadow: var(--sofl-btn-shadow-hover);
}

.sofl-btn-gold {
  border-color: var(--sofl-btn-gold) !important;
  background: var(--sofl-btn-gold) !important;
  color: #0f172a !important;
  box-shadow: 0 10px 22px rgba(212, 168, 67, .18);
}

.sofl-btn-gold:hover,
.sofl-btn-gold:focus {
  border-color: var(--sofl-btn-gold-hover) !important;
  background: var(--sofl-btn-gold-hover) !important;
  color: #0f172a !important;
  box-shadow: 0 14px 30px rgba(200, 152, 46, .24);
}

.btn-outline,
.btn-outline-primary,
.btn-outline-secondary,
.sofl-btn-outline,
.sofl-btn-secondary {
  border-color: var(--sofl-btn-border) !important;
  background: #ffffff !important;
  color: var(--sofl-btn-primary) !important;
  box-shadow: 0 8px 18px rgba(15, 23, 42, .04);
}

.btn-outline:hover,
.btn-outline-primary:hover,
.btn-outline-secondary:hover,
.sofl-btn-outline:hover,
.sofl-btn-secondary:hover {
  border-color: #cbd5e1 !important;
  background: var(--sofl-btn-bg-soft) !important;
  color: var(--sofl-btn-primary) !important;
  box-shadow: var(--sofl-btn-shadow);
}

.btn-danger,
.btn-outline-danger,
.sofl-btn-danger {
  border-color: var(--sofl-btn-danger) !important;
  background: var(--sofl-btn-danger) !important;
  color: #ffffff !important;
  box-shadow: 0 10px 22px rgba(185, 28, 28, .14);
}

.sofl-btn-danger-soft {
  border-color: rgba(185, 28, 28, .18) !important;
  background: #fff5f5 !important;
  color: var(--sofl-btn-danger) !important;
  box-shadow: 0 8px 18px rgba(185, 28, 28, .06);
}

.sofl-btn-danger-soft:hover,
.sofl-btn-danger-soft:focus {
  border-color: rgba(185, 28, 28, .34) !important;
  background: #fee2e2 !important;
  color: #991b1b !important;
  box-shadow: 0 12px 24px rgba(185, 28, 28, .12);
}

.btn-danger:hover,
.btn-outline-danger:hover,
.sofl-btn-danger:hover {
  border-color: #991b1b !important;
  background: #991b1b !important;
  color: #ffffff !important;
}

.btn-success,
.btn-outline-success,
.sofl-btn-success {
  border-color: var(--sofl-btn-success) !important;
  background: var(--sofl-btn-success) !important;
  color: #ffffff !important;
  box-shadow: 0 10px 22px rgba(21, 128, 61, .14);
}

.btn-success:hover,
.btn-outline-success:hover,
.sofl-btn-success:hover {
  border-color: #166534 !important;
  background: #166534 !important;
  color: #ffffff !important;
}

.btn-warning,
.btn-outline-warning {
  border-color: rgba(194, 65, 12, .24) !important;
  background: #fff7ed !important;
  color: var(--sofl-btn-warning) !important;
}

.btn-info,
.btn-outline-info {
  border-color: rgba(29, 78, 216, .24) !important;
  background: #eff6ff !important;
  color: var(--sofl-btn-info) !important;
}

.sofl-btn-soft,
.sofl-card-cta {
  border-color: rgba(212, 168, 67, .26) !important;
  background: #fffbeb !important;
  color: #0f172a !important;
  box-shadow: 0 8px 18px rgba(15, 23, 42, .05);
}

.sofl-btn-soft:hover,
.sofl-card-cta:hover {
  border-color: var(--sofl-btn-gold) !important;
  background: #f8f6f2 !important;
  color: #0f172a !important;
}

.btn-sm,
.sofl-btn-icon,
.sofl-icon-btn {
  min-height: 34px;
}

.btn-sm {
  padding: .45rem .75rem;
  border-radius: 7px;
  font-size: .82rem;
}

.btn-lg {
  min-height: 50px;
  padding: .8rem 1.25rem;
  border-radius: 10px;
  font-size: 1rem;
}

.sofl-btn-icon,
.sofl-icon-btn {
  width: 36px;
  height: 36px;
  min-width: 36px;
  padding: 0;
  border: 1px solid var(--sofl-btn-border);
  border-radius: 8px;
  background: #ffffff;
  color: var(--sofl-btn-primary);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 6px 16px rgba(15, 23, 42, .05);
}

.sofl-btn-icon:hover,
.sofl-icon-btn:hover {
  border-color: #cbd5e1;
  background: var(--sofl-btn-bg-soft);
  color: var(--sofl-btn-primary);
  transform: translateY(-1px);
}

.sofl-btn-icon-danger,
.sofl-icon-btn-danger,
.sofl-btn-icon.text-danger,
.sofl-icon-btn.text-danger {
  border-color: rgba(185, 28, 28, .18);
  color: var(--sofl-btn-danger) !important;
}

.sofl-btn-icon-danger:hover,
.sofl-icon-btn-danger:hover,
.sofl-btn-icon.text-danger:hover,
.sofl-icon-btn.text-danger:hover {
  border-color: rgba(185, 28, 28, .28);
  background: #fef2f2;
  color: var(--sofl-btn-danger) !important;
}

.sofl-table-actions {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: .35rem;
  white-space: nowrap;
}

.sofl-btn-icon i,
.sofl-icon-btn i,
.btn i,
.sofl-btn-primary i,
.sofl-btn-gold i,
.sofl-btn-outline i,
.sofl-btn-danger i,
.sofl-btn-danger-soft i,
.sofl-btn-success i,
.sofl-btn-soft i {
  font-size: .95em;
  line-height: 1;
}

.btn:disabled,
.btn.disabled,
.sofl-btn-primary:disabled,
.sofl-btn-gold:disabled,
.sofl-btn-outline:disabled,
.sofl-btn-danger:disabled,
.sofl-btn-danger-soft:disabled,
.sofl-btn-success:disabled,
.sofl-btn-soft:disabled,
.sofl-btn-icon:disabled,
.sofl-icon-btn:disabled,
[aria-disabled="true"] {
  pointer-events: none;
  opacity: .58;
  transform: none;
  box-shadow: none;
}

.btn.is-loading,
.btn[aria-busy="true"],
.sofl-btn-primary.is-loading,
.sofl-btn-gold.is-loading,
.sofl-btn-outline.is-loading {
  cursor: wait;
  opacity: .78;
}

.btn.is-loading::before,
.btn[aria-busy="true"]::before,
.sofl-btn-primary.is-loading::before,
.sofl-btn-gold.is-loading::before,
.sofl-btn-outline.is-loading::before {
  content: "";
  width: .85rem;
  height: .85rem;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: sofl-btn-spin .7s linear infinite;
}

.pagination .page-link {
  min-width: 38px;
  min-height: 38px;
  margin: 0 3px;
  border: 1px solid var(--sofl-btn-border);
  border-radius: 8px;
  color: var(--sofl-btn-primary);
  font-weight: 700;
  box-shadow: none;
}

.pagination .page-link:hover,
.pagination .page-link:focus {
  border-color: #cbd5e1;
  background: var(--sofl-btn-bg-soft);
  color: var(--sofl-btn-primary);
  box-shadow: var(--sofl-btn-focus);
}

.pagination .page-item.active .page-link {
  border-color: var(--sofl-btn-primary);
  background: var(--sofl-btn-primary);
  color: #ffffff;
}

.modal-footer .btn,
.modal-footer .sofl-btn-primary,
.modal-footer .sofl-btn-gold,
.modal-footer .sofl-btn-outline,
.sofl-action-row,
.sofl-table-actions {
  gap: .5rem;
}

@keyframes sofl-btn-spin {
  to { transform: rotate(360deg); }
}
