/* ------------ SETTINGS ------------ */

$card-image: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/1613479/inception.jpg';
$card-icon: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/1613479/play.svg';

$white: #FFF;
$black: #000;

/* ------------ CARD ------------ */

// Main
.card {
	width: 70vw;
	height: calc(9/16 * 70vw);
	max-width: calc(16/9 * 70vh);
	max-height: 70vh;
	display: flex;
  position: relative;
  border-radius: 6px;
	box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
  background: url($card-image) center center / cover;
	overflow: hidden;
}
	
// Play icon
.card-play {
	width: 48px;
	height: 48px;
	position: relative;
	z-index: 1;
	margin: auto;
	opacity: 0;
	background: url($card-icon) center center / cover;
	cursor: pointer;
	transition: opacity .3s ease-out;
}

// Animation
.card-play:after {
	content: '';
	position: absolute;
	top: 50%; left: 50%;
	transform: translate(-50%, -50%);
	border-radius: 50%;
	background: $black;
	transition: all .5s ease-out;
}
	
	// Video
.card-video {
	display: none;
	position: absolute;
	top: 0; left: 0; bottom: 0; right: 0;
	z-index: 2;
	background: $black;

	iframe {
		width: 100%;
		height: 100%;
	}
}
	
// Shine effect
.card:after {
	content: '';
	width: 250%;
	height: 250%;
	position: absolute;
	top: var(--y);
	left: var(--x);
	transform: translate(-50%, -50%);
	opacity: 0;
	background: radial-gradient(circle closest-side, rgba(255, 255, 255, .3), transparent);
	transition: opacity 0.5s ease-out;
}


/* ------------ STATES ------------ */

.card:hover:after,
.card:hover .card-play {
	opacity: 1;
}

.video-is-open:after {
	display: none;
}

.video-is-open .card-play {
	opacity: 1;
	
	&:after {
		width: 2vh;
		height: 2vh;
		transform: translate(-50%, -50%) scale(16/9 * 50);
		transition: transform .5s ease-out;
	}
}


/*
 * ===== VARIABLES =====
 *
 * Change these variables to match your preferences. For a more detailed
 * description of what each variable do, visit https://github.com/alexerlandsson/css-fadeshow
 */

$max-slides:					5;
$prefix:							true;
$responsive:					true;
$breakpoint-small:			500px;
$fade-time:						1;
$prev-next-fontfamily:		sans-serif;
$prev-next-icon-size:		3vw;
$prev-next-icon-color:		rgba(255,255,255,0.5);
$prev-next-bg:					rgba(255,255,255,0);
$prev-next-bg-hover:			rgba(255,255,255,0.1);
$prev-icon:						'❮';
$next-icon:						'❯';
$autohide-next-prev:			true;
$quick-nav-color:				rgba(255,255,255,0.8);
$quick-nav-active-color:	coral;
$fade-color:					#fff;
$autoplay:						true;
$autoplay-duration:			5;

/* Mixins to handle prefixes */

@mixin fadeshow-transition($value...) {
	@if length($value) < 1 {
		$value: all 150ms linear;
	}
	@if $prefix == true {
		-webkit-transition: $value;
	}
				  transition: $value;
}

@mixin fadeshow-transform($value...) {
	@if length($value) < 1 {
		$value: all 150ms linear;
	}
	@if $prefix == true {
		-webkit-transform: $value;
			 -ms-transform: $value;
	}
				  transform: $value;
}

@mixin fadeshow-animation($value...) {
	@if $prefix == true {
		-webkit-animation: $value;
	}
				  animation: $value;
}

@mixin fadeshow-animation-delay($value) {
	@if $prefix == true {
		-webkit-animation-delay: $value;
	}
				  animation-delay: $value;
}

@mixin fadeshow-unselectable() {
	@if $prefix == true {
		-webkit-user-select: none;
		   -moz-user-select: none;
			 -ms-user-select: none;
	}
				  user-select: none;
}

/* Mixins to handle Quick Navigation Button states */

@mixin quickNavBtnActive() {
	background-color: $quick-nav-active-color;
}

@mixin quickNavBtnInactive() {
	background-color: $quick-nav-color;
}


/*
 * ===== FADESHOW =====
 *
 * Base functionality for the fadeshow.
 * Do not change anything here unless you know what you are doing.
 */

