@charset "UTF-8";

.h3_ttl {
	font-size: 60px;
	font-weight: 700;
	color: #D71318;
	line-height: 0.8;
}

.h3_ttl .h3_tiny {
	font-size: 18px;
	font-weight: 700;
	color: #313131;
}

@media (max-width: 840px) {
	.h3_ttl {
		font-size: 44px;
	}

	.h3_ttl .h3_tiny {
		font-size: 16px;
		font-weight: 700;
		color: #313131;
	}
}




/*-----------------------------------

	mainvisual_block

-----------------------------------*/
#mainvisual_block {
	position: relative;
	width: 100%;
	overflow: hidden;
	height: 100vh;
}

#mainvisual_block .swiper {
	width: 100%;
	height: 100vh;
}


#mainvisual_block .swiper-slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: top center;
}


#mainvisual_block .fixed-title {
	position: absolute;
	bottom: 8%;
	right: 1%;
	z-index: 10;
	color: white;
	text-align: left;
	pointer-events: none;
}

#mainvisual_block .fixed-title h2 {
	position: relative;
	font-size: clamp(40px, 8.5vw, 95px);
	line-height: 1.2;
	margin: 0;
	white-space: nowrap;
}

#mainvisual_block .fixed-title h2 span {
	display: block;
	padding-left: 4em;
}


#mainvisual_block .mv_txt {
	position: absolute;
	bottom: 17%;
	transform: translateY(-50%);
	right: 0;
	width: 70%;
	max-width: 1146px;
	aspect-ratio: 1146.92 / 153.11;
	background-image: url(../img/index/mv_bg_txt.png);
	background-repeat: no-repeat;
	background-size: contain;
	background-position: right center;
	z-index: 5;
	pointer-events: none;
}


#mainvisual_block .scroll_down {
	position: absolute;
	left: 40px;
	bottom: 0;
	z-index: 20;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 15px;
}


#mainvisual_block .scroll_down span {
	writing-mode: vertical-rl;
	font-family: "Outfit", sans-serif;
	font-weight: 700;
	font-size: 16px;
	letter-spacing: 0.2em;
	color: #313131;
}

#mainvisual_block .scroll_down::after {
	content: "";
	width: 1px;
	height: 80px;
	background: #313131;

	animation: scrollLine 2s cubic-bezier(0.77, 0, 0.175, 1) infinite;
}

/* アニメーションの定義 */
@keyframes scrollLine {
	0% {
		transform: scaleY(0);
		transform-origin: top;
	}

	50% {
		transform: scaleY(1);
		transform-origin: top;
	}

	50.1% {
		transform: scaleY(1);
		transform-origin: bottom;
	}

	100% {
		transform: scaleY(0);
		transform-origin: bottom;
	}
}


@media (max-width: 840px) {
	#mainvisual_block .fixed-title {
		bottom: 10%;
		right: 3%;
	}

	#mainvisual_block .fixed-title h2 span {
		padding-left: 2em;
	}

	#mainvisual_block .mv_txt {
		width: 90%;
		bottom: 20%;
	}

	#mainvisual_block .scroll_down {
		left: 20px;
	}

	#mainvisual_block .scroll_down::after {
		height: 60px;
	}
}


@media (max-width: 640px) {
	#mainvisual_block {
		height: 80vh;
	}

	#mainvisual_block .swiper,
	#mainvisual_block .swiper-slide img {
		height: 80vh;
	}

	#mainvisual_block .fixed-title {
		bottom: 5%;
		right: 5%;
		width: 90%;
	}

	#mainvisual_block .fixed-title h2 {
		white-space: normal;
		font-size: 40px;
		text-align: right;
	}

	#mainvisual_block .fixed-title h2 span {
		padding-left: 0;
		display: inline;
	}

	#mainvisual_block .mv_txt {
		width: 100%;
		bottom: 15%;
		background-position: right bottom;
	}

	#mainvisual_block .scroll_down span {
		font-size: 13px;
	}

	#mainvisual_block .scroll_down {
		left: 10px;
	}

	#mainvisual_block .scroll_down::after {
		height: 30px;
	}
}

