@charset "utf-8";
/* CSS Document */
/*====================
 - 1280px〜：大型PC
 - 960px〜1279px：小型PC
 - 600px〜959px：タブレット
 - 480px〜599px：スマートフォン横
 - 〜479px：スマートフォン縦
====================*/


/*---page-------------------------------------------------------*/

/*****固定ページ共通*****/
.container{
	position: relative;
}
.page section{
	margin: 12rem 0 0 0;
}
.page_content{
	margin-bottom: 12rem;
}

@media screen and (max-width:799px) {
	.page section{
		margin: 12rem 0 0 0;
	}
}

/*** ページ見出し ***/
/* h1 */
.page_header{
	position: relative;
	height: 400px;
	padding: 10rem 0 2rem;
}
.page_header .img_wrap{
	width: 100%;
}
.page_header .img_wrap img{
	width: 100%;
	object-fit: cover;
}
#company .page_header .img_wrap img{
	object-position: 70% 50%;
}
.page_title{
	margin-top: clamp(6rem,14vw,8rem);
}
.page_header h1{
	position: relative;
}
.img_page_header{
	padding: 0;
	height: 600px;
	position: relative;
}

@media screen and (min-width:900px) { 
	.img_page_header{
		display: flex;
	}
	.img_page_header .page_title{
		margin-top:0;
		width: 80%;
	}
	.img_page_header h1{
		width: fit-content;
		position: relative;
		/* bottom: 0; */
		left: 10%;
		top: 360px;
	}
	.page_header_wrap,.page_header .img_wrap img{
		height: 50vh;
	}
}
@media screen and (max-width:899px) { 
	.img_page_header{
		padding-top: 10rem;
		height: fit-content;
	}
	.page_header_wrap,.page_header .img_wrap img{
		height: 60vw;
		min-height: 280px;
	}
}

/* dl */
#company_outline dl, #recruit_guideline dl {
	display: flex;
	flex-flow: row wrap;
	width: 100%;
	margin: 1rem auto;
}
#company_outline dt, #company_outline dd, #recruit_guideline dt, #recruit_guideline dd {
	padding: 24px 0 16px;
	border-bottom: 1px solid #bcbcbc;
}
#company_outline dt, #recruit_guideline dt {
	flex-basis: 28%;
	font-weight: 500;
}
#company_outline dd, #recruit_guideline dd {
	flex-basis: 72%;
	margin: 0;
}
@media screen and (min-width: 860px) {
	.l_r .wrap {
		position: relative;
		display: flex;
		flex-wrap: wrap;
	}
	.l_r .left_area {
		width: 28%;
		height: fit-content;
	}
	.l_r .right_area {
		width: 70%;
	}
}
@media screen and (max-width: 599px) {
	#company_outline dl, #recruit_guideline dl {
	  flex-flow: column;
	}
	#company_outline dt, #recruit_guideline dt {
	  border-bottom: none;
	  font-weight: bold;
	  padding-bottom: 0;
	}
}

