/**
 * BeezWoo Premium Effects CSS
 * 
 * Effetti premium ottimizzati per performance
 * 
 * @package BeezWoo
 * @since 2.14.0
 */

/* ==========================================================================
   ANIMATED BORDERS
   ========================================================================== */

.beezwoo-animated-border {
    --border-width: 3px;
    --border-radius: 12px;
    --animation-speed: 3s;
    --glow-size: 15px;
    position: relative;
    display: inline-block;
    border-radius: var(--border-radius);
}

.beezwoo-animated-border__border {
    position: absolute;
    inset: 0;
    border-radius: var(--border-radius);
    padding: var(--border-width);
    pointer-events: none;
    z-index: 0;
}

.beezwoo-animated-border__content {
    position: relative;
    z-index: 1;
    background: #fff;
    border-radius: calc(var(--border-radius) - var(--border-width));
}

/* Rotate Animation - Gradient che ruota */
.beezwoo-ab-anim-rotate .beezwoo-animated-border__border {
    background: conic-gradient(from 0deg, var(--gradient-colors, #ff0000, #00ff00, #0000ff, #ff0000));
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: beezwoo-border-rotate var(--animation-speed) linear infinite;
}

@keyframes beezwoo-border-rotate {
    from { --border-angle: 0deg; }
    to { --border-angle: 360deg; }
}

/* Per browser che non supportano @property, usiamo transform */
.beezwoo-ab-anim-rotate .beezwoo-animated-border__border::before {
    content: '';
    position: absolute;
    inset: -50%;
    background: conic-gradient(from 0deg, var(--gradient-colors, #ff0000, #00ff00, #0000ff, #ff0000));
    animation: beezwoo-spin var(--animation-speed) linear infinite;
}

@keyframes beezwoo-spin {
    to { transform: rotate(360deg); }
}

/* Flow Animation - Gradient che scorre */
.beezwoo-ab-anim-flow .beezwoo-animated-border__border {
    background: linear-gradient(90deg, var(--gradient-colors, #ff0000, #00ff00, #0000ff, #ff0000));
    background-size: 300% 100%;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: beezwoo-flow var(--animation-speed) linear infinite;
}

@keyframes beezwoo-flow {
    0% { background-position: 0% 50%; }
    100% { background-position: 300% 50%; }
}

/* Pulse Animation */
.beezwoo-ab-anim-pulse .beezwoo-animated-border__border {
    background: linear-gradient(90deg, var(--gradient-colors, #ff1493, #ff69b4, #ffb6c1, #ff1493));
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: beezwoo-pulse var(--animation-speed) ease-in-out infinite;
}

@keyframes beezwoo-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.7; transform: scale(1.02); }
}

/* Shimmer Animation */
.beezwoo-ab-anim-shimmer .beezwoo-animated-border__border {
    background: linear-gradient(110deg, var(--gradient-colors, #d4af37, #ffd700, #f5f5dc, #d4af37));
    background-size: 200% 100%;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: beezwoo-shimmer var(--animation-speed) ease-in-out infinite;
}

@keyframes beezwoo-shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

/* Lights Animation - Luci scorrevoli tipo Natale */
.beezwoo-ab-anim-lights .beezwoo-animated-border__border {
    overflow: hidden;
    background: transparent;
    border: var(--border-width) solid transparent;
}

.beezwoo-ab-anim-lights .beezwoo-animated-border__border::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 200%;
    height: 100%;
    background: repeating-linear-gradient(
        90deg,
        var(--gradient-colors, #ff0000 0%, #00ff00 20%, #0000ff 40%, #ffff00 60%, #ff00ff 80%, #ff0000 100%)
    );
    background-size: 50% 100%;
    animation: beezwoo-lights var(--animation-speed) linear infinite;
}

@keyframes beezwoo-lights {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

/* Sparkle Animation */
.beezwoo-ab-anim-sparkle .beezwoo-animated-border__border {
    background: linear-gradient(135deg, var(--gradient-colors, #ffd700, #ffffff, #c0c0c0, #ffd700));
    background-size: 400% 400%;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: beezwoo-sparkle var(--animation-speed) ease-in-out infinite;
}

@keyframes beezwoo-sparkle {
    0%, 100% { background-position: 0% 0%; filter: brightness(1); }
    25% { background-position: 100% 0%; filter: brightness(1.3); }
    50% { background-position: 100% 100%; filter: brightness(1); }
    75% { background-position: 0% 100%; filter: brightness(1.3); }
}

/* Wave Animation */
.beezwoo-ab-anim-wave .beezwoo-animated-border__border {
    background: linear-gradient(90deg, var(--gradient-colors, #0066ff, #00ccff, #66ffff, #0066ff));
    background-size: 200% 100%;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: beezwoo-wave var(--animation-speed) ease-in-out infinite;
}

@keyframes beezwoo-wave {
    0%, 100% { background-position: 0% 50%; transform: scaleX(1); }
    50% { background-position: 100% 50%; transform: scaleX(1.01); }
}

/* Glow Animation */
.beezwoo-ab-anim-glow .beezwoo-animated-border__border {
    background: linear-gradient(45deg, var(--gradient-colors, #ff6600, #8b00ff, #000000, #ff6600));
    background-size: 300% 300%;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: beezwoo-glow-move var(--animation-speed) ease-in-out infinite;
}

@keyframes beezwoo-glow-move {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

/* Neon Animation */
.beezwoo-ab-anim-neon .beezwoo-animated-border__border {
    background: linear-gradient(90deg, var(--gradient-colors, #00ffff, #ff00ff, #ffff00, #00ffff));
    background-size: 300% 100%;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: beezwoo-neon var(--animation-speed) linear infinite;
}

@keyframes beezwoo-neon {
    0% { background-position: 0% 50%; filter: brightness(1) saturate(1.5); }
    50% { background-position: 100% 50%; filter: brightness(1.3) saturate(2); }
    100% { background-position: 200% 50%; filter: brightness(1) saturate(1.5); }
}

/* Dash Animation */
.beezwoo-ab-anim-dash .beezwoo-animated-border__border {
    background: transparent;
    border: var(--border-width) dashed;
    border-image: linear-gradient(90deg, var(--gradient-colors, #000, #fff)) 1;
    animation: beezwoo-dash var(--animation-speed) linear infinite;
}

@keyframes beezwoo-dash {
    to { stroke-dashoffset: -100; }
}

/* Glow Effect */
.beezwoo-ab-glow::after {
    content: '';
    position: absolute;
    inset: calc(var(--glow-size) * -1);
    border-radius: calc(var(--border-radius) + var(--glow-size));
    background: conic-gradient(from 0deg, var(--gradient-colors, #ff0000, #00ff00, #0000ff, #ff0000));
    filter: blur(var(--glow-size));
    opacity: 0.5;
    z-index: -1;
    animation: beezwoo-glow-pulse var(--animation-speed) ease-in-out infinite;
}

@keyframes beezwoo-glow-pulse {
    0%, 100% { opacity: 0.3; }
    50% { opacity: 0.6; }
}

/* Hover Effects */
.beezwoo-ab-hover-speed-up:hover .beezwoo-animated-border__border {
    animation-duration: calc(var(--animation-speed) / 2);
}

.beezwoo-ab-hover-glow-intense:hover::after {
    opacity: 0.8;
    filter: blur(calc(var(--glow-size) * 1.5));
}

.beezwoo-ab-hover-scale:hover {
    transform: scale(1.02);
    transition: transform 0.3s ease;
}

.beezwoo-ab-hover-pause:hover .beezwoo-animated-border__border {
    animation-play-state: paused;
}

/* Scroll Trigger */
.beezwoo-ab-scroll-trigger .beezwoo-animated-border__border {
    animation-play-state: paused;
}

.beezwoo-ab-scroll-trigger.is-visible .beezwoo-animated-border__border {
    animation-play-state: running;
}

/* ==========================================================================
   CONTAINER EFFECTS
   ========================================================================== */

.beezwoo-container-effects {
    position: relative;
    overflow: hidden;
}

.beezwoo-container-effects__canvas {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 10;
}

.beezwoo-container-effects__content {
    position: relative;
    z-index: 5;
}

.beezwoo-ce-z-back .beezwoo-container-effects__canvas {
    z-index: 1;
}

.beezwoo-ce-z-back .beezwoo-container-effects__content {
    z-index: 10;
}

/* Pause on hover */
.beezwoo-ce-pause-hover:hover .beezwoo-particle {
    animation-play-state: paused !important;
}

/* Scroll Trigger */
.beezwoo-ce-scroll-trigger .beezwoo-container-effects__canvas {
    opacity: 0;
    transition: opacity 0.5s ease;
}

.beezwoo-ce-scroll-trigger.is-visible .beezwoo-container-effects__canvas {
    opacity: 1;
}

/* Particle base styles */
.beezwoo-particle {
    position: absolute;
    pointer-events: none;
    will-change: transform;
}

/* Snow particles */
.beezwoo-particle-snow {
    background: radial-gradient(circle, #fff 0%, rgba(255,255,255,0.8) 50%, transparent 100%);
    border-radius: 50%;
    box-shadow: 0 0 3px rgba(255,255,255,0.5);
}

/* Gold sparkle */
.beezwoo-particle-gold {
    background: radial-gradient(circle, #ffd700 0%, #d4af37 50%, transparent 100%);
    border-radius: 50%;
    box-shadow: 0 0 6px rgba(255,215,0,0.8);
}

/* Confetti */
.beezwoo-particle-confetti {
    border-radius: 2px;
}

/* Hearts */
.beezwoo-particle-heart::before {
    content: '\2764';
    font-size: inherit;
}

/* Stars */
.beezwoo-particle-star::before {
    content: '\2605';
    font-size: inherit;
}

/* Bokeh */
.beezwoo-particle-bokeh {
    border-radius: 50%;
    opacity: 0.6;
    filter: blur(1px);
}

/* Fireflies */
.beezwoo-particle-firefly {
    background: radial-gradient(circle, #ffff00 0%, #ffd700 30%, transparent 70%);
    border-radius: 50%;
    box-shadow: 0 0 10px 5px rgba(255,255,0,0.3);
    animation: beezwoo-firefly-glow 2s ease-in-out infinite alternate;
}

@keyframes beezwoo-firefly-glow {
    from { opacity: 0.3; box-shadow: 0 0 5px 2px rgba(255,255,0,0.2); }
    to { opacity: 1; box-shadow: 0 0 15px 8px rgba(255,255,0,0.5); }
}

/* Leaves */
.beezwoo-particle-leaf {
    width: 20px;
    height: 20px;
    background: linear-gradient(135deg, #8B4513 0%, #D2691E 50%, #8B4513 100%);
    border-radius: 0 50% 50% 50%;
    transform-origin: center;
}

/* Bubbles */
.beezwoo-particle-bubble {
    border-radius: 50%;
    background: radial-gradient(circle at 30% 30%, rgba(255,255,255,0.8), transparent 70%);
    border: 1px solid rgba(255,255,255,0.3);
}

/* ==========================================================================
   TEXT EFFECTS
   ========================================================================== */

.beezwoo-text-effects {
    --te-speed: 2s;
    --te-delay: 0ms;
    --te-iteration: infinite;
    display: block;
}

.beezwoo-text-effects__text {
    display: inline-block;
    margin: 0;
    animation-delay: var(--te-delay);
    animation-iteration-count: var(--te-iteration);
    animation-fill-mode: both;
}

/* Shine Effect */
.beezwoo-te-shine .beezwoo-text-effects__text {
    background: linear-gradient(
        110deg,
        currentColor 45%,
        var(--te-shine-color, #fff) 50%,
        currentColor 55%
    );
    background-size: 200% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: beezwoo-text-shine var(--te-speed) ease-in-out infinite;
}

@keyframes beezwoo-text-shine {
    0% { background-position: 200% center; }
    100% { background-position: -200% center; }
}

/* Shine Gold */
.beezwoo-te-shine-gold .beezwoo-text-effects__text {
    background: linear-gradient(
        110deg,
        #d4af37 20%,
        #ffd700 30%,
        #fffacd 50%,
        #ffd700 70%,
        #d4af37 80%
    );
    background-size: 200% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: beezwoo-text-shine var(--te-speed) ease-in-out infinite;
}

/* Gradient Flow */
.beezwoo-te-gradient-flow .beezwoo-text-effects__text {
    background: linear-gradient(
        90deg,
        var(--te-gradient-1, #ff0000),
        var(--te-gradient-2, #0000ff),
        var(--te-gradient-3, #00ff00),
        var(--te-gradient-1, #ff0000)
    );
    background-size: 300% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: beezwoo-gradient-flow var(--te-speed) linear infinite;
}

@keyframes beezwoo-gradient-flow {
    0% { background-position: 0% 50%; }
    100% { background-position: 300% 50%; }
}

/* Rainbow Flow */
.beezwoo-te-rainbow-flow .beezwoo-text-effects__text {
    background: linear-gradient(
        90deg,
        #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #8b00ff, #ff0000
    );
    background-size: 400% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: beezwoo-rainbow-flow var(--te-speed) linear infinite;
}

@keyframes beezwoo-rainbow-flow {
    0% { background-position: 0% 50%; }
    100% { background-position: 400% 50%; }
}

/* Glitch Effect */
.beezwoo-te-glitch .beezwoo-text-effects__text {
    position: relative;
    animation: beezwoo-glitch-skew calc(var(--te-speed) * 2) infinite linear alternate-reverse;
}

.beezwoo-te-glitch .beezwoo-text-effects__text::before,
.beezwoo-te-glitch .beezwoo-text-effects__text::after {
    content: attr(data-text);
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.beezwoo-te-glitch .beezwoo-text-effects__text::before {
    color: var(--te-glitch-1, #00ffff);
    animation: beezwoo-glitch-1 var(--te-speed) infinite linear alternate-reverse;
    clip-path: polygon(0 0, 100% 0, 100% 45%, 0 45%);
}

.beezwoo-te-glitch .beezwoo-text-effects__text::after {
    color: var(--te-glitch-2, #ff00ff);
    animation: beezwoo-glitch-2 var(--te-speed) infinite linear alternate-reverse;
    clip-path: polygon(0 55%, 100% 55%, 100% 100%, 0 100%);
}

@keyframes beezwoo-glitch-1 {
    0%, 100% { transform: translate(0); }
    20% { transform: translate(-3px, 3px); }
    40% { transform: translate(-3px, -3px); }
    60% { transform: translate(3px, 3px); }
    80% { transform: translate(3px, -3px); }
}

@keyframes beezwoo-glitch-2 {
    0%, 100% { transform: translate(0); }
    20% { transform: translate(3px, -3px); }
    40% { transform: translate(3px, 3px); }
    60% { transform: translate(-3px, -3px); }
    80% { transform: translate(-3px, 3px); }
}

@keyframes beezwoo-glitch-skew {
    0%, 100% { transform: skew(0deg); }
    20% { transform: skew(-1deg); }
    40% { transform: skew(1deg); }
    60% { transform: skew(0deg); }
    80% { transform: skew(-1deg); }
}

/* Neon Pulse */
.beezwoo-te-neon-pulse .beezwoo-text-effects__text {
    color: var(--te-neon-color, #ff00ff);
    text-shadow: 
        0 0 5px var(--te-neon-color, #ff00ff),
        0 0 10px var(--te-neon-color, #ff00ff),
        0 0 20px var(--te-neon-color, #ff00ff),
        0 0 40px var(--te-neon-color, #ff00ff);
    animation: beezwoo-neon-pulse var(--te-speed) ease-in-out infinite;
}

@keyframes beezwoo-neon-pulse {
    0%, 100% { 
        text-shadow: 
            0 0 5px var(--te-neon-color, #ff00ff),
            0 0 10px var(--te-neon-color, #ff00ff),
            0 0 20px var(--te-neon-color, #ff00ff),
            0 0 40px var(--te-neon-color, #ff00ff);
    }
    50% { 
        text-shadow: 
            0 0 2px var(--te-neon-color, #ff00ff),
            0 0 5px var(--te-neon-color, #ff00ff),
            0 0 10px var(--te-neon-color, #ff00ff),
            0 0 20px var(--te-neon-color, #ff00ff);
    }
}

/* Typewriter */
.beezwoo-te-typewriter .beezwoo-text-effects__text {
    overflow: hidden;
    border-right: 2px solid currentColor;
    white-space: nowrap;
    animation: 
        beezwoo-typewriter var(--te-speed) steps(40, end),
        beezwoo-cursor 0.75s step-end infinite;
}

@keyframes beezwoo-typewriter {
    from { width: 0; }
    to { width: 100%; }
}

@keyframes beezwoo-cursor {
    from, to { border-color: transparent; }
    50% { border-color: currentColor; }
}

/* Reveal Up */
.beezwoo-te-reveal-up .beezwoo-text-effects__text {
    animation: beezwoo-reveal-up var(--te-speed) cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

@keyframes beezwoo-reveal-up {
    0% { 
        transform: translateY(100%); 
        opacity: 0; 
    }
    100% { 
        transform: translateY(0); 
        opacity: 1; 
    }
}

/* Reveal Fade */
.beezwoo-te-reveal-fade .beezwoo-text-effects__text {
    animation: beezwoo-reveal-fade var(--te-speed) ease-out both;
}

@keyframes beezwoo-reveal-fade {
    0% { opacity: 0; }
    100% { opacity: 1; }
}

/* Blur In */
.beezwoo-te-blur-in .beezwoo-text-effects__text {
    animation: beezwoo-blur-in var(--te-speed) cubic-bezier(0.11, 0, 0.5, 0) both;
}

@keyframes beezwoo-blur-in {
    0% { 
        filter: blur(12px); 
        opacity: 0; 
    }
    100% { 
        filter: blur(0); 
        opacity: 1; 
    }
}

/* Letter Spacing */
.beezwoo-te-letter-spacing .beezwoo-text-effects__text {
    animation: beezwoo-letter-spacing var(--te-speed) cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

@keyframes beezwoo-letter-spacing {
    0% { 
        letter-spacing: 0.5em; 
        opacity: 0; 
    }
    100% { 
        letter-spacing: normal; 
        opacity: 1; 
    }
}

/* Bounce In */
.beezwoo-te-bounce-in .beezwoo-text-effects__text {
    animation: beezwoo-bounce-in var(--te-speed) both;
}

@keyframes beezwoo-bounce-in {
    0% { 
        transform: scale(0.3); 
        opacity: 0; 
    }
    50% { 
        transform: scale(1.05); 
    }
    70% { 
        transform: scale(0.9); 
    }
    100% { 
        transform: scale(1); 
        opacity: 1; 
    }
}

/* Wave */
.beezwoo-te-wave .beezwoo-text-effects__text {
    display: inline-flex;
}

.beezwoo-te-wave .beezwoo-text-effects__text span {
    display: inline-block;
    animation: beezwoo-wave var(--te-speed) ease-in-out infinite;
}

@keyframes beezwoo-wave {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-10px); }
}

/* Flip */
.beezwoo-te-flip .beezwoo-text-effects__text {
    animation: beezwoo-flip var(--te-speed) ease-in-out both;
    transform-style: preserve-3d;
}

@keyframes beezwoo-flip {
    0% { 
        transform: rotateX(-80deg); 
        opacity: 0; 
    }
    100% { 
        transform: rotateX(0); 
        opacity: 1; 
    }
}

/* Scroll Trigger */
.beezwoo-te-scroll-trigger .beezwoo-text-effects__text {
    animation-play-state: paused;
}

.beezwoo-te-scroll-trigger.is-visible .beezwoo-text-effects__text {
    animation-play-state: running;
}

/* ==========================================================================
   UTILITIES & PERFORMANCE
   ========================================================================== */

/* GPU acceleration */
.beezwoo-animated-border,
.beezwoo-container-effects,
.beezwoo-text-effects__text,
.beezwoo-particle,
.beezwoo-has-animated-border,
.beezwoo-svg-border-icon {
    transform: translateZ(0);
    backface-visibility: hidden;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    .beezwoo-animated-border__border,
    .beezwoo-text-effects__text,
    .beezwoo-particle,
    .beezwoo-has-animated-border::before,
    .beezwoo-svg-border-icon {
        animation: none !important;
    }
    
    .beezwoo-ab-glow::after {
        animation: none !important;
        opacity: 0.3;
    }
}

/* Print */
@media print {
    .beezwoo-animated-border__border,
    .beezwoo-container-effects__canvas,
    .beezwoo-particles-canvas,
    .beezwoo-svg-border-container {
        display: none;
    }
}

/* ==========================================================================
   ELEMENTOR INTEGRATION - ANIMATED BORDERS
   ========================================================================== */

.beezwoo-has-animated-border {
    position: relative;
    z-index: 1;
}

.beezwoo-has-animated-border::before {
    content: '';
    position: absolute;
    inset: calc(var(--beezwoo-border-width, 3px) * -1);
    border-radius: inherit;
    padding: var(--beezwoo-border-width, 3px);
    pointer-events: none;
    z-index: -1;
}

/* Border Themes */
.beezwoo-has-animated-border[data-beezwoo-border-theme="christmas"]::before {
    background: conic-gradient(from 0deg, #c41e3a, #228b22, #ffd700, #ffffff, #c41e3a);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="christmas-lights"]::before {
    background: linear-gradient(90deg, #ff0000, #00ff00, #0000ff, #ffff00, #ff00ff, #ff0000);
    background-size: 200% 100%;
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="new-year"]::before {
    background: conic-gradient(from 0deg, #ffd700, #c0c0c0, #ffffff, #ffd700);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="valentine"]::before {
    background: conic-gradient(from 0deg, #ff1493, #ff69b4, #ffb6c1, #ff1493);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="easter"]::before {
    background: conic-gradient(from 0deg, #ffb347, #87ceeb, #98fb98, #dda0dd, #ffb347);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="halloween"]::before {
    background: conic-gradient(from 0deg, #ff6600, #8b00ff, #000000, #39ff14, #ff6600);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="fashion-gold"]::before {
    background: conic-gradient(from 0deg, #d4af37, #ffd700, #b8860b, #f5f5dc, #d4af37);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="fashion-noir"]::before {
    background: conic-gradient(from 0deg, #1a1a1a, #333333, #666666, #999999, #1a1a1a);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="luxury-rose"]::before {
    background: conic-gradient(from 0deg, #d4a484, #c9a68a, #e8d5c4, #ffffff, #d4a484);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="minimalist"]::before {
    background: linear-gradient(90deg, #000000, #ffffff, #000000);
    background-size: 200% 100%;
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="home-warm"]::before {
    background: conic-gradient(from 0deg, #8b4513, #d2691e, #deb887, #f5deb3, #8b4513);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="nature"]::before {
    background: conic-gradient(from 0deg, #228b22, #32cd32, #90ee90, #f0fff0, #228b22);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="neon-cyber"]::before {
    background: conic-gradient(from 0deg, #00ffff, #ff00ff, #ffff00, #00ff00, #00ffff);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="tech-blue"]::before {
    background: conic-gradient(from 0deg, #0066ff, #00ccff, #66ffff, #ffffff, #0066ff);
}

.beezwoo-has-animated-border[data-beezwoo-border-theme="rainbow"]::before {
    background: conic-gradient(from 0deg, #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #8b00ff, #ff0000);
}

/* Border Animations */
.beezwoo-has-animated-border[data-beezwoo-border-animation="rotate"]::before {
    animation: beezwoo-integrated-rotate var(--beezwoo-speed, 3s) linear infinite;
}

.beezwoo-has-animated-border[data-beezwoo-border-animation="flow"]::before {
    animation: beezwoo-integrated-flow var(--beezwoo-speed, 3s) linear infinite;
}

.beezwoo-has-animated-border[data-beezwoo-border-animation="pulse"]::before {
    animation: beezwoo-integrated-pulse var(--beezwoo-speed, 3s) ease-in-out infinite;
}

.beezwoo-has-animated-border[data-beezwoo-border-animation="shimmer"]::before {
    background-size: 200% 100%;
    animation: beezwoo-integrated-shimmer var(--beezwoo-speed, 3s) ease-in-out infinite;
}

.beezwoo-has-animated-border[data-beezwoo-border-animation="glow"]::before {
    animation: beezwoo-integrated-glow var(--beezwoo-speed, 3s) ease-in-out infinite;
}

.beezwoo-has-animated-border[data-beezwoo-border-animation="neon"]::before {
    background-size: 300% 100%;
    animation: beezwoo-integrated-neon var(--beezwoo-speed, 3s) linear infinite;
}

@keyframes beezwoo-integrated-rotate {
    from { filter: hue-rotate(0deg); }
    to { filter: hue-rotate(360deg); }
}

@keyframes beezwoo-integrated-flow {
    0% { background-position: 0% 50%; }
    100% { background-position: 200% 50%; }
}

@keyframes beezwoo-integrated-pulse {
    0%, 100% { opacity: 1; filter: brightness(1); }
    50% { opacity: 0.7; filter: brightness(1.3); }
}

@keyframes beezwoo-integrated-shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

@keyframes beezwoo-integrated-glow {
    0%, 100% { filter: brightness(1) blur(0px); }
    50% { filter: brightness(1.3) blur(2px); }
}

@keyframes beezwoo-integrated-neon {
    0% { background-position: 0% 50%; filter: brightness(1) saturate(1.5); }
    50% { background-position: 100% 50%; filter: brightness(1.3) saturate(2); }
    100% { background-position: 200% 50%; filter: brightness(1) saturate(1.5); }
}

/* Border Glow */
.beezwoo-border-glow::after {
    content: '';
    position: absolute;
    inset: -15px;
    border-radius: inherit;
    background: inherit;
    filter: blur(15px);
    opacity: 0.4;
    z-index: -2;
    animation: beezwoo-glow-pulse 2s ease-in-out infinite;
}

/* Speed Classes */
.beezwoo-has-animated-border[data-beezwoo-border-speed="very-slow"] { --beezwoo-speed: 8s; }
.beezwoo-has-animated-border[data-beezwoo-border-speed="slow"] { --beezwoo-speed: 5s; }
.beezwoo-has-animated-border[data-beezwoo-border-speed="normal"] { --beezwoo-speed: 3s; }
.beezwoo-has-animated-border[data-beezwoo-border-speed="fast"] { --beezwoo-speed: 2s; }
.beezwoo-has-animated-border[data-beezwoo-border-speed="very-fast"] { --beezwoo-speed: 1s; }

/* ==========================================================================
   SVG BORDER ICONS
   ========================================================================== */

.beezwoo-svg-border-container {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 10;
    overflow: visible;
}

.beezwoo-svg-border-icon {
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    transform-origin: center;
}

.beezwoo-svg-border-icon svg {
    width: 100%;
    height: 100%;
}

/* Spin animation for individual icons */
.beezwoo-svg-border-icon.spin svg {
    animation: beezwoo-svg-spin 3s linear infinite;
}

@keyframes beezwoo-svg-spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* Orbit animation for icons around border */
.beezwoo-svg-border-container.orbit {
    animation: beezwoo-svg-orbit 10s linear infinite;
}

@keyframes beezwoo-svg-orbit {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* Counter-rotate icons when container orbits (to keep them upright) */
.beezwoo-svg-border-container.orbit .beezwoo-svg-border-icon {
    animation: beezwoo-svg-counter-rotate 10s linear infinite;
}

@keyframes beezwoo-svg-counter-rotate {
    from { transform: rotate(0deg); }
    to { transform: rotate(-360deg); }
}

/* ==========================================================================
   HOVER EFFECTS (ELEMENTOR INTEGRATION)
   ========================================================================== */

/* Float */
.beezwoo-hover-float {
    transition: transform 0.3s ease;
}
.beezwoo-hover-float:hover {
    transform: translateY(-8px);
}

/* Grow */
.beezwoo-hover-grow {
    transition: transform 0.3s ease;
}
.beezwoo-hover-grow:hover {
    transform: scale(1.05);
}

/* Shrink */
.beezwoo-hover-shrink {
    transition: transform 0.3s ease;
}
.beezwoo-hover-shrink:hover {
    transform: scale(0.95);
}

/* Pulse */
.beezwoo-hover-pulse:hover {
    animation: beezwoo-hover-pulse-anim 0.8s ease-in-out infinite;
}

@keyframes beezwoo-hover-pulse-anim {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.05); }
}

/* Bounce */
.beezwoo-hover-bounce:hover {
    animation: beezwoo-hover-bounce-anim 0.5s ease;
}

@keyframes beezwoo-hover-bounce-anim {
    0%, 100% { transform: translateY(0); }
    40% { transform: translateY(-15px); }
    60% { transform: translateY(-5px); }
}

/* Rotate */
.beezwoo-hover-rotate {
    transition: transform 0.3s ease;
}
.beezwoo-hover-rotate:hover {
    transform: rotate(5deg);
}

/* Wobble */
.beezwoo-hover-wobble:hover {
    animation: beezwoo-hover-wobble-anim 0.8s ease-in-out;
}

@keyframes beezwoo-hover-wobble-anim {
    0%, 100% { transform: rotate(0deg); }
    15% { transform: rotate(-5deg); }
    30% { transform: rotate(5deg); }
    45% { transform: rotate(-5deg); }
    60% { transform: rotate(5deg); }
    75% { transform: rotate(-2deg); }
}

/* Buzz */
.beezwoo-hover-buzz:hover {
    animation: beezwoo-hover-buzz-anim 0.3s linear infinite;
}

@keyframes beezwoo-hover-buzz-anim {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(2px); }
    75% { transform: translateX(-2px); }
}

/* Glow */
.beezwoo-hover-glow {
    transition: box-shadow 0.3s ease;
}
.beezwoo-hover-glow:hover {
    box-shadow: 0 0 20px rgba(212, 164, 55, 0.5), 0 0 40px rgba(212, 164, 55, 0.3);
}

/* Shadow */
.beezwoo-hover-shadow {
    transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.beezwoo-hover-shadow:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15);
}

/* Underline Reveal */
.beezwoo-hover-underline {
    position: relative;
}
.beezwoo-hover-underline::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    width: 0;
    height: 2px;
    background: currentColor;
    transition: width 0.3s ease, left 0.3s ease;
}
.beezwoo-hover-underline:hover::after {
    width: 100%;
    left: 0;
}

/* ==========================================================================
   IMAGE FILTERS (ELEMENTOR INTEGRATION)
   ========================================================================== */

.beezwoo-img-filter-soft-elegance img {
    filter: brightness(1.02) contrast(0.95) saturate(0.9);
}

.beezwoo-img-filter-editorial img {
    filter: contrast(1.1) brightness(1.05) saturate(0.85);
}

.beezwoo-img-filter-warm-glow img {
    filter: sepia(0.15) brightness(1.05) saturate(1.1);
}

.beezwoo-img-filter-clean-minimal img {
    filter: brightness(1.08) contrast(0.92) saturate(0.8);
}

.beezwoo-img-filter-luxury-dark img {
    filter: brightness(0.95) contrast(1.15) saturate(0.9);
}

.beezwoo-img-filter-vintage-soft img {
    filter: sepia(0.25) brightness(1.02) contrast(0.9) saturate(0.85);
}

.beezwoo-img-filter-vivid-pop img {
    filter: brightness(1.05) contrast(1.1) saturate(1.3);
}

.beezwoo-img-filter-dreamy img {
    filter: brightness(1.1) contrast(0.85) saturate(0.9) blur(0.5px);
}

/* Hover filters */
.beezwoo-img-hover-soft-elegance img { transition: filter 0.3s ease; }
.beezwoo-img-hover-soft-elegance:hover img { filter: brightness(1.02) contrast(0.95) saturate(0.9); }

.beezwoo-img-hover-editorial img { transition: filter 0.3s ease; }
.beezwoo-img-hover-editorial:hover img { filter: contrast(1.1) brightness(1.05) saturate(0.85); }

.beezwoo-img-hover-warm-glow img { transition: filter 0.3s ease; }
.beezwoo-img-hover-warm-glow:hover img { filter: sepia(0.15) brightness(1.05) saturate(1.1); }

.beezwoo-img-hover-grayscale img { transition: filter 0.3s ease; }
.beezwoo-img-hover-grayscale:hover img { filter: grayscale(100%); }

.beezwoo-img-hover-color img { filter: grayscale(100%); transition: filter 0.3s ease; }
.beezwoo-img-hover-color:hover img { filter: grayscale(0%); }

/* ==========================================================================
   TEXT EFFECTS (ELEMENTOR INTEGRATION)
   ========================================================================== */

.beezwoo-text-effect-shine .elementor-heading-title,
.beezwoo-text-effect-shine .elementor-text-editor {
    background: linear-gradient(110deg, currentColor 45%, #fff 50%, currentColor 55%);
    background-size: 200% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: beezwoo-text-shine var(--beezwoo-text-speed, 2s) ease-in-out infinite;
}

.beezwoo-text-effect-shine-gold .elementor-heading-title,
.beezwoo-text-effect-shine-gold .elementor-text-editor {
    background: linear-gradient(110deg, #d4af37 20%, #ffd700 30%, #fffacd 50%, #ffd700 70%, #d4af37 80%);
    background-size: 200% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: beezwoo-text-shine var(--beezwoo-text-speed, 2s) ease-in-out infinite;
}

.beezwoo-text-effect-gradient-flow .elementor-heading-title,
.beezwoo-text-effect-gradient-flow .elementor-text-editor {
    background: linear-gradient(90deg, #ff0000, #0000ff, #00ff00, #ff0000);
    background-size: 300% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: beezwoo-gradient-flow var(--beezwoo-text-speed, 2s) linear infinite;
}

.beezwoo-text-effect-rainbow-flow .elementor-heading-title,
.beezwoo-text-effect-rainbow-flow .elementor-text-editor {
    background: linear-gradient(90deg, #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #8b00ff, #ff0000);
    background-size: 400% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: beezwoo-rainbow-flow var(--beezwoo-text-speed, 2s) linear infinite;
}

.beezwoo-text-effect-glitch .elementor-heading-title,
.beezwoo-text-effect-glitch .elementor-text-editor {
    position: relative;
    animation: beezwoo-glitch-skew 2s infinite linear alternate-reverse;
}

.beezwoo-text-effect-neon-pulse .elementor-heading-title,
.beezwoo-text-effect-neon-pulse .elementor-text-editor {
    color: var(--beezwoo-neon-color, #ff00ff);
    text-shadow: 
        0 0 5px var(--beezwoo-neon-color, #ff00ff),
        0 0 10px var(--beezwoo-neon-color, #ff00ff),
        0 0 20px var(--beezwoo-neon-color, #ff00ff),
        0 0 40px var(--beezwoo-neon-color, #ff00ff);
    animation: beezwoo-neon-pulse var(--beezwoo-text-speed, 2s) ease-in-out infinite;
}

/* Text effect speeds */
.beezwoo-text-effect-shine[data-beezwoo-text-speed="slow"],
.beezwoo-text-effect-shine-gold[data-beezwoo-text-speed="slow"],
.beezwoo-text-effect-gradient-flow[data-beezwoo-text-speed="slow"],
.beezwoo-text-effect-rainbow-flow[data-beezwoo-text-speed="slow"],
.beezwoo-text-effect-neon-pulse[data-beezwoo-text-speed="slow"] {
    --beezwoo-text-speed: 4s;
}

.beezwoo-text-effect-shine[data-beezwoo-text-speed="normal"],
.beezwoo-text-effect-shine-gold[data-beezwoo-text-speed="normal"],
.beezwoo-text-effect-gradient-flow[data-beezwoo-text-speed="normal"],
.beezwoo-text-effect-rainbow-flow[data-beezwoo-text-speed="normal"],
.beezwoo-text-effect-neon-pulse[data-beezwoo-text-speed="normal"] {
    --beezwoo-text-speed: 2s;
}

.beezwoo-text-effect-shine[data-beezwoo-text-speed="fast"],
.beezwoo-text-effect-shine-gold[data-beezwoo-text-speed="fast"],
.beezwoo-text-effect-gradient-flow[data-beezwoo-text-speed="fast"],
.beezwoo-text-effect-rainbow-flow[data-beezwoo-text-speed="fast"],
.beezwoo-text-effect-neon-pulse[data-beezwoo-text-speed="fast"] {
    --beezwoo-text-speed: 1s;
}

/* ==========================================================================
   PARTICLES ON CONTAINERS (ELEMENTOR INTEGRATION)
   ========================================================================== */

.beezwoo-has-particles {
    position: relative;
    overflow: hidden;
}

.beezwoo-particles-canvas {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 10;
}

.beezwoo-has-particles[data-beezwoo-particles-z="back"] .beezwoo-particles-canvas {
    z-index: 0;
}

.beezwoo-has-particles[data-beezwoo-particles-z="back"] > .elementor-element,
.beezwoo-has-particles[data-beezwoo-particles-z="back"] > .e-con-inner {
    position: relative;
    z-index: 1;
}

/* ==========================================================================
   CONTAINER LINK (ELEMENTOR INTEGRATION)
   ========================================================================== */

.beezwoo-has-link {
    position: relative;
    cursor: pointer;
}

.beezwoo-has-link > .beezwoo-link-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: block;
    /* Transparent but present in the DOM for SEO and accessibility */
}

/* Elevate interactive children above the overlay */
.beezwoo-has-link a:not(.beezwoo-link-overlay),
.beezwoo-has-link button,
.beezwoo-has-link input,
.beezwoo-has-link select,
.beezwoo-has-link textarea,
.beezwoo-has-link [role="button"],
.beezwoo-has-link .elementor-button,
.beezwoo-has-link .added_to_cart {
    position: relative;
    z-index: 2;
}

/* Disable overlay link in Elementor editor to prevent accidental navigation */
.elementor-editor-active .beezwoo-has-link > .beezwoo-link-overlay {
    pointer-events: none;
}

