////
///
/// Margin Mixins
/// ===========================================================================
///
/// Margin utility mixins for controlling element spacing.
///
/// @group Mixins.HeadLayout.Spacing
/// @author Scape Agency
/// @link https://scape.style
/// @since 0.1.0 initial release
/// @access public
///
////

@use "sass:math";
@use "../../../dev" as *;
@use "../../../variables" as *;

// ============================================================================
// Token Map
// ============================================================================

$object_margin_map: (
    xs: 4,
    sm: 8,
    md: 16,
    lg: 20,
    xl: 32,
) !default;

// ============================================================================
// Low-level Margin Mixins
// ============================================================================

@mixin margin($v) {
    margin: $v;
}

@mixin margin--top($v) {
    margin-top: $v;
}

@mixin margin--right($v) {
    margin-right: $v;
}

@mixin margin--bottom($v) {
    margin-bottom: $v;
}

@mixin margin--left($v) {
    margin-left: $v;
}

@mixin margin--vertical($v) {
    margin-top: $v;
    margin-bottom: $v;
}

@mixin margin--horizontal($v) {
    margin-left: $v;
    margin-right: $v;
}

// ============================================================================
// Auto Margin Mixins
// ============================================================================

@mixin margin--auto {
    margin: auto;
}

@mixin margin--x--auto {
    margin-left: auto;
    margin-right: auto;
}

@mixin margin--y--auto {
    margin-top: auto;
    margin-bottom: auto;
}

@mixin margin--left--auto {
    margin-left: auto;
}

@mixin margin--right--auto {
    margin-right: auto;
}