[data-am-fadeshow] {
	position: relative;
	width: 100%;
	height: 100%;
	overflow: hidden;
	background-color: $fade-color;

	/* Slides */
	.fs-slide {
		position: absolute;
		top: 0;
		bottom: 0;
		left: 0;
		right: 0;
		opacity: 0;
		background-size: cover;
		background-position: center;
		background-repeat: no-repeat;
		@include fadeshow-transition(opacity #{$fade-time}s ease);

		/* Display first child on load */
		&:first-child {
			opacity: 1;
		}
	}

	/* Quick Navigation */
	.fs-quick-nav {
		position: absolute;
		bottom: 15px;
		left: 50%;
		z-index: 1;
		@include fadeshow-unselectable();
		@include fadeshow-transform(translateX(-50%));
	}

	.fs-quick-btn {
		display: inline-block;
		width: 15px;
		height: 15px;
		margin: 0 2px;
		border-radius: 50%;
		cursor: pointer;
		@include fadeshow-transition(opacity 200ms ease);
		@include quickNavBtnInactive();

		&:hover {
			opacity: 0.8;
		}

		/* Set active state to first button on load */
		&:first-child {
			@include quickNavBtnActive();
		}
	}

	/* Prev/Next Navigation */
	%prev-next {
		position: absolute;
		display: none;
		top: 0;
		bottom: 0;
		width: 100px;
		cursor: pointer;
		font-family: $prev-next-fontfamily;
		background-color: $prev-next-bg;
		-webkit-tap-highlight-color: rgba(0,0,0,0);
		@include fadeshow-transition(all 200ms ease);

		@if $responsive == true {
			@media (max-width: $breakpoint-small) {
				width: 50%;
			}
		}

		&:before {
			position: absolute;
			top: 50%;
			font-size: $prev-next-icon-size;
			color: $prev-next-icon-color;
		}

		&:hover {
			background-color: $prev-next-bg-hover;
			@if $responsive == true {
				@media (max-width: $breakpoint-small) {
					background-color: rgba(255,255,255,0);
				}
			}
		}
	}

	.fs-prev-btn {
		@extend %prev-next;
		left: 0;

		&:before {
			content: "#{$prev-icon}";
			left: 50%;
			@include fadeshow-transform(translate(-50%, -50%));
			@if $responsive == true {
				@media (max-width: $breakpoint-small) {
					left: 30px;
				}
			}
		}

		@if $autohide-next-prev == true {
			@include fadeshow-transform(translateX(-100%));
			@if $responsive == true {
				@media (max-width: $breakpoint-small) {
					@include fadeshow-transform(translate(0));
				}
			}
		}
	}

	.fs-next-btn {
		@extend %prev-next;
		right: 0;

		&:before {
			content: "#{$next-icon}";
			right: 50%;
			@include fadeshow-transform(translate(50%, -50%));
			@if $responsive == true {
				@media (max-width: $breakpoint-small) {
					right: 30px;
				}
			}
		}

		@if $autohide-next-prev == true {
			@include fadeshow-transform(translateX(100%));
			@if $responsive == true {
				@media (max-width: $breakpoint-small) {
					@include fadeshow-transform(translate(0));
				}
			}
		}
	}

	/* Base functionality */
	input[type="radio"] {
		position: fixed;
		top: -9999px;

		&:checked {

			/* This loop handles the slide switching and quick navigation active state */
			$i: $max-slides;

			@while $i > 0 {

				&:nth-of-type(#{$i}) {
					/* Show slide */
					~ .fs-slides {
						.fs-slide {
							//Cancel autoplay
							opacity: 0;
							@include fadeshow-animation(none !important);
						}
						.fs-slide:nth-child(#{$i}) {
							opacity: 1;
						}
					}

					/* Add active state to dot */
					~ .fs-quick-nav {
						.fs-quick-btn {
							@include quickNavBtnInactive();
							/* Cancel autoplay */
							@include fadeshow-animation(none !important);
						}
						.fs-quick-btn:nth-child(#{$i}) {
							background-color: $quick-nav-active-color;
							&:hover {
								opacity: 1;
							}
						}
					}

				}
				$i: $i - 1;
			}

			/* Hide navigation if only one slide */
			&:first-of-type:last-of-type {
				~ .fs-quick-nav,
				~ .fs-prev-nav,
				~ .fs-next-nav {
					display: none !important;
				}
			}

		}
	}

	/* Autohide Prev/Next Navigation */
	@if $autohide-next-prev == true {
		&:hover {
			.fs-prev-btn,
			.fs-next-btn {
				@include fadeshow-transform(translateX(0));
			}
		}
	}

}


/*
 * ===== PREV/NEXT NAVIGATION =====
 *
 * This section handles the prev/next navigation.
 */

/* Handle Prev/Next buttons */
[data-am-fadeshow~="next-prev-navigation"] {
	input[type="radio"] {

		&:checked {

			$i: $max-slides;

			@while $i > 0 {

				&:nth-of-type(#{$i}) {

					$prev: ($i - 1);
					$next: ($i + 1);

					/* Show previous button */
					@if $prev > 0 {
						~ .fs-prev-nav {
							.fs-prev-btn {
								display: none;
							}
							.fs-prev-btn:nth-child(#{$prev}) {
								display: block;
							}
						}
					}

					/* Show next button */
					@if $next < ($max-slides + 1) {
						~ .fs-next-nav {
							.fs-next-btn {
								display: none;
							}
							.fs-next-btn:nth-child(#{$next}) {
								display: block;
							}
						}
					}

					/* Show last prev button if first slide */
					&:first-of-type {
						~ .fs-prev-nav {
							.fs-prev-btn:last-child {
								display: block;
							}
						}
					}

					/* Show first next button if last slide */
					&:last-of-type {
						~ .fs-next-nav {
							.fs-next-btn:first-child {
								display: block;
							}
						}
					}

				}
			  $i: $i - 1;
			}
		}
	}

	/* Display first pair of Prev/Next Buttons on load */
	.fs-prev-btn:last-child {
		display: block;
	}

	.fs-next-btn:nth-child(2) {
		display: block
	}

}


/*===== Slide =====*/

@if $autoplay == true {

	$i: $max-slides;

	@while $i > 1 {

		$total-duration: $autoplay-duration * $i;

		@keyframes quickNavAnimation-#{$i} {
			0% { @include quickNavBtnInactive();  }
			#{100% * $fade-time / $total-duration},
			#{100% * $autoplay-duration / $total-duration} { @include quickNavBtnActive(); }
			#{100% * ($autoplay-duration + $fade-time) / $total-duration},
			100% { @include quickNavBtnInactive(); }
		}
		@if $prefix == true {
			@-webkit-keyframes quickNavAnimation-#{$i} {
				0% { @include quickNavBtnInactive();  }
				#{100% * $fade-time / $total-duration},
				#{100% * $autoplay-duration / $total-duration} { @include quickNavBtnActive(); }
				#{100% * ($autoplay-duration + $fade-time) / $total-duration},
				100% { @include quickNavBtnInactive(); }
			}
		}

		@keyframes slidesAnimation-#{$i} {
			0% { opacity: 0; }
			#{100% * $fade-time / $total-duration},
			#{100% * $autoplay-duration / $total-duration} { opacity: 1; }
			#{100% * ($autoplay-duration + $fade-time) / $total-duration},
			100% { opacity: 0; }
		}
		@if $prefix == true {
			@-webkit-keyframes slidesAnimation-#{$i} {
				0% { opacity: 0; }
				#{100% * $fade-time / $total-duration},
				#{100% * $autoplay-duration / $total-duration} { opacity: 1; }
				#{100% * ($autoplay-duration + $fade-time) / $total-duration},
				100% { opacity: 0; }
			}
		}

		[data-am-fadeshow~="autoplay"] {
			input[type="radio"]:nth-of-type(#{$i}):last-of-type {

				/* Slide animation */
				~ .fs-slides {
					.fs-slide {
						@include fadeshow-animation(slidesAnimation-#{$i} #{$total-duration}s infinite);
					}
				}

				/* Quick navigation animation */
				~ .fs-quick-nav {
					.fs-quick-btn {
						@include fadeshow-animation(quickNavAnimation-#{$i} #{$total-duration}s infinite);
					}
				}

				/* Animation Delay */
				@for $j from 1 through $i {
					~ .fs-slides .fs-slide:nth-child(#{$j}),
					~ .fs-quick-nav .fs-quick-btn:nth-child(#{$j}) {
						$animation-delay: #{($j - 1) * ($autoplay-duration) - $fade-time}s;
						@include fadeshow-animation-delay(#{$animation-delay});
					}
				}

			}
			$i: $i - 1;
		}
	}
}

/* Base Styling */
.slide-container {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	box-shadow: 0 0 20px rgba(0,0,0,0.1);
	overflow: hidden;
}
/*===== Slide =====*/