/* ============================================
   BADGES.CSS - Badge / Tag Components
   ============================================ */

.badge {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-1);
    padding: 0.2em 0.65em;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    line-height: 1;
    border-radius: var(--radius-md);
    white-space: nowrap;
    vertical-align: middle;
}

/* Solid */
.badge-primary {
    background: var(--color-primary);
    color: var(--color-white);
}

.badge-secondary {
    background: var(--color-secondary);
    color: var(--color-white);
}

.badge-success {
    background: var(--color-success);
    color: var(--color-white);
}

.badge-info {
    background: var(--color-info);
    color: var(--color-white);
}

.badge-warning {
    background: var(--color-warning);
    color: var(--color-dark);
}

.badge-danger {
    background: var(--color-danger);
    color: var(--color-white);
}

.badge-dark {
    background: var(--color-dark);
    color: var(--color-white);
}

.badge-light {
    background: var(--color-gray-200);
    color: var(--color-dark);
}

/* Soft / Light */
.badge-soft-primary {
    background: rgba(var(--color-primary-rgb), 0.15);
    color: var(--color-primary);
}

.badge-soft-secondary {
    background: rgba(var(--color-secondary-rgb), 0.15);
    color: var(--color-secondary);
}

.badge-soft-success {
    background: rgba(var(--color-success-rgb), 0.15);
    color: var(--color-success);
}

.badge-soft-info {
    background: rgba(var(--color-info-rgb), 0.15);
    color: var(--color-info);
}

.badge-soft-warning {
    background: rgba(var(--color-warning-rgb), 0.15);
    color: var(--color-warning);
}

.badge-soft-danger {
    background: rgba(var(--color-danger-rgb), 0.15);
    color: var(--color-danger);
}

.badge-soft-dark {
    background: rgba(var(--color-dark-rgb), 0.3);
    color: var(--color-gray-300);
}

/* Outline */
.badge-outline-primary {
    border: 1px solid var(--color-primary);
    color: var(--color-primary);
    background: transparent;
}

.badge-outline-secondary {
    border: 1px solid var(--color-secondary);
    color: var(--color-secondary);
    background: transparent;
}

.badge-outline-success {
    border: 1px solid var(--color-success);
    color: var(--color-success);
    background: transparent;
}

.badge-outline-info {
    border: 1px solid var(--color-info);
    color: var(--color-info);
    background: transparent;
}

.badge-outline-warning {
    border: 1px solid var(--color-warning);
    color: var(--color-warning);
    background: transparent;
}

.badge-outline-danger {
    border: 1px solid var(--color-danger);
    color: var(--color-danger);
    background: transparent;
}

/* Pill */
.badge-pill {
    border-radius: var(--radius-full);
    padding: 0.25em 0.8em;
}

/* Dot badge */
.badge-dot {
    width: 8px;
    height: 8px;
    padding: 0;
    border-radius: 50%;
    display: inline-block;
}

.badge-dot-primary {
    background: var(--color-primary);
}

.badge-dot-success {
    background: var(--color-success);
}

.badge-dot-warning {
    background: var(--color-warning);
}

.badge-dot-danger {
    background: var(--color-danger);
}

.badge-dot-pulse {
    position: relative;
}

.badge-dot-pulse::before {
    content: '';
    position: absolute;
    inset: -3px;
    border-radius: 50%;
    background: inherit;
    opacity: 0.4;
    animation: badgePulse 2s infinite;
}

@keyframes badgePulse {

    0%,
    100% {
        transform: scale(1);
        opacity: 0.4;
    }

    50% {
        transform: scale(1.8);
        opacity: 0;
    }
}

/* Avatar badge (notification dot) */
.badge-avatar {
    position: absolute;
    top: -2px;
    right: -2px;
    width: 18px;
    height: 18px;
    font-size: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    border: 2px solid var(--body-bg);
}