@charset "utf-8";

@font-face {
font-family:'NotoSansJP';
src:url(fonts/NotoSansJP-Regular.otf) format('opentype');
font-style:normal;
font-weight:normal;
font-display:swap;
}

@font-face {
font-family:'NotoSansJP';
src:url(fonts/NotoSansJP-Bold.otf) format('opentype');
font-style:normal;
font-weight:bold;
font-display:swap;
}

*{
margin:0;
padding:0;
box-sizing:border-box;
}

html{
font-size:16px;
overscroll-behavior: none;
}

@media screen and (max-width:1920px){

html{
font-size:14px;
}

}


@media screen and (max-width:600px){

html{
font-size:12px;
}

}

body{
font-family:NotoSansJP, serif;
line-height:1.8;
font-weight:normal;
color:#1a1a1a;
background:#fff;
}

a{
text-decoration:none;
color:#1a1a1a;
}

ul{
list-style-type:none;
}

h1,h2,h3,h4,h5,h6{
font-weight:normal;
font-size:1rem;
}

img{
vertical-align:bottom;
}

/*--------------------------------------------------------
	fix-header
--------------------------------------------------------*/
#h-right img{
width:30px;
animation:h-logo 4s linear infinite;
}

@keyframes h-logo{
0%{transform:translate(0, 0);}
7%{transform:translate(0, 0);}
10%{transform:translate(8px, 0);}
13%{transform:translate(0, 0);}
16%{transform:translate(5px, 0);}
18%{transform:translate(0, 0);}
100%{transform:translate(0, 0);}
}

/*--------------------------------------------------------
	fix-header over 901px
--------------------------------------------------------*/
@media screen and (min-width:901px){
#fix-header{
position:fixed;
top:0;
left:0;
width:100%;
height:50px;
z-index:90;
}

#h-left{
position:absolute;
top:0;
left:-100vw;
background:#fff;
box-shadow:2px 2px 25px rgba(0,0,0,0.1);
width:100%;
height:50px;
padding-left:20px;
display:flex;
justify-content:space-between;
align-items:center;
transition:all 0.8s;
}

#h-left.is-resize{
transition:none;
}

#fix-header.hover #h-left{
left:0!important;
}

#h-left a{
display:flex;
align-items:center;
}

#h-left img{
width:190px;
}

#nav-main{
display:flex;
}

#nav-main li{
cursor:pointer;
}

#nav-main a,#business span{
background:#fff;
display:block;
height:50px;
line-height:50px;
padding:0 30px;
transition:all 0.1s;
}

#nav-main a:hover,#business span:hover{
background:#eee;
}

#nav-main li:last-child a{
background:#444;
color:#fff;
}

#nav-main li:last-child a:hover{
background:#222;
}

#business{
position:relative;
}

#business span{
position:relative;
z-index:92;
}

#business.hover span{
background:#eee;
}

#business ul{
font-size:0.9em;
position:absolute;
width:100%;
top:-150px;
left:0;
z-index:89;
transition:all 0.3s;
}

#business.hover ul{
top:50px;
}

#nav-main #business ul li a{
background:#eee;
color:#000;
padding:0;
text-align:center;
}

#nav-main #business ul li a:hover{
background:#ddd;
transition:all 0.3s;
}

#h-right{
position:absolute;
width:100%;
top:0;
right:0;
height:50px;
display:flex;
transition:all 0.8s;
}

#h-right.is-resize{
transition:none;
}

#fix-header.hover #h-right{
right:-100vw!important;
}

#h-right div{
background:#fff;
padding:5px 20px 0;
display:flex;
align-items:center;
border-radius:0 0 5px 0;
box-shadow:2px 2px 25px rgba(0,0,0,0.2);
}

}

/*--------------------------------------------------------
	fix-header under 900px
--------------------------------------------------------*/
@media screen and (max-width:900px){

#h-left{
background:#fff;
font-size:1.2rem;
position:fixed;
bottom:20px;
left:-300px;
padding:25px 15px 15px;
box-shadow:0 0 10px rgba(0,0,0,0.3);
border-radius:2px;
transition:all 0.5s;
z-index:90;
}

#h-left.active{
left:20px;
}

#h-left img{
width:180px;
}

#nav-main{
margin-top:20px;
}

#nav-main a{
display:block;
padding:10px 0;
}

#business span{
display:none;
}

#h-right div{
background:#fff;
position:fixed;
bottom:20px;
right:20px;
width:70px;
height:70px;
display:flex;
justify-content:center;
align-items:center;
box-shadow:0 0 10px rgba(0,0,0,0.3);
border-radius:2px;
transition:all 0.5s;
z-index:90;
}

#h-right img{
width:40px;
}

#h-right div.active{
transform: scale(-1, 1);
}

#h-right::after{
content:'';
position:fixed;
top:-50vh;
left:-200vw;
width:150vw;
height:200vh;
background:rgba(50,50,50,0.8);
opacity:0;
transition:opacity 0.5s;
z-index:50;
}

#h-right.active::after{
left:-5vw;
opacity:0.8;
}

}

/*--------------------------------------------------------
	fix-header under 600px
--------------------------------------------------------*/
@media screen and (max-width:600px){

#h-right div{
width:50px;
height:50px;
}

#h-right img{
width:30px;
}

}


/*--------------------------------------------------------------------------------------------------------
	Top page
--------------------------------------------------------*/
/*--------------------------------------------------------
	key
--------------------------------------------------------*/
#key{
position:fixed;
top:0;
left:0;
width:100%;
height:100vh;
height:100dvh;
z-index:-1;
}