/*** about ***/
#about_content{
	position: relative;
	background-color: #fefefe;
	z-index: 2;
	padding: 100px 0;
}
#about .page_content{
	margin-bottom: 0;
}
@media screen and (max-width:599px) {
	#about_content{
		padding: 40px 0 100px;
	}
}
#about .header_outer::before{
	content: '';
	position: absolute;
	width: calc(100vw);
	height: calc(200%);
	background: linear-gradient(180deg, rgba(0, 0, 0, 0.1) 0%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0)100%);
}
#about .page_title{
	margin-top: 80vh;
}
#about_hero {
	height: 100vh;
	overflow: hidden;
}
#about_hero .img_wrap{
	position: relative;
	display: block;
	overflow: hidden;
}
#about_hero .about_hero_img {
	position: fixed;
	right: 0;
	width: 100%;
	height: 100vh;
	object-fit: cover;
	object-position: 70% 50%;
	z-index: -3;
}
.hero_text {
	position: relative;
}
#about_hero, .intro {
	font-weight: 500;
	color: #fefefe;
}
.intro {
	margin-bottom: 30rem;
	padding-top: 240px;
	font-size: clamp(1.6rem, 2.4vw, 2rem);
	line-height: 1.6;
	letter-spacing: .1px;
	font-weight: 400;
}
.intro:before {
	content: '';
	position: absolute;
	width: calc(100vw);
	height: calc(200%);
	background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 35%, rgba(0, 0, 0, 0.7)100%);
}
.intro .wrap{
	width: 90%;
	max-width: 1200px;
	margin: 0 auto;
}
.intro h2{
	font-size: clamp(2.4rem, 4vw, 3.6rem);
	margin-bottom: 8rem;
}
.intro .text_inner {
	width: 80%;
	margin-top: 3.6rem;
	line-height: 2;
}
.intro .text_inner p{
	margin-bottom: 2.8rem;
}
@media screen and (min-width:1025px) {
	.intro .text_inner {
		width: 60%;
		margin-top: 3.6rem;
		line-height: 2;
	}
	#about .header_outer::before{
		content: '';
		position: absolute;
		width: calc(100vw - 200px - 18px);
		height: calc(200%);
	}
	.intro:before {
		content: '';
		position: absolute;
		width: calc(100vw - 200px - 18px);
		height: calc(200%);
	}
	
}
@media screen and (min-width:900px) {
	header h1 {
	  display: flex;
	  align-items: center;
	}
	#about_hero .about_hero_img {
	  object-position: 80% 50%;
	}
}
@media screen and (max-width:899px) {
	#about_hero {
	  margin-top: 0;
	  height: 100vh;
	}
}
/* history */
#about_history h2{
	width: 90%;
	margin: 0 auto 8rem;
	max-width: 1500px;
}
#about_history h2 .jp{
	font-size: clamp(2.4rem, 3.2vw, 3.6rem);
	line-height: 1.4;
}
#about_history .img_wrap{
	position: relative;
}

@media screen and (max-width:899px) {
	#about_history .text_box{
		width: 90%;
		margin: 6rem auto;
	}
	.history00{
		width: 80%;
		margin: 0 auto;
	}
	.history01{
		left: 24vw;
    	width: 60%;
	}
	.history03,.history04{
		display: none;
	}
}
@media screen and (min-width:900px) {
	.history_wrap{
		display: grid;
		grid-template-columns: 6% 10% 16% 25% 18% 19% 6%;
		grid-template-rows: 6% 14% 1% 14% 2% 21% 6% 22% 14%;
		grid-column-gap: 0px;
		grid-row-gap: 0px;
	}
	.history_wrap h2 { grid-area: 1 / 2 / 2 / 5; }
	.history00 { grid-area: 1 / 5 / 3 / 8; }
	.text_box01 { grid-area: 2 / 2 / 3 / 5; }
	.history01 { grid-area: 3 / 3 / 5 / 5; }
	.text_box02 { grid-area: 4 / 5 / 5 / 7; }
	.history02 { grid-area: 6 / 5 / 7 / 7; }
	.text_box03 { grid-area: 5 / 2 / 7 / 5; }
	.history03 { grid-area: 8 / 1 / 9 / 4; }
	.history04 { grid-area: 7 / 6 / 9 / 8; }
	.text_box04 { grid-area: 7 / 4 / 9 / 6; }
	.history05 { grid-area: 9 / 3 / 10 / 6; }
	.history0304{
		display: none;
	}
	#about_history .text_box{
		width: 90%;
		margin: 4rem 0;
	}
	#about_history .img_wrap{		
		position: relative;
	}
	#about_history .history00,#about_history .history02,#about_history .history04{
		left: 10%;
		width: 90%;
	}
	#about_history .history01{
		width: 64%;
	}
	#about_history .history03,#about_history .history05{
		width: 80%;
	}
}
@media screen and (max-width:1090px) and (min-width:900px){
	#about_history .history01{
		margin-top: 2.8rem;
	}
	#about_history .text_box02,#about_history .text_box02{
		margin-top: .8rem;
	}
}
@media screen and (min-width:1300px) {
	#about_history{
		padding-bottom: 10vw;
	}
}

/* service */
.service_list{
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 2.8rem;
}
.service_list img{
	width: 100%;
}
#about_service .text_box{
	margin-top: 2rem;
	height: fit-content;
}
@media screen and (max-width:1100px) {
	.service_list{
		grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
	}
}