/*-----------------------------------

	about_block

-----------------------------------*/
#about_block {
	padding-top: 130px;
	overflow: hidden;
	position: relative;
	z-index: 2;
	background-image: linear-gradient(#ffffff, #ffffffd6 80%, transparent);
}



#about_block .about_wrap {
	display: flex;
	align-items: center;
	width: 100%;
}

#about_block .left_box {
	margin-left: calc((100% - 1100px) / 2);
	flex: 0 0 650px;
	margin-right: 40px;
}

#about_block .left_box .btn_viewmore {
	justify-content: flex-end;
	margin-left: auto;
}

#about_block .left_box h4 {
	font-size: 50px;
	font-weight: 700;
	line-height: 1.4;
}

#about_block .left_box h5 {
	font-size: 30px;
	font-weight: 500;
	line-height: 1.5;
	margin-top: 30px;
}

#about_block .left_box p {
	font-size: 16px;
	font-weight: 500;
	line-height: 2;
	margin-top: 60px;
}

#about_block .right_box {
	flex: 1;
	max-width: 620px;
	margin-left: auto;
}

#about_block .right_box img {
	width: 100%;
	height: auto;
	display: block;
	object-fit: cover;
}

@media (max-width: 1100px) {
	#about_block {
		padding-top: 100px;
	}

	#about_block .left_box h4 {
		font-size: 45px;
	}

	#about_block .left_box h5 {
		font-size: 24px;
	}

	#about_block .left_box {
		margin-left: 5%;
		flex: 0 0 500px;
		margin-right: 30px;
	}

}

@media (max-width: 840px) {
	#about_block {
		padding-top: 80px;
	}

	#about_block .left_box {
		text-align: center;
	}

	#about_block .about_wrap {
		flex-direction: column;
		align-items: flex-start;
	}

	#about_block .left_box {
		margin-left: 5%;
		margin-right: 5%;
		flex: 0 0 auto;
		width: 90%;
	}

	#about_block .left_box .btn_viewmore {
		justify-content: center;
		margin: 30px auto 0;
	}

	#about_block .left_box h4 {
		font-size: 40px;
	}

	#about_block .left_box h5 {
		font-size: 21px;
		margin-top: 20px;
	}

	#about_block .left_box p {
		margin-top: 30px;
		font-size: 14px;
	}

	#about_block .right_box {
		width: 90%;
		max-width: 300PX;
		margin-left: 0;
		margin: 50px auto;
	}

	#about_block .pc {
		display: none;
	}

	#about_block .sp {
		display: block;
		width: 100%;
		max-width: 400px;
		margin: 30px auto;
	}


}


@media (max-width: 640px) {
	#about_block {
		padding-top: 60px;
	}

	#about_block .left_box {
		text-align: left;
		margin-left: 20px;
		margin-right: 20px;
		width: calc(100% - 40px);
	}

	#about_block .left_box .btn_viewmore {
		justify-content: flex-start;
	}

	#about_block .left_box h4 {
		font-size: 28px;
		line-height: 1.3;
	}

	#about_block .left_box h5 {
		font-size: 18px;
	}

	#about_block .left_box p {
		margin-top: 20px;
		line-height: 1.8;
	}

	#about_block .right_box {
		margin-top: 30px;
	}

	#about_block .sp {
		margin: 30px auto 30px 0;
	}

	#about_block .left_box .btn_viewmore {

		margin: 30px auto 30px 0;
	}
}

/*-----------------------------------

	service_block

-----------------------------------*/
#service_block {
	padding: 120px 0 290px;
	position: relative;
	z-index: 1;
	/*background: #fff;*/
}

#service_block::after {
	position: absolute;
	content: "";
	background-image: url(../img/index/about_bg.jpg);
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	bottom: 500px;
	width: 100%;
	height: 800px;
	z-index: -2;
	-webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 30%);
	mask-image: linear-gradient(to bottom, transparent 0%, black 30%);
}

