.line-clamp-2 {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.btn {
  @apply px-4 py-2 rounded-md font-medium transition-colors;
}

.btn-primary {
  @apply bg-blue-600 text-white hover:bg-blue-700;
}

.btn-secondary {
  @apply bg-gray-200 text-gray-700 hover:bg-gray-300;
}

.btn-success {
  @apply bg-green-600 text-white hover:bg-green-700;
}

.btn-danger {
  @apply bg-red-600 text-white hover:bg-red-700;
}

.btn-warning {
  @apply bg-yellow-600 text-white hover:bg-yellow-700;
}

.market-card {
  @apply bg-white rounded-lg shadow hover:shadow-lg transition-shadow p-6;
}

.market-card:hover {
  transform: translateY(-2px);
}

.status-badge {
  @apply px-2 py-1 text-xs rounded-full font-medium;
}

.status-open {
  @apply bg-green-100 text-green-800;
}

.status-closed {
  @apply bg-yellow-100 text-yellow-800;
}

.status-settled {
  @apply bg-gray-100 text-gray-800;
}

.status-resting {
  @apply bg-yellow-100 text-yellow-800;
}

.status-filled {
  @apply bg-green-100 text-green-800;
}

.status-canceled {
  @apply bg-gray-100 text-gray-800;
}

.action-buy {
  @apply bg-green-100 text-green-800;
}

.action-sell {
  @apply bg-red-100 text-red-800;
}

.side-yes {
  @apply bg-green-100 text-green-800;
}

.side-no {
  @apply bg-red-100 text-red-800;
}

.pnl-positive {
  @apply text-green-600;
}

.pnl-negative {
  @apply text-red-600;
}

.table-responsive {
  @apply overflow-x-auto;
}

.table-hover tbody tr:hover {
  @apply bg-gray-50;
}

.modal-backdrop {
  @apply fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full z-50;
}

.modal-content {
  @apply relative top-20 mx-auto p-5 border w-96 shadow-lg rounded-md bg-white;
}

.form-group {
  @apply space-y-1;
}

.form-label {
  @apply block text-sm font-medium text-gray-700;
}

.form-input {
  @apply mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500;
}

.form-select {
  @apply mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500;
}

.nav-link {
  @apply px-3 py-2 rounded-md text-sm font-medium transition-colors;
}

.nav-link.active {
  @apply bg-blue-100 text-blue-700;
}

.nav-link:not(.active) {
  @apply text-gray-500 hover:text-gray-700 hover:bg-gray-100;
}

.stats-card {
  @apply bg-white rounded-lg shadow p-6;
}

.stats-value {
  @apply text-3xl font-bold;
}

.stats-label {
  @apply text-sm font-medium text-gray-500;
}

.loading-spinner {
  @apply animate-spin rounded-full h-6 w-6 border-b-2 border-blue-600;
}

@media (max-width: 768px) {
  .modal-content {
    @apply w-11/12 max-w-md;
  }

  .table-responsive {
    @apply text-sm;
  }

  .stats-value {
    @apply text-2xl;
  }
}

.order-form {
  @apply space-y-4;
}

.order-form .form-group {
  @apply space-y-2;
}

.price-display {
  @apply font-mono text-sm;
}

.price-positive {
  @apply text-green-600 font-medium;
}

.price-negative {
  @apply text-red-600 font-medium;
}

.fade-in {
  animation: fadeIn 0.3s ease-in-out;
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.slide-up {
  animation: slideUp 0.3s ease-out;
}

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.cursor-pointer {
  @apply cursor-pointer;
}

.text-truncate {
  @apply truncate;
}

.border-dashed {
  border-style: dashed;
}

.focus-ring {
  @apply focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2;
}