@charset "utf-8";
html, body, main, .page_shell {
		min-height: 100%
}
.loading_base {
		position: fixed;
		top: 0;
		left: 0;
		width: 100%;
		height: 100vh;
		background: #fff;
		z-index: 9999;
}
.loading_logo {
		display: none;
}
.loading_base .loading_logo {
		width: 400px;
		position: absolute;
		top: 50%;
		left: 50%;
		transform: translate(-50%, -50%);
}
@media(max-width: 767px) {
		.loading_base .loading_logo {
				width: 240px;
		}
}
.loading_logo img {
		width: 100%;
		height: auto;
		opacity: 0;
		animation: fadeIn 0.3s linear forwards;
}
@keyframes fadeIn {
		0% {
				opacity: 0;
		}
		100% {
				opacity: 1;
		}
}
.kv {
		position: relative;
		overflow: hidden;
		background: #000;
}
@media(max-width: 767px) {
		.kv {
				min-height: 600px !important;
		}
		.swiper, .swiper, .swiper-slide {
				height: 190vw !important;
				max-height: 1000px;
		}
		.desktopDevice .kv {
				max-height: 800px !important;
		}
		.desktopDevice .swiper, .desktopDevice .swiper, .desktopDevice .swiper-slide {
				max-height: 800px !important;
		}
}
@media screen and (orientation: landscape) and (max-width: 900px) {
		.kv, .swiper, .swiper, .swiper-slide {
				min-height: 700px !important;
		}
}
.kv::before {
		content: '';
		display: block;
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		background: rgba(0, 0, 0, 0.15);
		mix-blend-mode: multiply;
		z-index: 20
}
.swiper {
		width: 100%;
		height: 100%;
}
.kv .kv_catch {
		position: absolute;
		top: 50%;
		left: 50%;
		transform: translate(-50%, -50%);
		width: 80vw;
		max-width: 2000px;
		z-index: 100
}
.kv .kv_catch .kv_catch-2 {
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
}
.kv_catch img {
		width: 100%;
		height: auto;
}
@media(max-width: 767px) {
		.kv .kv_catch {
				transform: translate(-50%, calc(-50% - 50px));
		}
}
.kv_catch-1 {
		opacity: 0;
		transition: opacity 0.8s;
		transition-delay: 1s;
}
.kv_catch-2 {
		opacity: 0;
		transition: opacity 0.8s;
		transition-delay: 1.9s;
}
.isStart .kv_catch-1, .isStart .kv_catch-2 {
		opacity: 1;
}
.isDone .kv_catch-1, .isDone .kv_catch-2 {
		opacity: 1;
		transition: opacity 0.4s !important;
		transition-delay: 0s !important
}
.kv .kv_scroll {
		position: absolute;
		bottom: 0;
		left: calc(50% - 50px);
		text-align: center;
		width: 100px;
		height: 90px;
		color: #fff;
		z-index: 30;
		opacity: 0;
		transition: opacity 0.8s;
		transition-delay: 2.9s;
		pointer-events: none;
}
.kv.isStart .kv_scroll {
		opacity: 1;
		pointer-events: all;
}
.kv.isDone .kv_scroll {
		opacity: 1;
		pointer-events: all;
		transition: opacity 0.4s !important;
		transition-delay: 0s !important
}
.kv_scroll p {
		font-family: "Montserrat", sans-serif;
		font-size: 16px;
		font-weight: 500;
		letter-spacing: 0;
		margin: 0;
		line-height: 1;
		height: 25px
}
.kv_scroll a {
		color: #fff;
		text-decoration: none;
}
.kv_scroll_bar {
		margin: 0 auto;
		width: 1px;
		height: 65px;
		background: #fff;
		transform-origin: center top;
		animation: kvScroll 2s ease infinite;
}
@media(max-width: 767px) {
		.kv .kv_scroll {
				height: 85px;
				bottom: 60px;
		}
		.kv_scroll p {
				font-size: 13px;
				height: 20px
		}
		.kv_scroll_bar {
				height: 65px;
		}
}
@keyframes kvScroll {
		0%, 15% {
				transform: scale(0);
				opacity: 0;
		}
		30% {
				transform: scale(1);
				opacity: 1;
		}
		80% {
				transform: scale(1);
				opacity: 1;
		}
		100% {
				transform: scale(1);
				opacity: 0;
		}
}
/* =============== */
.news_section {
		padding: 100px 30px 160px
}
.news_wrap {
		max-width: 1250px;
		margin: 0 auto;
		display: flex;
		position: relative;
}
.news_wrap::before, .news_wrap::after {
		content: '';
		display: block;
		position: absolute;
		width: 800px;
		height: 800px;
		background-repeat: no-repeat;
		background-position: 0 0;
		background-size: 100%;
		background-image: url("../images/top_bg-1.jpg");
		pointer-events: none;
		z-index: -1
}
.news_wrap::before {
		top: -300px;
		left: -600px
}
.news_wrap::after {
		bottom: -400px;
		right: -600px
}
.news_wrap_left {
		width: 255px;
}
.news_wrap_right {
		flex: 1
}
@media(max-width: 960px) {
		.news_wrap_left {
				width: 200px;
		}
}
@media(max-width: 767px) {
		.news_section {
				padding: 80px 20px;
		}
		.news_wrap {
				display: block;
		}
}
/* ============ */
.about_section {
		padding: 0 0 220px;
}
@media(max-width: 960px) {
		.about_section {
				padding: 0 0 180px;
		}
}
@media(max-width: 767px) {
		.about_section {
				padding: 0 0 calc(17vw + 80px);
		}
}
.about_wrap {
		max-width: 1250px;
		margin: 0 auto;
		display: flex;
		align-items: flex-start;
		justify-content: space-between;
		padding: 0 30px;
}
.about_photo {
		width: 655px;
		margin-right: 30px;
		position: relative;
		left: -70px;
}
.about_photo::before {
		content: '';
		display: block;
		position: absolute;
		top: -45px;
		left: -90px;
		width: calc(100% - 10px);
		height: 100%;
		z-index: -1;
		background: linear-gradient(180deg, #0075cf 0%, #0064b0 100%);
}
.about_photo img {
		width: 100%;
		height: auto;
		box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.1);
}
.about_caption {
		flex: 1
}
.s_ttl {
		font-size: 22px;
		font-family: "Montserrat";
		font-weight: 600;
		color: #0168b7;
		margin: 0 0 40px;
}
.s_ttl span {
		padding-left: 35px;
		position: relative;
		display: inline-block;
}
.s_ttl span::before, .s_ttl span::after {
		content: '';
		display: block;
		position: absolute;
		width: 9px;
		height: 9px;
}
.s_ttl span::before {
		background: #0168B7;
		top: 0;
		left: 0;
}
.s_ttl span::after {
		background: #aed0e9;
		top: 9px;
		left: 9px;
}
.about_catch {
		font-size: 36px;
		font-weight: 700;
		line-height: 1.5;
		color: #303030;
		margin: 0 0 30px;
}
.about_caption p {
		line-height: 1.8;
		text-align: justify;
		margin: 0 0 40px;
}
@media(max-width: 1590px) {
		.about_photo {
				left: -60px;
		}
}
@media(max-width: 1430px) {
		.about_photo {
				width: 45%;
				left: 0px;
				margin-right: 55px;
		}
		.about_photo::before {
				top: -30px;
				left: -60px;
		}
		.about_caption {
				padding-right: 20px;
		}
		.s_ttl {
				margin: 0 0 20px;
		}
		.about_catch {
				font-size: 28px;
				margin: 0 0 20px;
		}
}
@media (max-width: 840px) {
		.about_catch {
				font-size: 22px;
		}
}
@media screen and (orientation: landscape) and (max-width: 900px) {
		.about_caption .about_catch br {
				display: none;
		}
}
@media(max-width: 767px) {
		.about_wrap {
				display: flex;
				flex-direction: column;
				padding: 0 20px;
		}
		.about_caption {
				display: contents;
		}
		.about_caption .ttl {
				order: 1
		}
		.about_caption .about_catch {
				order: 2;
				font-size: 22px;
				margin-bottom: 25px;
		}
		.about_photo {
				order: 3;
				width: 100%;
				left: inherit;
				margin: 0 0 30px
		}
		.about_photo::before {
				top: 10px;
				left: 20px;
				width: 100%;
		}
		.about_caption p {
				order: 4;
				margin: 0 0 30px;
		}
		.about_caption .linkBtn.sizeS {
				width: 165px;
				order: 5;
		}
}
/* ============ */
.photo_section {
		padding-bottom: 180px;
}
@media(max-width: 960px) {
		.photo_section {
				padding-bottom: 90px;
		}
}
@media(max-width: 767px) {
		.photo_section {
				padding-bottom: 80px;
		}
}
.photo_inner {
		max-width: 1250px;
		margin: 0 auto;
		position: relative;
		display: flex;
		justify-content: space-between;
		align-items: flex-start;
}
.photo_col-1 {
		width: 430px;
		position: relative;
		margin-left: 290px;
}
.photo_col-1::before {
		content: '';
		display: block;
		position: absolute;
		bottom: -40px;
		right: -47px;
		width: 360px;
		z-index: -1;
		background: linear-gradient(180deg, #0075cf 0%, #0064b0 100%);
}
.photo_inner .photo_col-2 {
		position: relative;
		width: 485px;
		right: -200px;
		top: -120px;
}
.photo_col-1 img, .photo_col-2 img {
		width: 100%;
		height: auto;
		box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.1);
}
.photo_inner .decoParts.XL {
		position: absolute;
		left: -35px;
		top: -60px;
}
.photo_inner .decoParts.L {
		position: absolute;
		right: 0;
		bottom: -45px;
}
@media(max-width: 1700px) {
		.photo_col-1 {
				width: 38.5%;
				margin-left: 9vw;
		}
		.photo_inner .photo_col-2 {
				width: 41%;
				right: 5px;
				top: -10vw;
		}
}
@media(max-width: 1430px) {
		.photo_col-1 {
				width: 38.5%;
				margin-left: 12vw;
		}
		.photo_inner .photo_col-2 {
				width: 41%;
				right: 0px;
				top: -10vw;
		}
		.photo_inner .decoParts.L {
				right: 15px
		}
		.photo_inner .decoParts.XL {
				left: 0px;
				top: -60px;
				width: 80px;
				height: 80px
		}
		.photo_inner .decoParts.XL::after {
				width: 50px;
				height: 50px;
		}
		.photo_inner .decoParts.XL::before {
				width: 18px;
				height: 18px;
		}
}
@media(max-width: 767px) {
		.photo_col-1 {
				width: 45%;
				margin-left: 20px;
		}
		.photo_col-1 img {
				width: 100%;
				height: 36vw;
				object-fit: cover;
		}
		.photo_inner .photo_col-2 {
				width: 45%;
				right: 0;
				top: -17vw;
		}
		.photo_col-2 img {
				width: 100%;
				height: 36vw;
				object-fit: cover;
		}
		.photo_inner .decoParts.XL {
				left: 10px;
				top: -90px;
		}
}
/* ============ */
.service_section {
		padding: 0 0 180px
}
@media(max-width: 960px) {
		.service_section {
				padding: 0 0 140px
		}
}
.service_wrap {
		max-width: 1250px;
		margin: 0 auto;
		padding: 0 30px;
}
.service_wrap_hdr {
		display: flex;
		align-items: center;
		justify-content: space-between;
		margin: 0 0 50px
}
.service_wrap_hdr hgroup {
		margin-right: 50px;
}
.service_wrap_hdr_right p {
		line-height: 1.8;
		flex: 1;
}
@media(max-width: 1200px) {
		.service_wrap_hdr_right p br {
				display: none
		}
}
.service_flex {
		display: flex;
		justify-content: space-between;
		position: relative;
}
.service_item {
		width: calc(100% / 3);
		padding: 15px 50px 10px;
		box-sizing: border-box;
		position: relative;
}
.service_item .service_item_bar {
		position: absolute;
		top: 0;
		left: 0;
		background: #82B7E0;
		width: 1px;
		height: 100%;
}
.service_item .service_item_bar.end {
		left: inherit;
		right: 0
}
.service_item_bar::before, .service_item_bar::after {
		content: '';
		display: block;
		position: absolute;
		width: 8px;
		height: 8px;
		background: #0168B7;
}
.service_item_bar::before {
		left: -4px;
		top: -10px;
}
.service_item_bar::after {
		left: -4px;
		bottom: -10px;
}
.service_item_figure {
		width: 145px;
		margin: 0 auto 30px
}
.service_item_figure img {
		width: 100%;
		height: auto
}
.service_item h3 {
		font-size: 22px;
		font-weight: 600;
		text-align: center;
		margin: 0 0 15px
}
.service_item p {
		text-align: justify;
		line-height: 1.8;
		margin: 0 0 35px
}
@media(max-width: 1280px) {
		.service_item p {
				margin: 0;
				min-height: 9em;
		}
}
@media(max-width: 960px) {
		.service_item p {
				margin: 0 0 15px;
				min-height: 10em;
		}
}
.linkBtn.sizeS {
		margin-left: auto;
		margin-right: auto;
}
@media(min-width: 768px) {
		.about_section .linkBtn.sizeS, .hrRight .linkBtn.sizeS {
				margin-left: 0;
				margin-right: 0;
		}
}
@media(max-width: 1200px) {
		.service_item {
				padding: 15px 35px 20px;
		}
		.service_item_figure {
				width: 55%;
		}
		.service_item h3 {
				font-size: 20px;
				margin: 0 0 10px;
		}
}
@media(max-width: 960px) {
		.service_item {
				padding: 15px 20px 20px;
		}
		.service_item_figure {
				width: 45%;
				margin-bottom: 20px;
		}
		.service_wrap_hdr {
				display: block;
		}
}
@media(max-width: 767px) {
		.service_section {
				padding: 0 0 80px;
		}
		.service_wrap {
				padding: 0 20px;
		}
		.service_wrap_hdr {
				margin-bottom: 30px;
		}
		.service_flex {
				display: block;
		}
		.service_wrap_hdr_right p br {
				display: none
		}
		.service_item {
				width: calc(100% - 70px);
				padding: 0px 0 35px;
				margin: 0 auto 35px;
				border-bottom: 1px solid #82B7E0;
				position: relative;
		}
		.service_item::before, .service_item::after {
				content: '';
				display: block;
				position: absolute;
				bottom: -3px;
				width: 7px;
				height: 7px;
				background: #0168B7;
		}
		.service_item::before {
				left: -10px
		}
		.service_item::after {
				right: -10px
		}
		.service_item p {
				margin: 0 0 30px;
				min-height: inherit;
		}
		.service_flex .service_item:last-child {
				margin-bottom: 0;
		}
		.service_flex .service_item:last-child::before, .service_flex .service_item:last-child::after {
				display: none
		}
		.service_item_figure {
				width: 110px;
				margin-bottom: 25px;
		}
		.service_item .service_item_bar {
				display: none
		}
}
/* ============ */
.casestudy_section {
		padding: 0
}
.casestudy_wrap {
		max-width: 1250px;
		margin: 0 auto;
		display: flex;
		justify-content: space-between;
		align-items: flex-start;
		padding: 0 30px;
		position: relative;
		z-index: 5
}
.casestudy_wrap_left {
		flex: 1;
		position: relative;
}
.casestudy_wrap_left .decoParts {
		position: absolute;
		right: -15px;
		top: 0;
}
@media(min-width: 768px) and (max-width: 840px) {
		.casestudy_wrap_left .decoParts {
				display: none
		}
}
.casestudy_wrap_left p {
		text-align: justify;
		line-height: 1.8;
		margin-bottom: 60px;
}
.casestudy_wrap_left .linkBtn.sizeS {
		margin-left: 0;
		margin-right: 0;
}
.casestudy_wrap_right {
		width: 650px;
		position: relative;
		right: -80px
}
.casestudy_figure {
		position: relative;
}
.casestudy_wrap_right::before {
		content: '';
		display: block;
		position: absolute;
		bottom: -45px;
		right: -90px;
		width: calc(100% - 10px);
		height: 100%;
		z-index: -1;
		background: linear-gradient(180deg, #0075cf 0%, #0064b0 100%);
}
.casestudy_wrap_right img {
		width: 100%;
		height: auto;
		box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.1);
}
@media(max-width: 1430px) {
		.casestudy_wrap_right {
				width: 45%;
				right: 0;
				margin-left: 45px;
		}
		.casestudy_wrap_right::before {
				bottom: -30px;
				right: -60px;
		}
}
@media(min-width: 768px) {
		.sp_casestudy_img {
				display: none
		}
}
@media(max-width: 767px) {
		.casestudy_section {
				padding: 0 20px;
		}
		.casestudy_wrap {
				display: flex;
				flex-direction: column;
				padding: 0;
		}
		.casestudy_wrap_left {
				display: contents;
		}
		.casestudy_wrap_right {
				order: 2;
				width: 100%;
				left: inherit;
				margin: 0 0 30px
		}
		.casestudy_wrap_right::before {
				bottom: -10px;
				right: -20px;
		}
		.casestudy_wrap_left p {
				order: 3;
				margin: 0 0 30px;
		}
		.casestudy_wrap_left .linkBtn.sizeS {
				order: 4;
				margin-left: auto;
				margin-right: auto;
		}
}
/* ============ */
.contact_section {
		padding: 120px 0 160px
}
.contact_wrap {
		margin-left: calc(calc(100vw - 1250px) * 0.5);
		background: linear-gradient(180deg, #0075cf 0%, #0064b0 100%);
		color: #fff;
		padding: 100px 0 100px 120px;
		margin-bottom: 120px;
		box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.1);
}
@media(max-width: 1700px) {
		.contact_wrap {
				margin-left: 80px;
		}
}
@media(max-width: 1300px) {
		.contact_wrap {
				margin-left: 30px;
		}
}
.contact_wrap_inner {
		max-width: 1200px;
		display: flex;
		padding-right: 60px;
}
.contact_wrap_inner_left {
		width: 390px;
}
.contact_wrap_inner_right {
		flex: 1
}
.contact_wrap_inner_right p {
		line-height: 1.8;
		margin-bottom: 50px;
		max-width: 680px;
}
@media(max-width: 1300px) {
		.contact_wrap {
				padding: 80px 0 80px 60px;
		}
}
@media(max-width: 960px) {
		.contact_section {
				padding: 80px 0 120px
		}
		.contact_wrap {
				padding: 60px 0 60px 40px;
				margin-bottom: 80px;
		}
		.contact_wrap_inner {
				padding-right: 30px;
		}
}
@media(max-width: 767px) {
		.contact_section {
				padding: 80px 0 80px
		}
		.contact_wrap {
				margin-left: 15px;
		}
		.contact_wrap {
				padding: 40px 25px;
		}
		.contact_wrap_inner {
				display: block;
				padding: 0;
		}
		.contact_wrap_inner_right p {
				margin-bottom: 30px;
		}
}
.download_flex {
		display: flex;
		justify-content: space-between;
		align-items: center;
		position: relative;
		max-width: 950px;
		margin: 0 auto;
		padding: 0 30px;
}
.download_flex .linkBtn {
		width: calc(50% - 15px);
}
.download_flex .decoParts {
		position: absolute;
		right: -220px;
		bottom: 0
}
@media (hover: hover) {
		.download_flex .linkBtn a:hover {
				background: #0075CF;
				color: #fff;
		}
}
@media(max-width: 960px) {
		.download_flex .linkBtn a {
				height: 70px;
		}
		.download_flex .decoParts {
				right: 40px;
				bottom: -80px;
		}
}
@media(max-width: 767px) {
		.download_flex {
				display: block;
		}
		.download_flex .linkBtn {
				width: 100%;
				margin: 0 0 15px;
		}
		.download_flex .linkBtn a {
				height: 56px
		}
		.download_flex .decoParts {
				right: 20px;
				bottom: -60px;
		}
}
/* ================= */
.decoParts::before, .decoParts::after {
		content: '';
		display: block;
		position: absolute;
}
.decoParts::before {
		background: #AED0E9;
}
.decoParts::after {
		background: #0168B7;
}
.decoParts.XL {
		width: 110px;
		height: 110px
}
.decoParts.L {
		width: 72px;
		height: 72px
}
.decoParts.M {
		width: 64px;
		height: 64px
}
.decoParts.S {
		width: 46px;
		height: 46px
}
.decoParts.XL::before {
		width: 31px;
		height: 31px;
		left: 0;
		bottom: 0
}
.decoParts.XL::after {
		width: 65px;
		height: 65px;
		right: 0;
		top: 0
}
.decoParts.L::before {
		width: 22px;
		height: 22px;
		left: 0;
		top: 0
}
.decoParts.L::after {
		width: 39px;
		height: 39px;
		right: 0;
		bottom: 0
}
.decoParts.M::before {
		width: 19px;
		height: 19px;
		left: 0;
		bottom: 0
}
.decoParts.M::after {
		width: 34px;
		height: 34px;
		right: 0;
		top: 0
}
.decoParts.S::before {
		width: 14px;
		height: 14px;
		right: 0;
		bottom: 0
}
.decoParts.S::after {
		width: 24px;
		height: 24px;
		left: 0;
		top: 0
}
.casestudy_wrap_left .decoParts.S::before {
		right: inherit;
		left: 0;
		bottom: 0
}
.casestudy_wrap_left .decoParts.S::after {
		left: inherit;
		right: 0;
		top: 0
}
@media(max-width: 960px) {
		.decoParts.XL {
				width: 90px;
				height: 90px
		}
		.decoParts.L {
				width: 58px;
				height: 58px
		}
		.decoParts.M {
				width: 50px;
				height: 50px
		}
		.decoParts.S {
				width: 46px;
				height: 46px
		}
		.decoParts.XL::before {
				width: 25px;
				height: 25px;
		}
		.decoParts.XL::after {
				width: 52px;
				height: 52px;
		}
		.decoParts.L::before {
				width: 18px;
				height: 18px;
		}
		.decoParts.L::after {
				width: 30px;
				height: 30px;
		}
		.decoParts.M::before {
				width: 19px;
				height: 19px;
		}
		.decoParts.M::after {
				width: 34px;
				height: 34px;
		}
		.decoParts.S::before {
				width: 14px;
				height: 14px;
		}
}
@media(max-width: 767px) {
		.decoParts.XL {
				width: 38px;
				height: 38px
		}
		.decoParts.L {
				width: 36px;
				height: 36px
		}
		.decoParts.XL::before {
				width: 14px;
				height: 14px;
		}
		.decoParts.XL::after {
				width: 20px;
				height: 20px;
		}
		.photo_inner .decoParts.XL {
				left: 10px;
				top: -70px;
				width: 38px;
				height: 38px
		}
		.photo_inner .decoParts.XL::before {
				width: 14px;
				height: 14px;
		}
		.photo_inner .decoParts.XL::after {
				width: 22px;
				height: 22px;
		}
		.decoParts.L::before {
				width: 13px;
				height: 13px;
		}
		.decoParts.L::after {
				width: 20px;
				height: 20px;
		}
		.decoParts.S {
				width: 32px;
				height: 32px
		}
		.decoParts.S::before {
				width: 8px;
				height: 8px;
		}
		.decoParts.S::after {
				width: 20px;
				height: 20px;
		}
}
/* ========== */
@media(min-width: 768px) {
		.kv_contact_wrap {
				display: none
		}
}
@media(max-width: 767px) {
		.kv .kv_contact_wrap {
				position: absolute;
				background: #fff;
				left: 0;
				bottom: 0;
				width: 100%;
				box-sizing: border-box;
				display: flex;
				justify-content: center;
				align-items: center;
				padding: 15px 20px;
				z-index: 50;
				transition: opacity 0.8s;
				transition-delay: 2.9s;
				opacity: 0;
				pointer-events: none;
		}
		.kv.isStart .kv_contact_wrap {
				opacity: 1;
				pointer-events: all;
		}
		.kv.isDone .kv_contact_wrap {
				opacity: 1;
				pointer-events: all;
				transition-delay: 0s !important
		}
}