#service_block .service_li {
	gap: 30px;
	align-items: center;
	justify-content: center;
	padding-bottom: 60px;
}

#service_block .service_box {
	width: calc((100% - 60px) / 3);
	position: relative;
	counter-increment: service-count;
	background-color: #fff;
}

.service_box::before {
	content: counter(service-count, decimal-leading-zero);
	position: absolute;
	right: 10px;
	bottom: 10px;
	font-size: 70px;
	font-weight: 700;
	font-family: "Outfit";
	color: #E9E9E9;
	line-height: 1;
}

#service_block .service_box:first-child {
	transform: translateY(60px);
}


#service_block .service_box:last-child {
	transform: translateY(-60px);
}

#service_block .service_box .txt_box {
	padding: 35px 30px;
	width: 100%;
	height: auto;
	position: relative;
	z-index: 1;
}

#service_block .service_box a {
	font-size: 26px;
	font-weight: 700;

}

#service_block .service_box .img_box {
	width: 100%;
	overflow: hidden;
	/* はみ出し防止 */
}

#service_block .service_box .img_box img {
	object-fit: cover;
	width: 100%;
	height: auto;
	transition: transform 0.6s cubic-bezier(0.25, 1, 0.5, 1);
}


#service_block .service_box .txt_box a {
	display: flex;
	align-items: center;
	text-decoration: none;
	color: #333;
	/* テキストの色（任意） */
	transition: color 0.4s;
}


#service_block .service_box .next-button {
	display: inline-block;
	width: 20px;
	height: 20px;
	background-color: #D71318;
	position: relative;
	margin-right: 10px;
	overflow: hidden;
	z-index: 1;
	flex-shrink: 0;
	/* ボタンが潰れないように固定 */
}

/* 背景のスライド（白い幕） */
#service_block .service_box .next-button::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 0;
	height: 100%;
	background-color: #fff;
	transition: 0.4s cubic-bezier(0.25, 1, 0.5, 1);
	z-index: -1;
}

/* 矢印（L字の線） */
#service_block .service_box .next-button::after {
	content: "";
	display: block;
	width: 5px;
	height: 5px;
	border-top: 2px solid #fff;
	border-right: 2px solid #fff;
	transform: rotate(45deg);
	position: absolute;
	top: 7px;
	left: 6.5px;
	transition: border-color 0.3s;
}

.service_box::before {
	/* 既存スタイル... */
	transition: color 0.4s, transform 0.4s;
	z-index: 1;
	/* テキストボックスより上にくるよう調整 */
	pointer-events: none;
}



#service_block .service_box a:hover {
	opacity: 1;
}

#service_block .service_box a:hover .txt_box span {
	color: #D71318;
	transition: 0.3s;
}


/* 2. 画像のズームアップ */
#service_block .service_box a:hover .img_box img {
	transform: scale(1.1);
}


#service_block .service_box a:hover~.service_box::before,
/* aの兄弟要素として存在する場合 */
#service_block .service_box:hover::before {
	color: rgba(215, 19, 24, 0.1);
	/* ほんのり赤く */
	transform: translateX(-10px);
	/* 少し左に動かす */
}


#service_block .service_box a:hover .next-button::before {
	width: 100%;
}

#service_block .service_box a:hover .next-button::after {
	border-top-color: #D71318;
	border-right-color: #D71318;
	transform: rotate(45deg) translate(2px, -2px);
}




#service_block .service_box .detail_li {
	margin-top: 20px;
	font-size: 16px;
	font-weight: 400;
	position: relative;
}

#service_block .service_box .detail_li::after {
	position: absolute;
	content: "";
}

#service_block .service_box .detail_li li {
	position: relative;
	padding-left: 1em;
	line-height: 1.8;
	list-style: none;
}

#service_block .service_box .detail_li li::after {
	content: "";
	position: absolute;
	left: 6px;
	top: 1em;
	transform: translateY(-50%);
	width: 3px;
	height: 3px;
	border-radius: 50%;
	background-color: #313131;
}

