/* ============================================
   Buttons Component - BEM
   ============================================ */
@layer components {
  /* Block: btn */
  button,
  input[type="submit"],
  .btn {
    display: inline-block;
    padding: var(--space-sm) var(--space-lg);
    font-size: var(--font-size-base);
    font-weight: 500;
    font-family: var(--font-sans);
    color: var(--color-bg);
    background-color: var(--color-primary);
    border: none;
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: background-color var(--transition-fast), box-shadow var(--transition-fast);
    text-decoration: none;
  }

  button:hover,
  input[type="submit"]:hover,
  .btn:hover {
    background-color: var(--color-primary-dark);
    box-shadow: var(--shadow-md);
  }

  button:active,
  input[type="submit"]:active,
  .btn:active {
    transform: translateY(1px);
  }

  button:disabled,
  input[type="submit"]:disabled,
  .btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
  }

  /* Modifier: to-sale */
  button.btn--to-sale,
  input[type="submit"].btn--to-sale,
  .btn--to-sale {
    background-color: var(--color-attention);
    color: var(--color-bg);
    font-weight: 800;
    &:hover {
      background-color: var(--color-attention-dark);
    }
  }

  /* Modifier: primary (explicit primary styling - same as base) */
  .btn--primary {
    /* Uses base btn styling (primary is default) */
    background-color: var(--color-primary);
    color: var(--color-bg);
    &:hover {
      background-color: var(--color-primary-dark);
    }
  }

  /* Modifier: sm (small) */
  .btn--sm {
    padding: var(--space-xs) var(--space-md);
    font-size: var(--font-size-sm);
  }

  /* Modifier: danger */
  button[data-turbo-method="delete"],
  .btn--danger {
    background-color: var(--color-danger);
  }

  button[data-turbo-method="delete"]:hover,
  .btn--danger:hover {
    background-color: #dc2626;
  }

  /* Block: btn-fab (Floating Action Button) */
  .btn-fab {
    position: fixed;
    bottom: var(--space-xl);
    right: var(--space-xl);
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background-color: var(--color-primary);
    color: var(--color-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--shadow-lg);
    transition: all var(--transition-base);
    text-decoration: none;
    z-index: 999;
  }

  .btn-fab:hover {
    background-color: var(--color-primary-dark);
    box-shadow: 0 12px 20px -3px rgb(0 0 0 / 0.2), 0 8px 10px -4px rgb(0 0 0 / 0.2);
    transform: scale(1.05);
    text-decoration: none;
  }

  .btn-fab:active {
    transform: scale(0.95);
  }

  .btn-fab:focus,
  .btn-fab:focus-visible {
    outline: 2px solid var(--color-accent, #2563eb);
    outline-offset: 2px;
    box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.25), var(--shadow-lg);
    z-index: 1001;
  }

  /* Element: btn-fab__icon */
  .btn-fab__icon {
    font-size: 24px;
    line-height: 1;
    font-weight: 300;
  }

  /* Responsive spacing for mobile devices */
  @media (max-width: 640px) {
    .btn-fab {
      bottom: var(--space-lg);
      right: var(--space-lg);
    }
  }
}
