@charset "utf-8";

/*=========================================*/
/* All */
/*=========================================*/

@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;500;700;900&family=Poppins:wght@200;300;400;500;600&display=swap");

/*-- reset --*/

html, body, div, span, object,
h1, h2, h3, h4, h5, h6,
p, img, dl, dt, dd,
ol, ul, li,
fieldset, form, label, table, caption,
tbody, tfoot, thead,
article, aside, footer, header, menu, nav, section,
audio, video{
	margin:0;
	padding:0;
	border:0;
	outline:0;
	vertical-align:baseline;
	background:transparent;
}

.clearfix {zoom:1;}
.clearfix:after{content: "";display: block;clear: both;}
.clear{clear:both;}

ol, ul{
	list-style:none;
}

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section{
	display:block;
}

blockquote, q{
	quotes:none;
}

blockquote:before,
blockquote:after,
q:before,
q:after{
	content:'';
	content:none;
}

a:link{
	color:#111;
	text-decoration: underline;
}

a:visited{
	color:#111;
	text-decoration:underline;
}

a:hover,
a:active{
	color:#555;
	text-decoration:none;
}

img{
	vertical-align:top;
	font-size:0;
	line-height:0;
}

button{
	padding: 0;
	border: none;
	background: none;
	font: inherit;
	color: inherit;
	cursor: pointer;
}

html{
	overflow-x: hidden;
}

html.lenis, html.lenis body{
	height: auto;
}

.lenis.lenis-smooth{
	scroll-behavior: auto !important;
}

body{
	position: relative;
	overflow-x: hidden;
	width: 100%;
	background-color: #fff;
	font-size: 16px;
	line-height:190%;
	font-family: "Noto Sans JP", sans-serif;
	font-weight: 400;
	font-style: normal;
	letter-spacing: 0.04em;
	text-align:left;
	color:#111;
	-webkit-font-smoothing: antialiased;
}

::selection{
	background-color: #111;
	color: #fff;
}

.sp{
	display: none;
}

.pc{
}

.contents-box{
	max-width: 1200px;
	width: 100%;
	margin: auto;
}

@media screen and (max-width:1280px){
.contents-box{
	width: auto;
	margin: 0 40px;
}
}

@media screen and (max-width:800px){
body{
	font-size: 15px;
}

.sp{
	display: block;
}

span.sp{
	display: inline;
}

.pc{
	display: none;
}

.contents-box{
	margin: 0 20px;
}
}

/*=========================================*/
/* Loading */
/*=========================================*/

.loading{
	position: fixed;
	z-index: 99999;
	top: 0;
	left: 0;
	display: -webkit-flex;
	display: flex;
	flex-direction: column;
	justify-content:center;
	align-items:center;
	width: 100%;
	height: 100vh;
	background-color: #fff;
	transition: transform 1.0s cubic-bezier(0.77, 0, 0.18, 1);
}

.loading-logo{
	width: 200px;
	overflow: hidden;
}

.loading-logo img{
	width: 100%;
	transform: translateY(110%);
	animation: loadingLogo 0.8s cubic-bezier(0.22, 1, 0.36, 1) 0.1s forwards;
}

.loading-bar{
	position: relative;
	display: block;
	width: 200px;
	height: 1px;
	margin-top: 24px;
	background-color: #E2E2E2;
	overflow: hidden;
}

.loading-bar::after{
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: #111;
	transform: scaleX(0);
	transform-origin: left;
	animation: loadingBar 1.0s cubic-bezier(0.65, 0, 0.35, 1) 0.2s forwards;
}

body.is-loaded .loading{
	transform: translateY(-100%);
}

@keyframes loadingLogo{
	to{ transform: translateY(0); }
}

@keyframes loadingBar{
	to{ transform: scaleX(1); }
}

@media screen and (max-width:800px){
.loading-logo,
.loading-bar{
	width: 150px;
}
}

/*=========================================*/
/* Header */
/*=========================================*/

.header{
	position: fixed;
	top: 0px;
	left: 0;
	z-index:9999;
	width: 100%;
	height: 96px;
	transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), height 0.4s, background-color 0.4s;
}

.header::before{
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(255,255,255,0.75);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	opacity: 0;
	transition: opacity 0.4s;
}

.header.is-scroll{
	height: 72px;
}

.header.is-scroll::before{
	opacity: 1;
}

.header.is-hide{
	transform: translateY(-100%);
}

.header-area{
	position: relative;
	display: -webkit-flex;
	display: flex;
	-webkit-flex-wrap: wrap;
	flex-wrap:         wrap;
	justify-content:space-between;
	align-items:center;
	height: 100%;
	padding: 0 48px;
}

.header-area .logo{
	margin-right: auto;
	width: 170px;
}

.header-area .logo a{
	display: block;
}

.header-area .logo img{
	width: 100%;
}

.header-area .logo{
	position: relative;
	z-index: 1000;
}

.is-navopen .header-area .logo img{
	filter: invert(1);
}

.is-navopen .header::before{
	opacity: 0;
}

.global-navi .nav{
	display: -webkit-flex;
	display: flex;
	gap: 40px;
}

.global-navi a{
	position: relative;
	display: inline-block;
	overflow: hidden;
	font-family: "Poppins", sans-serif;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.6;
	letter-spacing: 0.06em;
	color: #111;
	text-decoration:none;
}

.global-navi a span{
	position: relative;
	display: inline-block;
	transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.global-navi a span::after{
	content: attr(data-text);
	position: absolute;
	top: 100%;
	left: 0;
	color: #888;
}

.global-navi a:hover span{
	transform: translateY(-100%);
}

.header-contact{
	margin-left: 40px;
}

.header-contact a{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	height: 48px;
	padding: 0 8px 0 28px;
	border-radius: 48px;
	background-color: #111;
	font-family: "Poppins", sans-serif;
	font-size: 15px;
	font-weight: 500;
	letter-spacing: 0.06em;
	text-decoration: none;
	color: #fff;
	transition: background-color 0.4s;
}

.header-contact a:hover{
	background-color: #555;
}

.header-contact .icon{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 16px;
}

.header-contact .icon::after{
	content: "";
	display: block;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background-color: #fff;
	background-image: url("images/icon-arrow.svg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 16px;
	transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.header-contact a:hover .icon::after{
	transform: rotate(-45deg);
}

@media screen and (max-width:1040px){
.header{
	height: 64px;
}

.header.is-scroll{
	height: 64px;
}

.header-area{
	padding: 0 20px;
}

.header-area .logo{
	width: 130px;
}

.global-navi{
	display: none;
}

.header-contact{
	display: none;
}
}

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

/*=========================================*/
/* SP navi */
/*=========================================*/

#g-nav{
	position:fixed;
	z-index: 999;
	top:0;
	left: 0;
	width:100%;
	height: 100vh;
	background-color: #111;
	clip-path: circle(0px at calc(100% - 44px) 32px);
	transition: clip-path 0.8s cubic-bezier(0.77, 0, 0.18, 1);
	visibility: hidden;
}

/*アクティブクラスがついたら全面表示*/
#g-nav.panelactive{
	clip-path: circle(150% at calc(100% - 44px) 32px);
	visibility: visible;
}

/*ナビゲーションの縦スクロール*/
#g-nav.panelactive #g-nav-list{
	position: fixed;
	z-index: 999;
	width: 100%;
	height: 100vh;
	overflow: auto;
	-webkit-overflow-scrolling: touch;
}

#g-nav-list-area{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	width: 100%;
	min-height: 100vh;
	padding: 100px 0 60px;
	box-sizing: border-box;
}

#g-nav-list-area .box{
	width: 100%;
	padding: 0px 32px;
}

#g-nav-list-area li{
	border-bottom: 1px solid rgba(255,255,255,0.15);
	opacity: 0;
	transform: translateY(20px);
	transition: opacity 0.5s, transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

#g-nav.panelactive li{
	opacity: 1;
	transform: translateY(0);
}

#g-nav.panelactive li:nth-child(1){ transition-delay: 0.30s;}
#g-nav.panelactive li:nth-child(2){ transition-delay: 0.36s;}
#g-nav.panelactive li:nth-child(3){ transition-delay: 0.42s;}
#g-nav.panelactive li:nth-child(4){ transition-delay: 0.48s;}

#g-nav-list-area li a{
	display: -webkit-flex;
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 18px 0;
	font-family: "Poppins", sans-serif;
	font-size: 30px;
	font-weight: 300;
	line-height: 1.4;
	color: #fff;
	text-decoration: none;
}

#g-nav-list-area li a::after{
	content: "";
	width: 20px;
	height: 20px;
	background-image: url("images/icon-arrow-w.svg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: contain;
}

/*========= ボタンのためのCSS ===============*/
#openbtn_scroll{
	display: none;
	position:relative;
	z-index: 9999;
	cursor: pointer;
	width: 48px;
	height:48px;
	border-radius: 50%;
	background-color: #111;
	transition: background-color 0.4s;
}

/*×に変化*/
#openbtn_scroll span{
	display: inline-block;
	transition: all .4s;
	position: absolute;
	left: 15px;
	height: 1.5px;
	border-radius: 2px;
	background-color: #fff;
	width: 18px;
}

#openbtn_scroll span:nth-of-type(1) {
	top:18px;
}

#openbtn_scroll span:nth-of-type(2) {
	top:24px;
	width: 12px;
}

#openbtn_scroll span:nth-of-type(3) {
	top:30px;
}

#openbtn_scroll.active{
	background-color: #fff;
}

