/*
	Hugo Story by CaressOfSteel
	A (modular, highly tweakable) responsive one-page theme for Hugo.
	Ported from Story by HTML5UP.
	This Hugo theme is licensed under the Creative Commons Attribution 3.0 License.
*/

/* Banner (transitions) */

	.banner {

		// Mixin.
			@mixin transition-banner($event) {
				$x: null;
				$y: null;

				@if ($event == 'load') {
					$x: 'body.is-preload &';
					$y: _duration(on-load);
				}
				@else if ($event == 'scroll') {
					$x: '&.is-inactive';
					$y: _duration(on-scroll);
				}

				// Content.
					&.on#{$event}-content-fade-up {
						.content {
							@include vendor('transition', (
								'opacity #{$y} ease-in-out',
								'transform #{$y} ease-in-out'
							));
						}

						#{$x} {
							.content {
								@include vendor('transform', 'translateY(1rem)');
								opacity: 0;
							}
						}
					}

					&.on#{$event}-content-fade-down {
						.content {
							@include vendor('transition', (
								'opacity #{$y} ease-in-out',
								'transform #{$y} ease-in-out'
							));
						}

						#{$x} {
							.content {
								@include vendor('transform', 'translateY(-1rem)');
								opacity: 0;
							}
						}
					}

					&.on#{$event}-content-fade-left {
						.content {
							@include vendor('transition', (
								'opacity #{$y} ease-in-out',
								'transform #{$y} ease-in-out'
							));
						}

						#{$x} {
							.content {
								@include vendor('transform', 'translateX(1rem)');
								opacity: 0;
							}
						}
					}

					&.on#{$event}-content-fade-right {
						.content {
							@include vendor('transition', (
								'opacity #{$y} ease-in-out',
								'transform #{$y} ease-in-out'
							));
						}

						#{$x} {
							.content {
								@include vendor('transform', 'translateX(-1rem)');
								opacity: 0;
							}
						}
					}

					&.on#{$event}-content-fade-in {
						.content {
							@include vendor('transition', 'opacity #{$y} ease-in-out');
						}

						#{$x} {
							.content {
								opacity: 0;
							}
						}
					}

				// Image.
					&.on#{$event}-image-fade-up {
						.image {
							@include vendor('transition', (
								'opacity #{$y} ease-in-out',
								'transform #{$y} ease-in-out'
							));

							img {
								@include vendor('transition', 'opacity #{$y} ease-in-out');
								@include vendor('transition-delay', '#{$y * 0.75}');
							}
						}

						#{$x} {
							.image {
								@include vendor('transform', 'translateY(1rem)');
								opacity: 0;

								img {
									opacity: 0;
								}
							}
						}
					}

					&.on#{$event}-image-fade-down {
						.image {
							@include vendor('transition', (
								'opacity #{$y} ease-in-out',
								'transform #{$y} ease-in-out'
							));

							img {
								@include vendor('transition', 'opacity #{$y} ease-in-out');
								@include vendor('transition-delay', '#{$y * 0.75}');
							}
						}

						#{$x} {
							.image {
								@include vendor('transform', 'translateY(-1rem)');
								opacity: 0;

								img {
									opacity: 0;
								}
							}
						}
					}

					&.on#{$event}-image-fade-left {
						.image {
							@include vendor('transition', (
								'opacity #{$y} ease-in-out',
								'transform #{$y} ease-in-out'
							));

							img {
								@include vendor('transition', 'opacity #{$y} ease-in-out');
								@include vendor('transition-delay', '#{$y * 0.75}');
							}
						}

						#{$x} {
							.image {
								@include vendor('transform', 'translateX(1rem)');
								opacity: 0;

								img {
									opacity: 0;
								}
							}
						}
					}

					&.on#{$event}-image-fade-right {
						.image {
							@include vendor('transition', (
								'opacity #{$y} ease-in-out',
								'transform #{$y} ease-in-out'
							));

							img {
								@include vendor('transition', 'opacity #{$y} ease-in-out');
								@include vendor('transition-delay', '#{$y * 0.75}');
							}
						}

						#{$x} {
							.image {
								@include vendor('transform', 'translateX(-1rem)');
								opacity: 0;

								img {
									opacity: 0;
								}
							}
						}
					}

					&.on#{$event}-image-fade-in {
						.image {
							img {
								@include vendor('transition', 'opacity #{$y} ease-in-out');
							}
						}

						#{$x} {
							.image {
								img {
									opacity: 0;
								}
							}
						}
					}

			}

		// On Load.
			@include transition-banner('load');

		// On Scroll.
			@include transition-banner('scroll');

	}