#key::before {
content:'';
display:block;
position:absolute;
top:0;
left:0;
width:100%;
height:100vh;
height:100dvh;
background-color:rgba(0,0,0,0.1);
background-image:radial-gradient(rgba(80,80,80,0.6) 30%, transparent 31%), radial-gradient(rgba(80,80,80,0.6) 30%, transparent 31%);
background-size:4px 4px;
background-position:0 0, 2px 2px;
}

#key-content{
position:absolute;
top:0;
left:0;
width:100%;
height:100vh;
height:100dvh;
padding:50px 5px 0;
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
color:#fff;
line-height:2;
text-align:center;
text-shadow:1px 1px 4px rgba(0,0,0,0.8);
transition:filter 1s;
}

#key-content div{
width:90%;
max-width:800px;
min-width:280px;
overflow:hidden;
}

#key-content div img{
width:100%;
transform:translate(0, 105%);
animation:key-txt 0.5s 1s linear forwards;
}

#key-content h1{
margin-top:3.5em;
overflow:hidden;
}

#key-content h1 span{
display:block;
overflow:hidden;
}

#key-content h1 .move{
display:block;
transform:translate(0, 105%);
animation:key-txt 0.5s 1s linear forwards;
}

#key-content span:nth-child(3){
display:block;
overflow:hidden;
}

#key-content span:nth-child(3)::before{
content:'すべての始まりを、最高の一歩にするために。';
display:block;
transform:translate(0, 105%);
animation:key-txt 0.5s 1s linear forwards;
}

@keyframes key-txt{
0%{transform:translate(0, 105%);}
100%{transform:translate(0, 0);}
}

#key-content a{
background:#F7EE47;
display:inline-block;
font-size:0.9rem;
padding:0.4em 1.5em 0.5em;
margin-top:4em;
border-radius:5px;
text-shadow:none;
box-shadow:1px 1px 5px rgba(0,0,0,0.4);
opacity:0;
animation:key-btn 0.5s 1.5s linear forwards;
}

@keyframes key-btn{
0%{opacity:0;}
100%{opacity:1;}
}

#key-content a:hover{
position:relative;
top:-1px;
left:-1px;
box-shadow:2px 2px 5px rgba(0,0,0,0.4);
}

#key video{
width:100%;
height:100vh;
height:100dvh;
object-fit:cover;
}

#key::after{
content:'';
position:absolute;
top:0;
left:0;
width:100%;
height:100vh;
height:100dvh;
background-image:radial-gradient(#fff 40%, transparent 55%), radial-gradient(#fff 40%, transparent 55%);
background-size:5px 5px;
background-position:0 0, 10px 10px;
opacity:0;
transform:scale(1);
transition:opacity 0.7s,transform 0.7s,filter 3s;
z-index:-1;
}

#key.blur-on::after{
opacity:1;
transform:scale(2);
filter:blur(12px);
z-index:auto;
}

#key-content.blur-on{
filter:blur(10px);
}

#key-content.opa-0{
opacity:0;
}

/*--------------------------------------------------------
	philosophy
--------------------------------------------------------*/
#philosophy{
margin-top:100vh;
height:170vh;
}

#philosophy .contents{
position:fixed;
left:-110vw;
top:25px;
background:#F8F9FA;
width:100%;
min-height:100vh;
min-height:100dvh;
display:flex;
flex-direction:column;
justify-content:center;
transition:left 0.5s 0.3s, filter 1s;
}

#philosophy.in .contents{
left:0;
}

#philosophy h2{
font-size:2rem;
font-weight:bold;
letter-spacing:1.5px;
text-align:center;
padding-top:1em;
margin-bottom:70px;
position:relative;
overflow:hidden;
}

#philosophy h2 span{
display:block;
transform:translate(0, 105%);
transition:transform 0.7s 0.6s;
}

#philosophy.in h2 span{
transform:translate(0, 0);
}

#philosophy h2::before{
content:'OUR PHILOSOPHY';
position:absolute;
width:100%;
top:0;
left:0;
font-size:0.5em;
color:#757575;
opacity:0;
transition:opacity 1s 0.8s;
}

#philosophy.in h2::before{
opacity:1;
}

#philosophy ul{
max-width:1300px;
margin:0 auto;
padding:0 20px;
display:flex;
justify-content:space-between;
}

#philosophy li{
background:#fff;
width:32%;
min-height:500px;
padding:50px 30px 70px;
overflow:hidden;
position:relative;
}

#philosophy li::before{
content:'';
position:absolute;
width:30px;
height:100%;
top:0;
left:0;
background:#fff;
z-index:1;
}

#philosophy li::after{
content:'';
position:absolute;
width:100%;
height:20px;
bottom:0;
left:0;
background:#ddd;
z-index:2;
}

#bar1,#bar2,#bar3{
position:absolute;
bottom:0;
left:0;
width:0;
min-width:0;
max-width:100%;
height:20px;
background:#F7EE47;
z-index:3;
}

#philosophy h3{
font-weight:bold;
font-size:1.2rem;
line-height:1.6;
letter-spacing:1.5px;
height:9.5em;
padding-top:3.5em;
position:relative;
transform:translate(-100%, 0);
transition:transform 0.7s 1s;
}

#philosophy.in h3{
transform:translate(-0, 0);
}

#philosophy h3 span{
display:block;
}

#philosophy li h3::before{
position:absolute;
top:0;
left:1px;
font-size:0.9em;
line-height:3;
color:#757575;
border-bottom:3px solid #F7EE47;
}

#philosophy li:nth-child(1) h3::before{
content:'MISSION';
}

#philosophy li:nth-child(2) h3::before{
content:'VALUE';
}

#philosophy li:nth-child(3) h3::before{
content:'VISION';
}

#philosophy p{
transform:translate(-100%, 0);
transition:transform 0.7s 1s;
}

#philosophy.in p{
transform:translate(0, 0);
}