#service_block .service_bg {
	position: absolute;
	bottom: 20px;
	transform: translateY(-50%);
	right: 0;
	width: 70%;
	max-width: 919px;
	aspect-ratio: 919 / 152;
	background-image: url(../img/index/service_bg.png);
	background-repeat: no-repeat;
	background-size: contain;
	background-position: right center;
	z-index: -1;
	pointer-events: none;
}

@media (max-width: 840px) {
	#service_block {
		padding: 80px 0 120px;
	}

	#service_block::after {
		bottom: 250px;
		width: 100%;
		height: 800px;
	}

	#service_block .service_li {
		flex-direction: column;
		align-items: center;
		gap: 30px;
		margin-top: 50px;
	}

	#service_block .service_box {
		width: 100%;
		max-width: 100%;
		background-color: #fff;
	}

	#service_block .service_box a {
		display: flex;
		flex-direction: row;
		align-items: stretch;
		width: 100%;
	}

	#service_block .service_box .img_box {
		width: 40%;
		flex-shrink: 0;
	}

	#service_block .service_box .img_box img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}

	/* テキストエリア */
	#service_block .service_box .txt_box {
		width: 60%;
		padding: 20px 30px;
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		align-content: center;
	}

	#service_block .service_box .detail_li {
		width: 100%;
		margin-top: 20px;
	}

	#service_block .service_box:first-child {
		transform: none;
	}

	#service_block .service_box:last-child {
		transform: none;
	}

	.service_box::before {
		font-size: 40px;
		right: 10px;
		bottom: 10px;
		z-index: 2;
	}
}

@media (max-width: 640px) {

	#service_block::after {
		bottom: 400px;
		width: 100%;
		height: 1500px;
	}

	#service_block .service_box {
		flex-direction: column;
		max-width: 450px;
		margin: 0 auto;
	}

	#service_block .service_box .img_box,
	#service_block .service_box .txt_box {
		width: 100%;
	}

	#service_block .service_box .img_box img {
		height: 250px;
	}

	.service_box::before {
		font-size: 50px;
		bottom: 5px;
		right: 15px;
		opacity: 0.5;
	}

	#service_block .service_li {
		padding-bottom: 20px;
	}

	#service_block .service_box a {
		flex-direction: column;
	}
}


/*-----------------------------------

	mews_block

-----------------------------------*/

#news_block {
	background: #F8F8F8;
	padding: 120px 0 120px;
}

#news_block .news_wrap {
	align-items: flex-start;
}

#news_block .left_box {
	width: 300px;
}

#news_block .left_box .btn_viewmore {
	margin-top: 60px;
}

#news_block .ttl_box {
	margin-bottom: 102px;
}

#news_block .right_box {
	width: calc(100% - 383px);
	margin-top: 3px;
}

#news_block .news_box {
	width: 100%;
	border-bottom: 1px solid #C8C8C8;
}

#news_block .news_box:first-child {
	border-top: 1px solid #C8C8C8;
}

#news_block .news_box a {
	display: flex;
	align-items: center;
	background: #F8F8F8;
	padding: 30px 24.5px;
	position: relative;
	z-index: 1;
	overflow: hidden;
	transition: color 0.4s;
}


#news_block .news_box a::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 0;
	height: 100%;
	background-color: #fff;
	z-index: -1;
	transition: 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

#news_block .news_box a:hover::before {
	width: 100%;
}

#news_block .news_box a:hover {
	opacity: 1;
	color: #D71318;
}

#news_block .news_box time {
	display: inline-block;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.01em;
	color: #313131;
	width: 85px;
	margin-right: 30px;
	font-family: "Outfit";
	flex-shrink: 0;

}

#news_block .news_box h3 {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	overflow: hidden;
	text-overflow: ellipsis;
	-webkit-line-clamp: 1;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.429;
	letter-spacing: -0.01em;
	color: #232323;
	width: calc(100% - 115px);
}

#news_block .sp {
	display: none;
}

