@charset "utf-8";

/*---------------------------------------------------------
 index_mv 
 ---------------------------------------------------------*/

#index_wrap {
	position: relative;
}

#index_mv {
	position: relative;
	background: #fff;
/* 	height: 160vh;
	min-height: 160dvh; */
	overflow: hidden;
}

#index_mv .mv_img {
	position: relative;
	width: 100%;
	height: 100%;
}

#index_mv .mv_bg {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 50%;
	padding-top: 120px;
}

#top_h1 {
	position: absolute;
	left: 9%;
	top: 29%;
	max-width: 100%;
	-moz-text-shadow: 0px 0px 8px rgba(0, 0, 0, 0.35);
	-webkit-text-shadow: 0px 0px 8px rgba(0, 0, 0, 0.35);
	-ms-text-shadow: 0px 0px 8px rgba(0, 0, 0, 0.35);
	/*     text-shadow: 0px 0px 8px rgba(0, 0, 0, 0.35); */
	transform: translateY(-50%);
}

img.top_ttl_img{
  display:block;
  /* 最小 240px、通常はビューポートの 32vw、最大 720px まで */
  inline-size: clamp(240px, 50vw, 845px);
  height: auto;
}

#top_h1 h1 {
	font-size: 5rem;
	letter-spacing: 0.06em;
	color: #fff;
	line-height: 1.6;
	font-weight: 500;
	margin-bottom: 24px;
	max-height: 100%;

}

#top_h1 span {
	display: block;
	font-size: 2.5rem;
	letter-spacing: 0.06em;
	color: #333;
	line-height: 1.875;
	font-weight: 500;
	max-height: 100%;
	margin: 33px 0 0 45px;

}

/* === スクロールボタン（MV中央に重ねる） === */

.scroll_btn {
	position: absolute;
	left: 50%;
	bottom: 90px;
	transform: translateX(-50%);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 100px;
	height: 100px;
	border-radius: 50%;
	background: #279866;
	color: #fff;
	text-decoration: none;
	font-weight: 600;
	letter-spacing: .1em;
	z-index: 60;
	transition: transform .2s ease, box-shadow .2s ease;
}

.scroll_btn:hover {
	transform: translateX(-50%) scale(1.05);
}

.scroll_arrow {
	display: block;
	width: 2px;
	height: 24px;
	background: #fff;
	margin-bottom: 6px;
	position: relative;
	animation: scroll_arrow 1.5s infinite;
}

.scroll_arrow::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: 0;
	transform: translateX(-50%) rotate(45deg);
	width: 8px;
	height: 8px;
	border-right: 2px solid #fff;
	border-bottom: 2px solid #fff;
}

.scroll_text {
	padding-top: 5px;
	font-size: 1.1rem;
}

/* アニメーション */
@keyframes scroll_arrow {
	0% {
		transform: translateY(0);
		opacity: 1;
	}

	70% {
		transform: translateY(8px);
		opacity: .3;
	}

	100% {
		transform: translateY(0);
		opacity: 1;
	}
}


@keyframes scroll_down {
	0% {
		transform: translateY(0);
		opacity: 1;
	}

	70% {
		transform: translateY(12px);
		opacity: .3;
	}

	100% {
		transform: translateY(0);
		opacity: 1;
	}
}

/* === 緑円ボタン（MV内 常時表示） === */
.btn_badge {
	position: absolute;
	right: 5%;
	top: 13%;
	width: 390px;
	height: 390px;
	border: none;
	background: url(../../../img/crayon_circle.png) no-repeat center/contain;
	color: #fff;
	font-family: 'Zen Kaku Gothic New', 'Noto Sans JP', '游ゴシック体', 'Yu Gothic', 'Hiragino Kaku Gothic ProN', sans-serif;
	text-align: center;
	padding: 135px 24px 40px;
	cursor: pointer;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	line-height: 1.5;
	z-index: 50;
	transition: transform .2s ease;
}

.btn_badge:hover {
	transform: scale(1.03);
}

.badge_title {
	font-weight: 500;
	font-size: 2.4rem;
	margin-bottom: 6px;
}

.badge_sub {
	font-size: 1.6rem;
	margin-bottom: 10px;
}

.badge_plus {
	font-size: 1.3rem;
	margin-left: 4px;
}