/* Banner (style1) */

	.banner.style1 {
		@include vendor('align-items', 'stretch');
		@include vendor('display', 'flex');
		@include vendor('flex-direction', 'row');
		@include vendor('justify-content', 'flex-end');
		position: relative;
		text-align: left;
		overflow-x: hidden;

		.content {
			@include padding(_size(padding, default), _size(padding, default));
			@include vendor('align-self', 'center');
			@include vendor('flex-grow', '1');
			@include vendor('flex-shrink', '1');
			width: 50%;
			max-width: (_size(inner) * 0.75);
			margin: 0 auto;
		}

		.image {
			@include vendor('flex-grow', '0');
			@include vendor('flex-shrink', '0');
			border-radius: 0;
			width: 50%;

			img {
				@include vendor('object-fit', 'cover');
				@include vendor('object-position', 'center');
				display: block;
				position: absolute;
				top: 0;
				left: 0;
				width: 100%;
				height: 100%;
				border-radius: 0;
			}
		}

		@include breakpoint('<=xlarge') {
			.content {
				@include padding(_size(padding, xlarge), _size(padding, xlarge));
			}
		}

		@include breakpoint('<=large') {
			.content {
				@include padding(_size(padding, large), _size(padding, large));
			}
		}

		@include breakpoint('<=medium') {
			.content {
				@include padding(_size(padding, medium) * 1.25, _size(padding, medium));
			}
		}

		@include breakpoint('<=small') {
			.content {
				@include padding(_size(padding, small) * 1.25, _size(padding, small));
			}
		}

		@include orientation(portrait) {
			@include vendor('flex-direction', 'column-reverse');
			text-align: center;

			.content {
				@include vendor('display', 'flex');
				@include vendor('flex-direction', 'column');
				@include vendor('justify-content', 'center');
				width: 100%;
				max-width: 100%;
			}

			.image {
				width: 100%;
				max-width: 100%;
				height: 45vh;
			}
		}

		// Modifiers.

			// Size.
				&.fullscreen {
					min-height: 100vh;

					@include orientation(portrait) {
						.content {
							min-height: 50vh;
						}

						.image {
							height: 50vh;
						}
					}
				}

			// Orientation.
				&.orient-left {
					// ...
				}

				&.orient-right {
					@include vendor('flex-direction', 'row-reverse');

					@include orientation(portrait) {
						@include vendor('flex-direction', 'column-reverse');
					}
				}

			// Content Alignment.
				&.content-align-left {
					// ...
				}

				&.content-align-center {
					text-align: center;
				}

				&.content-align-right {
					text-align: right;

					@include orientation(portrait) {
						text-align: center;
					}
				}

			// Image Position.
				&.image-position-left {
					.image {
						img {
							@include vendor('object-position', 'left');
						}
					}
				}

				&.image-position-center {
					.image {
						img {
							// ...
						}
					}
				}

				&.image-position-right {
					.image {
						img {
							@include vendor('object-position', 'right');
						}
					}
				}

	}

