@charset "utf-8";


/* ------------------------------------------- */

.intro {
	position: absolute;
	left: 0;
	top: 0;
	
	display: flex;
	align-items: center;
	justify-content: center;
	
	width: 100%;
	height: 100%;
	
	background-color: #fff;
	z-index: 100;
	
	opacity: 0;
	pointer-events: none;
}

.intro h1 {
	width: 400px;
	height: auto;
}

.js-intro--show .intro {
	opacity: 1;
}

.js-intro--hide .intro {
	transition: 1.5s ease;
}



.intro-wind {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	z-index: 10;
	transition: opacity 3s ease 2s;
	opacity: 1;
	margin: auto;
	width: 100%;
	height: 100%;
	pointer-events: none;
}

.intro-wind .path {
	stroke-dasharray: 300;
	animation: dash 5s linear infinite;
	animation-fill-mode: backwards;
	fill: none;
	stroke: #f199ae;
	stroke-width: 0.1;
	stroke-miterlimit: 10;
	transition: stroke 1s ease;
}

.intro-wind .path1 { animation-duration: 3s; animation-delay: 0.5s; }
.intro-wind .path2 { animation-duration: 4s; animation-delay: 1.0s; }
.intro-wind .path3 { animation-duration: 5s; animation-delay: 0.5s; }
.intro-wind .path4 { animation-duration: 6s; animation-delay: 1.0s; }
.intro-wind .path5 { animation-duration: 7s; animation-delay: 0.5s; }

.js-intro--show .intro-wind {
	opacity: 0;
}


.intro-wind .path {
	stroke: #fff;
}

@keyframes dash {
	0% {
		stroke-dashoffset: 600;
		stroke-width: 0;
		stroke-opacity: 0;
	}
	50% {
		stroke-width: 0.5;
		stroke-opacity: 0.25;
	}
	100% {
		stroke-dashoffset: 1800;
		stroke-width: 0;
		stroke-opacity: 0;
	}
}

.msie .intro-wind,
.edge .intro-wind {
	display: none;
}
/* ------------------------------------------- */

.kv {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	height: calc(100vh - 60px);
	margin: 0 auto;
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
	background-color: rgb(255, 255, 255);
	transition: background 1s ease 0.5s;
	overflow: hidden;
	backface-visibility:hidden;
}

.kv-inner {
	position: relative;
	height: 100%;
	-webkit-backface-visibility:hidden;
	        backface-visibility:hidden;
}

/* Title */

.kv-ttl {
	position: relative;
	z-index: 5;
	width: calc(100% - 50px);
	margin: 0 auto;
	text-align: center;
	color: #fff;
}

.kv-ttl .lang {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	line-height: 1;
}

.kv-ttl .lang > span {
	margin-bottom: 0.5em;
}

.kv-ttl .lang.en {
	margin-bottom: 20px;
	font-size: 2rem;
}

.kv-ttl .lang.ja {
	font-size: 1.4rem;
}



.kv-ttl__span {
	display: inline-block;
	backface-visibility: hidden;
}

.kv-ttl__span span {
	white-space: nowrap;
	overflow: hidden;
	display: inline-block;
	backface-visibility: hidden;
}



.kv-ttl__slide {
	position: relative;
	height: 1.1em;
	display: inline-block;
}

.kv-ttl__slide:before,
.kv-ttl__slide:after {
	position: absolute;
	content: "";
	width: 100%;
	height: 1px;
	left: 0;
	bottom: -2px;
	background-color: currentColor;
	opacity: 0.3;
}

.onload .kv-ttl__slide:after {
	width: 0%;
	opacity: 1;
}

.onload .playstart .kv-ttl__slide:after {
	animation: slide-animation 7s linear 0s 1;
}

@keyframes slide-animation {
	0% {
		width: 0%;
	}
	
	90% {
		width: 90%;
		opacity: 1;
	}
	100% {
		width: 100%;
		opacity: 0;
	}
}

.kv-ttl__slide-inner {
	position: relative;
	display: block;
	height: 100%;
	padding: 0 0.2em;
	transition: all 0.5s ease 0.5s;
	transition-property: background, width;
	overflow: hidden;
}

.kv-ttl__word {
	position: absolute;
	display: block;
	width: auto;
	height: 1em;
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	white-space: nowrap;
	
	text-align: left;
}

.kv-ttl__word:before {
	opacity: 0.3;
}

.kv-ttl__word:after {
	
}

.kv-ttl__word.current {
	
}

.kv-ttl__word .char {
	display: inline-block;
	transition: all 0.5s cubic-bezier(.86,0,.07,1);
	transition-property: transform, opacity;
	transition-delay: 0s;
	transition-duration: 1s;
	opacity: 0;
	transform: translateY(1.5em) rotate(-25deg);
}

.kv-ttl__word .char:nth-child(odd) {
	transform: translateY(1.5em) rotate(25deg);
}

