////
///
/// Gradient Effects Mixin Module
/// ===========================================================================
///
/// This module provides mixins for creating linear, radial, and conic
/// gradient effects with customizable colors and directions.
///
/// @group Effects
/// @author Scape Agency
/// @link https://move.gl
/// @since 0.1.0 initial release
/// @access public
///
////


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

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


// ============================================================================
// Linear Gradient Mixins
// ============================================================================

///
/// Base linear gradient mixin.
///
/// @param {String} $direction [to right] - Gradient direction.
/// @param {Color} $from [$gradient-from-default] - Start color.
/// @param {Color} $to [$gradient-to-default] - End color.
///
@mixin gradient_linear($direction: to right, $from: $gradient-from-default, $to: $gradient-to-default) {
    background: linear-gradient($direction, $from, $to);
}

/// Gradient to right
@mixin gradient_to_r($from: $gradient-from-default, $to: $gradient-to-default) {
    background: linear-gradient(to right, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Gradient to left
@mixin gradient_to_l($from: $gradient-from-default, $to: $gradient-to-default) {
    background: linear-gradient(to left, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Gradient to top
@mixin gradient_to_t($from: $gradient-from-default, $to: $gradient-to-default) {
    background: linear-gradient(to top, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Gradient to bottom
@mixin gradient_to_b($from: $gradient-from-default, $to: $gradient-to-default) {
    background: linear-gradient(to bottom, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Gradient to top right
@mixin gradient_to_tr($from: $gradient-from-default, $to: $gradient-to-default) {
    background: linear-gradient(to top right, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Gradient to top left
@mixin gradient_to_tl($from: $gradient-from-default, $to: $gradient-to-default) {
    background: linear-gradient(to top left, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Gradient to bottom right
@mixin gradient_to_br($from: $gradient-from-default, $to: $gradient-to-default) {
    background: linear-gradient(to bottom right, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Gradient to bottom left
@mixin gradient_to_bl($from: $gradient-from-default, $to: $gradient-to-default) {
    background: linear-gradient(to bottom left, var(--gradient-from, $from), var(--gradient-to, $to));
}


// ============================================================================
// Radial Gradient Mixins
// ============================================================================

///
/// Base radial gradient mixin.
///
/// @param {String} $position [circle] - Shape and position.
/// @param {Color} $from [$gradient-from-default] - Start color.
/// @param {Color} $to [$gradient-to-default] - End color.
///
@mixin gradient_radial($position: circle, $from: $gradient-from-default, $to: $gradient-to-default) {
    background: radial-gradient($position, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Radial gradient at top
@mixin gradient_radial_at_t($from: $gradient-from-default, $to: $gradient-to-default) {
    background: radial-gradient(at top, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Radial gradient at bottom
@mixin gradient_radial_at_b($from: $gradient-from-default, $to: $gradient-to-default) {
    background: radial-gradient(at bottom, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Radial gradient at left
@mixin gradient_radial_at_l($from: $gradient-from-default, $to: $gradient-to-default) {
    background: radial-gradient(at left, var(--gradient-from, $from), var(--gradient-to, $to));
}

/// Radial gradient at right
@mixin gradient_radial_at_r($from: $gradient-from-default, $to: $gradient-to-default) {
    background: radial-gradient(at right, var(--gradient-from, $from), var(--gradient-to, $to));
}


// ============================================================================
// Conic Gradient Mixins
// ============================================================================

///
/// Base conic gradient mixin.
///
/// @param {Color} $from [$gradient-from-default] - Start color.
/// @param {Color} $to [$gradient-to-default] - End color.
///
@mixin gradient_conic($from: $gradient-from-default, $to: $gradient-to-default) {
    background: conic-gradient(var(--gradient-from, $from), var(--gradient-to, $to));
}