#philosophy.over{
opacity:0.7;
}

#philosophy.over .contents{
filter:blur(100px);
}

/*--------------------------------------------------------
	philosophy under 1920px
--------------------------------------------------------*/
@media screen and (max-width:1920px){

#philosophy ul{
max-width:1040px;
}

#philosophy li{
min-height:0;
}

}

/*--------------------------------------------------------
	philosophy under 900px
--------------------------------------------------------*/
@media screen and (max-width:900px){

#philosophy{
min-height:200vh;
}

#philosophy .contents{
position:sticky;
left:0;
top:0;
padding:60px 20px;
display:flex;
flex-direction:column;
justify-content:center;
transition:left 0.5s 0.3s, filter 1s;
}

#philosophy .contents::after{
content:'';
position:absolute;
width:100%;
height:150vh;
bottom:-149vh;
left:0;
background:#F8F9FA;
}

#philosophy h2{
font-size:1.7rem;
letter-spacing:1px;
margin-bottom:20px;
}

#philosophy ul{
padding:30px 0 0;
flex-direction:column;
justify-content:flex-start;
}

#philosophy li{
width:100%;
max-width:500px;
margin-bottom:40px;
}

}

/*--------------------------------------------------------
	philosophy under 600px
--------------------------------------------------------*/
@media screen and (max-width:600px){

#philosophy .contents{
padding:40px 20px;
}

#philosophy li{
padding:30px 20px 50px;
}

#philosophy li::before{
width:20px;
}

}


/*--------------------------------------------------------
	thought
--------------------------------------------------------*/
#thought{
margin-top:100vh;
margin-top:100dvh;
min-height:100vh;
min-height:100dvh;
}

#thought .contents{
position:fixed;
top:0;
left:-100vw;
padding:0 20px;
width:100%;
min-height:100vh;
min-height:100dvh;
display:flex;
justify-content:center;
align-items:center;
opacity:0;
filter:blur(100px);
transition:opacity 1s,filter 1s;
}

#thought.in .contents{
left:0;
opacity:1;
filter:blur(0);
}

#thought .contents img{
width:40%;
max-width:580px;
}

#thought .contents .textbox{
width:60%;
max-width:800px;
padding-left:30px;
}

#thought h2{
font-weight:bold;
font-size:2rem;
letter-spacing:1.5px;
}

#thought h2 span{
display:inline-block;
}

#thought p{
margin-top:20px;
}

#tho-closeA,#tho-closeB{
position:absolute;
width:100%;
background:#1a1a1a;
}

#tho-closeA{
top:0;
left:0;
height:0;
min-height:0;
max-height:51%;
}

#tho-closeB{
bottom:0;
left:0;
height:0;
min-height:0;
max-height:51%;
}

#thought.opa-0{
opacity:0;
}

/*--------------------------------------------------------
	thought under 900px
--------------------------------------------------------*/
@media screen and (max-width:900px){

#thought{
margin-top:30vh;
}

#thought h2{
font-size:1.7rem;
letter-spacing:1px;
}

#thought .contents img{
display:none;
}

#thought .contents .textbox{
width:100%;
max-width:600px;
padding-left:0;
}

}

/*--------------------------------------------------------
	thought under 600px
--------------------------------------------------------*/
@media screen and (max-width:600px){

#thought .contents{
padding:0 10px;
}

}

/*--------------------------------------------------------
	covered
--------------------------------------------------------*/
#covered{
position:relative;
z-index:10;
opacity:0;
}

#covered.in{
opacity:1;
}

/*--------------------------------------------------------
	service
--------------------------------------------------------*/
#service{
min-height:200vh;
min-height:200dvh;
color:#fff;
}

#service .contents{
position:sticky;
top:0;
min-height:100vh;
min-height:100dvh;
padding:50px 0;
display:flex;
flex-direction:column;
justify-content:center;
}

#service h2{
font-size:2rem;
font-weight:bold;
letter-spacing:1.5px;
text-align:center;
padding-top:1em;
margin-bottom:70px;
position:relative;
overflow:hidden;
}

#service h2 span{
display:block;
transform:translate(0, 105%);
transition:transform 0.7s;
}

#service.in h2 span{
transform:translate(0, 0);
}

#service h2::before{
content:'SERVICES';
position:absolute;
width:100%;
top:0;
left:0;
font-size:0.5em;
color:#757575;
opacity:0;
transition:opacity 1s 0.3s;
}

#service.in h2::before{
opacity:1;
}

#ser-ul{
display:flex;
max-width:1500px;
margin:0 auto;
padding:0 20px;
justify-content:space-between;
}

#li-event,#li-build,#li-cs{
width:32%;
overflow:hidden;
}

#ser-ul a{
display:block;
background:#fff;
padding:80px 50px;
transform:translate(0, 105%);
}

#li-cs::before{
content:'coming soon';
display:block;
background:rgba(255,255,255,0.5);
color:#555;
height:100%;
font-size:1.7rem;
display:flex;
justify-content:center;
align-items:center;
transform:translate(0, 105%);
}

#li-event a{
transition:transform 0.8s;
}

#li-build a{
transition:transform 1s;
}

#li-cs::before{
transition:transform 1.1s;
}

#service.in #ser-ul a,#service.in #li-cs::before{
transform:translate(0, 0);
}

#ser-ul img{
display:block;
height:50px;
margin:0 auto 30px;
transform:scale(1);
transition:transform 0.2s;
}

#ser-ul a:hover img{
transform:scale(1.2);
}

#ser-ul h3{
font-weight:bold;
font-size:1.2rem;
text-align:center;
letter-spacing:1.5px;
margin-bottom:10px;
}

#li-event ul,#li-build ul{
margin-top:10px;
line-height:2;
}

