@charset "utf-8";
@import url('https://fonts.googleapis.com/css?family=Noto+Serif+JP');

/*全体の設定
---------------------------------------------------------------------------*/
html,body {height: 100%;}
body {
	overflow-x:hidden;
	margin: 0px;
	padding: 0px;
	color: #46405c;
	font-family:  'Noto Serif JP', serif;
	font-size: 1.75vw;
	line-height: 1;
	background: #fff;
	-webkit-text-size-adjust: none;
}
main {overflow-x:hidden;}
h1,h2,h3,h4,h5,p,ul,ol,li,dl,dt,dd,form,figure,form {margin: 2vw 1vw;padding: 0px;font-size: 100%;font-weight: normal;line-height: 1.5;z-index: 10;letter-spacing: 0.1em;}
ul {list-style-type: none;}
ol {padding-left: 40px;padding-bottom: 15px;}
img {border: none;max-width: 100%;height: auto;vertical-align: middle;}
table {border-collapse:collapse;font-size: 100%;border-spacing: 0; margin: 0 auto;}
iframe {width: 100%;}

/*リンク
---------------------------------------------------------------------------*/
a {
	color: #414046;
	transition: 0.5s;
	text-decoration: none;
}
a:hover {
	color: #001852;
	text-decoration: none;
}

/*ヘッダー
---------------------------------------------------------------------------*/
#header{
	width:100%;
	height: auto;
	position: relative;
} 

#header .title {
	position: absolute;
	z-index: 1000;
	top: 25vw;
    margin-left: 15vw;
}
#header .title h1 {
	margin-bottom: 2vw;
	font-size: 7vw;
	color: #fff;
    animation: titleAnime 1.5s 0.5s forwards ease-in;
    opacity: 0;
}
#header .title p {
	color: #fff;
    font-size: 3vw;
    animation: titleAnime 1.5s 1s forwards ease-in;
    opacity: 0;
}
@keyframes titleAnime{
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}
@media screen and (min-width: 768px) {
	#header .title {
		top: 15vw;
    	margin-left: 15vw;
	}
}

/*メニュー
---------------------------------------------------------------------------*/
#g-navi{
  position: fixed;
  width:100%;
  height: auto;
  z-index: 10000;
  display: flex;
  align-items: center;
  background: rgb(255,255,255,.5);
}

#g-navi.UpMove{
  animation: UpAnime 0.7s forwards;
}

@keyframes UpAnime{
  from {
    opacity: 0.9;
  transform: translateY(0);
  }
  to {
    opacity: 0;
  transform: translateY(-100px);
  }
}

#g-navi.DownMove{
  animation: DownAnime 0.7s forwards;
}
@keyframes DownAnime{
  from {
    opacity: 0;
  transform: translateY(-100px);
  }
  to {
    opacity: 0.9;
  transform: translateY(0);
  }
}

.logo {
	width: 10vw;
}

@media screen and (min-width: 768px) {
  .logo {
    width: 6vw;
  }
}
nav ul {
  margin: 0 0 0 auto;
  list-style: none;
  display: flex;
  justify-content: center;
  font-size: 2.5vw;
}
nav ul li a {
  position: relative;
  display: inline-block;
  display: block;
  padding: 1vw;
  transition: .3s;
}
nav ul li a::after {
  position: absolute;
  bottom: 0;
  left: 50%;
  content: '';
  width: 0;
  height: 1px;
  background-color: #333;
  transition: .3s;
  transform: translateX(-50%);
}

nav ul li a:hover::after {
  width: 10px;
}

/*headervideo
---------------------------------------------------------------------------*/
.video-wrapper {
  aspect-ratio: 1 / 1;
  overflow: hidden;
  position: relative;
	width: 100%;
  margin: 0 auto;
	z-index: -100
}

.video-wrapper::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.2);
}
.video-wrapper video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media screen and (min-width: 481px) {
  .video-wrapper {
    aspect-ratio: 1600 / 897;
  }
}

/*scroll
---------------------------------------------------------------------------*/
.scrolldown{
	position:absolute;
	bottom:10px;
	left:50%;
}

.scrolldown span{
	position: absolute;
	left:10px;
	bottom:10px;
	color: #fff;
	font-size: 0.5rem;
	letter-spacing: 0.05em;
	-ms-writing-mode: tb-rl;
    -webkit-writing-mode: vertical-rl;
    writing-mode: vertical-rl;
}