/* flow */
#about_flow{
	background: url(../img/bg_grid.svg) repeat top / 25px;
	padding: 100px 0;
	margin-top: 100px;
}
.flow_list{
	margin: 8rem 0 0 0;
}
.flow_item {
    margin-bottom: 140px;
    position: relative;
}
.flow_item::before {
    content: "";
    position: absolute;
    width: 2px;
    height: 100%;
    background: #bcbcbc;
    top: 112px;
    left: 48px;
}
.flow_item.flow06::before{
	content: none;
}
.flow_item h3 {
    position: relative;
    display: flex;
    align-items: center;
    line-height: 1.6;
	margin-bottom: 32px;
}
.flow_item .number {
    font-size: clamp(6rem,7.6vw,8rem);
    letter-spacing: 0em;
    padding-right: 48px;
    color: #707070;
}
.flow_item .text_box{
	padding-left: 150px;
}
.flow_list .btn{
	margin-top: 4rem;
}
@media screen and (min-width:1225px) {
	#about_flow .wrap{
		width: 95%;
		margin-left: auto;
		margin-right: 0;
		max-width: 1450px;
	}
	.flow_list{
		max-width: 900px;
	}
	.flow_list .text_box{
		width: 50vw;
	}
	.flow_list_wrap .img_wrap{
		position: absolute;
		bottom: 0;
		right: 0;
		width: 24vw;
		max-width: 424px;
	}
}
@media screen and (max-width:1224px) {
	#about_flow .img_wrap img{
		display: none;
	}
}
@media screen and (max-width:800px) {
	.flow_item .text_box{
		padding-left: 120px;
	}
}

/*** company ***/
.ceo_info .title{
	font-weight: 500;
}
.greeting_wrap .img_wrap,.greeting_wrap img{
	width: 240px;
}
@media screen and (min-width: 1360px) {
	.greeting_wrap{
		display: grid;
		grid-template-columns: 1fr 500px;
		gap:4rem;
	}
	.greeting_wrap .ceo_info{
		position: absolute;
		right: 0;
		bottom: 4vw;
	}
}
@media screen and (max-width: 1359px) and (min-width: 580px) {
	.greeting_wrap .inner{
		display: flex;
		justify-content: flex-end;
	}
	.greeting_wrap .img_wrap{
		margin-right: 2.8rem;
	}
	.greeting_wrap .ceo_info{
		position: relative;
		top: 10rem;
	}
}
@media screen and (max-width: 1359px){
	.greeting_wrap .inner{
		margin: 6rem 0 0;
	}
}
@media screen and (min-width: 580px){
	.greeting_wrap .inner{
		display: flex;
	}
}
@media screen and (max-width: 579px) {
	.greeting_wrap .img_wrap{
		margin: 4rem 0;
	}
	.greeting_wrap .inner{
		width: 66vw;
    	margin: 0 auto;
	}
}
#company_outline{
	background-color: #f5f5f5;
	padding: 10rem 0;
}
.map {
  position: relative;
  width: 100%;
  height: 0;
  padding-top: 75%; /* 比率を4:3に固定 */
	margin-bottom: 2rem;
}
.map iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
@media screen and (min-width: 899px) {
	.service_group .inner{
		display: flex;
		flex-direction:row-reverse;
	}
	.service_group .img_wrap{
		margin-bottom: 0;
	}
	.service_group .text_inner{
		width: 100%;
		margin-right: 2rem;
	}
}

@media screen and (max-width:699px) {
	.chart .chart_number,.chart .chart_title{
		display: block;
		text-align: center;
	}
	.chart dt{
		margin-bottom: 2.8rem;
	}
}

/***** recruit *****/
#recruit_guideline{
	background-color: #f5f5f5;
	padding: 10rem 0;
}
#recruit_guideline .btn_wrap{
	margin-top: 6rem;
}
@media screen and (max-width:859px) {
	#recruit_guideline .btn_wrap{
		width: fit-content;
   		margin-right: auto;
    	margin-left: auto;
	}
}