/* === モーダル === */
.modal {
	position: fixed;
	inset: 0;
	display: none;
	justify-content: center;
	align-items: center;
	z-index: 99999;
}

.modal.is_open {
	display: flex;
}

.modal_overlay {
	position: absolute;
	inset: 0;
	background: #ffffff9e;
}

.modal_panel {
	/*   position: relative; */
	background: #279866;
	border-radius: 30px;
	max-width: 1140px;
	width: 90%;
	overflow: hidden;
	z-index: 1000;
}

.modal_header {
	display: flex;
	gap: 40px;
	max-width: 880px;
	width: 100%;
	color: #fff;
	align-items: center;
	margin: 0 auto;
	padding: 55px 0 35px;

}

h3#vision_title {
	font-size: 3.3rem;
}

.modal_body {
	padding: 30px 40px;
	color: #fff;
	line-height: 1.8;
}

#vision_modal .modal_body {
	background: #fff;
	border-radius: 20px;
	margin: 0 90px;
	padding: 28px 28px;
	color: #333;
	line-height: 2.0;
	letter-spacing: .04em;
	text-align: center;
	font-size: 1.8rem;
}

.modal_body p {
	margin-bottom: 1.4em;
	text-align: center;
}

/* 左上ロゴ */
#vision_modal .vision_logo {
	position: relative;
	width: 188px;
	height: auto;
}

/* ---- モーダル本体は基準枠 ---- */
#vision_modal .modal_panel,
#vision_modal .modal_header,
#vision_modal .modal_body,
#vision_modal .modal_footer {
	position: relative;
}

/* 草のイラスト（vision_dic01.png） */
#vision_modal .modal_header::before {
	content: "";
	position: absolute;
	bottom: 13px;
	left: 160px;
	width: 100px;
	height: 56px;
	background: url(../../../img/vision_dic01.png) no-repeat center/contain;
	pointer-events: none;
	z-index: 2;
}

/* タイトル横（vision_dic02.png） */
#vision_modal .modal_header::after {
	content: "";
	position: absolute;
	top: 60px;
	right: 24px;
	width: 120px;
	height: 96px;
	background: url(../../../img/vision_dic02.png) no-repeat center/contain;
	pointer-events: none;
	z-index: 2;
}

/* 白い枠の左（vision_dic03.png） */
#vision_modal .modal_body::before {
	content: "";
	position: absolute;
	bottom: 90px;
	left: 62px;
	width: 63px;
	height: 91px;
	background: url(../../../img/vision_dic03.png) no-repeat center / contain;
	pointer-events: none;
	z-index: 3;
}

/* 白い枠の右（vision_dic04.png） */
#vision_modal .modal_body::after {
	content: "";
	position: absolute;
	bottom: 13%;
	right: 9%;
	width: 87px;
	height: 129px;
	background: url(../../../img/vision_dic04.png) no-repeat center / contain;
	pointer-events: none;
	z-index: 3;
}

/* 車（vision_dic05.png） */
#vision_modal .modal_footer::before {
	content: "";
	position: absolute;
	left: 9%;
	bottom: 100px;
	transform: translateX(-50%);
	width: 150px;
	height: 100px;
	background: url(../../../img/vision_dic05.png) no-repeat center / contain;
	pointer-events: none;
	z-index: 5;
}


.modal_footer {
	display: flex;
	justify-content: center;
	padding: 55px;
}

.modal_close_btn {
	background: none;
	border: none;
	font-weight: 700;
	color: #1aa25c;
	cursor: pointer;
}

.modal_close_btn:hover {
	opacity: 0.7;
	transform: .3s;
}



/* === モーダル Close エリア === */
.modal_close_btn {
	display: flex;
	gap: 7.5px;
	flex-direction: column;
	align-items: center;
	background: none;
	border: none;
	font-size: 2.4rem;
	font-weight: 700;
	color: #FFF101;
	cursor: pointer;
}

.modal_close_icon {
	position: relative;
	display: inline-block;
	width: 22px;
	height: 22px;
	margin-top: 4px;
}

.modal_close_icon::before,
.modal_close_icon::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	width: 100%;
	height: 3px;
	background: #FFF101;
	transform: translate(-50%, -50%) rotate(45deg);
	border-radius: 2px;
}

.modal_close_icon::after {
	transform: translate(-50%, -50%) rotate(-45deg);
}