.scrolldown:before {
    content: "";
    position: absolute;
    bottom:0;
    left:-2.4px;
	width:7px;
	height:7px;
	border-radius: 50%;
	background:#fff;
	animation:
		circlemove 1.6s ease-in-out infinite,
		cirlemovehide 1.6s ease-out infinite;
}
@keyframes circlemove{
      0%{bottom:45px;}
     100%{bottom:-5px;}
 }

@keyframes cirlemovehide{
      0%{opacity:0}
     50%{opacity:1;}
    80%{opacity:0.9;}
	100%{opacity:0;}
 }

.scrolldown:after{
	content:"";
	position: absolute;
	bottom:0;
	left:0;
	width:2px;
	height: 50px;
	background:#fff;
}

/*コンテンツ（containerの中のブロック）
---------------------------------------------------------------------------*/
#contents {
	position: relative;
	overflow: hidden;
	padding: 50px 0%;
	margin: 0 auto;
}
#contents section + section {
	padding-top: 50px;
}
section {
	width:100%;
	position: relative;
	padding: 5vh 0;
	margin: 0 0 5vw;
}

h2 {
	display: flex;
	margin-bottom: 5vw;
	clear: both;
	font-size: 170%;
	align-items: center;
	justify-content: center;
}

h2:before,
h2:after {
  border-top: 1px solid;
  content: "";
  width: 2em; /* 線の長さ */
}
h2:before {
  margin-right: 3vw; /* 文字の右隣 */
}
h2:after {
  margin-left: 3vw; /* 文字の左隣 */
}

h3 {
	clear: both;
	font-size: 4vw;
	font-weight:bold;
	letter-spacing: 0.1em;
}
h4 {
	position: relative;
	margin-bottom: 4vw;
	padding-bottom: 3vw;
	clear: both;
	font-size: 150%;
	text-align: center;
}
h4:before {
    content: '';
    display: inline-block;
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 3vw;
    height: 0.5px;
    background-color: #414046;
}
.area-text,
.area-text02 {
	width: 80vw;
	height: auto;
	margin: 0 auto 5vw;
}

.area-text p,
.area-text02 p {
	font-size: 3vw;
}

@media screen and (min-width: 768px) {
	h3 {
		font-size:3vw;	
	}
	.area-text p,
	.area-text02 p{
	    font-size: 2vw;
    }
	.area-text {
  		position: absolute;
 		left: 50vw;
  		top: 10vw;
	}
	.area-text02 {
  		position: absolute;
 		left: 10vw;
  		top: 90vw;
	}
}
@media screen and (min-width: 1100px) {
	.area-text02 {
  		position: absolute;
 		left: 10vw;
  		top: 65vw;
	}
}
@media screen and (min-width: 1500px) {
	.area-text02 {
  		position: absolute;
 		left: 10vw;
  		top: 50vw;
	}
}
.button01 {
    display: inline-block;
    justify-content: center;
    align-items: center;
    width: auto;
    padding: 1em 1em;
    border: 1px solid #e7e7e7;
    border-radius: 5px;
    box-shadow: 6px 6px 12px #c5c5c5, -6px -6px 12px #fff;
    background-color: #e7e7e7;
    color: #555555;
    font-weight: 600;
}

.button01:hover {
    box-shadow: inset 4px 4px 12px #c5c5c5, inset -4px -4px 12px #fff;
}

.button02 {
    display: inline-block;
    justify-content: center;
    align-items: center;
    width: auto;
    padding: 1em 1em;
    border: 1px solid #e7e7e7;
    border-radius: 5px;
    box-shadow: 6px 6px 12px #c5c5c5, -6px -6px 12px #fff;
    background-color: #e7e7e7;
    color: #555555;
    font-weight: 600;
	cursor: default;
}

/*テーブル
---------------------------------------------------------------------------*/
table{
  margin-top: 5vw;
  margin-bottom: 5vw;
  border-collapse: collapse;
  border-spacing: 0;
  table-layout: fixed;
  width: 90%;
}
@media screen and (min-width: 768px) {
	table {
  		width: 80%;
	}
}

table tr:last-child{
  border-bottom:solid 0px #fff;
}

table th{
  text-align: center;
  padding: 2vw 0;
  border-right:solid 1px #fff;
  border-left:solid 1px #fff;
  width: 50%;
}

table th:nth-child(1){
  background-color:#46405c;
  color: white;
}
table th:nth-child(2){
  background-color:#46405c;
  color: white;
}
table th:nth-child(3){
  background-color:#dddddd;
}

table tr:nth-child(2) td{
  font-size: 2vw;
}

