:root {
    --badge-bg-color: hsl(var(--main), 30%, 30%);
    --badge-hover-scale: 1.10;
    --badge-border-radius: 16px;
    --badge-padding: 4.5px 7px;
    --badge-font-size: 12px;
    --icon-size: 24px;
    --icon-border-radius: 50%;
    --panel-bg-color: white;
    --panel-border-radius: 6px;
    --panel-padding: 10px;
    --panel-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
    --panel-width: 150px;
    --panel-min-width: 75px;
    --panel-max-width: 300px;
    --badge-glow-intensity: 0px;
    --badge-animation-duration: 2s;
    --badge-border-width: 1px;
    --badge-text-shadow: none;
    --badge-transition-timing: cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

/* === CONTAINERS === */
    .badge-selects {
        background: hsl(var(--main), 16%, 20%);
        height: fit-content !important;
        overflow-x: clip !important;
        overflow-y: visible !important;
    }

    .badge-selects::-webkit-scrollbar {
        width: 8px;
        background-color: hsl(var(--main), 10%, 25%);
        border-bottom-right-radius: 8px;
    }

    .badge-selects::-webkit-scrollbar-thumb {
        border-radius: 6px;
        background-color: hsl(var(--main), 15%, 40%);
    }

    .badge-block {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
        width: 100%;
    }
    .badge-block.compact {
        gap: 2px;
    }

/* === Badge Base === */
    .badge, .iconBadge {
        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        transition: all 0.3s var(--badge-transition-timing);
    }

    .badge:hover, .iconBadge:hover {
        box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        transform: translateY(-2px) scale(var(--badge-hover-scale));
        transition: all 0.2s var(--badge-transition-timing);
    }

    .badge .bg-effect-psy::before,
    .iconBadge .bg-effect-psy::before,
    .badge::before, .iconBadge::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: linear-gradient(135deg, rgba(175, 175, 175, 0.1) 0%, rgba(0,0,0,0.1) 100%);
        border-radius: inherit;
        pointer-events: none;
    }
    .badge:hover::before, .iconBadge:hover::before {
        background: linear-gradient(135deg, rgba(235, 235, 235, 0.1) 0%, rgba(0,0,0,0.1) 100%);
        transition: background 3s ease 0.25s;
    }
    .badge-name {
        z-index: 0;
    }

    .badge .bg-effect-psy::before,
    .iconBadge .bg-effect-psy::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        background: linear-gradient(135deg, rgba(55, 55, 55, 0.5) 0%, rgba(0,0,0,0.5) 100%);
        border-radius: inherit;
        pointer-events: none;
    }

