/* ── Buttons ──────────────────────────────────────────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--weight-semi);
  line-height: 1;
  padding: 0.75rem 1.5rem;
  border-radius: var(--radius-md);
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: background var(--ease-base), color var(--ease-base),
              border-color var(--ease-base), box-shadow var(--ease-base),
              transform var(--ease-fast);
  white-space: nowrap;
  text-decoration: none;
  -webkit-user-select: none;
  user-select: none;
}
.btn:active { transform: translateY(1px); }
.btn:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }

/* Sizes */
.btn--xs  { font-size: 11px; padding: 0.3rem 0.6rem; border-radius: var(--radius-sm); }
.btn--sm  { font-size: var(--text-xs); padding: 0.5rem 1rem; border-radius: var(--radius-sm); }
.btn--lg  { font-size: var(--text-base); padding: 0.875rem 1.75rem; }
.btn--xl  { font-size: var(--text-md); padding: 1rem 2rem; border-radius: var(--radius-lg); }

/* Primary */
.btn--primary {
  background: var(--color-accent);
  color: var(--color-text-inv);
  border-color: var(--color-accent);
  box-shadow: 0 2px 8px rgba(26,63,168,.25);
}
.btn--primary:hover {
  background: var(--color-accent-hover);
  border-color: var(--color-accent-hover);
  box-shadow: 0 4px 16px rgba(26,63,168,.30);
  transform: translateY(-1px);
}

/* Outline */
.btn--outline {
  background: transparent;
  color: var(--color-text);
  border-color: var(--color-border-strong);
}
.btn--outline:hover {
  background: var(--color-bg-muted);
  border-color: var(--color-text-3);
}

/* Secondary (dark/charcoal) */
.btn--secondary {
  background: #111110;
  color: #ffffff;
  border-color: #111110;
}
.btn--secondary:hover {
  background: #2a2a28;
  border-color: #2a2a28;
  transform: translateY(-1px);
}

/* Outline Accent */
.btn--outline-accent {
  background: transparent;
  color: var(--color-accent);
  border-color: var(--color-accent);
}
.btn--outline-accent:hover {
  background: var(--color-accent);
  color: var(--color-text-inv);
  border-color: var(--color-accent);
  transform: translateY(-1px);
}

/* Ghost */
.btn--ghost {
  background: transparent;
  color: var(--color-text-2);
  border-color: transparent;
}
.btn--ghost:hover {
  background: var(--color-bg-muted);
  color: var(--color-text);
}

/* Danger */
.btn--danger {
  background: var(--color-danger);
  color: #fff;
  border-color: var(--color-danger);
}
.btn--danger:hover { filter: brightness(0.9); }

/* Danger soft (theme-aware) */
.btn--danger-soft {
  background: var(--badge-danger-bg);
  color: var(--badge-danger-fg);
  border-color: var(--color-danger);
}
.btn--danger-soft:hover { filter: brightness(0.9); }

/* Warning */
.btn--warning {
  background: var(--color-warning, #d97706);
  color: #fff;
  border-color: var(--color-warning, #d97706);
}
.btn--warning:hover { filter: brightness(0.9); }

/* Accent */
.btn--accent {
  background: var(--color-accent);
  color: #fff;
  border-color: var(--color-accent);
}
.btn--accent:hover {
  background: var(--color-accent-hover);
  border-color: var(--color-accent-hover);
}

/* Disabled */
.btn:disabled, .btn[aria-disabled="true"] {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* Full width */
.btn--block { width: 100%; }

/* ── Black buttons in admin + portal: ALL buttons default to black bg + white text ── */
/* .admin-layout / .portal-layout are on <body> so ALL descendant buttons are covered */
/* !important used to guarantee no variant or contextual selector can override */
.admin-layout .btn,
.portal-layout .btn,
.admin-layout .btn--primary,
.portal-layout .btn--primary,
.admin-layout .btn--outline,
.portal-layout .btn--outline,
.admin-layout .btn--ghost,
.portal-layout .btn--ghost,
.admin-layout .btn--warning,
.portal-layout .btn--warning,
.admin-layout .btn--accent,
.portal-layout .btn--accent {
  background: #111110 !important;
  color: #fff !important;
  border-color: #111110 !important;
  box-shadow: 0 2px 8px rgba(0,0,0,.18) !important;
  filter: none !important;
}
.admin-layout .btn:hover,
.portal-layout .btn:hover,
.admin-layout .btn--primary:hover,
.portal-layout .btn--primary:hover,
.admin-layout .btn--outline:hover,
.portal-layout .btn--outline:hover,
.admin-layout .btn--ghost:hover,
.portal-layout .btn--ghost:hover,
.admin-layout .btn--warning:hover,
.portal-layout .btn--warning:hover,
.admin-layout .btn--accent:hover,
.portal-layout .btn--accent:hover {
  background: #333 !important;
  border-color: #333 !important;
  color: #fff !important;
  box-shadow: 0 4px 16px rgba(0,0,0,.22) !important;
  filter: none !important;
}

/* Keep danger buttons red */
.admin-layout .btn--danger,
.portal-layout .btn--danger {
  background: var(--color-danger) !important;
  color: #fff !important;
  border-color: var(--color-danger) !important;
  box-shadow: none !important;
  filter: none !important;
}
.admin-layout .btn--danger:hover,
.portal-layout .btn--danger:hover {
  filter: brightness(0.9) !important;
  color: #fff !important;
  background: var(--color-danger) !important;
  border-color: var(--color-danger) !important;
}
.admin-layout .btn--danger-soft,
.portal-layout .btn--danger-soft {
  background: var(--badge-danger-bg) !important;
  color: var(--badge-danger-fg) !important;
  border-color: var(--color-danger) !important;
  box-shadow: none !important;
  filter: none !important;
}
.admin-layout .btn--danger-soft:hover,
.portal-layout .btn--danger-soft:hover {
  filter: brightness(0.9) !important;
}

/* Keep disabled buttons visually muted */
.admin-layout .btn:disabled,
.admin-layout .btn[aria-disabled="true"],
.portal-layout .btn:disabled,
.portal-layout .btn[aria-disabled="true"] {
  opacity: 0.5 !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
}

/* Force icons inside admin/portal buttons to inherit white color.
   Prevents inline style="color:..." on .ao-icon from creating
   colored icons on black button backgrounds. */
.admin-layout .btn .ao-icon,
.portal-layout .btn .ao-icon {
  color: inherit !important;
}