table td{
  text-align: center;
  padding: 2vw 0;
  border-right:solid 1px #fff;
  border-left:solid 1px #fff;
  width: 45%;
}
table span {
	font-size: 1.3vw;
	line-height: 2;
}
/*スライダー
---------------------------------------------------------------------------*/
.slider{
  width:70%;
  margin:0 auto;
  padding: 1.5vw 0;
  border-top: 0.2px solid #999;
  border-bottom: 0.2px solid #999;
}
.slider .text{
	padding: 0 1vw;
	margin:0 auto;
	text-align: center;
}

.slider .text a:hover{
	color: #001852;
	transition: 0.5s;
}

.slider .slick-slide{
	height:auto!important;
}

.slider .slick-next{
    right:0!important;
}
.slider .slick-prev{
    left:0!important;
}
.slider .slick-prev:before,.slider  .slick-next:before {
    color: #999;
    opacity: 1;
}
.slider .slick-arrow{
    width: initial!important;
    height: initial!important;
    z-index:2!important;
}
.slider .slick-arrow:before{
    font-size: 2vw!important;
}

/*
---------------------------------------------------------------------------*/
@import url("https://fonts.googleapis.com/css2?family=Spartan:wght@400;700&display=swap");
:root {
  --easing: cubic-bezier(.2, 1, .2, 1);
  --transition: .8s var(--easing);
  --color-gray: #ddd;
  --color-theme: #f5695f;
  --box-shadow: .8rem .8rem 1.2rem rgba(0, 0, 0, .05), -.8rem -.8rem 1.2rem #fff;
  --box-shadow-hover: 1rem 1rem 1.5rem rgba(0, 0, 0, .08), -1rem -1rem 1.5rem #fff;
  --box-shadow-inset: inset .8rem .8rem 1.2rem rgba(0, 0, 0, .05), inset -.8rem -.8rem 1.2rem #fff;
  --box-shadow-dark: .8rem .8rem 1.2rem rgba(0, 0, 0, .1), -.8rem -.8rem 1.2rem rgba(#fff,.2);
}
.l-inner {
  position: relative;
  -webkit-box-sizing: content-box;
          box-sizing: content-box;
  width: 80%;
  margin: 0 auto;
  text-align: left;
}

.l-section {
  font-size: 62.5%;
  height: 100%;
  word-break: break-word;
  color: #333;
  border-top: 1px solid #eee;
}

@media only screen and (max-width: 599px) {
  .pc-tab {
    display: none !important;
  }
}
.c-info {
  font-size: 1.4rem;
  display: inline-block;
  margin-top: 4rem;
  margin-bottom: 6.4rem;
}
@media only screen and (max-width: 1200px) {
  .c-info {
    display: block;
    margin-top: 0;
    margin-bottom: 6.4rem;
  }
}
.c-info li {
  position: relative;
  padding-left: 16px;
}
.c-info li::before {
  position: absolute;
  top: 0.6em;
  left: 0;
  display: inline-block;
  width: 8px;
  height: 2px;
  content: "";
  background-color: #999;
}
.c-info li + li {
  margin-top: 0.8rem;
}
.c-title {
  font-size: 2.4rem;
  font-weight: bold;
  line-height: 1.6;
  display: inline-block;
  min-width: 32rem;
  margin-bottom: 6.4rem;
  vertical-align: top;
}
@media only screen and (max-width: 1200px) {
  .c-title {
    margin-bottom: 3.2rem;
  }
}
@media only screen and (max-width: 599px) {
  .c-title {
    min-width: 100%;
  }
}
.c-title [class*=ico-] {
  font-size: 1.3rem;
  color: #fff;
  line-height: 1;
  display: block;
  width: 10rem;
  margin-bottom: 1.2rem;
  padding: 0.8rem 0 0.6rem;
  text-align: center;
  letter-spacing: 0.05em;
  border-radius: 100px;
  background-color: #46405c;
}
.c-title .ico-advanced {
  color: #fff;
  background-color: #333;
}
/* slider */
[class*=swiper]:focus {
  outline: none;
}

.slide-media video {
  width: 100%;
  height: 100%;
}

.card .slide {
  overflow: hidden;
  -webkit-transition: var(--transition), opacity 1s;
  transition: var(--transition), opacity 1s;
  border-radius: 4px;
  -webkit-box-shadow: var(--box-shadow);
          box-shadow: var(--box-shadow);
  margin-right: 3em;
}
@media only screen and (min-width: 1025px) {
  .card .slide video {
    -webkit-transition: var(--transition);
    transition: var(--transition);
  }
}
.card .swiper-slide:not(.swiper-slide-visible) .slide {
  pointer-events: none;
  opacity: 0.3;
}
/*モーダル
---------------------------------------------------------------------------*/
.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.7);
  display: none;
  z-index: 100000;
}
.modal-content {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 80%;
  height: 90%;
  background-color: #fff;
  padding: 3vw;
  font-size: 2vw;
  line-height: 1.5;
  overflow-y: scroll;
}
.remodal-close {
    position: absolute;
    bottom: 10vw;
    left: 48%;
    display: block;
    overflow: visible;
    width: 25px;
    height: 25px;
    margin: 0;
    padding: 0;
    cursor: pointer;
    -webkit-transition: color 0.2s;
    transition: color 0.2s;
    text-decoration: none;
    color: #fff;
    border: 0;
    outline: 0;
    background: #000;
}
@media screen and (min-width: 768px) {
	.modal-content {
		width: 60%;
  		height: 90%;
		font-size: 1.5vw;
	}
	.remodal-close {
		width: 35px;
		height: 35px;
    	bottom: 5vw;
	}
}