#li-event li::before,#li-build li::before{
content:'✔︎';
display:inline-block;
margin-right:0.5em;
}

#li-event li::before{
color:#F7EE47;
}

#li-build li::before{
color:#EB0000;
}

/*--------------------------------------------------------
	services under 1920px
--------------------------------------------------------*/
@media screen and (max-width:1920px){

#ser-ul{
max-width:1040px;
}

#ser-ul a{
padding:50px 30px;
}

}

/*--------------------------------------------------------
	services under 900px
--------------------------------------------------------*/
@media screen and (max-width:900px){

#service{
min-height:250vh;
min-height:250dvh;
}

#service .contents{
padding:60px 0;
}

#service h2{
margin-bottom:20px;
font-size:1.7rem;
letter-spacing:1px;
}

#ser-ul{
flex-direction:column;
margin:0 auto;
padding:0 30px;
justify-content:space-between;
align-items:center;
}

#li-event,#li-build{
width:100%;
max-width:500px;
margin-bottom:40px;
}

#ser-ul a{
padding:50px 30px;
}

#li-cs{
width:100%;
aspect-ratio:1 / 0.5;
max-width:500px;
margin-bottom:40px;
}

}

/*--------------------------------------------------------
	careers
--------------------------------------------------------*/
#careers{
background:#fff;
padding:100px 0;
text-align:center;
}

#careers h2{
font-size:2rem;
font-weight:bold;
letter-spacing:1.5px;
padding-top:1em;
margin-bottom:50px;
position:relative;
overflow:hidden;
}

#careers h2 span{
display:block;
transform:translate(0, 105%);
transition:transform 0.7s;
}

#careers.in h2 span{
transform:translate(0, 0);
}

#careers h2::before{
content:'CAREERS';
position:absolute;
width:100%;
top:0;
left:0;
font-size:0.5em;
color:#757575;
opacity:0;
transition:opacity 1s 0.3s;
}

#careers.in h2::before{
opacity:1;
}

#careers p span{
display:block;
}

#careers a{
display:inline-block;
background:#1a1a1a;
color:#fff;
font-size:0.9rem;
padding:0.6em 1.5em 0.7em;
border-radius:5px;
margin:3em auto 0;
}

#careers a:hover{
position:relative;
top:-1px;
left:-1px;
box-shadow:1px 1px 5px rgba(0,0,0,0.4);
}

#careers p,#careers a{
opacity:0;
transition:opacity 1s 0.3s;
}

#careers.in p,#careers.in a{
opacity:1;
}

/*--------------------------------------------------------
	careers under 900px
--------------------------------------------------------*/
@media screen and (max-width:900px){

#careers{
padding:100px 10px;
}

#careers h2{
font-size:1.7rem;
letter-spacing:1px;
}

}

/*--------------------------------------------------------
	company
--------------------------------------------------------*/
#company{
background:#F8F9FA;
padding:100px 20px;
}

#company h2{
font-size:2rem;
font-weight:bold;
text-align:center;
letter-spacing:1.5px;
padding-top:1em;
margin-bottom:70px;
position:relative;
overflow:hidden;
}

#company h2 span{
display:block;
transform:translate(0, 105%);
transition:transform 0.7s;
}

#company.in h2 span{
transform:translate(0, 0);
}

#company h2::before{
content:'COMPANY';
position:absolute;
width:100%;
top:0;
left:0;
font-size:0.5em;
color:#757575;
opacity:0;
transition:opacity 1s 0.3s;
}

#company.in h2::before{
opacity:1;
}

#company ul{
max-width:1200px;
margin:0 auto;
display:flex;
justify-content:space-between;
flex-wrap:wrap;
}

#company li{
width:48%;
padding:1em 0;
border-bottom:1px solid #EFF1F3;
display:flex;
overflow:hidden;
}

#company h3{
width:130px;
color:#757575;
opacity:0;
transition:opacity 1s 0.3s;
}

#company.in h3{
opacity:1;
}

#company li div{
width:calc(100% - 130px);
opacity:0;
transition:opacity 1s 0.3s;
}

#company.in li div{
opacity:1;
}

#company li span{
display:block;
}

#company li .gray{
color:#757575;
}

#company li a{
border-bottom:1px solid #bbb;
}

/*--------------------------------------------------------
	company under 900px
--------------------------------------------------------*/
@media screen and (max-width:900px){

#company h2{
font-size:1.7rem;
letter-spacing:1px;
margin-bottom:30px;
}

#company ul{
max-width:700px;
}

#company li{
width:100%;
}

}


/*--------------------------------------------------------
	company under 600px
--------------------------------------------------------*/
@media screen and (max-width:600px){

#company{
padding:100px 10px;
}

#company h3{
width:100px;
}

#company li div{
width:calc(100% - 100px);
}

}


/*--------------------------------------------------------------------------------------------------------
	Other page
--------------------------------------------------------*/
/*--------------------------------------------------------
	header
--------------------------------------------------------*/
.op-head{
text-align:center;
padding-top:50px;
background:#F8F9FA;
width:100%;
height:370px;
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
position:fixed;
z-index:1;
top:0;
left:0;
transition:top 0.5s;
}

#event .op-head{
background:url(img/op-bg1.jpg);
}

#build .op-head img{
display:block;
width:150px;
margin-bottom:10px;
order:-1;
}

.op-head span{
display:inline-block;
}

.op-head::before{
content:'';
position:absolute;
width:100%;
height:calc(120vh - 100%);
top:100%;
left:110vw;
background-image:url(img/logo-mark-gray.svg);
background-size:auto 100%;
background-position:50% calc(50% - 10vh);
background-repeat:no-repeat;
background-color:#fff;
z-index:2;
animation:open-be 2s ease-in-out;
}