/* Banner (style2) */

	.banner.style2 {
		@include padding(_size(padding, default) * 0.75, _size(padding, default) * 0.75);
		@include vendor('align-items', 'center');
		@include vendor('display', 'flex');
		@include vendor('justify-content', 'center');
		background-color: inherit;
		position: relative;
		text-align: center;
		overflow-x: hidden;

		.content {
			@include padding(_size(padding, default) * 0.75, _size(padding, default) * 0.75);
			position: relative;
			width: (_size(inner) * 0.625);
			max-width: 100%;
			background-color: inherit;
			border-radius: _size(border-radius-alt);
			margin-bottom: _size(element-margin);
			z-index: 1;
		}

		.image {
			@include vendor('flex-grow', '0');
			@include vendor('flex-shrink', '0');
			position: absolute;
			width: 100%;
			height: 100%;
			top: 0;
			left: 0;
			border-radius: 0;

			img {
				@include vendor('object-fit', 'cover');
				@include vendor('object-position', 'center');
				display: block;
				position: absolute;
				top: 0;
				left: 0;
				width: 100%;
				height: 100%;
				border-radius: 0;
			}
		}

		@include breakpoint('<=xlarge') {
			@include padding(_size(padding, xlarge) * 0.75, _size(padding, xlarge) * 0.75);

			.content {
				@include padding(_size(padding, xlarge) * 0.75, _size(padding, xlarge) * 0.75);
			}
		}

		@include breakpoint('<=large') {
			@include padding(_size(padding, large), _size(padding, large) * 0.75);

			.content {
				@include padding(_size(padding, large), _size(padding, large) * 0.75);
			}
		}

		@include breakpoint('<=medium') {
			@include padding(_size(padding, medium), _size(padding, medium));

			.content {
				@include padding(_size(padding, medium) * 1.25, _size(padding, medium) * 0.75);
			}
		}

		@include breakpoint('<=small') {
			@include padding(_size(padding, small), _size(padding, small));

			.content {
				@include padding(_size(padding, small) * 1.25, _size(padding, small) * 0.75);
			}
		}

		// Modifiers.

			// Size.
				&.fullscreen {
					min-height: 100vh;
				}

			// Orientation.
				&.orient-left {
					@include vendor('justify-content', 'flex-start');
					padding-left: 0;

					.content {
						border-top-left-radius: 0;
						border-bottom-left-radius: 0;
					}
				}

				&.orient-center {
					// ...
				}

				&.orient-right {
					@include vendor('justify-content', 'flex-end');
					padding-right: 0;

					.content {
						border-top-right-radius: 0;
						border-bottom-right-radius: 0;
					}
				}

			// Content Alignment.
				&.content-align-left {
					text-align: left;
				}

				&.content-align-center {
					// ...
				}

				&.content-align-right {
					text-align: right;
				}

			// Image Position.
				&.image-position-left {
					.image {
						img {
							@include vendor('object-position', 'left');
						}
					}
				}

				&.image-position-center {
					.image {
						img {
							// ...
						}
					}
				}

				&.image-position-right {
					.image {
						img {
							@include vendor('object-position', 'right');
						}
					}
				}

	}