/*parallaxc
---------------------------------------------------------------------------*/
.js-parallax {
  overflow: visible;
}
.js-parallax img {
  display: block;
  height: auto;
  width: 100%;
}

.info-Photo {
  position: relative;
  width: 300px;
  margin: 0 0 200px 12vw;
  z-index: -1;
}
.area01 {
  height: 450px;
  border-radius: 0em;
}
.area02 {
  position: absolute;
  left: -30px;
  bottom: 150px;
  width: 100px;
  height: -100px;
  border-radius: 0em;
  transform: rotate(-15deg);
}
.area07 {
  position: absolute;
  right: -70px;
  bottom: 40px;
  width: 150px;
  height: 10px;
  transform: rotate(10deg);
}

.parallax-box02 {
  position: relative;
  display: block;
  width: 500px;
  margin: 0 5vw 200px auto;
  z-index: -1;
}
.area03 {
  height: 400px;
  width: 400px;
}
.area04 {
  position: absolute;
  right: -0px;
  bottom: -50px;
  width: 250px;
  height: 100px;
}
.area05 {
  width: 1920px;
  height: 500px;
  margin: 0 0 1vw;
}
.area06 {
  width: 300px;
  height: 230px;
  margin: 0 auto;
}
@media screen and (min-width: 768px) {
	.area06 {
  	width: 600px;
	}
}

/*ふわっと
---------------------------------------------------------------------------*/
.works_list {
  padding: 5vw 0 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  width: 100%;
  margin: auto;
  position:relative;
}

.works_list .item {
  text-align: center;
  position: relative;
  width: 33%;
}

.works_list .centeritem:before{
  content: "";
  display: block;
  background-color: #dbdbdb;
  width: 0.1vw;
  height: 90%;
  position: absolute;
  left: 0;
  top: 5%;
}
.works_list .centeritem:after{
  content: "";
  display: block;
  background-color: #dbdbdb;
  width: 0.1vw;
  height: 90%;
  position: absolute;
  right: 0;
  top: 5%;
}

.works_list .item .number {
  display: block;
  letter-spacing: .1em;
  margin-bottom:1.875vw;
  font-size: 3vw;
  font-weight: 500;
}

 .works_list .item .text {
  display: block;
  line-height: 1.6;
  font-feature-settings: "palt" 1;
  letter-spacing: .1em;
  font-size: 2.5vw;
  font-weight: 500;
}
.item .offs,
.offs .item{
  opacity: 0;
  transform: translateY(50px);
}
.item .ons,
.ons .item{
  transition: all 1s cubic-bezier(0, 0, 0.13, 0.79);
  opacity: 1;
  transform: translateY(0);
}

/*ループ
---------------------------------------------------------------------------*/
#loop {
	width:100%;
	position: relative;
}
.loop {
	position: absolute;
 	left: 0;
  	top: -20vw;
    padding-top: 1vw;
    padding-bottom: 1vw;
    overflow: hidden;
	z-index: -1;
}
.loop__box {
    display: flex;
    width: 100vw;
	height: auto;
}
.loop__item {
    flex: 0 0 auto;
    font-size: 18vw;
    white-space: nowrap;
    color: #E0E0E0;
}

.loop__item:nth-child(odd) {
    animation: loop 200s -100s linear infinite;
}
.loop__item:nth-child(even) {
    animation: loop2 200s linear infinite;
}

@keyframes loop {
    0% {
        transform: translateX(100%);
    }
    to {
        transform: translateX(-100%);
    }
}

@keyframes loop2 {
    0% {
        transform: translateX(0);
    }
    to {
        transform: translateX(-200%);
    }
}

/*works
---------------------------------------------------------------------------*/
#work {
	background: #e7e7e7;
	text-align: center;
}


