.neuralstack-sidebar-avatar{
    background-image: url(static/admin/forbannet.png)!important;
}

/*
╔═══════════════════════════════════════════════════════════════════╗
║ TEXT EFFECTS — Inline accent animations for custom tags            ║
║                                                                    ║
║ <sc>  Scanning beam                                                ║
║ <cw>  Cursor sweep                                                 ║
║ <ud>  Underline draw                                               ║
║ <sh>  Shimmer color sweep                                          ║
║ <rv>  Reveal clip wipe                                             ║
║ <cl>  Combo shimmer + cursor                                       ║
╚═══════════════════════════════════════════════════════════════════╝
*/

/* ====================================================================
   SC — SCANNING BEAM
   Translucent accent glow sweeps across
   ==================================================================== */

sc {
    position: relative;
    display: inline-block;
}

sc::after {
    content: '';
    position: absolute;
    left: -20px;
    top: 0;
    width: 20px;
    height: 100%;
    background: linear-gradient(90deg, transparent, var(--io-accent-glow), transparent);
    animation: fx-scan 2.5s linear infinite;
    pointer-events: none;
}

@keyframes fx-scan {
    0%   { left: -20px; }
    100% { left: 100%; }
}

/* ====================================================================
   CW — CURSOR SWEEP
   Accent bar with glow travels back and forth
   ==================================================================== */

cw {
    position: relative;
    display: inline-block;
}

cw::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 2px;
    height: 100%;
    background: var(--io-accent);
    box-shadow: 0 0 8px var(--io-accent-glow);
    animation: fx-cursor 3s ease-in-out infinite;
    pointer-events: none;
}

@keyframes fx-cursor {
    0%   { left: 0; }
    50%  { left: 100%; }
    100% { left: 0; }
}

/* ====================================================================
   UD — UNDERLINE DRAW
   Accent underline draws in then erases
   ==================================================================== */

ud {
    background-image: linear-gradient(var(--io-accent), var(--io-accent));
    background-size: 0% 2px;
    background-repeat: no-repeat;
    background-position: 0 100%;
    animation: fx-underline 2s ease-in-out infinite;
}

@keyframes fx-underline {
    0%   { background-size: 0% 2px; background-position: 0 100%; }
    50%  { background-size: 100% 2px; background-position: 0 100%; }
    51%  { background-position: 100% 100%; }
    100% { background-size: 0% 2px; background-position: 100% 100%; }
}

/* ====================================================================
   SH — SHIMMER COLOR SWEEP
   Accent band sweeps through text color
   ==================================================================== */

sh {
    background: linear-gradient(
        90deg,
        var(--io-text-primary) 0%,
        var(--io-text-primary) 40%,
        var(--io-accent-bright) 50%,
        var(--io-text-primary) 60%,
        var(--io-text-primary) 100%
    );
    background-size: 200% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: fx-shimmer 2.5s linear infinite;
}

@keyframes fx-shimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* ====================================================================
   RV — REVEAL CLIP WIPE
   Accent copy of text wipes in from left, out from right
   ==================================================================== */

rv {
    position: relative;
}

rv::before {
    content: attr(data-text);
    position: absolute;
    left: 0;
    top: 0;
    color: var(--io-accent);
    clip-path: inset(0 100% 0 0);
    animation: fx-reveal 2s linear infinite;
    pointer-events: none;
}

@keyframes fx-reveal {
    0%   { clip-path: inset(0 100% 0 0); }
    50%  { clip-path: inset(0 0 0 0); }
    51%  { clip-path: inset(0 0 0 100%); }
    100% { clip-path: inset(0 0 0 100%); }
}

/* ====================================================================
   CL — COMBO SHIMMER + CURSOR
   Shimmer color sweep with a glowing cursor bar
   ==================================================================== */

cl {
    position: relative;
    display: inline-block;
    background: linear-gradient(
        90deg,
        var(--io-text-primary) 0%,
        var(--io-text-primary) 40%,
        var(--io-accent-bright) 50%,
        var(--io-text-primary) 60%,
        var(--io-text-primary) 100%
    );
    background-size: 200% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: fx-shimmer 2.5s linear infinite;
}

cl::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 2px;
    height: 100%;
    background: var(--io-accent);
    box-shadow: 0 0 8px var(--io-accent-glow);
    animation: fx-cursor 3s ease-in-out infinite;
    pointer-events: none;
}