@media screen and (max-width: 840px) {
	#news_block {
		padding: 80px 0 80px;
	}

	#news_block .pc {
		display: none;
	}

	#news_block .sp {
		display: block;
	}

	#news_block .left_box,
	#news_block .right_box {
		width: 100%;
	}

	#news_block .right_box {
		margin-bottom: 20px;
		margin-top: 40px;
	}

	#news_block .ttl_box {
		margin-bottom: 62px;
	}

	#news_block .news_box h3 {
		font-size: 14px;
	}

	#news_block .news_box time {
		font-size: 14px;
	}
}

@media screen and (max-width: 640px) {
	#news_block {
		padding: 60px 0 60px;
	}


	#news_block .news_wrap {
		display: flex;
		flex-direction: column;
		align-items: stretch;
	}

	#news_block .left_box {
		width: 100%;
		margin-bottom: 40px;
	}

	#news_block .ttl_box {
		margin-bottom: 20px;
		text-align: center;
	}

	#news_block .left_box {
		display: flex;
		flex-direction: column;
	}

	#news_block .left_box .btn_viewmore {
		order: 2;
		margin: 30px auto 0;
		width: fit-content;
	}

	#news_block .right_box {
		width: 100%;
		margin-top: 0;
		margin-bottom: 0px;
	}


	#news_block .news_box a {
		flex-direction: column;
		align-items: flex-start;
		padding: 20px 0;
		gap: 8px;
	}

	#news_block .news_box time {
		width: 100%;
		margin-right: 0;
	}

	#news_block .news_box h3 {
		width: 100%;
		-webkit-line-clamp: 2;
		line-height: 1.6;
	}

	#news_block .sp {
		display: block;
	}
}


/*-----------------------------------

	recruit_block

-----------------------------------*/

#recruit_block {
	background-image: url(../img/index/recruit_bg.jpg);
	background-size: cover;
	background-position: top;
	background-repeat: no-repeat;
	height: auto;
	padding: 60px 0 35px;
}

#recruit_block .h3_ttl {
	color: #fff;
}

#recruit_block .h3_tiny {
	color: #fff;
}

#recruit_block p {
	font-size: 26px;
	color: #fff;
	font-weight: 500;
	margin-top: 55px;
	line-height: 1.5;
}

#recruit_block .btn_viewmore a {
	color: #fff;
}

#recruit_block .btn_viewmore .txt {
	border: 1px solid #fff;
	padding: 20px 0px 20px 28px;
}

#recruit_block .btn_viewmore .arrow {
	border: 1px solid #fff;
	border-left: none;
	background-color: transparent;
	position: relative;
	overflow: hidden;
	z-index: 1;
}

#recruit_block .btn_viewmore .arrow::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 0;
	height: 100%;
	background-color: #fff;
	transition: 0.4s cubic-bezier(0.25, 1, 0.5, 1);
	z-index: -1;
}

#recruit_block .btn_viewmore a:hover .arrow::before {
	width: 100%;
}

#recruit_block .btn_viewmore a:hover .arrow img {
	filter: brightness(0) saturate(100%) invert(14%) sepia(85%) saturate(5418%) hue-rotate(352deg) brightness(91%) contrast(106%);
	transition: 0.3s;
}

#recruit_block .btn_viewmore a:hover .txt {
	color: #fff;
}

#recruit_block .recruit_wrap {
	align-items: center;
}

#recruit_block .left_box {
	width: 450px;
	height: auto;
}

#recruit_block .right_box {
	width: calc(100% - 450px);
	gap: 20px;
	/* 固定値の方が管理しやすいです */
	align-items: center;
}

#recruit_block .right_box img {
	width: calc((100% - 40px) / 3);
	/* gap分を引いて計算 */

	height: 420px;
	/* 高さを固定して... */
	object-fit: cover;
	/* 綺麗に切り抜く */
}

#recruit_block .right_box img:first-child {
	transform: translateY(80px);
}

#recruit_block .right_box img:last-child {
	transform: translateY(-80px);
}

#recruit_block .sp {
	display: none;
}

