/* Utility classes */

/* Text */
.text-muted { color: var(--color-text-secondary); }
.text-success { color: var(--color-success); }
.text-warning { color: var(--color-warning); }
.text-danger { color: var(--color-danger); }
.text-info { color: var(--color-info); }
.text-right { text-align: right; }
.text-center { text-align: center; }

/* Text Sizes & Weights */
.text-xs { font-size: 0.75rem; }
.text-sm { font-size: 0.85rem; }
.text-base { font-size: 1rem; }
.text-lg { font-size: 1.125rem; }
.text-xl { font-size: 1.25rem; }
.text-2xl { font-size: 1.5rem; }
.font-normal { font-weight: 400; }
.font-medium { font-weight: 500; }
.font-semibold { font-weight: 600; }
.font-bold { font-weight: 700; }
.uppercase { text-transform: uppercase; }
.tracking-wider { letter-spacing: 0.05em; }

/* Display */
.d-none { display: none; }
.d-flex { display: flex; }
.d-block { display: block; }
.d-inline { display: inline; }
.d-inline-block { display: inline-block; }

/* Flexbox */
.flex { display: flex; }
.items-center { align-items: center; }
.justify-between { justify-content: space-between; }
.justify-center { justify-content: center; }
.flex-wrap { flex-wrap: wrap; }
.flex-column { flex-direction: column; }
.gap-1 { gap: 4px; }
.gap-2 { gap: 8px; }
.gap-3 { gap: 12px; }
.gap-4 { gap: 16px; }
.gap-6 { gap: 24px; }

/* Grid */
.grid { display: grid; }
.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }

@media (min-width: 768px) {
    .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
    .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Spacing */
.mt-1 { margin-top: 4px; }
.mt-2 { margin-top: 8px; }
.mt-3 { margin-top: 12px; }
.mt-4 { margin-top: 16px; }
.mt-8 { margin-top: 32px; }
.mb-1 { margin-bottom: 4px; }
.mb-2 { margin-bottom: 8px; }
.mb-3 { margin-bottom: 12px; }
.mb-4 { margin-bottom: 16px; }
.mb-6 { margin-bottom: 24px; }
.p-1 { padding: 4px; }
.p-2 { padding: 8px; }
.p-3 { padding: 12px; }
.p-4 { padding: 16px; }
.p-5 { padding: 20px; }
.py-1 { padding-top: 4px; padding-bottom: 4px; }
.py-16 { padding-top: 64px; padding-bottom: 64px; }
.px-2 { padding-left: 8px; padding-right: 8px; }

/* Width & Height */
.w-100 { width: 100%; }
.w-auto { width: auto; }
.w-3 { width: 0.75rem; }
.h-3 { height: 0.75rem; }
.h-1 { height: 0.25rem; }
.w-16 { width: 4rem; }
.h-16 { height: 4rem; }

/* Borders & Radius */
.border-t { border-top: 1px solid var(--color-border); }
.border-2 { border-width: 2px; }
.border-dashed { border-style: dashed; }
.rounded { border-radius: var(--radius-sm); }
.rounded-full { border-radius: var(--radius-full); }
.rounded-xl { border-radius: var(--radius-lg); }

/* Helpers */
.overflow-hidden { overflow: hidden; }
.relative { position: relative; }
.mx-auto { margin-left: auto; margin-right: auto; }
.line-clamp-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Empty states */
.empty-state-small {
    text-align: center;
    color: var(--color-text-tertiary);
    padding: 12px;
    font-size: 0.78rem;
}

.empty-state-card {
    text-align: center;
    padding: var(--space-2xl) var(--space-lg);
    background: var(--color-surface);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
}

.empty-state-card h3 {
    margin-bottom: var(--space-sm);
    color: var(--color-text);
}

.empty-state-card p {
    color: var(--color-text-secondary);
    margin-bottom: var(--space-md);
}

/* Badges */
.badge-new { background: var(--color-info-soft); color: var(--color-info); }
.badge-contacted { background: var(--color-warning-soft); color: #92400e; }
.badge-qualified { background: var(--color-success-soft); color: var(--color-success); }
.badge-lost { background: rgba(217, 79, 79, 0.1); color: #991b1b; }
.badge-converted { background: var(--color-success-soft); color: var(--color-success); }

.badge-stage-lead { background: var(--color-info-soft); color: var(--color-info); }
.badge-stage-qualified { background: var(--color-accent-soft); color: var(--color-accent); }
.badge-stage-proposal { background: var(--color-warning-soft); color: #92400e; }
.badge-stage-negotiation { background: rgba(217, 79, 79, 0.1); color: #D94F4F; }
.badge-stage-closed_won { background: var(--color-success-soft); color: var(--color-success); }
.badge-stage-closed_lost { background: rgba(217, 79, 79, 0.1); color: #991b1b; }

.badge-status-todo { background: rgba(156, 160, 176, 0.1); color: var(--color-text-secondary); }
.badge-status-in_progress { background: var(--color-info-soft); color: var(--color-info); }
.badge-status-review { background: var(--color-warning-soft); color: #92400e; }
.badge-status-done { background: var(--color-success-soft); color: var(--color-success); }

.badge-priority-low { background: var(--color-success-soft); color: var(--color-success); }
.badge-priority-medium { background: var(--color-warning-soft); color: #92400e; }
.badge-priority-high { background: var(--color-accent-soft); color: var(--color-accent); }
.badge-priority-urgent { background: rgba(217, 79, 79, 0.1); color: #D94F4F; }

/* Priority colors */
.priority-low { color: var(--color-success); }
.priority-medium { color: var(--color-warning); }
.priority-high { color: var(--color-accent); }
.priority-urgent { color: #D94F4F; }

/* Project color indicator */
.project-color {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 3px;
}
