@charset "UTF-8";
/*
 * sub_layout.css
 *
 */

/* !submainvisual
---------------------------------------------------------- */
.mainvisual {
	position: relative;
	width:100%;
	height:600px;
	overflow: hidden;
}
.mainvisual__bg {
	position: absolute;
	width:100%;
	height:100%;
	z-index:0;
}
.mainvisual__bg-image {
	width: 100%;
	height:100%;
	background-repeat:no-repeat;
	background-position:50% 50%;
	background-size: cover;
	position: relative;
	z-index:1;
}
.mainvisual__bg-image--about {
	background-image: url(../../about/img/main_bg.jpg);
}
.mainvisual__bg-image--service {
	background-image: url(../../service/img/main_bg.jpg);
}
.mainvisual__bg-image--recruit {
	background-image: url(../../recruit/img/main_bg.jpg);
}
.mainvisual__bg-image--contact {
	background-image: url(../../contact/img/main_bg.jpg);
}
.mainvisual__bg-image--sitemap {
	background-image: url(../../sitemap/img/main_bg.jpg);
}
.mainvisual__filter {
	position: absolute;
	width:100%;
	height: 50%;
	background: rgb(34, 50, 50, .2);
	background: linear-gradient(0deg,rgba(34, 50, 50, 0.9) 0%, rgba(34, 50, 50, 0) 100%);
	z-index: 2;
	left: 0;
	bottom:0;
}
.mainvisual__content {
	position: absolute;
	width:100%;
	height:100%;
	z-index:3;
}

/* --- アニメーション定義 --- */
.mainvisual__copy {
    position: absolute;
    bottom: 104px;
    left: 5%;
    z-index: 4;
    font-size: 60px;
    font-weight: var(--font-weight-bold);
    color: #FFF;
    line-height: 1.5;
	letter-spacing: 0.04em;
}
.mainvisual__copy .char {
    display: inline-block;
    opacity: 0;
    transform: translateY(100%);
    animation: charReveal 0.8s cubic-bezier(0.22, 1, 0.36, 1) forwards;
    /* 遅延して、流れるような速さに調整 */
    animation-delay: calc(0.08s * var(--i) + 1.2s);
}

