/******************************************************************
Site Name:
Author:

Stylesheet: Bootstrap Grid Stylesheet

Version: 4.4.0

Resources:
	* https://getbootstrap.com/docs/4.4/layout/grid/
	* https://getbootstrap.com/docs/4.4/utilities/flex/
	* https://getbootstrap.com/docs/4.4/utilities/display/
	* https://getbootstrap.com/docs/4.4/utilities/spacing/

******************************************************************/

html {
	box-sizing: border-box;
	-ms-overflow-style: scrollbar;
}

*,
*::before,
*::after {
	box-sizing: inherit;
}

// Container widths
//
// Set the container width, and override it for fixed navbars in media queries.

.container {
	@include make-container();
	@include make-container-max-widths();
}

// Fluid container
//
// Utilizes the mixin meant for fixed width containers, but with 100% width for
// fluid, full width layouts.

.container-fluid {
	@include make-container();
}

// Responsive containers that are 100% wide until a breakpoint
@each $breakpoint, $container-max-width in $container-max-widths {
	.container-#{$breakpoint} {
		@extend .container-fluid;
	}

	@include media-breakpoint-up($breakpoint, $grid-breakpoints) {
		%responsive-container-#{$breakpoint} {
			max-width: $container-max-width;
		}

		@each $name, $width in $grid-breakpoints {
			@if ($container-max-width > $width or $breakpoint == $name) {
				.container#{breakpoint-infix($name, $grid-breakpoints)} {
					@extend %responsive-container-#{$breakpoint};
				}
			}
		}
	}
}

// Row
//
// Rows contain and clear the floats of your columns.

.row {
	@include make-row();
}

// Remove the negative margin from default .row, then the horizontal padding
// from all immediate children columns (to prevent runaway style inheritance).
.no-gutters {
	margin-right: 0;
	margin-left: 0;

	> .col,
	> [class*="col-"] {
		padding-right: 0;
		padding-left: 0;
	}
}

.no-padding {
	padding-left: 0;
	padding-right: 0;
}

.no-margin {
	margin-left: 0;
	margin-right: 0;
}

// Columns
//
// Common styles for small and large grid columns

@include make-grid-columns();

// Flex variation
//
// Custom styles for additional flex alignment options.

@each $breakpoint in map-keys($grid-breakpoints) {
	@include media-breakpoint-up($breakpoint) {
		$infix: breakpoint-infix($breakpoint, $grid-breakpoints);

		.flex#{$infix}-row 			  { flex-direction: row !important; }
		.flex#{$infix}-column         { flex-direction: column !important; }
		.flex#{$infix}-row-reverse    { flex-direction: row-reverse !important; }
		.flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }

		.flex#{$infix}-wrap         { flex-wrap: wrap !important; }
		.flex#{$infix}-nowrap       { flex-wrap: nowrap !important; }
		.flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }
		.flex#{$infix}-fill         { flex: 1 1 auto !important; }
		.flex#{$infix}-grow-0       { flex-grow: 0 !important; }
    	.flex#{$infix}-grow-1       { flex-grow: 1 !important; }
    	.flex#{$infix}-shrink-0     { flex-shrink: 0 !important; }
    	.flex#{$infix}-shrink-1     { flex-shrink: 1 !important; }

		.justify-content#{$infix}-start   { justify-content: flex-start !important; }
		.justify-content#{$infix}-end     { justify-content: flex-end !important; }
		.justify-content#{$infix}-center  { justify-content: center !important; }
		.justify-content#{$infix}-between { justify-content: space-between !important; }
		.justify-content#{$infix}-around  { justify-content: space-around !important; }

		.align-items#{$infix}-start    { align-items: flex-start !important; }
		.align-items#{$infix}-end      { align-items: flex-end !important; }
		.align-items#{$infix}-center   { align-items: center !important; }
		.align-items#{$infix}-baseline { align-items: baseline !important; }
		.align-items#{$infix}-stretch  { align-items: stretch !important; }

		.align-content#{$infix}-start   { align-content: flex-start !important; }
		.align-content#{$infix}-end     { align-content: flex-end !important; }
		.align-content#{$infix}-center  { align-content: center !important; }
		.align-content#{$infix}-between { align-content: space-between !important; }
		.align-content#{$infix}-around  { align-content: space-around !important; }
		.align-content#{$infix}-stretch { align-content: stretch !important; }

		.align-self#{$infix}-auto     { align-self: auto !important; }
		.align-self#{$infix}-start    { align-self: flex-start !important; }
		.align-self#{$infix}-end      { align-self: flex-end !important; }
		.align-self#{$infix}-center   { align-self: center !important; }
		.align-self#{$infix}-baseline { align-self: baseline !important; }
		.align-self#{$infix}-stretch  { align-self: stretch !important; }
	}
}

