@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: 2;
	
	opacity: 0;
	pointer-events: none;

	& img {
		width: 50%;
		max-width: 220px;
		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: 100svh;
	margin: 0 auto;
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
	background-color: rgb(255, 255, 255);
	transition: background-color 1s ease 0.5s;
	overflow: hidden;
	backface-visibility:hidden;
	
	&:has(.kv-ttl.-single) {
		font-size: 100%;
		box-sizing: border-box;
		align-items: flex-end;
		padding: clamp(20px, 12.958px + 1.878vw, 40px);
	}
}

.kv-inner {
	position: relative;
	height: 100%;
	-webkit-backface-visibility:hidden;
	        backface-visibility:hidden;
}

/* Title */

.kv-ttl {
	position: relative;
	z-index: 2;
	width: calc(100% - 50px);
	margin: 0 auto;
	text-align: center;
	color: #fff;
}

.kv-ttl.-single {
	display: flex;
	flex-direction: column;
	font-size: clamp(1.5rem, 0.0974rem + 6.2338vw, 7.5rem);
	transition: 1.5s ease 0.2s;
	opacity: 0;
	filter: blur(16px);
	width: calc(100% / 0.9);
	max-width: 15em;
	gap: 0.2lh;
	text-align: left;
	margin-inline: 0 auto;
	transform: scaleX(0.9);
	transform-origin: left;
	
	& > * {
		margin-block: 0;
	}
	
	& .ja {
		font-size: clamp(20px, 15.082px + 1.311vw, 40px);
		font-weight: 500;
	}
	
	& .en {
		font-size: clamp(60px, 38.873px + 5.634vw, 120px);
		font-weight: 700;
		line-height: 1;
	}
	
	.onloadcomplete & {
		opacity: 1;
		filter: blur(0);
	}
}

.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-color, 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%;
	
	&::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 {
	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);
}




/* video */

.kv .kv-video {
	position: absolute;
	inset: 50% auto auto 50%;
	z-index: 0;
	width: 100%;
	height: auto;
	transform: translate(-50%, -50%);
	width: 177.77777778vh;
	height: 56.25vw;
	min-height: 115%;
	min-width: 115%;
	pointer-events: none
}

.kv .kv-video.-portrait {
	height: 177.77777778vh;
	width: 56.25vw
}

.-youtube-paused .kv .pagewrp__image {
	visibility: hidden;
	opacity: 0;
	transition: none
}

.-lowbattery .kv .kv-video {
	display: none
}

.-lowbattery .kv .pagewrp__bg {
	background-image: url(/assets/img/home/kv_img_lowbattery.jpg);
	background-size: cover;
	background-position: center
}


/* 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                                                                                     */



/* ---------------------------------------------------------------------------------------------- */
/* Tablet                                                                                         */

@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: 200px;
		height: auto;
		margin: auto;
	}
	
	.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;
	}
}