/* 湧き上がる動きの定義 */
@keyframes charReveal {
    0% {
        opacity: 0;
        transform: translateY(100%);
        /* 登場時に少しだけぼかすとより洗練されます */
        filter: blur(5px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
        filter: blur(0);
    }
}

.mainvisual__copy-en {
	position: absolute;
    bottom: 60px;
    left: 5%;
    font-family: var(--font-family-en);
    font-size: 24px;
    color: #AFE7F6;
	letter-spacing: 0.04em;
    z-index: 3;
    /* 初期状態 */
    opacity: 0;
    animation: modernFadeIn 1.8s cubic-bezier(0.19, 1, 0.22, 1) forwards;
    animation-delay: 1.8s; /* 日本語が終わる頃に開始 */
}
/* アクセント：英語コピーの左側に小さなラインを追加 */
.mainvisual__copy-en::before {
    content: "";
    display: inline-block;
    width: 0;
    height: 1px;
    background: #AFE7F6;
    vertical-align: middle;
    margin-right: 0;
    transition: all 1s ease 1.2s;
}

/* 画面表示後にラインを伸ばす演出 */
.mainvisual__copy-en {
    display: flex;
    align-items: center;
}

/* 英語コピー：ぼかしから鮮明に、かつ広がる */
@keyframes modernFadeIn {
    0% {
        opacity: 0;
        filter: blur(10px);
        letter-spacing: -0.5em;
        transform: translateX(-10px);
    }
    100% {
        opacity: 1;
        filter: blur(0);
        letter-spacing: 0.05em;
        transform: translateX(0);
    }
}

@media screen and (max-width:1039px){
.mainvisual {
	height:400px;
}
.mainvisual__copy {
    bottom: 75px;
    font-size: 50px;
}
.mainvisual__copy-en {
    bottom: 35px;
    font-size: 20px;
}
}

@media screen and (max-width:767px){
.mainvisual {
	height:250px;
}
.mainvisual__copy {
    bottom: 46px;
    font-size: 26px;
}
.mainvisual__copy-en {
    bottom: 20px;
    font-size: 14px;
}
}

/* !パンくずリスト
---------------------------------------------------------- */
.breadcrumbs {
	width:100%;
	padding: 20px 50px;
	overflow: hidden;
}

.breadcrumbs__list {
	width:100%;
	max-width:1200px;
	display: flex;
	flex-wrap: wrap;
    align-items: center;
    font-size: 14px;
	margin: 0 auto;
}

.breadcrumbs__item:not(:last-child)::after {
    content: "\f054";
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    margin: 0 1.6em;
    font-size: 10px;
}

.breadcrumbs__link {
    color: #2D98FF;
    text-decoration: none;
    transition: 0.5s;
}

.breadcrumbs__link:hover {
    opacity: 0.7;
}

@media screen and (max-width: 1039px) {
.breadcrumbs {
	padding: 20px 30px;
}

.breadcrumbs__list {
    font-size: 13px;
}

.breadcrumbs__link:hover {
    opacity: 1;
}
}

@media screen and (max-width: 767px) {
.breadcrumbs {
	display: none;
}
}

/* !contents
---------------------------------------------------------- */
.contents__triangle {
	position: absolute;
	width: 0;
	height: 0;
	border-top: 340px solid var(--second-color);   /* 高さ */
	border-left: 204px solid transparent; /* 幅（左側を透明に） */
	top:0;
	right: 0;
	z-index: 0;
}

.contents__triangle-anime {
  transform: translate(203px, 0);
  transition: .7s .6s;
}

.contents__triangle-anime.is-show {
  transform: translate(0, 0);
}

@media screen and (max-width: 1039px) {
.contents__triangle {
	border-top: 280px solid var(--second-color);
	border-left: 168px solid transparent;
}

.contents__triangle-anime {
  transform: translate(167px, 0);
}
}

@media screen and (max-width: 767px) {
.contents__triangle {
	border-top: 200px solid var(--second-color);
	border-left: 120px solid transparent;
}

.contents__triangle-anime {
  transform: translate(119px, 0);
}
}

/* !ローカルナビ
---------------------------------------------------------- */
.local-nav {
	width:100%;
	padding:100px 50px 0 50px;
}

.local-nav__items {
	width:100%;
	max-width: 1200px;
	padding:30px 0;
	margin: 0 auto;
	border-top:1px solid #ddd;
	border-bottom:1px solid #ddd;
	display: flex;
	flex-wrap: wrap;
}

.local-nav__item {
	width: 33.33%;
    text-align: left;
	margin: 6px 0;
}

.local-nav__link {
	display: block;
	font-size: 14px;
	font-weight: var(--font-weight-bold);
	line-height: 1.6;
    position: relative;
    text-decoration: none;
    color: inherit;
	padding:6px 0 6px 30px;
}
	.local-nav__link:hover {
		color: var(--second-color);
    	transition: .6s;
	}

.local-nav__arrow {
	display: block;
    position: absolute;
	width:20px;
	height: 20px;
	border-radius: 50%;
	border:1px solid var(--accent-color);
	background: var(--accent-color);
    top: 9px;
    left: 0;
    transition: .3s;
	transform: scale(0.3);
}
	.local-nav__arrow span {
		position: relative;
		display: inline-block;
		width: 8px;
		height: 1px;
		margin: 2.1px 0;
		border-radius: 9999px;
		background-color: var(--accent-color);
		top:-6px;
		left:5px;
		transition: .6s;
	}
		.local-nav__arrow span::before,
		.local-nav__arrow span::after {
			content: "";
			position: absolute;
			top: calc(50% - 0.5px);
			right: 0;
			width: 4px;
			height: 1px;
			border-radius: 9999px;
			background-color: var(--accent-color);
			transform-origin: calc(100% - 0.5px) 50%;
			transition: .6s;
		}
		.local-nav__arrow span::before {
			transform: rotate(45deg);
		}
		.local-nav__arrow span::after {
			transform: rotate(-45deg);
		}
		.local-nav__link:hover .local-nav__arrow {
			background: #FFF;
			transform: scale(1);
		}
			.local-nav__link:hover .local-nav__arrow span {
				background-color: var(--accent-color);
			}
				.local-nav__link:hover .local-nav__arrow span::before,
				.local-nav__link:hover .local-nav__arrow span::after {
					background-color: var(--accent-color);
				}
	.local-nav__link--current {
		color: var(--second-color);
	}
		.local-nav__link--current:hover .local-nav__arrow {
			background: var(--accent-color);
			transform: scale(0.3);
		}

@media screen and (max-width: 1039px) {
.local-nav {
	padding:90px 30px 0 30px;
}

.local-nav__items {
	padding:25px 0;
}

.local-nav__item {
	margin: 0;
}

.local-nav__link {
	padding:12px 6px 12px 30px;
}
	.local-nav__link:hover {
		color: var(--base-font-color);
	}

.local-nav__arrow {
	background: #FFF;
    top: 15px;
	transform: none;
}
		.local-nav__link:hover .local-nav__arrow {
			background: #FFF;
			transform: scale(1);
		}
	.local-nav__link--current .local-nav__arrow {
		background: var(--accent-color);
		transform: scale(.3);
	}
		.local-nav__link--current:hover {
			color: var(--second-color);
		}
		.local-nav__link--current:hover .local-nav__arrow {
			background: var(--accent-color);
			transform: scale(.3);
		}
}

@media screen and (max-width: 767px) {
.local-nav {
	padding:70px 25px 0 25px;
}

.local-nav__items {
	padding:20px 0;
}

.local-nav__item {
	width: 100%;
}
}
