// Utilities
//

// assign new utilities classes

$utilities: map-merge(
  $utilities,
  (
    "transitions": (
      property: transition,
      class: trans,
      values: (
        base: $transition-base,
        fade: $transition-fade,
      )
    ),
    "min-height": (
      property: min-height,
      class: minh,
      values: (100: 100%, 960: 960px, 800: 800px, 640: 640px, 480: 480px, 320: 320px)
    ),
  )
);

// Modify $utilities
$utilities: map-merge(
  $utilities,
  (
    "border-opacity": map-merge(
      map-get($utilities, "border-opacity"),
      (
        values: (
          0: 0,
          10: .1,
          25: .25,
          50: .5,
          75: .75,
          100: 1
        )
      )
    ),
    "width": map-merge(
      map-get($utilities, "width"),
      (
        values: (
          20: 20%,
          25: 25%,
          50: 50%,
          75: 75%,
          100: 100%,
          auto: auto
        ),
        responsive: true,
      ),
    ),
    "height": map-merge(
      map-get($utilities, "height"),
      (
        responsive: true
      ),
    ),
    "max-height": map-merge(
      map-get($utilities, "max-height"),
      (
        values: (
          320: 320px,
          480: 480px,
          640: 640px,
          800: 800px,
          960: 960px,
          100: 100%,
        ),
      ),
    ),
    "viewport-width": map-merge(
      map-get($utilities, "viewport-width"),
      (
        values: $viewportwidths,
        responsive: true
      ),
    ),
    "min-viewport-width": map-merge(
      map-get($utilities, "min-viewport-width"),
      (
        values: $viewportwidths,
        responsive: true
      ),
    ),
    "viewport-height": map-merge(
      map-get($utilities, "viewport-height"),
      (
        values: $viewportheights,
        responsive: true
      ),
    ),
    "min-viewport-height": map-merge(
      map-get($utilities, "min-viewport-height"),
      (
        values: $viewportheights,
        responsive: true
      ),
    ),
    "margin": map-merge(
      map-get($utilities, "margin"),
      (
        values: map-merge(
          $spacers,
          (
            auto: auto,
            page: 0 var(--#{$prefix}container-outer-w),
            section: var(--lx-section-spacer-t) 0 var(--lx-section-spacer-b)
          )
        )
      ),
    ),
    "margin-x": map-merge(
      map-get($utilities, "margin-x"),
      (
        values: map-merge(
          $spacers,
          (
            auto: auto,
            page: var(--#{$prefix}container-outer-w)
          )
        )
      ),
    ),
    "margin-top": map-merge(
      map-get($utilities, "margin-top"),
      (
        values: map-merge(
          $spacers,
          (
            auto: auto,
            section: var(--lx-section-spacer-t)
          )
        )
      ),
    ),
    "margin-start": map-merge(
      map-get($utilities, "margin-start"),
      (
        values: map-merge(
          $spacers,
          (
            auto: auto,
            page: var(--#{$prefix}container-outer-w)
          )
        )
      ),
    ),
    "margin-end": map-merge(
      map-get($utilities, "margin-end"),
      (
        values: map-merge(
          $spacers,
          (
            auto: auto,
            page: var(--#{$prefix}container-outer-w)
          )
        )
      ),
    ),
    "margin-bottom": map-merge(
      map-get($utilities, "margin-bottom"),
      (
        values: map-merge(
          $spacers,
          (
            auto: auto,
            section: var(--lx-section-spacer-b)
          )
        )
      ),
    ),
    "negative-margin": map-merge(
      map-get($utilities, "margin"),
      (
        values: map-merge(
          $negative-spacers,
          (
            npage: 0 var(--#{$prefix}container-outer-w),
            nsection: calc(-1 * var(--lx-section-spacer-t)) 0 calc(-1 * var(--lx-section-spacer-b))
          )
        )
      ),
    ),
    "negative-margin-x": map-merge(
      map-get($utilities, "negative-margin-x"),
      (
        values: map-merge(
          $negative-spacers,
          (
            npage: var(--#{$prefix}container-outer-w)
          )
        )
      ),
    ),
    "negative-margin-top": map-merge(
      map-get($utilities, "negative-margin-top"),
      (
        values: map-merge(
          $negative-spacers,
          (
            nsection: calc(-1 * var(--lx-section-spacer-t))
          )
        )
      ),
    ),
    "negative-margin-end": map-merge(
      map-get($utilities, "negative-margin-end"),
      (
        values: map-merge(
          $negative-spacers,
          (
            npage: var(--#{$prefix}container-outer-w),
          )
        )
      ),
    ),
    "negative-margin-bottom": map-merge(
      map-get($utilities, "negative-margin-bottom"),
      (
        values: map-merge(
          $negative-spacers,
          (
            nsection: calc(-1 * var(--lx-section-spacer-b))
          )
        )
      ),
    ),
    "negative-margin-start": map-merge(
      map-get($utilities, "negative-margin-start"),
      (
        values: map-merge(
          $negative-spacers,
          (
            npage: var(--#{$prefix}container-outer-w),
          )
        )
      ),
    ),
    "padding": map-merge(
      map-get($utilities, "padding"),
      (
        values: map-merge(
          $spacers,
          (
            page: 0 var(--#{$prefix}container-outer-w),
            section: var(--lx-section-spacer-t) 0 var(--lx-section-spacer-b)
          )
        )
      ),
    ),
    "padding-x": map-merge(
      map-get($utilities, "padding-x"),
      (
        values: map-merge(
          $spacers,
          (
            page: 0 var(--#{$prefix}container-outer-w)
          )
        )
      ),
    ),
    "padding-top": map-merge(
      map-get($utilities, "padding-top"),
      (
        values: map-merge(
          $spacers,
          (
            section: var(--lx-section-spacer-t)
          )
        )
      ),
    ),
    "padding-start": map-merge(
      map-get($utilities, "padding-start"),
      (
        values: map-merge(
          $spacers,
          (
            page: var(--#{$prefix}container-outer-w)
          )
        )
      ),
    ),
    "padding-end": map-merge(
      map-get($utilities, "padding-end"),
      (
        values: map-merge(
          $spacers,
          (
            page: var(--#{$prefix}container-outer-w)
          )
        )
      ),
    ),
    "padding-bottom": map-merge(
      map-get($utilities, "padding-bottom"),
      (
        values: map-merge(
          $spacers,
          (
            section: var(--lx-section-spacer-b)
          )
        )
      ),
    ),
    "background-color": map-merge(
      map-get($utilities, "background-color"),
      (
        values:  map-merge(
          $utilities-bg-colors,
          (
            "transparent": transparent,
            "body-secondary": rgba(var(--#{$prefix}secondary-bg-rgb), var(--#{$prefix}bg-opacity)),
            "body-tertiary": rgba(var(--#{$prefix}tertiary-bg-rgb), var(--#{$prefix}bg-opacity)),
            "emphasis": rgba(var(--#{$prefix}emphasis-bg-rgb), var(--#{$prefix}bg-opacity)),
          )
        ),
      ),
    ),
    "border-color": map-merge(
      map-get($utilities, "border-color"),
      (
        values:  map-merge(
          $utilities-border-colors,
          (
            "body": rgba(var(--#{$prefix}body-bg-rgb), var(--#{$prefix}border-opacity)),
          )
        ),
      ),
    ),
    "top": map-merge(
      map-get($utilities, "top"),
      ( responsive: true ),
    ),
    "start": map-merge(
      map-get($utilities, "start"),
      ( responsive: true ),
    ),
    "bottom": map-merge(
      map-get($utilities, "bottom"),
      ( responsive: true ),
    ),
    "end": map-merge(
      map-get($utilities, "end"),
      ( responsive: true ),
    ),
    "position": map-merge(
      map-get($utilities, "position"),
      ( responsive: true ),
    ),
    "bg-opacity": map-merge(
      map-get($utilities, "bg-opacity"),
      ( values: (
        0: 0,
        10: .1,
        25: .25,
        50: .5,
        75: .75,
        90: .9,
        100: 1
      ) ),
    ),
  ),
);
