// Adapted from: https://github.com/vuetifyjs/vuetify/blob/master/packages/vuetify/src/styles/settings/_elevations.scss
$_shadow-key-umbra-opacity: rgba(0, 0, 0, 0.2) !default;
$_shadow-key-penumbra-opacity: rgba(0, 0, 0, 0.14) !default;
$_shadow-key-ambient-opacity: rgba(0, 0, 0, 0.12) !default;

$_shadow-key-umbra: (
  0: (
    0 0 0 0 $_shadow-key-umbra-opacity,
  ),
  1: (
    0 2px 1px -1px $_shadow-key-umbra-opacity,
  ),
  2: (
    0 3px 1px -2px $_shadow-key-umbra-opacity,
  ),
  3: (
    0 3px 3px -2px $_shadow-key-umbra-opacity,
  ),
  4: (
    0 2px 4px -1px $_shadow-key-umbra-opacity,
  ),
  5: (
    0 3px 5px -1px $_shadow-key-umbra-opacity,
  ),
  6: (
    0 3px 5px -1px $_shadow-key-umbra-opacity,
  ),
  7: (
    0 4px 5px -2px $_shadow-key-umbra-opacity,
  ),
  8: (
    0 5px 5px -3px $_shadow-key-umbra-opacity,
  ),
  9: (
    0 5px 6px -3px $_shadow-key-umbra-opacity,
  ),
  10: (
    0 6px 6px -3px $_shadow-key-umbra-opacity,
  ),
  11: (
    0 6px 7px -4px $_shadow-key-umbra-opacity,
  ),
  12: (
    0 7px 8px -4px $_shadow-key-umbra-opacity,
  ),
  13: (
    0 7px 8px -4px $_shadow-key-umbra-opacity,
  ),
  14: (
    0 7px 9px -4px $_shadow-key-umbra-opacity,
  ),
  15: (
    0 8px 9px -5px $_shadow-key-umbra-opacity,
  ),
  16: (
    0 8px 10px -5px $_shadow-key-umbra-opacity,
  ),
  17: (
    0 8px 11px -5px $_shadow-key-umbra-opacity,
  ),
  18: (
    0 9px 11px -5px $_shadow-key-umbra-opacity,
  ),
  19: (
    0 9px 12px -6px $_shadow-key-umbra-opacity,
  ),
  20: (
    0 10px 13px -6px $_shadow-key-umbra-opacity,
  ),
  21: (
    0 10px 13px -6px $_shadow-key-umbra-opacity,
  ),
  22: (
    0 10px 14px -6px $_shadow-key-umbra-opacity,
  ),
  23: (
    0 11px 14px -7px $_shadow-key-umbra-opacity,
  ),
  24: (
    0 11px 15px -7px $_shadow-key-umbra-opacity,
  ),
);