/* Banner (style3) */

	.banner.style3 {
		$image-size: 21rem;
		$content-size: (_size(inner) * 0.875) - $image-size - (_size(element-margin) * 1.75);

		@include padding(_size(padding, default), _size(padding, default));
		@include vendor('align-items', 'center');
		@include vendor('display', 'flex');
		@include vendor('flex-direction', 'row-reverse');
		@include vendor('justify-content', 'center');
		position: relative;
		text-align: left;
		overflow-x: hidden;

		.content {
			width: $content-size;
			max-width: 100%;
		}

		.image {
			@include vendor('flex-grow', '0');
			@include vendor('flex-shrink', '0');
			width: $image-size;
			height: $image-size;
			border-radius: 100%;
			margin: 0 (_size(element-margin) * 1.75) _size(element-margin) 0;

			img {
				@include vendor('object-fit', 'cover');
				@include vendor('object-position', 'center');
				display: block;
				width: 100%;
				height: 100%;
				border-radius: 100%;
			}
		}

		@include breakpoint('<=xlarge') {
			@include padding(_size(padding, xlarge), _size(padding, xlarge));
		}

		@include breakpoint('<=large') {
			@include padding(_size(padding, large), _size(padding, large));
		}

		@include breakpoint('<=medium') {
			@include padding(_size(padding, medium) * 1.25, _size(padding, medium));

			.image {
				width: ($image-size * 0.875);
				height: ($image-size * 0.875);
			}
		}

		@include breakpoint('<=small') {
			@include padding(_size(padding, small) * 1.25, _size(padding, small));
			@include vendor('align-items', 'flex-start');

			.image {
				width: ($image-size * 0.75);
				height: ($image-size * 0.75);
				margin: 0 (_size(element-margin) * 1) _size(element-margin) 0;
			}
		}

		@include orientation(portrait) {
			@include vendor('align-items', 'center');
			@include vendor('flex-direction', 'column-reverse');
			text-align: center;

			.content {
				width: 34rem;
				max-width: 100%;
			}

			.image {
				margin-right: 0;
			}
		}

		// Modifiers.

			// Size.
				&.fullscreen {
					min-height: 100vh;
				}

			// Orientation.
				&.orient-left {
					@include vendor('flex-direction', 'row');

					.image {
						margin: 0 0 _size(element-margin) (_size(element-margin) * 1.75);
					}

					@include breakpoint('<=small') {
						.image {
							margin: 0 0 _size(element-margin) (_size(element-margin) * 1);
						}
					}

					@include orientation(portrait) {
						@include vendor('flex-direction', 'column-reverse');

						.image {
							margin-left: 0;
						}
					}
				}

				&.orient-right {
					// ...
				}

			// Content Alignment.
				&.content-align-left {
					// ...
				}

				&.content-align-center {
					text-align: center;
				}

				&.content-align-right {
					text-align: right;
				}

			// Image Position.
				&.image-position-left {
					.image {
						img {
							@include vendor('object-position', 'left');
						}
					}
				}

				&.image-position-center {
					// ...
				}

				&.image-position-right {
					.image {
						img {
							@include vendor('object-position', 'right');
						}
					}
				}

	}