@media (max-width: 840px) {
	#recruit_block {
		padding: 80px 0 80px;
	}

	#recruit_block .recruit_wrap {
		flex-direction: column;
		text-align: center;
	}

	#recruit_block .left_box {
		width: 100%;
		display: flex;
		flex-direction: column;
		align-items: center;
	}


	#recruit_block .right_box.pc {
		display: none;
	}


	#recruit_block .sp {
		display: flex;
		justify-content: center;
		gap: 15px;
		width: 100%;
		margin: 50px 0 60px;
	}

	#recruit_block .sp img {
		width: calc((100% - 30px) / 3);
		height: 300px;
		object-fit: cover;
		object-position: top;
	}

	/* 段差を付ける */
	#recruit_block .sp img:nth-child(1) {
		transform: translateY(40px);
	}

	#recruit_block .sp img:nth-child(3) {
		transform: translateY(-40px);
	}

	#recruit_block p {
		font-size: 24px;
		margin-top: 20px;
		/* transformのズレを考慮して調整 */
	}

	/* ボタンが消えないように表示を維持 */
	#recruit_block .btn_viewmore.pc {
		display: block;
		margin-top: 30px;
	}
}

/* --- スマホ版 (640px以下) --- */
@media (max-width: 640px) {
	#recruit_block {
		padding: 60px 0;
	}

	#recruit_block p {
		margin-top: 0px;
		font-size: 18px;
	}
}


/*-----------------------------------

	cta_block

-----------------------------------*/
#cta_block{
	padding-top: 135px;
	background: #F8F8F8;
}
#cta_block .cta_wrap {
	display: flex;
	width: 100%;

}

#cta_block .left_box,
#cta_block .right_box {
	position: relative;
	width: 50%;
	height: 350px;
	overflow: hidden;
	/* ★これが重要！これがないと画像が隣の枠に被ります */
	z-index: 1;
}

#cta_block a {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: 100%;
	text-decoration: none;
	position: relative;
	z-index: 1;
}


#cta_block .left_box::before {
	content: "";
	/* linear-gradient を先頭に追加（rgbaの最後の0.3が30%の意味です） */
	background-image: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), url(../img/index/cta_img_01.jpg);

	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-size: cover;
	background-position: center;
	transition: transform 0.8s cubic-bezier(0.25, 1, 0.5, 1);
	z-index: -1;
}

#cta_block .right_box::before {
	content: "";
	/* こちらも同様にグラデーションを重ねます */
	background-image: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), url(../img/index/cta_img_02.jpg);

	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-size: cover;
	background-position: center;
	transition: transform 0.8s cubic-bezier(0.25, 1, 0.5, 1);
	z-index: -1;
}


#cta_block .arrow {
	position: absolute;
	right: 23px;
	bottom: 23px;
}


#cta_block h4 {
	color: #fff;
	font-size: 44px;
	font-weight: bold;
	letter-spacing: 0.1em;
	margin: 0;
}

#cta_block p {
	color: #fff;
	font-size: 18px;
	margin-top: 10px;
	font-weight: 700;
}


#cta_block a::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0;
	width: 60px;
	height: 60px;
	border-top: 1px solid #fff;
	border-left: 1px solid #fff;
}




#cta_block .left_box:hover::before,
#cta_block .right_box:hover::before {
	transform: scale(1.15);
}

@media (max-width: 840px) {
	#cta_block{
		padding-top: 0;
	}
	#cta_block .left_box,
	#cta_block .right_box {
		height: 250px;
	}

	#cta_block a::after {
		width: 40px;
		height: 40px;
	}

	/* 矢印の位置やサイズ調整 */
	#cta_block .arrow {
		right: 15px;
		bottom: 15px;
		width: 10px;
		/* 必要であれば */
	}
}

@media (max-width: 640px) {
	#cta_block .cta_wrap {
		flex-direction: column;
	}

	#cta_block .left_box,
	#cta_block .right_box {
		width: 100%;
		height: 200px;
	}

	#cta_block h4 {
		font-size: 32px;
		letter-spacing: 0.05em;
	}

	#cta_block p {
		font-size: 14px;
	}

}