$_shadow-key-penumbra: (
  0: (
    0 0 0 0 $_shadow-key-penumbra-opacity,
  ),
  1: (
    0 1px 1px 0 $_shadow-key-penumbra-opacity,
  ),
  2: (
    0 2px 2px 0 $_shadow-key-penumbra-opacity,
  ),
  3: (
    0 3px 4px 0 $_shadow-key-penumbra-opacity,
  ),
  4: (
    0 4px 5px 0 $_shadow-key-penumbra-opacity,
  ),
  5: (
    0 5px 8px 0 $_shadow-key-penumbra-opacity,
  ),
  6: (
    0 6px 10px 0 $_shadow-key-penumbra-opacity,
  ),
  7: (
    0 7px 10px 1px $_shadow-key-penumbra-opacity,
  ),
  8: (
    0 8px 10px 1px $_shadow-key-penumbra-opacity,
  ),
  9: (
    0 9px 12px 1px $_shadow-key-penumbra-opacity,
  ),
  10: (
    0 10px 14px 1px $_shadow-key-penumbra-opacity,
  ),
  11: (
    0 11px 15px 1px $_shadow-key-penumbra-opacity,
  ),
  12: (
    0 12px 17px 2px $_shadow-key-penumbra-opacity,
  ),
  13: (
    0 13px 19px 2px $_shadow-key-penumbra-opacity,
  ),
  14: (
    0 14px 21px 2px $_shadow-key-penumbra-opacity,
  ),
  15: (
    0 15px 22px 2px $_shadow-key-penumbra-opacity,
  ),
  16: (
    0 16px 24px 2px $_shadow-key-penumbra-opacity,
  ),
  17: (
    0 17px 26px 2px $_shadow-key-penumbra-opacity,
  ),
  18: (
    0 18px 28px 2px $_shadow-key-penumbra-opacity,
  ),
  19: (
    0 19px 29px 2px $_shadow-key-penumbra-opacity,
  ),
  20: (
    0 20px 31px 3px $_shadow-key-penumbra-opacity,
  ),
  21: (
    0 21px 33px 3px $_shadow-key-penumbra-opacity,
  ),
  22: (
    0 22px 35px 3px $_shadow-key-penumbra-opacity,
  ),
  23: (
    0 23px 36px 3px $_shadow-key-penumbra-opacity,
  ),
  24: (
    0 24px 38px 3px $_shadow-key-penumbra-opacity,
  ),
);

$_shadow-key-ambient: (
  0: (
    0 0 0 0 $_shadow-key-ambient-opacity,
  ),
  1: (
    0 1px 3px 0 $_shadow-key-ambient-opacity,
  ),
  2: (
    0 1px 5px 0 $_shadow-key-ambient-opacity,
  ),
  3: (
    0 1px 8px 0 $_shadow-key-ambient-opacity,
  ),
  4: (
    0 1px 10px 0 $_shadow-key-ambient-opacity,
  ),
  5: (
    0 1px 14px 0 $_shadow-key-ambient-opacity,
  ),
  6: (
    0 1px 18px 0 $_shadow-key-ambient-opacity,
  ),
  7: (
    0 2px 16px 1px $_shadow-key-ambient-opacity,
  ),
  8: (
    0 3px 14px 2px $_shadow-key-ambient-opacity,
  ),
  9: (
    0 3px 16px 2px $_shadow-key-ambient-opacity,
  ),
  10: (
    0 4px 18px 3px $_shadow-key-ambient-opacity,
  ),
  11: (
    0 4px 20px 3px $_shadow-key-ambient-opacity,
  ),
  12: (
    0 5px 22px 4px $_shadow-key-ambient-opacity,
  ),
  13: (
    0 5px 24px 4px $_shadow-key-ambient-opacity,
  ),
  14: (
    0 5px 26px 4px $_shadow-key-ambient-opacity,
  ),
  15: (
    0 6px 28px 5px $_shadow-key-ambient-opacity,
  ),
  16: (
    0 6px 30px 5px $_shadow-key-ambient-opacity,
  ),
  17: (
    0 6px 32px 5px $_shadow-key-ambient-opacity,
  ),
  18: (
    0 7px 34px 6px $_shadow-key-ambient-opacity,
  ),
  19: (
    0 7px 36px 6px $_shadow-key-ambient-opacity,
  ),
  20: (
    0 8px 38px 7px $_shadow-key-ambient-opacity,
  ),
  21: (
    0 8px 40px 7px $_shadow-key-ambient-opacity,
  ),
  22: (
    0 8px 42px 7px $_shadow-key-ambient-opacity,
  ),
  23: (
    0 9px 44px 8px $_shadow-key-ambient-opacity,
  ),
  24: (
    0 9px 46px 8px $_shadow-key-ambient-opacity,
  ),
);

@mixin elevation($z, $important: false) {
  /* prettier-ignore */
  box-shadow: map-get($_shadow-key-umbra, $z),
    map-get($_shadow-key-penumbra, $z),
    map-get($_shadow-key-ambient, $z) if($important, !important, null);
}