@keyframes open-be{
	0%{
		left:0;
	}
	85%{
		left:0;
	}
	100%{
		left:110vw;
	}
}

.op-head::after{
content:'';
position:absolute;
width:100%;
height:100vh;
top:100%;
left:110vw;
background-color:#F8F9FA;
z-index:2;
animation:open-af 2s ease-in-out;
}

@keyframes open-af{
	0%{
		left:0;
	}
	40%{
		left:0;
	}
	50%{
		left:110vw;
	}
	100%{
		left:110vw;
	}
}


.op-head .drag{
order:-1;
font-size:2rem;
font-weight:bold;
padding:0 5px;
color:transparent;
position:relative;
animation:drag-base 2s ease-in-out forwards;
}

@keyframes drag-base{
	0%{
		color:transparent;
	}
	84%{
		color:transparent;
	}
	85%{
		color:#1a1a1a;
	}
	100%{
		color:#1a1a1a;
	}
}

.op-head .drag span{
position:absolute;
padding:0 5px;
width:100%;
height:100%;
top:0;
left:0;
background: linear-gradient(90deg, rgba(26,26,26,1) 0%, rgba(26,26,26,1) 50%,  rgba(26,26,26,0) 50%,  rgba(26,26,26,0) 100%);
background-size:200%;
background-position:50% 50%;
animation:drag 2s ease-in-out forwards;
}

.op-head .drag span::before{
position:absolute;
padding:0 5px;
top:0;
left:0;
background: linear-gradient(90deg, rgba(255,255,255,1) 0%, rgba(255,255,255,1) 50%,  rgba(255,255,255,0) 50%,  rgba(255,255,255,0) 100%);
background-size:200%;
background-position:50% 50%;
color:transparent;
background-clip:text;
animation:drag 2s ease-in-out forwards;
}

@keyframes drag{
	0%{
		background-position:100% 50%;
		opacity:0;
	}
	40%{
		background-position:100% 50%;
		opacity:0;
	}
	41%{
		opacity:1;
	}
	50%{
		background-position:0% 50%;
		opacity:1;
	}
	85%{
		background-position:0% 50%;
	}
	99%{
		opacity:1;
	}
	100%{
		background-position:-100% 50%;
		opacity:0;
	}
}

#recruit header .drag span::before{
content:'Be a First Crew';
}

#event header .drag span::before{
content:'イベント事業';
}

#build header .drag span::before{
content:'工事事業';
}

#contact header .drag span::before{
content:'お問い合わせ';
}

.op-head .slide{
background: linear-gradient(90deg, rgba(26,26,26,1) 0%, rgba(26,26,26,1) 50%,  rgba(26,26,26,0) 50%,  rgba(26,26,26,0) 100%);
background-size:200%;
background-position:50% 50%;
color:transparent;
background-clip:text;
animation:slide 2s ease-in-out forwards;
}

@keyframes slide{
	0%{
		background-position:100% 50%;
	}
	40%{
		background-position:100% 50%;
	}
	50%{
		background-position:100% 50%;
	}
	85%{
		background-position:100% 50%;
	}
	100%{
		background-position:0% 50%;
	}
}

/*--------------------------------------------------------
	header under 900px
--------------------------------------------------------*/
@media screen and (max-width:900px){

.op-head{
height:220px;
padding-top:0;
}

#event .op-head{
background-size:200px;
}

}

/*--------------------------------------------------------
	header under 600px
--------------------------------------------------------*/
@media screen and (max-width:600px){

.op-head{
height:160px;
}

#event .op-head{
background-size:160px;
}

#build .op-head img{
width:90px;
}

}

/*--------------------------------------------------------
	page-contents
--------------------------------------------------------*/
#page-contents{
margin-top:370px;
min-height:calc(100vh - 370px);
position:relative;
}

#contact.result #page-contents{
padding-bottom:50px;
}

@media screen and (max-width:900px){

#page-contents{
margin-top:220px;
min-height:calc(100vh - 220px);
}

}

@media screen and (max-width:600px){

#page-contents{
margin-top:160px;
min-height:calc(100vh - 160px);
}

}

/*--------------------------------------------------------
	intro
--------------------------------------------------------*/
#intro .fb{
display:flex;
min-height:calc(100vh - 370px);
justify-content:flex-end;
align-items:center;
position:relative;
max-width:1800px;
margin:0 auto 100px;
}

#intro .fb div{
position:absolute;
left:0;
width:45%;
max-width:700px;
min-width:500px;
padding:30px;
background:rgba(240,240,240,0.9);
}

#intro h2{
font-size:1.7rem;
font-weight:bold;
margin-bottom:0.5em;
}

#intro .fb div p{
text-align:left;
}

#intro span{
display:block;
}

#event #intro-pic{
background-image:url(img/event.jpg);
}

#build #intro-pic{
background-image:url(img/build.jpg);
}

#recruit #intro-pic{
background-image:url(img/recruit.jpg);
}

#intro-pic{
background-position:30% 30%;
background-size:100%;
background-repeat:no-repeat;
width:70%;
min-width:800px;
aspect-ratio:1200 / 480;
}

#intro h3{
text-align:center;
font-size:1.5rem;
font-weight:bold;
padding:0 20px;
margin:5em auto 1em;
}

#intro p{
text-align:center;
max-width:700px;
margin:0 auto;
padding:0 20px;
}

#intro ul{
width:fit-content;
margin:20px auto;
padding:0 20px 0 40px;
}

#intro li{
width:fit-content;
position:relative;
padding-bottom:13px;
}

#intro li::before{
content:'✔︎';
position:absolute;
left:-20px;
top:0;
color:#F7EE47;
}

#intro .btn-wrap{
display:flex;
padding:100px 20px;
justify-content:center;
align-items:center;
gap:40px;
text-align:center;
}