/***** contact *****/
.contact_intro{
	max-width: 1200px;
	border: 1px solid #c8c8c8;
	padding: 4rem 1.6rem;
	text-align: center;
}
.container .contact_intro a{
	color: #1DAB41;
	text-decoration: none;
}
.tel_number{
	font-size: 3.6rem;
	margin-left: 0.4rem;
}
/*** Contact Form7 ***/
.contact7 {
	max-width: 100%;
	box-sizing: border-box;
	margin-top: 6rem;
}
.contact7 p{
	margin-bottom: 0;
}
.contact7 dl{
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-flow: row wrap;
    width: 100%;
	border-top: 1px solid #ddd;
}
.contact7 dl.last{
	border-bottom: 1px solid #ddd;
}
.contact7 dl dt {
    display: flex;
    justify-content: space-between;
	flex-basis: 40%;
	background-color: #fff;
	padding: 20px;
	font-weight: normal;
}
.contact7 dl dd {
	width: 630px;
	flex-basis: 60%;
	margin: 0;
    padding: 20px;
}
.contact7 dl dd select,.contact7 dl dd textarea,.contact7 dl dd input{
	width: 100%;
	height: 100%;
	padding: 2rem 1.6rem;
	background: #f8f8f8;
	border: 1px solid #eee;
}
 /* 必須マーク */
.contact7 .must {
	background: #F1686D;
}
 /* 任意マーク */
.contact7 .optional {
	background: #999;
}
.contact7 .must,.contact7 .optional {
	color: #FFF;
	font-size: 10px;
	margin-left: 10px;
	padding: 5px 10px;
	letter-spacing: 2px;
}
.check{
	display: block;
	margin: 6rem auto 4rem;
}
.btn_contact7 input {
	transition: all 0.5s;
	width: 100%;
	max-width: 600px;
	display: block;
	margin: 0 auto;
	padding: 2rem 0;
	background:#1DAB41;
	color: #FFF;
	font-size: 1.1em;
	text-align: center;
}
.btn_contact7 input:hover{
	opacity: 0.6;
}
.contractor_form .contact7 dl dd select,.contractor_form .contact7 dl dd textarea,.contractor_form .contact7 dl dd input{
	background: #fefefe;
	border: 2px solid #E1E1E1;
}
/* CF7 特定のチェックボックスとラジオボタンを縦並びに */
.checkbox span.wpcf7-list-item {
	display: block;
	width: fit-content;
}
span.wpcf7-list-item {
  position: relative;
	margin-left: .4rem;
}
.wpcf7-list-item-label {
  cursor: pointer; /*labelにhoverした時にカーソルを表示させる*/
}
label input[type="checkbox"] {
  opacity: 0; /*デフォルトのチェックボックスを見えなくする*/
  position: absolute;
	cursor: pointer;
}
.wpcf7-list-item-label::before {
  /*チェックボックスのデザイン*/
  border: 1px solid #bbb;
  content: "";
  display: inline-block;
  height: 15px;
  margin-right: 10px;
  position: relative;
  top: -1px;
  vertical-align: middle;
  width: 15px;
}
input[type="checkbox"]:checked + .wpcf7-list-item-label::after {
  /*チェックアイコン*/
  background: url('../img/ok.svg') no-repeat center;
  background-size: contain;
	background-color: #1DAB41;
  content: "";
  display: block;
  height: 15px;
  left: 0;
  position: absolute;
  top: 8px;
  width: 15px;
}

@media screen and (max-width: 979px) {
	.contact7 dl{
		display: block;
	}
.contact7 dl dt {
	justify-content: flex-start;
	flex-basis: auto;
	padding-bottom: 0;
	}
.contact7 dl dd {
	flex-basis: auto;
	width: 100%;
	padding-left:0; 
	padding-right:0; 
	} 
.btn_contact7 input {
	width: 100%;
	color: #FFF;
	font-size: 1.1em;
}
.btn_contact7 input:hover {
	color: #FFF;
	}
}

/*** privacy-policy ***/
#privacy-policy_content p a{
	color: #1DAB41;
	text-decoration: underline;
}
#privacy-policy_content p a:hover{
	text-decoration: none;
}

/*** NotFound ***/
.notfound section{
	margin-top: 4rem;
}