#openbtn_scroll.active span{
	background-color: #111;
}

#openbtn_scroll.active span:nth-of-type(1) {
	top: 24px;
	transform: rotate(-45deg);
}

#openbtn_scroll.active span:nth-of-type(2) {
	opacity: 0;
}

#openbtn_scroll.active span:nth-of-type(3){
	top: 24px;
	transform: rotate(45deg);
}

@media screen and (max-width:1040px){
#openbtn_scroll{
	display: block;
}
}

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

/*=========================================*/
/* Contents */
/*=========================================*/

.scroll-point{
	position: relative;
	display: block;
	top: -80px;
}

br.pc{
}

br.sp{
	display: none;
}

/* fade in */
.animation{
	opacity: 0;
	transform: translateY(40px);
	transition: opacity 1.0s cubic-bezier(0.22, 1, 0.36, 1), transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.animation.fadeIn{
	opacity: 1;
	transform: translateY(0);
}

/* split text */
.js-split{
	display: inline-block;
}

.js-split .char{
	display: inline-block;
	transform: translateY(105%);
	transition: transform 1.0s cubic-bezier(0.22, 1, 0.36, 1);
}

.js-split .word{
	display: inline-block;
	white-space: nowrap;
}

.js-split .char-wrap{
	display: inline-block;
	overflow: hidden;
	vertical-align: top;
	padding-bottom: 0.14em;
	margin-bottom: -0.14em;
}

.js-split.is-show .char{
	transform: translateY(0);
}

/* text fill */
.js-fill .char{
	color: #C9C9C9;
	transition: color 0.3s;
}

.js-fill .char.is-fill{
	color: #111;
}

/* btn */
.btn a{
	display: inline-flex;
	align-items: center;
	min-height: 64px;
	padding: 0 10px 0 32px;
	border: 1px solid #111;
	border-radius: 64px;
	box-sizing: border-box;
	font-size: 15px;
	font-weight: 500;
	letter-spacing: 0.06em;
	text-decoration: none;
	color: #111;
	position: relative;
	overflow: hidden;
	isolation: isolate;
	transition: color 0.5s;
}

.btn a::before{
	content: "";
	position: absolute;
	z-index: -1;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: #111;
	transform: scaleX(0);
	transform-origin: right;
	transition: transform 0.6s cubic-bezier(0.77, 0, 0.18, 1);
}

.btn a:hover{
	color: #fff;
}

.btn a:hover::before{
	transform: scaleX(1);
	transform-origin: left;
}

.btn .icon{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 24px;
}

.btn .icon::after{
	content: "";
	display: block;
	flex-shrink: 0;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background-color: #111;
	background-image: url("images/icon-arrow-w.svg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 18px;
	transition: background-color 0.5s, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.btn a:hover .icon::after{
	background-color: #555;
	transform: translateX(4px);
}

.btn.btn-w a{
	border-color: #fff;
	color: #fff;
}

.btn.btn-w a::before{
	background-color: #fff;
}

.btn.btn-w a:hover{
	color: #111;
}

.btn.btn-w .icon::after{
	background-color: #fff;
	background-image: url("images/icon-arrow.svg");
}

.btn.btn-w a:hover .icon::after{
	background-color: #555;
	background-image: url("images/icon-arrow-w.svg");
}

/* title */
.title-en{
	font-family: "Poppins", sans-serif;
	font-weight: 300;
	line-height: 1.0;
	letter-spacing: 0.01em;
}

@media (prefers-reduced-motion: reduce){
.animation,
.js-split .char{
	opacity: 1;
	transform: none;
	transition: none;
}
}

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

@media screen and (max-width:800px){
br.pc{
	display: none;
}

br.sp{
	display: block;
}

.scroll-point{
	top: -64px;
}

.animation{
	transform: translateY(24px);
}

.btn a{
	min-height: 56px;
	padding: 0 8px 0 24px;
	font-size: 14px;
}

.btn .icon{
	gap: 16px;
}

.btn .icon::after{
	width: 40px;
	height: 40px;
	background-size: 16px;
}
}

/*=========================================*/
/* KV */
/*=========================================*/

.kv-area{
	position: relative;
	padding: 180px 0 0 0;
	overflow: hidden;
}

.kv-catch{
	position: relative;
	z-index: 2;
	padding: 0 48px 0 140px;
}

.kv-catch .en{
	font-family: "Poppins", sans-serif;
	font-size: clamp(64px, 10.4vw, 180px);
	font-weight: 500;
	line-height: 1.0;
	letter-spacing: -0.03em;
}

.kv-catch .line{
	display: block;
	overflow: hidden;
	padding-bottom: 0.32em;
	margin-bottom: -0.06em;
}

.kv-catch .line:nth-child(2){
	padding-left: 1.2em;
}

.kv-catch .inner{
	display: inline-block;
	transform: translateY(110%);
	transition: transform 1.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.kv-catch .line:nth-child(2) .inner{
	transition-delay: 0.12s;
}

.kv-catch .color{
	position: relative;
	display: inline-block;
}

.kv-catch .color::after{
	content: "";
	position: absolute;
	left: 0.04em;
	right: 0.02em;
	bottom: -0.19em;
	height: 2px;
	background-color: #111;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 1.0s cubic-bezier(0.77, 0, 0.18, 1) 1.1s;
}

.kv-catch .catch{
	overflow: hidden;
	margin-top: 28px;
	padding-left: calc(clamp(64px, 10.4vw, 180px) * 1.2);
	font-family: "Poppins", sans-serif;
	font-size: 18px;
	font-weight: 400;
	line-height: 1.6;
	letter-spacing: 0.02em;
	color: #555;
}

.kv-catch .catch .inner{
	transition-delay: 0.35s;
}

body.is-loaded .kv-catch .inner{
	transform: translateY(0);
}

body.is-loaded .kv-catch .color::after{
	transform: scaleX(1);
}

.kv-img{
	position: relative;
	margin-top: -40px;
	height: 92vh;
	min-height: 560px;
	clip-path: inset(80px 140px 0 140px round 32px);
	will-change: clip-path;
}

.kv-img .img{
	width: 100%;
	height: 100%;
	overflow: hidden;
}

.kv-img img{
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1.25);
	transition: transform 2.2s cubic-bezier(0.22, 1, 0.36, 1) 0.3s;
}

body.is-loaded .kv-img img{
	transform: scale(1.08);
}

@media screen and (max-width:1040px){
.kv-area{
	padding: 140px 0 0 0;
}

.kv-catch{
	padding: 0 20px 0 70px;
}

.kv-catch .catch{
	font-size: 15px;
}

.kv-img{
	height: 70vh;
	clip-path: inset(60px 20px 0 70px round 24px);
}
}

@media screen and (max-width:800px){
.kv-area{
	padding: 100px 0 0 0;
}

.kv-catch{
	padding: 0 20px;
}

.kv-catch .en{
	font-size: 12.6vw;
}

.kv-catch .line:nth-child(2){
	padding-left: 0;
}

.kv-catch .catch{
	margin-top: 20px;
	padding-left: 0;
	font-size: 14px;
}

.kv-img{
	margin-top: 0;
	height: 64vh;
	min-height: 400px;
	clip-path: inset(40px 20px 0 20px round 20px);
}
}

/*=========================================*/
/* KV left */
/*=========================================*/

.kv-left{
	position: absolute;
	z-index: 3;
	top: 180px;
	left: 48px;
	display: -webkit-flex;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 40px;
	opacity: 0;
	transition: opacity 1.0s 1.2s;
}

body.is-loaded .kv-left{
	opacity: 1;
}

.kv-left .text{
	writing-mode: vertical-rl;
	font-size: 12px;
	font-weight: 500;
	line-height: 1.6;
	letter-spacing: 0.2em;
	color: #111;
}

.kv-left .scroll-btn{
	display: -webkit-flex;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	text-decoration: none;
	color: #111;
}

.kv-left .scroll-text{
	writing-mode: vertical-rl;
	font-family: "Poppins", sans-serif;
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.2em;
}

.kv-left .scroll-line{
	position: relative;
	display: block;
	width: 1px;
	height: 120px;
	background-color: #D5D5D5;
}

.kv-left .scroll-circle{
	position: absolute;
	top: 0;
	left: -3px;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background-color: #111;
	animation: scrollCircle 2.2s cubic-bezier(0.65, 0, 0.35, 1) infinite;
}

@keyframes scrollCircle{
	0%{ top: 0; opacity: 0;}
	15%{ opacity: 1;}
	80%{ opacity: 1;}
	100%{ top: 100%; opacity: 0;}
}

@media screen and (max-width:1040px){
.kv-left{
	top: 140px;
	left: 20px;
	gap: 28px;
}

.kv-left .text{
	font-size: 11px;
}

.kv-left .scroll-line{
	height: 80px;
}
}

@media screen and (max-width:800px){
.kv-left{
	position: relative;
	top: auto;
	left: auto;
	display: block;
	padding: 0 20px 20px;
}

.kv-left .text{
	writing-mode: horizontal-tb;
	font-size: 11px;
	letter-spacing: 0.08em;
	color: #555;
}

.kv-left .scroll{
	display: none;
}
}

/*=========================================*/
/* loop text */
/*=========================================*/

.loop-text{
	overflow: hidden;
	padding: 72px 0 40px;
	white-space: nowrap;
}

.loop-text-inner{
	display: inline-flex;
	animation: loopText 40s linear infinite;
}

.loop-text span{
	display: inline-flex;
	align-items: center;
	padding-right: 0.5em;
	font-family: "Poppins", sans-serif;
	font-size: clamp(56px, 8vw, 128px);
	font-weight: 500;
	line-height: 1.1;
	letter-spacing: -0.02em;
	color: #EEEFF1;
}

.loop-text span::after{
	content: "";
	display: inline-block;
	width: 0.2em;
	height: 0.2em;
	margin-left: 0.5em;
	border-radius: 50%;
	background-color: #DADBDE;
}

@keyframes loopText{
	0%{ transform: translateX(0);}
	100%{ transform: translateX(-50%);}
}

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

@media screen and (max-width:800px){
.loop-text{
	padding: 48px 0 24px;
}

.loop-text span{
	font-size: 48px;
}
}

/*=========================================*/
/* index service */
/*=========================================*/

.index-service{
	padding: 100px 0 140px;
}

.index-service .title-box{
	display: -webkit-flex;
	display: flex;
	justify-content: space-between;
	gap: 80px;
}

.index-service .title-area{
	width: 42%;
}

.index-service .title-area .title-en{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 15px;
	font-weight: 500;
	letter-spacing: 0.1em;
	color: #111;
}

.index-service .title-area .title-en::before{
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background-color: #111;
}

.index-service .title-jp{
	margin-top: 24px;
	font-size: 44px;
	font-weight: 700;
	line-height: 1.45;
	letter-spacing: 0.02em;
}

.index-service .title-jp span{
	display: inline-block;
}

.index-service .read-area{
	width: 52%;
	padding-top: 52px;
}

.index-service .read{
	font-size: 20px;
	font-weight: 500;
	line-height: 2.0;
	letter-spacing: 0.04em;
}

/* service navi */
.service-navi{
	margin-top: 100px;
	border-top: 1px solid #111;
}

.service-navi .box{
	position: relative;
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 40px;
	padding: 44px 40px 44px 24px;
	overflow: hidden;
	isolation: isolate;
	text-decoration: none;
	color: #111;
	transition: color 0.5s, padding 0.6s cubic-bezier(0.22, 1, 0.36, 1), opacity 1.0s cubic-bezier(0.22, 1, 0.36, 1), transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.service-navi .box:nth-child(2){ transition-delay: 0s, 0s, 0.1s, 0.1s;}
.service-navi .box:nth-child(3){ transition-delay: 0s, 0s, 0.2s, 0.2s;}

/* 下線（スクロールで左から引かれる） */
.service-navi .box::after{
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 1px;
	background-color: #111;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 1.4s cubic-bezier(0.77, 0, 0.18, 1) 0.2s;
}

.service-navi .box.fadeIn::after{
	transform: scaleX(1);
}

/* 背景（ホバーで下から黒） */
.service-navi .box::before{
	content: "";
	position: absolute;
	z-index: -1;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 100%;
	background-color: #111;
	transform: scaleY(0);
	transform-origin: bottom;
	transition: transform 0.6s cubic-bezier(0.77, 0, 0.18, 1);
}

.service-navi .box:hover{
	padding-left: 48px;
	color: #fff;
}

.service-navi .box:hover::before{
	transform: scaleY(1);
	transform-origin: top;
}

.service-navi .number{
	flex-shrink: 0;
	width: 40px;
	font-family: "Poppins", sans-serif;
	font-size: 14px;
	font-weight: 500;
	letter-spacing: 0.06em;
	color: #888;
	transition: color 0.5s;
}

.service-navi .box:hover .number{
	color: #aaa;
}

.service-navi .title-en{
	flex: 1;
	display: block;
	min-width: 0;
	font-size: clamp(30px, 3.6vw, 54px);
	font-weight: 300;
	line-height: 1.15;
	letter-spacing: -0.02em;
}

/* 文字が1文字ずつ回転して入れ替わる */
.js-roll .word{
	display: inline-block;
	white-space: nowrap;
}

.js-roll .char-wrap{
	position: relative;
	display: inline-block;
	clip-path: inset(0 -0.4em 0 -0.4em);
	vertical-align: top;
	padding-bottom: 0.18em;
	margin-bottom: -0.18em;
}

.js-roll .char{
	position: relative;
	display: inline-block;
	transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
	transition-delay: calc(var(--i) * 0.025s);
}

.js-roll .char::after{
	content: attr(data-char);
	position: absolute;
	top: calc(100% + 0.18em);
	left: 0;
	font-style: italic;
}

.box:hover .js-roll .char{
	transform: translateY(calc(-100% - 0.18em));
}

.service-navi .title{
	flex-shrink: 0;
	width: 220px;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.6;
}

.service-navi .arrow{
	position: relative;
	flex-shrink: 0;
	width: 64px;
	height: 64px;
	border: 1px solid #111;
	border-radius: 50%;
	box-sizing: border-box;
	overflow: hidden;
	transition: border-color 0.5s, background-color 0.5s;
}

.service-navi .arrow::before,
.service-navi .arrow::after{
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-image: url("images/icon-arrow-down.svg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 20px;
	transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

.service-navi .arrow::after{
	background-image: url("images/icon-arrow-down.svg");
	transform: translateY(-100%);
}

.service-navi .box:hover .arrow{
	border-color: #fff;
	background-color: #fff;
}

.service-navi .box:hover .arrow::before{
	transform: translateY(100%);
}

.service-navi .box:hover .arrow::after{
	transform: translateY(0);
}

@media screen and (max-width:1040px){
.index-service{
	padding: 80px 0 100px;
}

.index-service .title-box{
	flex-direction: column;
	gap: 32px;
}

.index-service .title-area,
.index-service .read-area{
	width: 100%;
	padding-top: 0;
}

.index-service .title-jp{
	font-size: 34px;
}

.index-service .read{
	font-size: 18px;
}

.service-navi{
	margin-top: 64px;
}

.service-navi .box{
	gap: 24px;
	padding: 36px 24px 36px 12px;
}

.service-navi .box:hover{
	padding-left: 24px;
}

.service-navi .title{
	width: 180px;
	font-size: 15px;
}

.service-navi .arrow{
	width: 52px;
	height: 52px;
}
}

@media screen and (max-width:800px){
.index-service{
	padding: 56px 0 80px;
}

.index-service .title-jp{
	margin-top: 16px;
	font-size: 26px;
}

.index-service .read{
	font-size: 16px;
	line-height: 2.0;
}

.service-navi{
	margin-top: 48px;
}

.service-navi .box{
	display: grid;
	grid-template-columns: 28px 1fr 44px;
	grid-template-rows: auto auto;
	column-gap: 12px;
	row-gap: 6px;
	padding: 24px 4px;
}

.service-navi .box:hover{
	padding-left: 12px;
}

.service-navi .number{
	grid-column: 1;
	grid-row: 1;
	width: auto;
	font-size: 12px;
	line-height: 2.6;
}

.service-navi .title-en{
	grid-column: 2;
	grid-row: 1;
	font-size: 28px;
	white-space: normal;
}

.service-navi .title{
	grid-column: 2;
	grid-row: 2;
	width: auto;
	font-size: 13px;
	font-weight: 500;
}

.service-navi .arrow{
	grid-column: 3;
	grid-row: 1 / 3;
	align-self: center;
	width: 44px;
	height: 44px;
}

.service-navi .arrow::before,
.service-navi .arrow::after{
	background-size: 16px;
}
}

/*=========================================*/
/* index point */
/*=========================================*/

.index-point{
	position: relative;
	padding: 140px 0 140px;
	background-color: #EEEFF1;
	border-radius: 48px 48px 0 0;
}

.point-box{
	position: -webkit-sticky;
	position: sticky;
	top: 120px;
	margin-bottom: 40px;
}

.point-box:last-of-type{
	margin-bottom: 0;
}

.point-inner{
	position: relative;
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 64px;
	min-height: 560px;
	padding: 64px 64px 64px 72px;
	border-radius: 32px;
	box-sizing: border-box;
	background-color: #fff;
	box-shadow: 0 -10px 40px rgba(17,17,17,0.04);
	overflow: hidden;
	isolation: isolate;
	transform-origin: center top;
	will-change: transform;
}

.point-inner .text-area{
	position: relative;
	flex: 1;
}

/* テキストは順番に下から表示 */
.point-inner .text-area > *{
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 0.9s cubic-bezier(0.22, 1, 0.36, 1), transform 1.1s cubic-bezier(0.22, 1, 0.36, 1);
}

.point-box.is-show .text-area > *{
	opacity: 1;
	transform: translateY(0);
}

.point-box.is-show .text-area > *:nth-child(2){ transition-delay: 0.1s;}
.point-box.is-show .text-area > *:nth-child(3){ transition-delay: 0.2s;}
.point-box.is-show .text-area > *:nth-child(4){ transition-delay: 0.3s;}
.point-box.is-show .text-area > *:nth-child(5){ transition-delay: 0.4s;}

.point-inner .number{
	display: -webkit-flex;
	display: flex;
	align-items: flex-end;
	gap: 12px;
	font-family: "Poppins", sans-serif;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.0;
	letter-spacing: 0.08em;
	color: #888;
}

.point-inner .number span{
	position: relative;
	display: inline-block;
	overflow: hidden;
	font-size: 64px;
	font-weight: 300;
	line-height: 0.8;
	letter-spacing: -0.02em;
	color: #111;
}

.point-inner .number::after{
	content: "";
	display: block;
	width: 0;
	height: 1px;
	margin: 0 0 6px 8px;
	background-color: #111;
	transition: width 1.2s cubic-bezier(0.77, 0, 0.18, 1) 0.5s;
}

.point-box.is-show .number::after{
	width: 80px;
}

.point-inner .read{
	margin-top: 32px;
	font-size: 28px;
	font-weight: 500;
	line-height: 1.6;
}

.point-inner .read span{
	display: inline-block;
}

.point-inner .read .large{
	font-size: 32px;
	font-weight: 700;
}

.point-inner .text{
	margin-top: 24px;
	font-size: 15px;
	line-height: 2.0;
	color: #444;
}

.point-inner .btn{
	margin-top: 36px;
}

/* 画像（左からめくれるように表示） */
.point-inner .img-area{
	position: relative;
	width: 44%;
	flex-shrink: 0;
}

.point-inner .img{
	border-radius: 20px;
	overflow: hidden;
	clip-path: inset(0 100% 0 0 round 20px);
	transition: clip-path 1.4s cubic-bezier(0.77, 0, 0.18, 1) 0.15s;
}

.point-inner .img img{
	width: 100%;
	transform: scale(1.15);
	transform-origin: center;
	transition: transform 1.8s cubic-bezier(0.22, 1, 0.36, 1) 0.15s;
}

.point-box.is-show .img{
	clip-path: inset(0 0 0 0 round 20px);
}

.point-box.is-show .img img{
	transform: scale(1);
}

.point-inner .img-area{
	transition: transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
}

.point-inner:hover .img-area{
	transform: translateY(-6px);
}

/* 画像に重なる大きな数字（1桁ずつ表示＋スクロールで動く） */
.point-number-large{
	position: absolute;
	z-index: 2;
	right: -36px;
	bottom: -0.24em;
	display: -webkit-flex;
	display: flex;
	font-family: "Poppins", sans-serif;
	font-size: 230px;
	font-weight: 500;
	line-height: 1.0;
	letter-spacing: -0.04em;
	color: #D6D7DA;
	mix-blend-mode: multiply;
	transform: translate3d(calc(60px - var(--p, 0) * 90px), calc(40px - var(--p, 0) * 80px), 0);
	pointer-events: none;
}

.point-number-large .d{
	display: inline-block;
	overflow: hidden;
	padding: 0 0.04em 0.12em;
	margin-bottom: -0.12em;
	transition: transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
}

.point-number-large .d > span{
	display: inline-block;
	transform: translateY(105%) rotate(12deg);
	transform-origin: left bottom;
	transition: transform 1.3s cubic-bezier(0.22, 1, 0.36, 1) 0.5s;
}

.point-number-large .d:nth-child(2) > span{
	transition-delay: 0.65s;
}

.point-box.is-show .point-number-large .d > span{
	transform: translateY(0) rotate(0deg);
}

/* ホバーで数字が上下にずれる */
.point-inner:hover .point-number-large .d:nth-child(1){
	transform: translateY(-0.06em);
}

.point-inner:hover .point-number-large .d:nth-child(2){
	transform: translateY(0.06em);
}

@media (prefers-reduced-motion: reduce){
.point-inner .text-area > *,
.point-inner .img,
.point-number-large .d > span{
	opacity: 1;
	transform: none;
	clip-path: none;
	transition: none;
}
}

@media screen and (max-width:1040px){
.index-point{
	padding: 100px 0;
	border-radius: 32px 32px 0 0;
}

.point-box{
	top: 88px;
}

.point-inner{
	gap: 40px;
	min-height: 0;
	padding: 56px 40px;
}

.point-inner .read{
	font-size: 18px;
}

.point-inner .read .large{
	font-size: 24px;
}

.point-inner .number span{
	font-size: 52px;
}

.point-number-large{
	font-size: 170px;
	right: -24px;
}


}

@media screen and (max-width:800px){
.index-point{
	padding: 64px 0;
	border-radius: 24px 24px 0 0;
}

.point-box{
	top: 76px;
	margin-bottom: 20px;
}

.point-inner{
	flex-direction: column-reverse;
	gap: 24px;
	padding: 20px 20px 32px;
	border-radius: 20px;
}

.point-inner .img-area{
	width: 100%;
}

.point-inner .img{
	border-radius: 12px;
	clip-path: inset(0 100% 0 0 round 12px);
}

.point-box.is-show .img{
	clip-path: inset(0 0 0 0 round 12px);
}




.point-number-large{
	right: 0;
	bottom: -0.2em;
	font-size: 120px;
}

.point-inner .number span{
	font-size: 44px;
}

.point-inner .read{
	margin-top: 20px;
	font-size: 19px;
	font-weight: 700;
}

.point-inner .text{
	margin-top: 16px;
	font-size: 14px;
}

.point-inner .btn{
	margin-top: 28px;
}
}

/*=========================================*/
/* index works */
/*=========================================*/

.index-works{
	position: relative;
	padding: 140px 0 160px;
	background-color: #fff;
	overflow: hidden;
}

.index-works .title-box{
	display: -webkit-flex;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 80px;
}

.index-works .title-en{
	font-size: clamp(80px, 11vw, 168px);
	font-weight: 300;
	letter-spacing: -0.03em;
}

.index-works .title-jp{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 12px;
	margin-top: 24px;
	font-size: 16px;
	font-weight: 500;
	letter-spacing: 0.1em;
}

.index-works .title-jp::before{
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background-color: #111;
}

.index-works .read-area{
	width: 44%;
	padding-bottom: 8px;
}

.index-works .read{
	font-size: 15px;
	line-height: 2.1;
	color: #555;
}

.works-control{
	display: -webkit-flex;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 40px;
	margin-top: 80px;
}

.works-progress{
	position: relative;
	flex: 1;
	height: 1px;
	background-color: #D9D9D9;
}

.works-progress .bar{
	position: absolute;
	top: -1px;
	left: 0;
	width: 20%;
	height: 3px;
	background-color: #111;
	transition: width 0.3s;
}

.works-arrows{
	display: -webkit-flex;
	display: flex;
	gap: 12px;
}

.works-arrows button{
	width: 64px;
	height: 64px;
	border: 1px solid #111;
	border-radius: 50%;
	background-image: url("images/icon-arrow.svg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 20px;
	transition: background-color 0.4s, border-color 0.4s, opacity 0.4s;
}

.works-arrows .works-prev{
	transform: scaleX(-1);
}

.works-arrows button:hover{
	background-color: #111;
	background-image: url("images/icon-arrow-w.svg");
}

.works-arrows button.is-disabled{
	opacity: 0.25;
	pointer-events: none;
}

.works-slider{
	margin-top: 48px;
}

.works-list{
	display: -webkit-flex;
	display: flex;
	gap: 40px;
	padding: 0 calc((100% - 1200px) / 2) 8px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-left: calc((100% - 1200px) / 2);
	scrollbar-width: none;
	cursor: grab;
	-webkit-overflow-scrolling: touch;
}

.works-list::-webkit-scrollbar{
	display: none;
}

.works-list.is-drag{
	cursor: grabbing;
	scroll-snap-type: none;
	user-select: none;
}

.works-list.is-drag a,
.works-list.is-drag img{
	pointer-events: none;
}

.works-item{
	flex-shrink: 0;
	width: 520px;
	scroll-snap-align: start;
}

.works-item img{
	-webkit-user-drag: none;
}

.works-slider .img{
	border: 1px solid #E5E5E5;
	border-radius: 24px;
	overflow: hidden;
	background-color: #fff;
}

.works-slider .img img{
	width: 100%;
	aspect-ratio: 2040 / 1306;
	object-fit: cover;
	transition: transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.works-slider .box:hover .img img{
	transform: scale(1.05);
}

.works-slider .text-area{
	padding: 32px 8px 0;
}

.works-slider .number{
	display: -webkit-flex;
	display: flex;
	align-items: flex-end;
	gap: 10px;
	font-family: "Poppins", sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.0;
	letter-spacing: 0.08em;
	color: #888;
}

.works-slider .number span{
	font-size: 40px;
	font-weight: 300;
	line-height: 0.8;
	color: #111;
}

.works-slider .read{
	margin-top: 24px;
	font-size: 14px;
	line-height: 1.6;
	color: #555;
}

.works-slider .read span{
	display: block;
	margin-top: 4px;
	font-size: 24px;
	font-weight: 700;
	line-height: 1.5;
	color: #111;
}

.works-slider .text{
	margin-top: 20px;
	font-size: 14px;
	line-height: 2.0;
	color: #555;
}

@media screen and (max-width:1280px){
.works-list{
	padding: 0 40px 8px;
	scroll-padding-left: 40px;
}
}

@media screen and (max-width:1040px){
.index-works{
	padding: 100px 0 120px;
}

.index-works .title-box{
	flex-direction: column;
	align-items: flex-start;
	gap: 32px;
}

.index-works .read-area{
	width: 100%;
}

.works-control{
	margin-top: 56px;
}

.works-list{
	gap: 24px;
}

.works-item{
	width: 440px;
}

.works-slider .read span{
	font-size: 20px;
}
}

@media screen and (max-width:800px){
.index-works{
	padding: 72px 0 88px;
}

.index-works .title-en{
	font-size: 72px;
}

.index-works .title-jp{
	margin-top: 16px;
	font-size: 14px;
}

.index-works .read{
	font-size: 14px;
}

.works-control{
	margin-top: 40px;
	gap: 24px;
}

.works-arrows button{
	width: 48px;
	height: 48px;
	background-size: 16px;
}

.works-slider{
	margin-top: 32px;
}

.works-list{
	gap: 16px;
	padding: 0 20px 8px;
	scroll-padding-left: 20px;
}

.works-item{
	width: 82vw;
}

.works-slider .img{
	border-radius: 16px;
}

.works-slider .text-area{
	padding: 24px 4px 0;
}

.works-slider .number span{
	font-size: 32px;
}

.works-slider .read{
	margin-top: 18px;
	font-size: 13px;
}

.works-slider .read span{
	font-size: 18px;
}

.works-slider .text{
	margin-top: 14px;
	font-size: 13px;
}
}

/*=========================================*/
/* bottom area */
/*=========================================*/

.bottom-area{
	position: relative;
	background-color: #111;
	color: #fff;
	overflow: hidden;
}

/* 方眼の背景 */
.bottom-grid{
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-image:
	linear-gradient(rgba(255,255,255,0.07) 1px, transparent 1px),
	linear-gradient(90deg, rgba(255,255,255,0.07) 1px, transparent 1px);
	background-size: 80px 80px;
	background-position: center top;
	-webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.9) 35%, rgba(0,0,0,0.3) 70%, rgba(0,0,0,1) 100%);
	mask-image: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.9) 35%, rgba(0,0,0,0.3) 70%, rgba(0,0,0,1) 100%);
	pointer-events: none;
}

@media screen and (max-width:800px){
.bottom-grid{
	background-size: 48px 48px;
}
}

/*=========================================*/
/* index about */
/*=========================================*/

.index-about{
	position: relative;
	padding: 160px 0 100px;
}

.about-box{
	display: -webkit-flex;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 40px;
}

.about-box .text-area{
	position: relative;
	z-index: 2;
	width: 62%;
}

.about-box .title{
	display: -webkit-flex;
	display: flex;
	flex-direction: column;
	font-weight: 400;
}

.about-box .title-en{
	font-size: clamp(80px, 9vw, 140px);
	font-weight: 400;
	letter-spacing: -0.03em;
}

.about-box .title-jp{
	margin-top: 20px;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.6;
	letter-spacing: 0.1em;
	color: #9A9A9A;
}

.about-box .read{
	margin-top: 56px;
	font-size: 19px;
	font-weight: 500;
	line-height: 2.1;
}

.about-box .btn{
	margin-top: 48px;
}

/* 回転するワイヤーフレームの球体 */
.about-object{
	position: relative;
	width: 34%;
	aspect-ratio: 1 / 1;
	max-width: 460px;
	perspective: 1400px;
}

.about-object .sphere{
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	transform-style: preserve-3d;
	animation: sphereRotate 28s linear infinite;
}

.about-object .sphere span{
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	border: 1px solid rgba(255,255,255,0.45);
	border-radius: 50%;
	box-sizing: border-box;
}

.about-object .sphere span:nth-child(1){ transform: rotateY(0deg);}
.about-object .sphere span:nth-child(2){ transform: rotateY(30deg);}
.about-object .sphere span:nth-child(3){ transform: rotateY(60deg);}
.about-object .sphere span:nth-child(4){ transform: rotateY(90deg);}
.about-object .sphere span:nth-child(5){ transform: rotateY(120deg);}
.about-object .sphere span:nth-child(6){ transform: rotateY(150deg);}

.about-object .sphere span.lat:nth-child(7){ transform: rotateX(90deg);}
.about-object .sphere span.lat:nth-child(8){ transform: rotateX(90deg) translateZ(23%) scale(0.866); border-color: rgba(255,255,255,0.25);}
.about-object .sphere span.lat:nth-child(9){ transform: rotateX(90deg) translateZ(-23%) scale(0.866); border-color: rgba(255,255,255,0.25);}

@keyframes sphereRotate{
	0%{ transform: rotateX(-18deg) rotateZ(8deg) rotateY(0deg);}
	100%{ transform: rotateX(-18deg) rotateZ(8deg) rotateY(360deg);}
}

@media (prefers-reduced-motion: reduce){
.about-object .sphere{
	animation: none;
	transform: rotateX(-18deg) rotateZ(8deg) rotateY(20deg);
}
}

@media screen and (max-width:1040px){
.index-about{
	padding: 120px 0 80px;
}

.about-box .read{
	margin-top: 40px;
	font-size: 18px;
}
}

@media screen and (max-width:800px){
.index-about{
	padding: 80px 0 56px;
}

.about-box{
	flex-direction: column-reverse;
	align-items: flex-start;
	gap: 8px;
}

.about-box .text-area{
	width: 100%;
	margin-top: -110px;
}

.about-box .title-en{
	font-size: 72px;
}

.about-box .title-jp{
	margin-top: 12px;
	font-size: 13px;
}

.about-box .read{
	margin-top: 32px;
	font-size: 16px;
	line-height: 2.0;
}

.about-box .btn{
	margin-top: 32px;
}

.about-object{
	align-self: flex-end;
	width: 60%;
	margin-right: -12%;
	opacity: 0.6;
}
}

/*=========================================*/
/* bottom loop */
/*=========================================*/

.bottom-loop{
	position: relative;
	padding: 40px 0 120px;
	overflow: hidden;
	white-space: nowrap;
}

.bottom-loop .loop-text-inner{
	display: inline-flex;
	animation: loopText 60s linear infinite;
}

.bottom-loop span{
	padding-right: 0.4em;
	font-family: "Poppins", sans-serif;
	font-size: clamp(100px, 14vw, 240px);
	font-weight: 500;
	line-height: 1.1;
	letter-spacing: -0.03em;
	color: rgba(255,255,255,0.07);
}

.bottom-loop .catch{
	position: absolute;
	top: 40px;
	left: 0;
	right: 0;
	display: -webkit-flex;
	display: flex;
	justify-content: center;
	align-items: center;
	height: calc(clamp(100px, 14vw, 240px) * 1.1);
	padding: 0 20px;
	font-family: "Poppins", sans-serif;
	font-size: 22px;
	font-weight: 400;
	letter-spacing: 0.02em;
	white-space: normal;
	text-align: center;
}

@media screen and (max-width:800px){
.bottom-loop{
	padding: 24px 0 64px;
}

.bottom-loop span{
	font-size: 96px;
}

.bottom-loop .catch{
	top: 24px;
	height: 106px;
	font-size: 15px;
}
}

/*=========================================*/
/* cv */
/*=========================================*/

.cv-area{
	position: relative;
	padding: 0 0 120px;
}

.cv-box{
	display: -webkit-flex;
	display: flex;
	border: 1px solid rgba(255,255,255,0.14);
	border-radius: 30px;
	background-color: #1A1A1A;
}

.cv-form{
	flex: 1.5;
	position: relative;
	display: -webkit-flex;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 32px;
	padding: 64px 56px 56px;
	border-right: 1px solid rgba(255,255,255,0.14);
	border-top-left-radius: 30px;
	border-bottom-left-radius: 30px;
	text-decoration: none;
	isolation: isolate;
	overflow: hidden;
}

.cv-form:link,
.cv-form:visited{
	color: #fff;
	text-decoration: none;
}

.cv-form::before{
	content: "";
	position: absolute;
	z-index: -1;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: #262626;
	transform: scaleX(0);
	transform-origin: right;
	transition: transform 0.7s cubic-bezier(0.77, 0, 0.18, 1);
}

.cv-form:hover{
	color: #fff;
}

.cv-form:hover::before{
	transform: scaleX(1);
	transform-origin: left;
}

.cv-form-text{
	display: block;
}

.cv-form .title-en{
	display: block;
	font-size: clamp(64px, 7vw, 104px);
	font-weight: 400;
	letter-spacing: -0.03em;
}

.cv-form .title{
	display: block;
	margin-top: 28px;
	font-size: 16px;
	font-weight: 700;
	letter-spacing: 0.08em;
}

.cv-form .text{
	display: block;
	margin-top: 4px;
	font-size: 14px;
	color: #9A9A9A;
}

/* 四角のアイコン（ホバーで矢印が入れ替わる） */
.cv-form-icon{
	position: relative;
	flex-shrink: 0;
	display: block;
	width: 72px;
	height: 72px;
	background-color: #fff;
	overflow: hidden;
}

.cv-form-icon .arrow{
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-image: url("images/icon-arrow.svg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 24px;
	transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

.cv-form-icon .arrow:nth-child(2){
	transform: translateX(-100%);
}

.cv-form:hover .cv-form-icon .arrow:nth-child(1){
	transform: translateX(100%);
}

.cv-form:hover .cv-form-icon .arrow:nth-child(2){
	transform: translateX(0);
}

.cv-tel{
	flex: 1;
	display: -webkit-flex;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding: 64px 48px 56px;
}

.cv-tel .title{
	font-size: 15px;
	font-weight: 700;
	letter-spacing: 0.08em;
}

.cv-tel .tel{
	display: -webkit-flex;
	display: flex;
	align-items: baseline;
	gap: 10px;
	margin-top: 16px;
	font-family: "Poppins", sans-serif;
	font-size: 18px;
	font-weight: 400;
	line-height: 1.0;
}

.cv-tel .tel span{
	font-size: 44px;
	font-weight: 300;
	letter-spacing: 0.01em;
}

.cv-tel .text{
	margin-top: 16px;
	font-size: 13px;
	color: #9A9A9A;
}

@media screen and (max-width:1040px){
.cv-box{
	flex-direction: column;
	border-radius: 20px;
}

.cv-form{
	border-right: none;
	border-bottom: 1px solid rgba(255,255,255,0.14);
	border-top-left-radius: 20px;
	border-top-right-radius: 20px;
	border-bottom-left-radius: 0px;
	padding: 48px 40px;
}

.cv-tel{
	padding: 40px;
}
}

@media screen and (max-width:800px){
.cv-area{
	padding: 0 0 72px;
}

.cv-form{
	padding: 36px 24px;
	gap: 16px;
}

.cv-form .title-en{
	font-size: 52px;
}

.cv-form .title{
	margin-top: 18px;
	font-size: 14px;
}

.cv-form .text{
	font-size: 13px;
}

.cv-form-icon{
	width: 52px;
	height: 52px;
}

.cv-form-icon .arrow{
	background-size: 18px;
}

.cv-tel{
	padding: 32px 24px;
}

.cv-tel .title{
	font-size: 14px;
}

.cv-tel .tel{
	font-size: 16px;
}

.cv-tel .tel span{
	font-size: 34px;
}

.cv-tel .text{
	margin-top: 12px;
	font-size: 12px;
}
}

/*=========================================*/
/* PAGE TOP */
/*=========================================*/

.page-top{
	position: fixed;
	z-index: 900;
	right: 32px;
	bottom: 32px;
	opacity: 0;
	visibility: hidden;
	transform: translateY(20px);
	transition: opacity 0.4s, visibility 0.4s, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.page-top.is-show{
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.page-top a{
	display: block;
	width: 56px;
	height: 56px;
	border: 1px solid rgba(255,255,255,0.3);
	border-radius: 50%;
	box-sizing: border-box;
	background-color: #111;
	background-image: url("images/icon-arrow-down-w.svg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 20px;
	transform: rotate(180deg);
	transition: background-color 0.4s;
}

.page-top a:hover{
	background-color: #555;
}

@media screen and (max-width:800px){
.page-top{
	right: 16px;
	bottom: 16px;
}

.page-top a{
	width: 46px;
	height: 46px;
	background-size: 16px;
}
}

/*=========================================*/
/* FOOTER */
/*=========================================*/

.footer{
	position: relative;
	padding: 0 0 40px;
}

.footer-contents{
	display: -webkit-flex;
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 40px;
}

.footer-navi li + li{
	margin-top: 14px;
}

.footer-navi a{
	font-family: "Poppins", sans-serif;
	font-size: 14px;
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	background-image: linear-gradient(#fff, #fff);
	background-position: right bottom;
	background-repeat: no-repeat;
	background-size: 0% 1px;
	transition: background-size 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.footer-navi a:hover{
	color: #fff;
	background-position: left bottom;
	background-size: 100% 1px;
}

.footer-add{
	display: -webkit-flex;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
}

.page-top-link a{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 10px;
	font-family: "Poppins", sans-serif;
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.08em;
	color: #fff;
	text-decoration: none;
}

.page-top-link a::after{
	content: "";
	width: 22px;
	height: 22px;
	background-color: #fff;
	background-image: url("images/icon-arrow-down.svg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 14px;
	transform: rotate(180deg);
	transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.page-top-link a:hover::after{
	transform: rotate(180deg) translateY(4px);
}

.footer-add .logo{
	width: 200px;
	margin-top: 48px;
}

.footer-add .logo a{
	display: block;
}

.footer-add .logo img{
	width: 100%;
}

.footer-add .mail{
	margin-top: 16px;
	font-family: "Poppins", sans-serif;
	font-size: 14px;
	letter-spacing: 0.04em;
	color: #9A9A9A;
}

.copyright{
	margin-top: 80px;
	padding: 0 20px;
	font-family: "Poppins", sans-serif;
	font-size: 12px;
	letter-spacing: 0.06em;
	color: #8A8A8A;
	text-align: center;
}

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

@media screen and (max-width:800px){
.footer{
	padding: 0 0 24px;
}

.footer-contents{
	flex-direction: column;
	gap: 48px;
}

.footer-add{
	align-items: flex-start;
	width: 100%;
}

.page-top-link{
	display: none;
}

.footer-add .logo{
	width: 150px;
	margin-top: 0;
}

.footer-add .mail{
	font-size: 13px;
}

.copyright{
	margin-top: 48px;
	font-size: 11px;
}
}

/*=========================================*/
/* hasei common */
/*=========================================*/

/* hasei title */

.hasei-title{
	position: relative;
	padding: 200px 0 0;
}

.hasei-title .title-en{
	display: block;
	font-size: clamp(72px, 10vw, 160px);
	font-weight: 400;
	letter-spacing: -0.03em;
}

.hasei-title .title-jp{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 12px;
	margin-top: 28px;
	font-size: 16px;
	font-weight: 500;
	line-height: 1.6;
	letter-spacing: 0.1em;
}

.hasei-title .title-jp::before{
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background-color: #111;
}

.hasei-title .read{
	margin-top: 32px;
	font-size: 22px;
	font-weight: 500;
	line-height: 1.7;
}

.hasei-title h3.read.sp{
	display: none;
}

.hasei-title-img{
	position: relative;
	height: 56vh;
	min-height: 380px;
	margin-top: 40px;
	clip-path: inset(80px 140px 0 140px round 32px);
	will-change: clip-path;
}

.hasei-title-img .img{
	width: 100%;
	height: 100%;
	overflow: hidden;
}

.hasei-title-img img{
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1.2);
	transition: transform 2.2s cubic-bezier(0.22, 1, 0.36, 1) 0.3s;
}

body.is-loaded .hasei-title-img img{
	transform: scale(1.04);
}

@media screen and (max-width:1040px){
.hasei-title{
	padding: 140px 0 0;
}

.hasei-title .read{
	font-size: 18px;
}

.hasei-title-img{
	height: 44vh;
	min-height: 300px;
	clip-path: inset(60px 20px 0 70px round 24px);
}
}

@media screen and (max-width:800px){
.hasei-title{
	padding: 110px 0 0;
}

.hasei-title .title-en{
	font-size: 56px;
}

.hasei-title .title-jp{
	margin-top: 16px;
	font-size: 14px;
}

.hasei-title .read{
	margin-top: 20px;
	font-size: 16px;
}

.hasei-title h3.read.pc{
	display: none;
}

.hasei-title h3.read.sp{
	display: block;
}

.hasei-title-img{
	height: 34vh;
	min-height: 220px;
	margin-top: 8px;
	clip-path: inset(40px 20px 0 20px round 20px);
}
}

/* hasei subtitle */

.hasei-subtitle .title-en{
	display: block;
	font-size: clamp(56px, 7vw, 104px);
	font-weight: 400;
	letter-spacing: -0.03em;
}

.hasei-subtitle .title-jp{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 12px;
	margin-top: 20px;
	font-size: 16px;
	font-weight: 500;
	line-height: 1.6;
	letter-spacing: 0.1em;
}

.hasei-subtitle .title-jp::before{
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background-color: #111;
}

@media screen and (max-width:800px){
.hasei-subtitle .title-en{
	font-size: 48px;
}

.hasei-subtitle .title-jp{
	margin-top: 12px;
	font-size: 14px;
}
}

/* bottom area hasei */

.bottom-area-hasei{
	margin-top: 160px;
}

.bottom-area-hasei .bottom-loop{
	padding-top: 100px;
}

.bottom-area-hasei .bottom-loop .catch{
	top: 100px;
}

@media screen and (max-width:800px){
.bottom-area-hasei{
	margin-top: 88px;
}

.bottom-area-hasei .bottom-loop{
	padding-top: 56px;
}

.bottom-area-hasei .bottom-loop .catch{
	top: 56px;
}
}

/*=========================================*/
/* about */
/*=========================================*/

/* intro */

.about-intro{
	padding: 140px 0 140px;
}

.intro-box{
	display: -webkit-flex;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 80px;
}

.intro-box .catch{
	margin: auto;
	flex-shrink: 0;
	font-size: 32px;
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: 0.04em;
	writing-mode: vertical-rl;
}

.intro-box .text{
	width: 62%;
	font-size: 15px;
	font-weight: 500;
	line-height: 2.2;
}

/* office */

.about-office .parallax-img{
	height: 520px;
	overflow: hidden;
}

.about-office .parallax-img .img{
	height: 130%;
	margin-top: -8%;
}

.about-office .parallax-img img{
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.about-office .hasei-subtitle{
	margin-top: 120px;
}

.about-list{
	margin-top: 64px;
	border-top: 1px solid #111;
}

.about-list .row{
	position: relative;
	display: -webkit-flex;
	display: flex;
	padding: 28px 0;
	border-bottom: 1px solid #DCDCDC;
}

.about-list .row::after{
	content: "";
	position: absolute;
	left: 0;
	bottom: -1px;
	width: 160px;
	height: 1px;
	background-color: #111;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 1.2s cubic-bezier(0.77, 0, 0.18, 1) 0.3s;
}

.about-list .row.fadeIn::after{
	transform: scaleX(1);
}

.about-list dt{
	flex-shrink: 0;
	width: 240px;
	font-size: 15px;
	font-weight: 700;
	letter-spacing: 0.06em;
}

.about-list dd{
	margin: 0;
	font-size: 15px;
	line-height: 1.9;
}

.about-list dd a{
	word-break: break-all;
}

@media screen and (max-width:1040px){
.about-intro{
	padding: 100px 0;
}

.intro-box{
	flex-direction: column;
	gap: 32px;
}
	
.intro-box .catch{
	font-size: 26px;
	writing-mode: horizontal-tb;
}
	
.intro-box .text{
	width: 100%;
	font-size: 16px;
}

.about-office .parallax-img{
	height: 380px;
}

.about-office .hasei-subtitle{
	margin-top: 88px;
}
}

@media screen and (max-width:800px){
.about-intro{
	padding: 64px 0;
}

.intro-box{
	gap: 30px;
}

.intro-box .catch{
	font-size: 22px;
}

.intro-box .text{
	font-size: 15px;
	line-height: 2.0;
}

.about-office .parallax-img{
	height: 240px;
}

.about-office .hasei-subtitle{
	margin-top: 56px;
}

.about-list{
	margin-top: 40px;
}

.about-list .row{
	flex-direction: column;
	gap: 4px;
	padding: 20px 0;
}

.about-list dt{
	width: auto;
	font-size: 13px;
	color: #777;
}

.about-list dd{
	font-size: 15px;
}
}

/*=========================================*/
/* sightseeing */
/*=========================================*/

.sightseeing-faq{
	padding: 120px 0 0;
}

/* faq navi */
.faq-navi{
	display: -webkit-flex;
	display: flex;
	gap: 16px;
	margin-bottom: 120px;
}

.faq-navi li{
	flex: 1;
}

.faq-navi a{
	position: relative;
	display: -webkit-flex;
	display: flex;
	flex-direction: column;
	gap: 8px;
	height: 100%;
	padding: 24px 64px 24px 24px;
	border: 1px solid #DCDCDC;
	border-radius: 16px;
	box-sizing: border-box;
	text-decoration: none;
	color: #111;
	transition: border-color 0.4s, background-color 0.4s, color 0.4s;
}

.faq-navi a::after{
	content: "";
	position: absolute;
	right: 20px;
	top: 50%;
	width: 32px;
	height: 32px;
	margin-top: -16px;
	border-radius: 50%;
	background-color: #111;
	background-image: url("images/icon-arrow-down-w.svg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 14px;
	transition: background-color 0.4s, transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.faq-navi a:hover{
	border-color: #111;
	background-color: #111;
	color: #fff;
}

.faq-navi a:hover::after{
	background-color: #fff;
	background-image: url("images/icon-arrow-down.svg");
	transform: translateY(3px);
}

.faq-navi .number{
	font-family: "Poppins", sans-serif;
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.08em;
	color: #888;
}

.faq-navi .text{
	font-size: 15px;
	font-weight: 700;
	line-height: 1.6;
}

/* qa box */
.qa-box{
	padding: 100px 0;
	border-top: 1px solid #DCDCDC;
}

.qa-box .number{
	display: -webkit-flex;
	display: flex;
	align-items: flex-end;
	gap: 12px;
	font-family: "Poppins", sans-serif;
	line-height: 1.0;
}

.qa-box .number span{
	font-size: 14px;
	font-weight: 500;
	letter-spacing: 0.08em;
	color: #888;
}

.qa-box .number strong{
	font-size: 72px;
	font-weight: 300;
	line-height: 0.8;
	letter-spacing: -0.02em;
}

/* question */
.qa-box .question{
	display: -webkit-flex;
	display: flex;
	align-items: flex-end;
	gap: 48px;
}

.qa-box .question .read{
	font-size: 40px;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.02em;
}

.qa-box .question .read.sp{
	display: none;
}

.qa-box .question > *{
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 1.0s cubic-bezier(0.22, 1, 0.36, 1), transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.qa-box.is-show .question > *{
	opacity: 1;
	transform: translateY(0);
}

.qa-box.is-show .question > *:nth-child(n+2){
	transition-delay: 0.15s;
}

/* answer */
.qa-box .answer{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 72px;
	margin-top: 64px;
	padding: 56px;
	border-radius: 32px;
	background-color: #EEEFF1;
}

.qa-box .answer .img{
	width: 42%;
	flex-shrink: 0;
	border-radius: 20px;
	overflow: hidden;
	background-color: #fff;
	clip-path: inset(0 0 100% 0 round 20px);
	transition: clip-path 1.4s cubic-bezier(0.77, 0, 0.18, 1) 0.3s;
}

.qa-box.is-show .answer .img{
	clip-path: inset(0 0 0 0 round 20px);
}

.qa-box .answer .img img{
	width: 100%;
	transform: scale(1.15);
	transition: transform 1.8s cubic-bezier(0.22, 1, 0.36, 1) 0.3s;
}

.qa-box.is-show .answer .img img{
	transform: scale(1);
}

.qa-box .answer .text-box > *{
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 1.0s cubic-bezier(0.22, 1, 0.36, 1) 0.5s, transform 1.2s cubic-bezier(0.22, 1, 0.36, 1) 0.5s;
}

.qa-box.is-show .answer .text-box > *{
	opacity: 1;
	transform: translateY(0);
}

.qa-box .answer .number strong{
	font-size: 56px;
}

.qa-box .answer .read{
	margin-top: 28px;
	font-size: 22px;
	font-weight: 700;
	line-height: 1.6;
}

.qa-box .answer .read.sp{
	display: none;
}

.qa-box .answer .text{
	margin-top: 20px;
	font-size: 15px;
	line-height: 2.0;
	color: #444;
}

/* link */
.sightseeing-link{
	padding: 40px 0 0;
}

.sightseeing-link .link-box{
	display: -webkit-flex;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 40px;
	padding: 72px 64px;
	border: 1px solid #111;
	border-radius: 32px;
}

.sightseeing-link .text{
	font-size: 28px;
	font-weight: 700;
	line-height: 1.6;
}

@media screen and (max-width:1040px){
.sightseeing-faq{
	padding: 88px 0 0;
}

.faq-navi{
	flex-direction: column;
	gap: 10px;
	margin-bottom: 80px;
}

.qa-box{
	padding: 80px 0;
}

.qa-box .question{
	gap: 32px;
}

.qa-box .question .read{
	font-size: 30px;
}

.qa-box .answer{
	gap: 40px;
	padding: 40px;
}

.qa-box .answer .read{
	font-size: 19px;
}

.sightseeing-link .link-box{
	padding: 56px 40px;
}

.sightseeing-link .text{
	font-size: 22px;
}
}

@media screen and (max-width:800px){
.sightseeing-faq{
	padding: 56px 0 0;
}

.faq-navi{
	margin-bottom: 48px;
}

.faq-navi a{
	padding: 16px 56px 16px 18px;
	border-radius: 12px;
}

.faq-navi .text{
	font-size: 14px;
}

.qa-box{
	padding: 56px 0;
}

.qa-box .question{
	flex-direction: column;
	align-items: flex-start;
	gap: 20px;
}

.qa-box .number strong{
	font-size: 52px;
}

.qa-box .question .read.pc{
	display: none;
}

.qa-box .question .read.sp{
	display: block;
	font-size: 16px;
	font-weight: 500;
}

.qa-box .question .read.sp .large{
	font-size: 26px;
	font-weight: 700;
	line-height: 1.4;
}

.qa-box .answer{
	flex-direction: column;
	gap: 28px;
	margin-top: 36px;
	padding: 20px 20px 32px;
	border-radius: 20px;
}

.qa-box .answer .img{
	width: 100%;
	border-radius: 12px;
}

.qa-box .answer .number strong{
	font-size: 44px;
}

.qa-box .answer .read{
	margin-top: 20px;
	font-size: 18px;
}

.qa-box .answer .read.pc{
	display: none;
}

.qa-box .answer .read.sp{
	display: block;
}

.qa-box .answer .text{
	font-size: 14px;
}

.sightseeing-link .link-box{
	flex-direction: column;
	align-items: flex-start;
	padding: 40px 24px;
	border-radius: 20px;
}

.sightseeing-link .text{
	font-size: 19px;
}
}

/*=========================================*/
/* contact */
/*=========================================*/

.contact-area{
	padding: 140px 0 0;
}

.contact-intro{
	display: -webkit-flex;
	display: flex;
	justify-content: space-between;
	gap: 64px;
}

.contact-intro .title{
	flex-shrink: 0;
	font-size: 36px;
	font-weight: 700;
	line-height: 1.4;
}

.contact-intro .text{
	width: 60%;
	font-size: 16px;
	line-height: 2.1;
}

.contact-form{
	margin-top: 80px;
}

.form-list{
	border-top: 1px solid #111;
}

.form-list .row{
	display: -webkit-flex;
	display: flex;
	align-items: flex-start;
	padding: 28px 0;
	border-bottom: 1px solid #DCDCDC;
}

.form-list dt{
	display: -webkit-flex;
	display: flex;
	align-items: center;
	gap: 12px;
	flex-shrink: 0;
	width: 280px;
	padding-top: 14px;
	font-size: 15px;
	font-weight: 700;
	letter-spacing: 0.04em;
}

.form-list .required{
	display: inline-block;
	padding: 2px 10px;
	border-radius: 20px;
	background-color: #111;
	font-size: 11px;
	font-weight: 500;
	line-height: 1.6;
	color: #fff;
}

.form-list dd{
	flex: 1;
	margin: 0;
}

.form-list .note{
	display: inline-block;
	margin-left: 16px;
	font-size: 13px;
	color: #777;
}

.contact-form input[type="text"],
.contact-form textarea{
	width: 100%;
	max-width: 640px;
	padding: 14px 18px;
	border: 1px solid #DCDCDC;
	border-radius: 10px;
	box-sizing: border-box;
	background-color: #F7F7F8;
	font-family: "Noto Sans JP", sans-serif;
	font-size: 16px;
	line-height: 1.6;
	color: #111;
	transition: border-color 0.3s, background-color 0.3s, box-shadow 0.3s;
	-webkit-appearance: none;
	appearance: none;
}

.contact-form input[size="30"]{
	max-width: 400px;
}

.contact-form textarea{
	max-width: 100%;
	resize: vertical;
}

.contact-form input[type="text"]:focus,
.contact-form textarea:focus{
	border-color: #111;
	background-color: #fff;
	box-shadow: 0 0 0 4px rgba(17,17,17,0.06);
	outline: none;
}

.form-btn{
	margin-top: 56px;
	text-align: center;
}

.form-btn ul{
	display: -webkit-flex;
	display: flex;
	justify-content: center;
	gap: 16px;
}

.form-btn input[type="reset"],
.form-btn input[type="submit"],
.form-btn input[type="button"]{
	min-width: 220px;
	height: 64px;
	padding: 0 32px;
	border: 1px solid #111;
	border-radius: 64px;
	background-color: #fff;
	font-family: "Noto Sans JP", sans-serif;
	font-size: 15px;
	font-weight: 500;
	letter-spacing: 0.08em;
	color: #111;
	cursor: pointer;
	transition: background-color 0.4s, color 0.4s;
	-webkit-appearance: none;
	appearance: none;
}

.form-btn input[type="submit"]{
	background-color: #111;
	color: #fff;
}

.form-btn input[type="reset"]:hover,
.form-btn input[type="button"]:hover{
	background-color: #111;
	color: #fff;
}

.form-btn input[type="submit"]:hover{
	background-color: #555;
	border-color: #555;
}

.form-btn p{
	margin-top: 32px;
	font-size: 14px;
	color: #555;
}

.form-btn p a{
	color: #111;
}

/* confirm（mail.php） */
.contact-form .formTable{
	width: 100%;
	border-top: 1px solid #111;
	border-collapse: collapse;
}

.contact-form .formTable th,
.contact-form .formTable td{
	padding: 24px 0;
	border-bottom: 1px solid #DCDCDC;
	font-size: 15px;
	line-height: 1.9;
	text-align: left;
	vertical-align: top;
}

.contact-form .formTable th{
	width: 280px;
	font-weight: 700;
}

.contact-error{
	text-align: center;
}

.contact-error h4{
	font-size: 18px;
	font-weight: 700;
	line-height: 1.7;
}

.contact-error .error_messe,
.contact-error .error-text{
	margin-top: 16px;
	color: #C00;
}

/* complete */
.contact-complete{
	padding: 40px 0;
	text-align: center;
}

.contact-complete .icon{
	display: block;
	width: 88px;
	height: 88px;
	margin: 0 auto;
	border-radius: 50%;
	background-color: #111;
	position: relative;
}

.contact-complete .icon::after{
	content: "";
	position: absolute;
	top: 30px;
	left: 33px;
	width: 22px;
	height: 12px;
	border-left: 2px solid #fff;
	border-bottom: 2px solid #fff;
	transform: rotate(-45deg);
}

.contact-complete .title{
	margin-top: 40px;
	font-size: 32px;
	font-weight: 700;
	line-height: 1.5;
}

.contact-complete .text{
	margin-top: 24px;
	font-size: 16px;
	line-height: 2.1;
}

@media screen and (max-width:1040px){
.contact-area{
	padding: 100px 0 0;
}

.contact-intro{
	flex-direction: column;
	gap: 20px;
}

.contact-intro .text{
	width: 100%;
}

.form-list dt,
.contact-form .formTable th{
	width: 200px;
}
}

@media screen and (max-width:800px){
.contact-area{
	padding: 64px 0 0;
}

.contact-intro .title{
	font-size: 24px;
}

.contact-intro .text{
	font-size: 14px;
}

.contact-form{
	margin-top: 48px;
}

.form-list .row{
	flex-direction: column;
	gap: 10px;
	padding: 20px 0;
}

.form-list dt{
	width: auto;
	padding-top: 0;
	font-size: 14px;
}

.form-list dd{
	width: 100%;
}

.form-list .note{
	display: block;
	margin: 6px 0 0;
	font-size: 12px;
}

.contact-form input[size="30"]{
	max-width: 100%;
}

.form-btn{
	margin-top: 40px;
}

.form-btn ul{
	flex-direction: column-reverse;
	gap: 12px;
}

.form-btn input[type="reset"],
.form-btn input[type="submit"],
.form-btn input[type="button"]{
	width: 100%;
	height: 56px;
}

.form-btn p{
	margin-top: 24px;
	font-size: 13px;
	text-align: left;
}

.contact-form .formTable th,
.contact-form .formTable td{
	display: block;
	width: auto;
	padding: 0;
	border-bottom: none;
}

.contact-form .formTable th{
	padding-top: 20px;
	font-size: 13px;
	color: #777;
}

.contact-form .formTable td{
	padding: 4px 0 20px;
	border-bottom: 1px solid #DCDCDC;
}

.contact-complete .icon{
	width: 64px;
	height: 64px;
}

.contact-complete .icon::after{
	top: 22px;
	left: 23px;
	width: 18px;
	height: 9px;
}

.contact-complete .title{
	margin-top: 28px;
	font-size: 24px;
}

.contact-complete .text{
	font-size: 14px;
	text-align: left;
}
}

/*=========================================*/
/* privacy */
/*=========================================*/

.privacy-area{
	padding: 140px 0 0;
}

.privacy-read{
	max-width: 860px;
	font-size: 20px;
	font-weight: 500;
	line-height: 2.0;
}

.privacy-list{
	margin-top: 80px;
	border-top: 1px solid #111;
}

.privacy-list .box{
	display: -webkit-flex;
	display: flex;
	gap: 48px;
	padding: 48px 0;
	border-bottom: 1px solid #DCDCDC;
}

.privacy-list .number{
	flex-shrink: 0;
	width: 80px;
	font-family: "Poppins", sans-serif;
	font-size: 40px;
	font-weight: 300;
	line-height: 1.0;
	color: #BDBDBD;
}

.privacy-list .title{
	font-size: 22px;
	font-weight: 700;
	line-height: 1.5;
}

.privacy-list .text{
	margin-top: 16px;
	font-size: 15px;
	line-height: 2.0;
	color: #444;
}

@media screen and (max-width:1040px){
.privacy-area{
	padding: 100px 0 0;
}
}

@media screen and (max-width:800px){
.privacy-area{
	padding: 64px 0 0;
}

.privacy-read{
	font-size: 16px;
}

.privacy-list{
	margin-top: 48px;
}

.privacy-list .box{
	flex-direction: column;
	gap: 12px;
	padding: 32px 0;
}

.privacy-list .number{
	font-size: 30px;
}

.privacy-list .title{
	font-size: 18px;
}

.privacy-list .text{
	margin-top: 10px;
	font-size: 14px;
}
}

/*=========================================*/
/* portfolio */
/*=========================================*/

.portfolio-area{
	padding: 140px 0 0;
}

.portfolio-read{
	font-size: 20px;
	font-weight: 500;
	line-height: 1.9;
}

.portfolio-list{
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 64px 40px;
	margin-top: 72px;
}

.portfolio-list li:nth-child(3n+2){ transition-delay: 0.1s;}
.portfolio-list li:nth-child(3n){ transition-delay: 0.2s;}

.portfolio-list .img{
	border: 1px solid #E5E5E5;
	border-radius: 20px;
	overflow: hidden;
	background-color: #fff;
}

.portfolio-list .img img{
	width: 100%;
	aspect-ratio: 1020 / 653;
	object-fit: cover;
	transition: transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.portfolio-list .box:hover .img img{
	transform: scale(1.06);
}

.portfolio-list .name{
	margin-top: 20px;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.6;
}

.portfolio-list .link{
	margin-top: 6px;
	font-size: 13px;
	line-height: 1.6;
	word-break: break-all;
}

.portfolio-list .link a{
	color: #777;
	text-decoration: none;
	background-image: linear-gradient(#111, #111);
	background-position: right bottom;
	background-repeat: no-repeat;
	background-size: 0% 1px;
	transition: background-size 0.5s cubic-bezier(0.22, 1, 0.36, 1), color 0.3s;
}

.portfolio-list .link a:hover{
	color: #111;
	background-position: left bottom;
	background-size: 100% 1px;
}

@media screen and (max-width:1040px){
.portfolio-area{
	padding: 100px 0 0;
}

.portfolio-list{
	grid-template-columns: repeat(2, 1fr);
	gap: 48px 24px;
}
}

@media screen and (max-width:800px){
.portfolio-area{
	padding: 64px 0 0;
}

.portfolio-read{
	font-size: 16px;
}

.portfolio-list{
	grid-template-columns: 1fr;
	gap: 40px;
	margin-top: 40px;
}

.portfolio-list li{
	transition-delay: 0s !important;
}

.portfolio-list .img{
	border-radius: 14px;
}

.portfolio-list .name{
	margin-top: 14px;
	font-size: 15px;
}
}

/* confirm（mail.php）の見出し余白 */
.contact-form .contact-intro{
	margin-bottom: 56px;
}

@media screen and (max-width:800px){
.contact-form .contact-intro{
	margin-bottom: 32px;
}
}

/* 下層ページ上部の事務所名 */
.hasei-title .site-read{
	margin-bottom: 20px;
	font-size: 12px;
	font-weight: 500;
	line-height: 1.6;
	letter-spacing: 0.12em;
	color: #888;
}

@media screen and (max-width:800px){
.hasei-title .site-read{
	margin-bottom: 12px;
	font-size: 11px;
	letter-spacing: 0.06em;
}
}