.kv-ttl__word.current .char {
	opacity: 1;
	transition-duration: 2s, 0.5s;
	transform: translateY(0) rotate(0turn) !important;
}

.kv-ttl__span .char {
	display: inline;
	transition: all 0.5s cubic-bezier(.86,0,.07,1);
	transition-property: transform, opacity;
	transition-delay: 0s;
	transition-duration: 1s;
	opacity: 0;
	transform: translateY(1.5em);
}

.js-intro--hide .kv-ttl__span .char {
	opacity: 1;
	transition-duration: 2s, 0.5s;
	transform: translateY(0) !important;
}

/* Image, Videos */

.kv__img {
	overflow: hidden;
	position: absolute;
	top: 0;
	left: 0;
	z-index: 1;
	height: 100%;
	width: 100%;
}

.image-reel {
	position: absolute;
	top: 0;
	z-index: 1;
	width: 100%;
	height: 100%;
	margin: auto;
	padding: 0;
	font-size: 0;
	line-height: 0;
	list-style: none;
	overflow: hidden;
	background-color: #000;
}

.image-reel:before {
	position: absolute;
	width: 100%;
	height: 100%;
	display: block;
	content: "";
	background-color: #000;
	z-index: 10;
	opacity: 0;
}

.image-reel.hidestart:before {
	opacity: 1;
	transition: opacity 3s ease-in; /* page_home.js > changeDelay */
}

.image-reel.showstart:before {
	opacity: 0;
	transition: opacity 2s ease-out;
}

.image-reel:after {
	content: "";
	position: absolute;
	display: block;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	z-index: 11;
	background-color: rgba(0,0,0,0.35);
}

.image-reel-item {
	position: absolute;
	opacity: 0;
	margin: 0;
	padding: 0;
	font-size: 0;
	line-height: 0;
	top: 0;
	height: 100%;
	width: 100%;
	transition: all 0s cubic-bezier(.44,.07,.05,.69);
}

.image-reel-item-inner {
	height: 100%;
	width: 100%;
}

.image-reel .image-reel-item-bg.img {
	display: none;
}

.image-reel .image-reel-item-bg.video {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.image-reel-item.current {
	opacity: 1;
	overflow: hidden;
}

.image-reel-item.type-img {
	background-position: 0 center;
}

.type-img .image-reel-item-inner {
	position: absolute;
	left: -50px;
	top: 0;
	width: calc(100% + 100px);
	height: 100%;
	background-size: cover;
	background-repeat: no-repeat;
	background-position: center;
	transform: translate3d(0, 0, 0);
	transform-origin: center center;
	transition: transform 7s linear;
}

.image-reel-item.type-img .image-reel-item-inner {
	transform: translate3d(50px, 0, 0);
}

.image-reel-item.type-img.current .image-reel-item-inner {
	transform: translate3d(-50px, 0, 0);
}




#movie #youtubeCover {
	position: absolute;
	z-index: 3;
	background: url(../images/blank.gif);
}
#movie #youtube {
	position: absolute;
	z-index: 2;
	display: none;
}


/* scroll-navigate */

.scroll-navigate.-down {
	top: auto;
	bottom: 20px;
}

.scroll-navigate, .scroll-navigate::before,
.scroll-navigate::after {
	width: 1px;
	height: 30px;
	margin: auto;
}

.scroll-navigate {
	position: absolute;
	left: 0;
	right: 0;
	display: flex;
	z-index: 100;
	color: rgb(255, 255, 255);
	mix-blend-mode: normal;
}




/* ---------------------------------------------------------------------------------------------- */
/* SmartPhone                                                                                     */

/* iPhone 6 over */
@media screen and (min-width: 374px) {
	
}

/* ---------------------------------------------------------------------------------------------- */
/* Tablet                                                                                         */

@media screen and (min-width: 541px) {
	
}


/* iPad */
@media screen and (min-width: 768px) {
	
	.kv-ttl .lang.en {
		font-size: 2.8rem;
	}
	
	.kv-ttl .lang.ja {
		font-size: 1.8rem;
	}
}

/* ---------------------------------------------------------------------------------------------- */
/* Desktop                                                                                        */

@media screen and (min-width: 1024px) {
	
	.intro h1 {
		width: 400px;
		height: auto;
		margin: auto;
	}
	
	.kv {
		height: calc(100vh - 100px);
	}
	
	.kv-ttl .lang {
		flex-direction: row;
	}
	
	.kv-ttl .lang.en {
		font-size: 3.4rem;
	}
	
	.kv-ttl .lang.ja {
		font-size: 2.2rem;
	}
	
	.scroll-navigate.-down {
		top: auto;
		bottom: 30px;
	}
	
	.scroll-navigate, .scroll-navigate::before,
	.scroll-navigate::after {
		height: 40px;
	}
}