//
// Utilities for common `display` values
//

@each $breakpoint in map-keys($grid-breakpoints) {
	@include media-breakpoint-up($breakpoint) {
		$infix: breakpoint-infix($breakpoint, $grid-breakpoints);

		.d#{$infix}-none         { display: none !important; }
		.d#{$infix}-inline       { display: inline !important; }
		.d#{$infix}-inline-block { display: inline-block !important; }
		.d#{$infix}-block        { display: block !important; }
		.d#{$infix}-table        { display: table !important; }
		.d#{$infix}-table-row    { display: table-row !important; }
		.d#{$infix}-table-cell   { display: table-cell !important; }
		.d#{$infix}-flex         { display: flex !important; }
		.d#{$infix}-inline-flex  { display: inline-flex !important; }
	}
}

//
// Utilities for toggling `display` in print
//

@media print {
	.d-print-none         { display: none !important; }
	.d-print-inline       { display: inline !important; }
	.d-print-inline-block { display: inline-block !important; }
	.d-print-block        { display: block !important; }
	.d-print-table        { display: table !important; }
	.d-print-table-row    { display: table-row !important; }
	.d-print-table-cell   { display: table-cell !important; }
	.d-print-flex         { display: flex !important; }
	.d-print-inline-flex  { display: inline-flex !important; }
}

//
// Margin and Padding
//

@each $breakpoint in map-keys($grid-breakpoints) {
	@include media-breakpoint-up($breakpoint) {
		$infix: breakpoint-infix($breakpoint, $grid-breakpoints);

		@each $prop, $abbrev in (margin: m, padding: p) {
			@each $size, $length in $spacers {
				.#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }
				.#{$abbrev}t#{$infix}-#{$size},
				.#{$abbrev}y#{$infix}-#{$size} {
					#{$prop}-top: $length !important;
				}
				.#{$abbrev}r#{$infix}-#{$size},
				.#{$abbrev}x#{$infix}-#{$size} {
					#{$prop}-right: $length !important;
				}
				.#{$abbrev}b#{$infix}-#{$size},
				.#{$abbrev}y#{$infix}-#{$size} {
					#{$prop}-bottom: $length !important;
				}
				.#{$abbrev}l#{$infix}-#{$size},
				.#{$abbrev}x#{$infix}-#{$size} {
					#{$prop}-left: $length !important;
				}
			}
		}

		// Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`)
		@each $size, $length in $spacers {
			@if $size != 0 {
				.m#{$infix}-n#{$size} { margin: -$length !important; }
				.mt#{$infix}-n#{$size},
				.my#{$infix}-n#{$size} {
					margin-top: -$length !important;
				}
				.mr#{$infix}-n#{$size},
				.mx#{$infix}-n#{$size} {
					margin-right: -$length !important;
				}
				.mb#{$infix}-n#{$size},
				.my#{$infix}-n#{$size} {
					margin-bottom: -$length !important;
				}
				.ml#{$infix}-n#{$size},
				.mx#{$infix}-n#{$size} {
					margin-left: -$length !important;
				}
			}
		}

		// Some special margin utils
		.m#{$infix}-auto { margin: auto !important; }
		.mt#{$infix}-auto,
		.my#{$infix}-auto {
			margin-top: auto !important;
		}
		.mr#{$infix}-auto,
		.mx#{$infix}-auto {
			margin-right: auto !important;
		}
		.mb#{$infix}-auto,
		.my#{$infix}-auto {
			margin-bottom: auto !important;
		}
		.ml#{$infix}-auto,
		.mx#{$infix}-auto {
			margin-left: auto !important;
		}
	}
}