/* === ICONS === */
    .badge .icon {
        width: var(--icon-size);
        height: var(--icon-size);
        border-radius: var(--icon-border-radius);
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .iconBadge .icon {
        width: 100%;
        height: 100%;
        display: flex;
        align-items: center;
        align-content: center;
        justify-content: center;
        padding: 0;
        margin: 0;
    }

    .icon i {
        width: 16px;
        height: 16px;
        align-items: center;
        align-content: center;
        justify-content: center;
    }
    .icon i:before {
        scale: 0.9;
        display: grid;
        align-items: center;
        align-content: center;
        justify-content: center;
    }
    .iconBadge .icon i {
        font-size: 12px; /* this can be tweaked if still too big */
        line-height: 1;
        margin: 0;
    }

/* === REGULAR BADGES === */
    .badge {
        background-color: var(--badge-bg-color);
        border-radius: var(--badge-border-radius);
        padding: var(--badge-padding);
        font-size: var(--badge-font-size);
        display: inline-flex;
        align-items: center;
        justify-content: center;
        position: relative;
        transition: 0.5s scale, 0.7s color;
        flex-direction: row;
        height: 35px;
    }

    .badge:hover {
        transform: scale(var(--badge-hover-scale));
    }

/* === ICON BADGES (COMPACT) === */
    .iconBadge {
        background-color: var(--badge-bg-color);
        border-radius: var(--badge-border-radius);
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: var(--icon-size);
        height: var(--icon-size);
        position: relative;
        transition: 0.2s scale, 0.2s color;
        padding: 0; /* remove padding to keep it square */
    }

    .iconBadge:hover {
        transform: scale(var(--badge-hover-scale));
    }
/* === BADGE VARIATIONS === */
    /* Glowing badge */
        .badge.glowing, .iconBadge.glowing {
            box-shadow: 0 0 var(--badge-glow-intensity) currentColor;
            animation: pulse var(--badge-animation-duration) infinite alternate;
        }

    /* Outlined badge */
        .badge.outlined, .iconBadge.outlined {
            background-color: transparent !important;
            border-width: var(--badge-border-width) !important;
        }

    /* Gradient badge */
        .badge.gradient, .iconBadge.gradient {
            background-image: linear-gradient(135deg, 
                hsla(calc(var(--badge-styles-color, 0) - 20), 70%, 50%, 0.9),
                hsla(calc(var(--badge-styles-color, 0) + 20), 70%, 50%, 0.9)) !important;
            background-size: 200% 200%;
            animation: gradientShift 3s ease infinite;
        }

    /* Flat modern badge */
        .badge.flat, .iconBadge.flat {
            box-shadow: none;
            border: none !important;
        }

    /* Pill shaped badge */
        .badge.pill {
            border-radius: 50px;
        }

    /* Squared badge */
        .badge.squared, .iconBadge.squared {
            border-radius: 4px;
        }

    /* Glass morphism effect */
        .badge.glass, .iconBadge.glass {
            background: hsla(var(--badge-hue), 20%, 50%, 0.2) !important;
            backdrop-filter: blur(10px);
            border: 1px solid hsla(var(--badge-hue), 30%, 70%, 0.3) !important;
            box-shadow: 0 4px 15px hsla(var(--badge-hue), 20%, 20%, 0.1);
        }

        .badge.glass .badge-panel, .iconBadge.glass .badge-panel {
            background: hsla(var(--badge-hue), 20%, 20%, 0.85) !important;
            backdrop-filter: blur(10px);
            border: 1px solid hsla(var(--badge-hue), 30%, 40%, 0.3);
        }

    /* Animated badge */
        .badge.animated .icon i, .iconBadge.animated .icon i {
            animation: spin var(--badge-animation-duration) linear infinite;
        }

        .badge.bounce:hover, .iconBadge.bounce:hover {
            animation: bounce 0.5s;
        }
    
    /* Badge with elevated panel */
        .badge.elevated-panel .badge-panel, .iconBadge.elevated-panel .badge-panel {
            box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
            transform: translateX(-50%) translateY(-5px);
            transition: all 0.3s var(--badge-transition-timing);
        }

        .badge.elevated-panel:hover .badge-panel, .iconBadge.elevated-panel:hover .badge-panel {
            transform: translateX(-50%) translateY(0);
        }

    /* Badge with ribbon */
        .badge.ribbon {
            position: relative;
            overflow: hidden;
        }

        .badge.ribbon::after {
            content: '';
            position: absolute;
            top: -10px;
            right: -10px;
            width: 20px;
            height: 20px;
            background-color: rgba(255, 255, 255, 0.6);
            transform: rotate(45deg);
        }

    /* Badge with notification dot */
        .badge.notification, .iconBadge.notification {
            position: relative;
        }

        .badge.notification::after, .iconBadge.notification::after {
            content: '';
            position: absolute;
            top: -3px;
            right: -3px;
            width: 8px;
            height: 8px;
            background-color: #ff4757;
            border-radius: 50%;
            border: 1px solid white;
        }

    /* Badge with text shadow */
        .badge.text-shadow .badge-name, .iconBadge.text-shadow .icon i {
            text-shadow: var(--badge-text-shadow);
        }

    /* Badge with border animation */
        .badge.border-pulse-hover:hover, .iconBadge.badge.border-pulse-hover:hover,
        .badge.border-pulse, .iconBadge.border-pulse {
            animation: borderPulse var(--badge-animation-duration) infinite;
        }


/* === ANIMATIONS === */
    .badge.anim-t-1s {
        --badge-animation-duration: 1s;
    }

    .badge.anim-t-2s {
        --badge-animation-duration: 2s;
    }

    .badge.anim-t-3s {
        --badge-animation-duration: 3s;
    }

    .badge.anim-t-4s {
        --badge-animation-duration: 4s;
    }

    .badge.anim-t-5s {
        --badge-animation-duration: 5s;
    }
    
    @keyframes pulse {
        0% {
            box-shadow: 0 0 var(--badge-glow-intensity) currentColor;
        }
        100% {
            box-shadow: 0 0 calc(var(--badge-glow-intensity) * 2) currentColor;
        }
    }

    @keyframes gradientShift {
        0% {
            background-position: 0% 50%;
        }
        50% {
            background-position: 100% 50%;
        }
        100% {
            background-position: 0% 50%;
        }
    }

    @keyframes spin {
        0% {
            transform: rotate(0deg);
        }
        100% {
            transform: rotate(360deg);
        }
    }

    @keyframes bounce {
        0%, 20%, 50%, 80%, 100% {
            transform: translateY(0) scale(var(--badge-hover-scale));
        }
        40% {
            transform: translateY(-10px) scale(var(--badge-hover-scale));
        }
        60% {
            transform: translateY(-5px) scale(var(--badge-hover-scale));
        }
    }

    @keyframes borderPulse {
        0% {
            border-color: currentColor;
        }
        50% {
            border-color: transparent;
        }
        100% {
            border-color: currentColor;
        }
    }
/* === BADGE PANELS === */
    .badge-panel {
        display: none;
        position: absolute;
        bottom: 100%;
        left: 50%;
        transform: translateX(-50%);
        background-color: var(--panel-bg-color);
        padding: var(--panel-padding);
        border-radius: var(--panel-border-radius);
        box-shadow: var(--panel-shadow);
        width: var(--panel-width);
        min-width: var(--panel-min-width);
        max-width: var(--panel-max-width);
        z-index: 5;
        word-wrap: break-word !important;
        text-wrap: wrap !important;
        line-height: 18px;
        font-weight: 400;
    }

    .badge:hover .badge-panel,
    .iconBadge:hover .badge-panel {
        display: flex;
        flex-direction: column;
    }

    .badge-panel h3 {
        margin-top: 0;
        margin-bottom: 8px;
        font-size: 14px;
        font-weight: 600;
    }
    
    .badge-panel p {
        margin: 0;
        font-size: 12px;
        opacity: 0.9;
    }

/* === RESPONSIVE ADJUSTMENTS === */
    @media (max-width: 600px) {
        .badge {
            font-size: 10px;
            padding: 4px 6px;
        }

        .badge-panel {
            max-width: 200px;
        }
    }
/* === Accessibility === */
    /* Focus styles for keyboard navigation */
        .badge:focus, .iconBadge:focus {
            outline: 2px solid hsla(var(--badge-hue), 70%, 60%, 0.8);
            outline-offset: 2px;
            box-shadow: 0 0 0 4px hsla(var(--badge-hue), 50%, 50%, 0.2);
        }

    /* High contrast mode support */
        @media (forced-colors: active) {
            .badge, .iconBadge {
                border: 2px solid currentColor;
                forced-color-adjust: none;
            }

            .badge:focus, .iconBadge:focus {
                outline: 2px solid CanvasText;
            }
        }
    /* Reduced motion preference */
        @media (prefers-reduced-motion: reduce) {
            .badge, .iconBadge, 
            .badge:hover, .iconBadge:hover,
            .badge.animated, .iconBadge.animated,
            .badge.glowing, .iconBadge.glowing,
            .badge.gradient, .iconBadge.gradient {
                transition: none !important;
                animation: none !important;
                transform: none !important;
            }

            .badge:hover .badge-panel, .iconBadge:hover .badge-panel {
                transform: translateX(-50%) !important;
            }
        }
    /* Screen reader only text - can be used for additional context */
        .sr-only {
            position: absolute;
            width: 1px;
            height: 1px;
            padding: 0;
            margin: -1px;
            overflow: hidden;
            clip: rect(0, 0, 0, 0);
            white-space: nowrap;
            border-width: 0;
        }