#intro .btn-wrap a{
display:inline-block;
padding:15px;
border-radius:5px;
font-weight:bold;
min-width:200px;
background:#F7EE47;
}

#build #intro .btn-wrap a{
background:#EB0000;
color:#fff;
}

#intro .btn-wrap a:hover{
position:relative;
top:-1px;
left:-1px;
box-shadow:2px 2px 3px rgba(0,0,0,0.2);
}

/*--------------------------------------------------------
	intro under 900px
--------------------------------------------------------*/
@media screen and (max-width:900px){

#intro .fb{
min-height:calc(100vh - 220px);
margin:0 auto 50px;
}

#intro-pic{
width:90%;
max-width:700px;
min-width:0;
position:relative;
top:-10vh;
z-index:-1;
}

#intro .fb div{
top:calc(50vh - 200px);
}

}

/*--------------------------------------------------------
	intro under 600px
--------------------------------------------------------*/
@media screen and (max-width:600px){

#intro .fb{
min-height:0;
flex-direction:column;
justify-content:flex-start;
align-items:center;
margin:0 auto 50px;
}

#intro-pic{
width:100%;
position:static;
}

#intro .fb div{
order:1;
position:static;
width:100%;
min-width:auto;
padding:50px 20px;
background:rgba(240,240,240,0.9);
}

#intro .fb h2{
font-size:4.5vw;
text-align:center;
}

#intro .fb p{
padding:0;
}

#intro .btn-wrap{
padding:50px 20px;
flex-direction:column;
justify-content:center;
align-items:center;
gap:40px;
text-align:center;
}

}

/*--------------------------------------------------------
	card
--------------------------------------------------------*/
#card{
background:#F8F9FA;
padding:100px 20px;
}

#card h2{
text-align:center;
font-size:1.5rem;
font-weight:bold;
margin:0 auto 1em;
overflow:hidden;
}

#card h2 span{
display:block;
transform:translate(0, 105%);
transition:transform 0.7s;
}

#card.in h2 span{
transform:translate(0, 0);
}

#card ul{
max-width:1000px;
margin:0 auto;
display:flex;
flex-wrap:wrap;
justify-content:space-between;
row-gap:30px;
}

#card ul::after{
content:'';
display:block;
width:31%;
}

#card li{
background:#fff;
width:31%;
border-radius:5px;
box-shadow:3px 3px 8px rgba(0,0,0,0.1);
padding:30px;
text-align:center;
transform:scale(-1, 1);
transition:transform 0.8s;
overflow:hidden;
position:relative;
display:flex;
flex-direction:column;
justify-content:space-between;
}

#card.in li{
transform:scale(1, 1);
}

#card li::before{
content:'';
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
background:#eee;
transition:left 0.5s;
}

#card.in li::before{
left:105%;
}

#card li:nth-child(2){
transition:transform 0.8s 0.2s;
}
#card li:nth-child(2)::before{
transition:left 0.5s 0.2s;
}

#card li:nth-child(3){
transition:transform 0.8s 0.4s;
}
#card li:nth-child(3)::before{
transition:left 0.5s 0.4s;
}

#card li:nth-child(4){
transition:transform 0.8s 0.6s;
}
#card li:nth-child(4)::before{
transition:left 0.5s 0.6s;
}

#card li:nth-child(5){
transition:transform 0.8s 0.8s;
}
#card li:nth-child(5)::before{
transition:left 0.5s 0.8s;
}

#card li:nth-child(6){
transition:transform 0.8s 1s;
}
#card li:nth-child(6)::before{
transition:left 0.5s 1s;
}

#card li:nth-child(7){
transition:transform 0.8s 1.2s;
}
#card li:nth-child(7)::before{
transition:left 0.5s 1.2s;
}

#card li:nth-child(8){
transition:transform 0.8s 1.4s;
}
#card li:nth-child(8)::before{
transition:left 0.5s 1.4s;
}

#card li div{
background:#F8F9FA;
width:30%;
margin:0 auto;
aspect-ratio:1 / 1;
border-radius:100px;
display:flex;
justify-content:center;
align-items:center;
}

#card li div img{
width:60%;
}

#card li h3{
font-size:1.1rem;
font-weight:bold;
margin:15px 0 10px;
}

#card li p{
text-align:left;
min-height:100px;
margin-bottom:15px;
}

#card li span{
display:block;
}

.card-img{
width:100%;
aspect-ratio:2 / 1;
object-fit:cover;
}

/* 採用ページ特殊カード */
#recruit #card li:last-child p.sp-p{
text-align:center;
min-height:0;
margin-bottom:0;
aspect-ratio:3 / 1;
display:flex;
align-items:center;
}

#recruit #card li:last-child p.sp-p span{
display:block;
width:100%;
}

/*--------------------------------------------------------
	card under 900px
--------------------------------------------------------*/
@media screen and (max-width:900px){

#card ul{
max-width:700px;
}

#card li{
width:48%;
}

}

/*--------------------------------------------------------
	card under 600px
--------------------------------------------------------*/
@media screen and (max-width:600px){

#card ul{
max-width:320px;
}

#card li{
width:100%;
}

/* 採用ページ特殊カード */
#recruit #card li:last-child{
gap:20px;
}

#recruit #card li:last-child p.sp-p{
aspect-ratio:auto;
}

}


/*--------------------------------------------------------
	flow
--------------------------------------------------------*/
#flow{
padding:100px 20px;
}

#flow h2{
text-align:center;
font-size:1.5rem;
font-weight:bold;
margin:0 auto 1em;
overflow:hidden;
}

#flow h2 span{
display:block;
transform:translate(0, 105%);
transition:transform 0.7s;
}

#flow.in h2 span{
transform:translate(0, 0);
}