.badge_plus.is_open::after {
	transform: translate(-50%, -50%) rotate(-45deg);
	height: 100%;
}

/* 右下固定：エントリーボタン */
.btn_entry_fixed {
position: fixed;
    right: 0;
    bottom: 10%;
    z-index: 1000;
    display: flex;
    align-items: flex-end;
    width: 98.4px;
    height: 109.01px;
    background: url(../../../img/btn_entry_o.png) no-repeat center / contain;
    color: #fff;
    font-size: 1.2rem;
    font-weight: 700;
    text-decoration: none;
    /* text-align: center; */
    line-height: 1.4;
    justify-content: flex-end;
    padding: 0 5px 5px 0;
    line-height: 1.2;
}

.btn_entry_fixed:hover {
	opacity: 0.85;
	transform: scale(1.05);
	transition: 0.2s ease;
}

/* アクセシビリティ：フォーカス可視化 */
.btn_badge:focus-visible,
.btn_entry_fixed:focus-visible,
.modal_close_btn:focus-visible {
	outline: 3px solid #00c2ff;
	outline-offset: 2px;
}

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

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

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

	.btn_entry_fixed {
		width: 80px;
		height: 89px;
		font-size: 1rem;
		line-height: 1.4;
		line-height: 1.2;
		bottom: 13%;
	}

}

@media screen and (max-width:767px) {
	#index_mv {
		margin-bottom: 40px;
/* 		height: 160vh;
		min-height: 160dvh; */
		overflow: unset;
	}

	#index_mv .mv_bg {
/* 		object-position: 77% 50%; */
		margin-top: 77px;
	}

	img.top_ttl_img {
		width: 85%;
	}

	#top_h1 {
		top: 12% !important;
	}

	#top_h1 span {
		margin: 0 !important;
		text-align: left;
	}

	#top_h1 {
		left: 0;
		max-width: 100%;
		padding: 0 20px;
	}

	#top_h1 h1 {
		font-size: 3.6rem;
		font-size: clamp(2.6rem, 8.4vw, 4.8rem);
		margin-bottom: 10px;
	}

	#top_h1 span {
		font-size: 1.3rem;
		font-size: clamp(1.3rem, 2.9vw, 1.8rem);
	}

	.badge_title {
		font-size: .95rem;
	}

	.badge_sub {
		font-size: .72rem;
	}

	.badge_cta {
		font-size: .9rem;
	}

	/* 車がはみ出しすぎないように微調整 */
	#vision_modal .modal_footer::before {
		bottom: -10px;
		width: clamp(120px, 38vw, 160px);
		height: auto;
		aspect-ratio: 240 / 130;
		/* 画像比率に合わせる（任意） */
	}

	/* 左右の飾りも小さめに */
	#vision_modal .modal_body::before {
		left: -10px;
	}

	#vision_modal .modal_body::after {
		right: -10px;
	}


	/* ===== Modal: SP最適化（できるだけ1画面） ===== */
	#vision_modal .modal {
		padding: max(10px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));
	}

	#vision_modal .modal_panel {
		display: flex;
		flex-direction: column;
		width: min(96vw, 680px);
		max-height: 92svh;
		/* 表示域を超えない */
		border-radius: 18px;
	}

	/* ヘッダーをコンパクトに */
	#vision_modal .modal_header {
		gap: 14px;
		padding: 18px 16px 5px;
		max-width: none;
	}

	#vision_modal .vision_logo {
		width: 80px;
		/* ロゴを縮小 */
	}

	/* タイトルは可変サイズ・改行抑制 */
	#vision_modal h3#vision_title {
		font-size: clamp(1.35rem, 4.8vw, 1.5rem);
		line-height: 1.35;
		letter-spacing: .01em;
	}

	/* タイトル内の <br> はSPでは詰めたい場合は無効化 */
	#vision_modal h3#vision_title br {
		display: none;
	}

	/* 本文エリアはスクロールしても、全体は1画面維持 */
	#vision_modal .modal_body {
		flex: 1 1 auto;
		margin: 10px 14px;
		/* 枠の余白を圧縮 */
		padding: 35px 12px 20px;
		border-radius: 12px;
		font-size: clamp(0.95rem, 3.7vw, 1.05rem);
		line-height: 1.65;
		overflow: hidden;
		/* ここだけスクロール */
		-webkit-overflow-scrolling: touch;
	}


	/* フッターも省スペース化 */
	#vision_modal .modal_footer {
		padding: 14px 10px 16px;
	}

	#vision_modal .modal_close_btn {
		font-size: 1.2rem;
		gap: 0px;
	}

	#vision_modal .modal_close_icon {
		width: 18px;
		height: 18px;
	}

	/* 装飾系（草・タイトル横・白枠左右・車）はSPでは抑える or 位置調整 */
	#vision_modal .modal_header::before,
	#vision_modal .modal_header::after {
		transform: scale(.8);
		/*     opacity: .85; */
	}

	#vision_modal .modal_header::before {
		width: 80px;
		left: 76px;
		bottom: -19px;

	}

	#vision_modal .modal_header::after {
		right: 6px;
		top: 61px;
	}

	#vision_modal .modal_body::before,
	#vision_modal .modal_body::after {
		transform: scale(.75);
		/*     opacity: .85; */
	}

	#vision_modal .modal_body::before {
		width: 50px;
		left: 0;
		bottom: -15px;
	}

	#vision_modal .modal_body::after {
		width: 60px;
		right: -1px;
		bottom: -8%;

	}

	/* 右下の車ははみ出し防止（既存の指定をさらに抑える） */
	#vision_modal .modal_footer::before {
		left: 19%;
		bottom: 45px;
		width: clamp(90px, 30vw, 100px);
	}

	/* バッジ（緑円ボタン）はモーダルに被らないよう少し小さく＆下げる */
	.btn_badge {
		width: 180px;
		height: 180px;
		right: 1%;
		top: 19%;
		padding: 71px 12px 18px;
	}

	.badge_title {
		font-size: 1.3rem;
	}

	.badge_sub {
		display: none;
		/* 		font-size: 1.0rem; */
	}


	/* スクロールボタン */
	.scroll_btn {
		width: 76px;
		height: 76px;
		bottom: 0.5%;
	}

	.scroll_text {
		font-size: .95rem;
	}

}

