////
///
/// Flash Keyframes Mixin Module
/// ===========================================================================
///
/// This module provides keyframes for flash and blink animations including
/// standard flash, strobe effects, fade flash, and various blink patterns.
/// These are useful for attention-grabbing effects and notifications.
///
/// @group Keyframes
/// @author Scape Agency
/// @link https://move.gl
/// @since 0.1.0 initial release
/// @todo None
/// @access public
///
////


// ============================================================================
// Use
// ============================================================================

@use "../_base" as *;


// ============================================================================
// Flash Keyframes
// ============================================================================

///
/// Standard flash animation - quick opacity toggle.
///
@mixin keyframes_flash {
    @include keyframes(flash) {
        0%, 50%, 100% {
            opacity: 1;
        }
        25%, 75% {
            opacity: 0;
        }
    }
}

///
/// Double flash animation.
///
@mixin keyframes_flash_double {
    @include keyframes(flash-double) {
        0%, 100% { opacity: 1; }
        12.5%, 37.5% { opacity: 0; }
        25%, 50% { opacity: 1; }
        62.5%, 87.5% { opacity: 0; }
        75% { opacity: 1; }
    }
}

///
/// Strobe flash - rapid blinking.
///
@mixin keyframes_strobe {
    @include keyframes(strobe) {
        0% { opacity: 1; }
        10% { opacity: 0; }
        20% { opacity: 1; }
        30% { opacity: 0; }
        40% { opacity: 1; }
        50% { opacity: 0; }
        60% { opacity: 1; }
        70% { opacity: 0; }
        80% { opacity: 1; }
        90% { opacity: 0; }
        100% { opacity: 1; }
    }
}

///
/// Soft flash with fade.
///
@mixin keyframes_flash_fade {
    @include keyframes(flash-fade) {
        0%, 100% {
            opacity: 1;
        }
        50% {
            opacity: 0.3;
        }
    }
}


// ============================================================================
// Blink Keyframes
// ============================================================================

///
/// Standard blink animation.
///
@mixin keyframes_blink {
    @include keyframes(blink) {
        0%, 100% { opacity: 1; }
        50% { opacity: 0; }
    }
}

///
/// Smooth blink with easing.
///
@mixin keyframes_blink_smooth {
    @include keyframes(blink-smooth) {
        0%, 100% { opacity: 1; }
        50% { opacity: 0.2; }
    }
}

///
/// Cursor blink (like text cursor).
///
@mixin keyframes_cursor_blink {
    @include keyframes(cursor-blink) {
        0%, 49% { opacity: 1; }
        50%, 100% { opacity: 0; }
    }
}


// ============================================================================
// Glow Flash Keyframes
// ============================================================================

///
/// Flash with glow effect.
///
/// @param {Color} $color [#fff] - Glow color.
///
@mixin keyframes_flash_glow($color: $animate_color_flash_glow) {
    @include keyframes(flash-glow) {
        0%, 100% {
            opacity: 1;
            box-shadow: 0 0 0 rgba($color, 0);
        }
        50% {
            opacity: 0.5;
            box-shadow: 0 0 20px rgba($color, 0.8);
        }
    }
}

///
/// Neon flash effect.
///
/// @param {Color} $color [#0ff] - Neon color.
///
@mixin keyframes_neon_flash($color: $animate_color_neon_flash) {
    @include keyframes(neon-flash) {
        0%, 100% {
            text-shadow: 0 0 4px $color, 0 0 8px $color;
            opacity: 1;
        }
        50% {
            text-shadow: 0 0 2px $color;
            opacity: 0.7;
        }
    }
}
