// ============================================================================
// move.gl | Blink Keyframes
// ============================================================================
// Copyright 2025 Scape Agency BV
// Licensed under MIT License
// ============================================================================

////
/// Blink Keyframes Module
/// ===========================================================================
///
/// Provides parameterized keyframe mixins for blink animations.
/// Cursor effects, status indicators, and attention elements.
///
/// @group Keyframes
/// @author Scape Agency
/// @link https://move.gl
/// @since 0.1.0 initial release
/// @access public
////


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

@use "../../../variables" as *;


// ============================================================================
// Keyframes
// ============================================================================


///
/// Blink Keyframes
/// @name keyframes_animate_blink
/// @param {Number} $start_opacity [1] - The opacity at start and end.
/// @param {Number} $blink_opacity [0] - The opacity during the blink.
///
@mixin keyframes_animate_blink($start_opacity: 1, $blink_opacity: 0) {
    @keyframes animate_blink {
        0%, 100% { opacity: $start_opacity; }
        50% { opacity: $blink_opacity; }
    }
}


///
/// Blink Rapid Keyframes
/// @name keyframes_animate_blink_rapid
///
@mixin keyframes_animate_blink_rapid() {
    @keyframes animate_blink_rapid {
        0%, 100% { opacity: 1; }
        50% { opacity: 0; }
    }
}


///
/// Blink Soft Keyframes
/// @name keyframes_animate_blink_soft
///
@mixin keyframes_animate_blink_soft() {
    @keyframes animate_blink_soft {
        0%, 100% { opacity: 1; }
        50% { opacity: $animate_opacity_blink_soft; }
    }
}


///
/// Blink Alternate Keyframes
/// @name keyframes_animate_blink_alternate
///
@mixin keyframes_animate_blink_alternate() {
    @keyframes animate_blink_alternate {
        0%, 100% { opacity: 1; }
        25%, 75% { opacity: 0; }
    }
}