/*contact
---------------------------------------------------------------------------*/
#contact {
	background: #e7e7e7;
	text-align: center;
}
form {
  width: 90vw;
  margin: 0 auto;
}
.form-row {
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid #f2f4f5;
}
.form-row:last-child {
  border-bottom: none;
}
.form-label {
  display: flex;
  align-items: center;
  width: auto;
}
.form-label label {
  font-weight: bold;
}
.form-label span {
    display: inline-block;
    justify-content: center;
    align-items: center;
    width: auto;
    padding: 0.5vw;
	margin-right: 1vw;
    border: 1px solid #e7e7e7;
    border-radius: 5px;
    box-shadow: 3px 3px 6px #c5c5c5, -3px -3px 6px #fff;
    background-color: #e7e7e7;
    color: #555555;
	font-size: 70%;
    font-weight: 600;
	cursor: default;
}

input, textarea {
  width: 100%;
  margin-top: 2vw;
  background-color: #fff;
  border: none;
  border-radius: 3px;
  padding: 5px 10px;
  font-size: 16px;
  color: #333;
}
input::placeholder,
textarea::placeholder {
  color: #999;
  font-size: 14px;
}

select {
  width: 100%;
  margin-top: 2vw;
  background-color: #fff;
  border: none;
  border-radius: 3px;
  padding: 15px 20px;
  font-size: 16px;
  color: #333;
}

.radio-1 {
	margin-top: 2vw;
    display: flex;
    flex-wrap: wrap;
    gap: .3em 2em;
    border: none;
}

.radio-1 label {
    display: flex;
    align-items: center;
    gap: 0 .5em;
    position: relative;
    cursor: pointer;
}

.radio-1 label::before,
.radio-1 label::after {
    border-radius: 3px;
    content: '';
}

.radio-1 label::before {
    width: 18px;
    height: 18px;
    border: 2px solid #444546;
    box-sizing: border-box;
}

.radio-1 label::after {
    position: absolute;
    top: 50%;
    left: 9px;
    transform: translate(-50%, -50%);
    width: 9px;
    height: 9px;
    background-color: fff;
}

.radio-1 label:has(:checked)::after {
    background-color: #444546;
    animation: anim-radio-1 .3s linear;
}

@keyframes anim-radio-1 {
    0% {
        box-shadow: 0 0 0 1px transparent;
    }
    50% {
        box-shadow: 0 0 0 10px #44454633;
    }
    100% {
        box-shadow: 0 0 0 10px transparent;
    }
}

.radio-1 input {
    display: none;
}
@media screen and (min-width: 768px) {
	form {
  		width:50vw;
	}
}
.submit {
    display: inline-block;
    justify-content: center;
    align-items: center;
	margin: 2vw 0;
    width: auto;
    padding: 0.7vw 0.7vw;
    border: 1px solid #e7e7e7;
    border-radius: 5px;
    box-shadow: 6px 6px 12px #c5c5c5, -6px -6px 12px #fff;
    background-color: #e7e7e7;
    color: #555555;
    font-weight: 600;
}
.submit:hover {
    box-shadow: inset 4px 4px 12px #c5c5c5, inset -4px -4px 12px #fff;
}
/*フッター設定
---------------------------------------------------------------------------*/
footer {
	padding-bottom: 1vw;
	clear: both;
	text-align: center;
	color: #999;
	font-size: 70%;
}

footer a {
	color: #999;
	transition: 0.5s;
	text-decoration: none;
}
footer a:hover {
	color: #000;
}

/*PAGE TOP（↑）設定
---------------------------------------------------------------------------*/
.scroll-show {display: block;}
.scroll a {
	display: block;text-decoration: none;text-align: center;
	width: 50px;
	line-height: 50px;
	position: fixed;
	right: 1%;
	bottom: 1%;
	color: #000;
	border: 0px solid #000;
}

.scroll a:hover {
	color: #000;
	font-size:200%;
}

/*ul.disc,olタグ
---------------------------------------------------------------------------*/
ul.disc {
	list-style: disc;
	padding: 0 20px 20px 55px;
}
ol {
	padding: 0 20px 20px 42px;
}

/*その他
---------------------------------------------------------------------------*/
.clear {clear: both;}
.wl {width: 96%;}
.ws {width: 50%;}
.c {text-align: center;width: 85%;margin: 0 auto 3vw;}
.s {text-align: left; width: 80%;margin: 0 auto; font-size:70%;}
.r {text-align: right;}
.l {text-align: left;}
.sh {display: none;}



@media (min-width: 768px){
}