/* Banner (style4) */

	.banner.style4 {
		$image-width: 13rem;
		$content-size: (_size(inner) * 0.75) - $image-width - (_size(element-margin) * 1.75);

		@include padding(_size(padding, default), _size(padding, default));
		@include vendor('align-items', 'center');
		@include vendor('display', 'flex');
		@include vendor('flex-direction', 'row-reverse');
		@include vendor('justify-content', 'center');
		position: relative;
		text-align: left;
		overflow-x: hidden;

		.content {
			width: $content-size;
			max-width: 100%;
		}

		.image {
			@include phone($image-width);
			margin-right: (_size(element-margin) * 1.75);
		}

		@include breakpoint('<=xlarge') {
			@include padding(_size(padding, xlarge), _size(padding, xlarge));
		}

		@include breakpoint('<=large') {
			@include padding(_size(padding, large), _size(padding, large));
		}

		@include breakpoint('<=medium') {
			@include padding(_size(padding, medium) * 1.25, _size(padding, medium));

			.image {
				@include resize-phone($image-width, 0.875);
			}
		}

		@include breakpoint('<=small') {
			@include padding(_size(padding, small) * 1.25, _size(padding, small));
			@include vendor('align-items', 'flex-start');

			.image {
				@include resize-phone($image-width, 0.625);
			}
		}

		@include orientation(portrait) {
			@include vendor('align-items', 'center');
			@include vendor('flex-direction', 'column-reverse');
			text-align: center;

			.content {
				width: 34rem;
				max-width: 100%;
			}

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

		// Modifiers.

			// Size.
				&.fullscreen {
					min-height: 100vh;
				}

			// Variant.
				&.iphone {
					// ...
				}

				&.android {
					// ...
				}

			// Orientation.
				&.orient-left {
					@include vendor('flex-direction', 'row');

					.image {
						margin-right: 0;
						margin-left: (_size(element-margin) * 1.75);
					}

					@include orientation(portrait) {
						@include vendor('flex-direction', 'column-reverse');

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

				&.orient-right {
					// ...
				}

			// Content Alignment.
				&.content-align-left {
					// ...
				}

				&.content-align-center {
					text-align: center;
				}

				&.content-align-right {
					text-align: right;
				}

			// Image Position.
				&.image-position-left {
					.image {
						img {
							@include vendor('object-position', 'left');
						}
					}
				}

				&.image-position-center {
					// ...
				}

				&.image-position-right {
					.image {
						img {
							@include vendor('object-position', 'right');
						}
					}
				}

	}

/* Banner (style5) */

	.banner.style5 {
		@include padding(_size(padding, default), _size(padding, default));
		@include vendor('align-items', 'center');
		@include vendor('display', 'flex');
		@include vendor('justify-content', 'center');
		background-color: inherit;
		position: relative;
		text-align: center;
		overflow-x: hidden;

		.content {
			position: relative;
			width: (_size(inner) * 0.625);
			max-width: 100%;
			margin-bottom: _size(element-margin);
			z-index: 1;
		}

		.image {
			@include vendor('flex-grow', '0');
			@include vendor('flex-shrink', '0');
			position: absolute;
			width: 100%;
			height: 100%;
			top: 0;
			left: 0;
			border-radius: 0;
			opacity: _misc(overlay-opacity);

			img {
				@include vendor('object-fit', 'cover');
				@include vendor('object-position', 'center');
				display: block;
				position: absolute;
				top: 0;
				left: 0;
				width: 100%;
				height: 100%;
				border-radius: 0;
			}
		}

		@include breakpoint('<=xlarge') {
			@include padding(_size(padding, xlarge), _size(padding, xlarge));
		}

		@include breakpoint('<=large') {
			@include padding(_size(padding, large), _size(padding, large));
		}

		@include breakpoint('<=medium') {
			@include padding(_size(padding, medium) * 1.25, _size(padding, medium));
		}

		@include breakpoint('<=small') {
			@include padding(_size(padding, small) * 1.25, _size(padding, small));
		}

		// Modifiers.

			// Size.
				&.fullscreen {
					min-height: 100vh;
				}

			// Content Alignment.
				&.content-align-left {
					text-align: left;
				}

				&.content-align-center {
					// ...
				}

				&.content-align-right {
					text-align: right;
				}

			// Image Position.
				&.image-position-left {
					.image {
						img {
							@include vendor('object-position', 'left');
						}
					}
				}

				&.image-position-center {
					// ...
				}

				&.image-position-right {
					.image {
						img {
							@include vendor('object-position', 'right');
						}
					}
				}

	}

// Mixin

	@mixin color-banner($p: null) {
		.banner {
			.image {
				background-color: transparentize(_palette($p, fg-bold), 0.875);
			}

			@if ($p != 'invert') {
				&.invert {
					.image {
						background-color: transparentize(_palette(invert, fg-bold), 0.875);
					}
				}
			}
		}

		.banner.style4 {
			.image {
				@include color-phone($p);
			}

			// Variant.
				&.iphone {
					.image {
						@include color-phone-variant('iphone', $p);
					}
				}

				&.android {
					.image {
						@include color-phone-variant('android', $p);
					}
				}

			@if ($p != 'invert') {
				&.invert {
					.image {
						@include color-phone(invert);
					}

					// Variant.
						&.iphone {
							.image {
								@include color-phone-variant('iphone', invert);
							}
						}

						&.android {
							.image {
								@include color-phone-variant('android', invert);
							}
						}

				}
			}
		}
	}

	@include color-banner;