@media (min-width: 768px) and (max-width: 1200px) {
	
	h3#vision_title {
    font-size: 2.5rem;
}
	
  /* 画面端に少しパディング（天地左右） */
  #vision_modal.modal {
    padding: clamp(16px, 3vh, 28px) clamp(16px, 3vw, 28px);
  }
  #vision_modal .modal_panel {
    /* 端末に合わせて少し小さめに/左右も詰まらない */
    width: min(92vw, 1040px);
    max-height: 88svh;     /* 画面高の88%まで */
    border-radius: 24px;
  }
  #vision_modal .modal_header{
    padding: 36px 20px 22px;
    gap: 24px;
  }
  #vision_modal .modal_body{
    margin: 14px 22px;
    padding: 24px 22px;
    border-radius: 14px;
    overflow: auto;        /* 中身だけスクロール */
    -webkit-overflow-scrolling: touch;
  }
  #vision_modal .modal_footer{
    padding: 20px;
  }

  /* 飾りはやや縮小＆位置微調整（必要に応じて調整） */
  #vision_modal .modal_header::before,
  #vision_modal .modal_header::after,
  #vision_modal .modal_body::before,
  #vision_modal .modal_body::after{
    transform: scale(.9);
  }
  #vision_modal .modal_header::before{ left: 130px; bottom: 0; }
  #vision_modal .modal_header::after{ top: 48px; right: 16px; }
  #vision_modal .modal_body::before{ left: 1%; bottom: 70px; }
  #vision_modal .modal_body::after{ right: 1%; bottom: 12%; }
  #vision_modal .modal_footer::before{
    left: 12%;
    bottom: 84px;
    width: 130px; height: 86px;
  }
}

@media screen and (max-width: 440px) {
  #vision_modal .modal_body::before,
  #vision_modal .modal_body::after {
    content: none !important;
    display: none !important;
  }
}

/* inview */
#btn_vision.inview{
    opacity: 0;
    transform: translateY(18px);
    transition:
      opacity 1.1s ease,
      transform 1.1s cubic-bezier(0.22, 1, 0.36, 1);
    will-change: opacity, transform;
  }

  #btn_vision.inview.is_show{
    opacity: 1;
    transform: none;
  }

  @media (prefers-reduced-motion: reduce){
    #btn_vision.inview{ transition: none; transform: none; }
  }