#flow ul{
max-width:600px;
margin:30px auto;
}

#flow li{
display:flex;
align-items:center;
border:1px solid #EFF1F3;
border-radius:5px;
box-shadow:3px 3px 3px rgba(0,0,0,0.04);
margin-bottom:35px;
position:relative;
transform:translate(0, -50%);
opacity:0;
transition:all 0.5s;
}

#flow li.in{
transform:translate(0, 0);
opacity:1;
}

#flow li::before{
content:'';
display:block;
width:0;
aspect-ratio:1 / 1;
border-radius:100px;
background:#F7EE47;
margin:0 15px;
transition:width 0.8s 0.5s;
animation:blink 5s infinite;
}

#flow li.in::before{
width:26px;
}

@keyframes blink{
	0%{
		transform:scale(1);
	}
	90%{
		transform:scale(1);
	}
	95%{
		transform:scale(1.1);
	}
	100%{
		transform:scale(1);
	}
}

#build #flow li::before{
background:#EB0000;
}

#flow li::after{
content:'';
position:absolute;
top:calc(50% + 25px);
left:27px;
width:2px;
height:0;
background:#eee;
transition:height 0.8s;
}

#flow li.next::after{
height:calc(50% + 10px);
}

#flow li:last-child::after{
display:none;
}

#flow li div{
width:calc(100% - 56px);
padding:20px 15px 20px 0;
opacity:0;
transition:opacity 0.8s 0.5s;
}

#flow li.in div{
opacity:1;
}

#flow li h3{
font-weight:bold;
margin-bottom:0.5em;
}

.flow-btn{
display:block;
padding:15px 0;
border-radius:5px;
font-weight:bold;
text-align:center;
width:200px;
margin:0 auto 50px;
background:#F7EE47;
}

.flow-btn:hover{
position:relative;
top:-1px;
left:-1px;
box-shadow:2px 2px 3px rgba(0,0,0,0.2);
}

#flow aside{
max-width:600px;
margin:0 auto;
font-size:0.8rem;
color:#777;
}


/*--------------------------------------------------------
	regular
--------------------------------------------------------*/
#regular{
background:#F8F9FA;
padding:100px 20px;
}

#regular h2{
text-align:center;
font-size:1.5rem;
font-weight:bold;
margin:0 auto 1em;
}

#regular h2 span{
display:inline-block;
}

#regular p{
text-align:center;
color:#777;
}


/*--------------------------------------------------------
	contact
--------------------------------------------------------*/
#contact-type{
max-width:800px;
margin:100px auto;
padding-top:100px;
display:flex;
justify-content:space-between;
}

#contact-type li{
width:48%;
padding:20px;
text-align:center;
border:1px solid #EFF1F3;
border-radius:5px;
box-shadow:3px 3px 3px rgba(0,0,0,0.04);
}

#contact-type li h2{
margin-bottom:1em;
}

#contact-type li a{
font-size:1.5rem;
font-weight:bold;
line-height:3.5rem;
}

#contact-type li p:nth-child(2){
line-height:3.5rem;
}

#contact-type li span{
display:block;
}

form{
max-width:800px;
border-radius:5px;
margin:0 auto 100px;
padding:50px 50px 10px;
background:#1a1a1a;
color:#fff;
}

form h2{
font-size:1.5rem;
font-weight:bold;
text-align:center;
}

form h2 span{
font-size:1rem;
font-weight:normal;
}

form p{
text-align:center;
}

form ul{
padding:40px 0;
}

form label{
display:block;
}

form li{
margin-bottom:30px;
}

form label::after{
content:' ※必須';
font-size:0.8em;
color:#F7EE47;
}

/*
form ul li:nth-child(3) label::after{
content:' ※任意';
font-size:0.8em;
color:#aaa;
}
*/

select{
appearance:none;
width:100%;
font-size:0.9rem;
padding:11px 15px;
padding-right:1em;
border:none;
border-radius:0;
outline:0;
background:#444;
color:#fff;
background-image:none;
box-shadow:none;
text-indent:0.01px;
text-overflow:ellipsis;
cursor:pointer;
}

input[type="text"],input[type="mail"],input[type="tel"]{
appearance:none;
width:100%;
font-size:0.9rem;
padding:11px 15px;
padding-right:1em;
border:none;
border-radius:0;
outline:0;
background:#444;
color:#fff;
background-image:none;
box-shadow:none;
text-indent:0.01px;
text-overflow:ellipsis;
}

textarea{
appearance:none;
width:100%;
height:100px;
font-size:0.9rem;
padding:11px 15px;
padding-right:1em;
border:none;
border-radius:0;
outline:0;
background:#444;
color:#fff;
background-image:none;
box-shadow:none;
text-indent:0.01px;
text-overflow:ellipsis;
resize:none;
}

#pp-c{
text-align:center;
}

input[type="checkbox"]{
cursor:pointer;
display:inline-block;
margin-right:5px;
accent-color:#F7EE47;
}

input[type="submit"]{
display:block;
width:fit-content;
height:3em;
line-height:3em;
font-size:1rem;
border-radius:5px;
padding:0 60px;
margin:0 auto;
cursor:pointer;
background:#F7EE47;
border:none;
font-family:inherit;
color:#1a1a1a;
}

#pp{
max-width:800px;
border-radius:5px;
margin:0 auto 200px;
padding:30px 50px;
background:#F8F9FA;
}

#pp h2{
font-size:1.2rem;
font-weight:bold;
line-height:2.5;
border-bottom:1px solid #ccc;
}

#pp-ul{
margin-top:20px;
}

#pp-ul li{
margin-top:20px;
}

#pp-ul h3{
font-weight:bold;
margin-bottom:5px;
}

#pp-ul ul{
margin-top:15px;
padding-left:1.5em;
}

