/* 公共样式 */
.btn {
    @apply inline-flex items-center justify-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium focus:outline-none focus:ring-2 focus:ring-offset-2 transition duration-200;
}

.btn-primary {
    @apply bg-indigo-600 hover:bg-indigo-700 text-white focus:ring-indigo-500;
}

.btn-secondary {
    @apply bg-white border-gray-300 hover:bg-gray-50 text-gray-700 focus:ring-indigo-500;
}

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

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

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

.btn-sm {
    @apply px-3 py-1.5 text-xs;
}

.btn-lg {
    @apply px-6 py-3 text-base;
}

.btn-icon {
    @apply p-2;
}

/* 卡片组件 */
.card {
    @apply bg-white rounded-lg shadow-sm transition-all duration-200;
}

.card:hover {
    @apply shadow-md;
}

.card-header {
    @apply p-4 border-b border-gray-100;
}

.card-body {
    @apply p-4;
}

.card-footer {
    @apply p-4 bg-gray-50 border-t border-gray-100;
}

/* 表格样式 */
.table {
    @apply min-w-full divide-y divide-gray-200;
}

.table th {
    @apply px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider;
}

.table td {
    @apply px-6 py-4 whitespace-nowrap text-sm text-gray-500;
}

.table tr {
    @apply border-b border-gray-100;
}

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

/* 表单样式 */
.form-control {
    @apply block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500;
}

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

.form-group {
    @apply mb-4;
}

.form-help {
    @apply mt-1 text-xs text-gray-500;
}

.form-error {
    @apply mt-1 text-xs text-red-600;
}

/* 标签样式 */
.badge {
    @apply inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium;
}

.badge-success {
    @apply bg-green-100 text-green-800;
}

.badge-warning {
    @apply bg-yellow-100 text-yellow-800;
}

.badge-danger {
    @apply bg-red-100 text-red-800;
}

.badge-info {
    @apply bg-blue-100 text-blue-800;
}

.badge-default {
    @apply bg-gray-100 text-gray-800;
}

/* 动画 */
@keyframes pulse-ring {
    0% {
        transform: scale(0.8);
        opacity: 0.8;
    }
    70%, 100% {
        transform: scale(1.5);
        opacity: 0;
    }
}

.animate-pulse-ring:before {
    content: '';
    @apply absolute rounded-full bg-current w-full h-full;
    z-index: -1;
    animation: pulse-ring 2s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;
}

/* 响应式实用工具 */
.responsive-grid {
    @apply grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6;
}

/* 聊天气泡 */
.chat-bubble {
    @apply max-w-[70%] p-3 rounded-lg;
}

.chat-bubble-outgoing {
    @apply bg-indigo-100 rounded-tl-lg rounded-tr-lg rounded-bl-lg ml-auto;
}

.chat-bubble-incoming {
    @apply bg-gray-100 rounded-tl-lg rounded-tr-lg rounded-br-lg;
}

/* 高级导航 */
.nav-tabs {
    @apply flex border-b border-gray-200;
}

.nav-tab {
    @apply py-2 px-4 text-center border-b-2 font-medium text-sm;
}

.nav-tab-active {
    @apply border-indigo-500 text-indigo-600;
}

.nav-tab-inactive {
    @apply border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300;
}