#pp-ul ul li{
margin-top:0;
}

#pp-ul ul li::before{
content:'・ ';
}

#contact #card,#contact #flow{
display:none;
}

.grecaptcha-badge{
visibility: hidden;
}

/* result */
.sousin-sippai{
text-align:center;
font-size:2rem;
font-weight:bold;
margin-bottom:30px;
padding-top:80px;
}

.result #page-contents p:nth-child(2){
text-align:center;
}

.history-back{
text-decoration:underline;
}

.result #contact-type{
margin:50px auto 100px;
padding-top:0;
justify-content:center;
}

/* complete */
#page-contents.comp{
padding:50px 0;
}

#page-contents.comp h2{
font-size:1.2rem;
margin:1em auto;
text-align:center;
}

.complete-list{
max-width:800px;
margin:0 auto;
padding:30px 50px;
border:1px solid #ccc; 
}

.complete-list li{
display:flex;
padding:5px;
gap:15px;
}

.complete-list li h3{
width:100px;
color:#777;
font-size:0.8rem;
}

.complete-list li div{
width:calc(100% - 100px);
padding:0 5px;
background:#eee;
}

.comp a{
background:#F7EE47;
display:block;
width:fit-content;
font-size:0.9rem;
padding:0.4em 1.5em 0.5em;
margin:50px auto;
border-radius:5px;
text-shadow:none;
box-shadow:1px 1px 5px rgba(0,0,0,0.4);
opacity:0;
animation:key-btn 0.5s 1.5s linear forwards;
}

.comp a:hover{
position:relative;
top:-1px;
left:-1px;
box-shadow:2px 2px 5px rgba(0,0,0,0.4);
}

/*--------------------------------------------------------
	contact under 900px
--------------------------------------------------------*/
@media screen and (max-width:900px){

#contact-type{
padding:50px 0 0;
display:flex;
flex-direction:column;
justify-content:flex-start;
align-items:center;
gap:20px;
}

#contact-type li{
width:90%;
max-width:500px;
padding:20px 5px;
text-align:center;
border:1px solid #EFF1F3;
border-radius:5px;
box-shadow:3px 3px 3px rgba(0,0,0,0.04);
}

form{
max-width:1000px;
border-radius:0;
margin:0 auto;
padding:50px 50px 0;
}

form h2 span{
display:block;
}

#pp{
max-width:1000px;
border-radius:0;
margin:0 auto;
padding:100px 50px 200px;
}

/* complete */
#page-contents.comp{
padding-top:30px;
}

.complete-list{
max-width:600px;
margin:0 auto;
padding:0 10px 50px;
border:none;
}

.complete-list li{
flex-direction:column;
padding:10px 0;
gap:0;
}

.complete-list li h2{
padding-left:5px;
}

.complete-list li h3{
width:100%;
padding:0 5px;
}

.complete-list li div{
width:100%;
}

.comp a{
margin:0 auto 50px;
}


}

/*--------------------------------------------------------
	contact under 600px
--------------------------------------------------------*/
@media screen and (max-width:600px){

#contact h1 span{
display:block;
}

form{
padding:50px 5% 0;
}

#pp{
padding:80px 5% 100px;
}

}


/*--------------------------------------------------------
	footer
--------------------------------------------------------*/
footer{
background:#1a1a1a;
min-height:100vh;
min-height:100dvh;
display:flex;
flex-direction:column;
justify-content:center;
text-align:center;
color:#777;
position:relative;
}

#page-contents footer{
background:#1a1a1a;
}

footer.on{
background:transparent;
color:#333;
}

#page-contents footer.on{
background:#fff;
}

footer h2{
font-size:1.2rem;
padding-top:3.5em;
position:relative;
overflow:hidden;
}

footer h2:before{
content:'CONTACT';
position:absolute;
top:0;
left:0;
width:100%;
font-size:2.5rem;
line-height:1;
font-weight:bold;
color:#fff;
transform:translate(0, -105%);
transition:transform 0.7s;
}

footer.in h2:before{
transform:translate(0, 0);
}

footer.on h2:before{
color:#1a1a1a;
}

footer ul{
width:100%;
max-width:600px;
margin:50px auto;
display:flex;
justify-content:space-between;
}

footer li{
width:48%;
}

footer h3{
font-weight:bold;
}

footer ul a{
font-size:1.7rem;
font-weight:bold;
line-height:4rem;
color:#666;
}

footer.on ul a{
color:#1a1a1a;
}

footer ul .no-disp{
line-height:4rem;
}

footer ul span{
display:block;
}

.to-con{
display:inline-block;
background:#fff;
color:#1a1a1a;
font-size:0.9rem;
padding:0.6em 1.5em 0.7em;
border-radius:5px;
margin:3em auto 0;
}

footer.on .to-con{
background:#1a1a1a;
color:#fff;
}

.to-con:hover{
position:relative;
top:-1px;
left:-1px;
box-shadow:1px 1px 5px rgba(0,0,0,0.4);
}

#copy{
position:absolute;
bottom:0;
left:0;
width:100%;
height:50px;
line-height:50px;
background:#1a1a1a;
color:#999;
font-size:0.8rem;
}

#contact footer{
min-height:50px;
}

#contact.result footer{
position:absolute;
width:100%;
bottom:0;
left:0;
}

/*--------------------------------------------------------
	footer under 600px
--------------------------------------------------------*/
@media screen and (max-width:600px){

footer{
padding-bottom:50px;
}

footer ul{
flex-direction:column;
justify-content:center;
margin:30px auto;
}

footer li{
width:100%;
margin-bottom:20px;
}

footer ul a,footer ul .no-disp{
line-height:1.7;
}

.to-con{
margin:0 auto;
}

}
