@charset "utf-8";
/* トップページ */

/* メインビジュアル */
.main{
	position: relative;
	height: 757px;
	overflow: hidden;
}

.main_photo{
	position: absolute;
	inset: 0;
	background-image: url("../img/index/mainvisual.jpg");
	background-repeat: no-repeat;
	background-size: cover;
	background-position: center;
}

/* 写真の上に重ねる、緑と青の飾り（写真を替えても残る） */
.main_deco{
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	pointer-events: none;
}

.main_inner{
	position: relative;
	padding-top: 172px;
}

.catchcopy{
	font-size: 35px;
	font-weight: 700;
	line-height: 1.6;
	letter-spacing: 0.1em;
	color: #0b3a5b;
}

/* 実績の丸（顧客満足度・取扱保険会社の数など） */
.main_stats{
	display: flex;
	gap: 22px;
	margin-top: 70px;
}

.stat{
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 262px;
	height: 262px;
	color: #ffffff;
	text-align: center;
	border-radius: 50%;
}

/* 内側の白い輪 */
.stat::before{
	content: "";
	position: absolute;
	inset: 7px;
	border: 2px solid rgba(255, 255, 255, 0.77);
	border-radius: 50%;
}

.stat_green{
	background-color: #33aa8f;
}

.stat_yellow{
	background-color: #ffbe32;
}

.stat_label{
	position: relative;
	padding: 0 10px 4px;
	font-size: 20px;
	font-weight: 700;
	line-height: 1.4;
}

/* 見出しの下の帯 */
.stat_label::after{
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -6px;
	height: 6px;
	background-color: #ffbe32;
	transform: skewX(-30deg);
}

.stat_yellow .stat_label::after{
	background-color: #ffffff;
	opacity: 0.6;
}

.stat_value{
	margin-top: 20px;
	font-size: 54px;
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: 0.06em;
}

.stat_unit{
	margin-left: 2px;
	font-size: 30px;
}

/* 最新のお知らせ（右下の紺の帯） */
.main_news{
	position: absolute;
	right: 0;
	bottom: 0;
	left: calc(50% + 24px);
	display: flex;
	align-items: center;
	gap: 48px;
	height: 50px;
	padding-left: 57px;
	color: #ffffff;
	background-color: #29557b;
	clip-path: polygon(30px 0, 100% 0, 100% 100%, 0 100%);
}

.main_news_title{
	flex-shrink: 0;
	font-size: 18px;
	font-weight: 700;
	letter-spacing: 0.1em;
}

/* お知らせが1件もなければ帯ごと出さない */
.main_news:not(:has(.main_news_item)){
	display: none;
}

.main_news_item{
	display: flex;
	align-items: center;
	gap: 36px;
	min-width: 0;
	padding-right: 20px;
	font-size: 15px;
}

.main_news_item .news_category{
	padding: 1px 14px;
	font-size: 12px;
	font-weight: 700;
	color: #29557b;
	background-color: #ffffff;
	border: none;
}

.main_news_item .news_date{
	flex-shrink: 0;
	font-weight: 500;
}

.main_news_text{
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	text-decoration: underline;
	text-underline-offset: 4px;
}

/* 帯は、お知らせの欄と同じ並びを読むので、1件目だけを出す */
.main_news_item ~ .main_news_item{
	display: none;
}

.main_news_item:hover{
	opacity: 0.8;
}





/* お知らせ */
.news{
	margin-top: 89px;
	padding: 67px 0 60px;
	background-color: #f3f8fa;
}

.news_head{
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 30px;
}

/* 見出し（日本語と英語を横に並べる） */
.title_inline{
	display: flex;
	align-items: baseline;
	gap: 18px;
}

.title_inline .title_ja{
	color: #002e52;
}

.title_inline .title_en{
	margin-top: 0;
}

/* カテゴリーで絞り込むボタン */
.news_tabs{
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 22px;
}

.news_tabs[hidden]{
	display: none;
}

.news_tab{
	width: 163px;
	height: 43px;
	padding: 0 10px;
	font-size: 15px;
	font-weight: 500;
	color: #33aa8f;
	background-color: #ffffff;
	border: 1px solid #33aa8f;
	cursor: pointer;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

.news_tab:hover{
	opacity: 0.7;
}

.news_tab.is-active{
	color: #ffffff;
	background-color: #33aa8f;
}

.news_list{
	margin-top: 40px;
	border-top: 1px solid #a9bac5;
}

.news_item{
	border-bottom: 1px solid #a9bac5;
}

/* 最初は4件だけ出す（カテゴリーのボタンを押すと js/news-tabs.js が出し直す） */
.news_item:nth-child(n+5){
	display: none;
}

.news_item[hidden]{
	display: none;
}

.news_item.is-shown{
	display: block;
}

.news_item a{
	display: flex;
	align-items: center;
	min-height: 71px;
	padding: 12px 0;
}

.news_item a:hover{
	opacity: 0.7;
}

.news_item .news_date{
	flex-shrink: 0;
	width: 110px;
	font-size: 14px;
}

.news_category{
	flex-shrink: 0;
	display: inline-block;
	min-width: 114px;
	padding: 2px 10px;
	font-size: 13px;
	font-weight: 500;
	line-height: 1.6;
	text-align: center;
	color: #33aa8f;
	background-color: #ffffff;
	border: 1px solid #33aa8f;
}

.news_category:empty{
	visibility: hidden;
}

.main_news_item .news_category:empty{
	display: none;
}

.news_text{
	margin-left: 32px;
	font-size: 15px;
	font-weight: 500;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

.news .btn{
	margin-top: 54px;
}





/* サービス案内 */
.service{
	padding-top: 123px;
}

.service .title_ja{
	color: #00415d;
}

.service_item{
	display: flex;
	margin-top: 87px;
}

.service .lead + .service_item{
	margin-top: 86px;
}

.service_img{
	width: 50%;
	flex-shrink: 0;
}

/* 写真はお客さんごとに大きさがちがうので、枠の比率を決めて切り抜く */
.service_img img{
	display: block;
	width: 100%;
	aspect-ratio: 960 / 503;
	object-fit: cover;
}

.service_body{
	display: flex;
	align-items: center;
	width: 50%;
	padding: 40px 20px 40px 50px;
}

.service_text{
	width: 100%;
	max-width: 552px;
}

.service_item_reverse{
	flex-direction: row-reverse;
}

.service_item_reverse .service_body{
	justify-content: flex-end;
	padding: 40px 47px 40px 20px;
}

.service_title{
	display: flex;
	align-items: center;
	gap: 20px;
	padding-bottom: 22px;
	font-size: 28px;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.1em;
	border-bottom: 1px solid #bbbbbb;
}

.service_icon{
	width: 40px;
	height: 41px;
	object-fit: contain;
	flex-shrink: 0;
}

.service_text p{
	margin-top: 22px;
	font-size: 14px;
}

.service_text .btn1{
	margin-top: 56px;
}





/* お客様の声 */
.voice{
	position: relative;
	margin-top: 122px;
	padding-bottom: 56px;
}

/* 下半分の水色の背景（カードの写真の途中から） */
.voice::before{
	content: "";
	position: absolute;
	top: 303px;
	right: 0;
	bottom: 0;
	left: 0;
	background-color: #f2f7f9;
}

.voice > *{
	position: relative;
}

.voice_slider{
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 37px;
	margin-top: 55px;
}

.voice_viewport{
	width: 1203px;
	max-width: calc(100% - 200px);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none; /* スクロールバーを隠す */
}

.voice_viewport::-webkit-scrollbar{
	display: none;
}

.voice_track{
	display: flex;
	gap: 27px;
}

/* 3枚ずつ見せる */
.voice_item{
	flex: 0 0 calc((100% - 54px) / 3);
	scroll-snap-align: start;
	background-color: #ffffff;
}

.voice_img img{
	display: block;
	width: 100%;
	aspect-ratio: 383 / 253;
	object-fit: cover;
}

.voice_body{
	padding: 46px 36px 56px;
}

.voice_name{
	font-size: 18px;
	font-weight: 500;
	line-height: 1.5;
	color: #33aa8f;
}

.voice_text{
	margin-top: 18px;
	font-size: 14px;
	line-height: 2;
}

/* 前・次のボタン */
.voice_arrow{
	position: relative;
	flex-shrink: 0;
	width: 63px;
	height: 63px;
	padding: 0;
	background-color: #33aa8f;
	border: none;
	border-radius: 50%;
	cursor: pointer;
}

.voice_arrow::before{
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	border-top: 8px solid transparent;
	border-bottom: 8px solid transparent;
	border-left: 14px solid #ffffff;
	transform: translate(-35%, -50%);
}

.voice_prev::before{
	transform: translate(-65%, -50%) scaleX(-1);
}

.voice_arrow:hover{
	opacity: 0.7;
}

.voice_arrow:disabled{
	opacity: 0.3;
	cursor: default;
}

/* 何枚目かの点（js/voice-slider.js が作る） */
.voice_dots{
	display: flex;
	justify-content: center;
	gap: 13px;
	margin-top: 30px;
}

.voice_dot{
	width: 17px;
	height: 17px;
	padding: 0;
	background-color: #dde7eb;
	border: none;
	border-radius: 50%;
	cursor: pointer;
}

.voice_dot.is-active{
	background-color: #33aa8f;
}

.voice .btn{
	margin-top: 59px;
}





/* 会社概要・採用情報・スタッフ紹介・よくある質問 */
.links{
	padding: 121px 0 123px;
}

.links_list{
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 42px 44px;
}

.links_item{
	position: relative;
	overflow: hidden;
}

.links_img{
	display: block;
	width: 100%;
	aspect-ratio: 579 / 343;
	object-fit: cover;
}

/* 写真を暗くして文字を読みやすくする */
.links_item::after{
	content: "";
	position: absolute;
	inset: 0;
	background-color: rgba(0, 25, 42, 0.4);
	pointer-events: none;
}

.links_body{
	position: absolute;
	inset: 0;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: 20px;
	color: #ffffff;
	text-align: center;
}

.links_en{
	padding: 0 14px 6px;
	font-size: 22px;
	font-weight: 500;
	line-height: 1.4;
	letter-spacing: 0.06em;
	border-bottom: 1px solid #ffffff;
}

.links_ja{
	margin-top: 6px;
	font-size: 34px;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.06em;
}

.links_body .btn2{
	margin-top: 64px;
}





/* お問い合わせ */
.contact{
	padding: 56px 0 50px;
	color: #f3f8fa;
	background-color: #33aa8f;
}

.contact .title_ja,
.contact .title_en{
	color: #f3f8fa;
}

.contact .lead{
	margin-top: 46px;
}

.contact_buttons{
	display: flex;
	justify-content: center;
	align-items: flex-start;
	gap: 33px;
	margin-top: 46px;
}

.contact_mail{
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	width: 314px;
	height: 63px;
	font-size: 18px;
	font-weight: 700;
	color: #33aa8f;
	background-color: #f3f8fa;
	border-radius: 50px;
}

.contact_mail:hover{
	opacity: 0.8;
}

.contact_mail .mail_icon{
	width: 22px;
	height: 22px;
}

.contact_tel{
	text-align: center;
}

.contact_tel .tel_link{
	justify-content: center;
	width: 314px;
	height: 63px;
	font-size: 28px;
	color: #f3f8fa;
	border: 1px solid #f3f8fa;
	border-radius: 50px;
}

.contact_tel .tel_circle{
	background-color: #f3f8fa;
}

.contact_tel .tel_icon{
	fill: #33aa8f;
}

.contact_tel .tel_hours{
	font-size: 13px;
	font-weight: 700;
}





/* 取扱保険会社 */
.insurance{
	padding: 128px 0 128px;
}

.insurance_list{
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 19px 20px;
	max-width: 896px;
	margin: 48px auto 0;
}

.insurance_item{
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 78px;
	padding: 10px 16px;
	font-size: 17px;
	font-weight: 700;
	line-height: 1.5;
	text-align: center;
	background-color: #f2f7f9;
	border: 1px solid #b0b8ba;
}





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

	/* メインビジュアル */
	.main{
		height: 640px;
	}

	.main_inner{
		padding-top: 120px;
	}

	.catchcopy{
		font-size: 30px;
	}

	.main_stats{
		margin-top: 50px;
	}

	.stat{
		width: 210px;
		height: 210px;
	}

	.stat_label{
		font-size: 17px;
	}

	.stat_value{
		margin-top: 14px;
		font-size: 44px;
	}

	.stat_unit{
		font-size: 24px;
	}

	.main_news{
		left: 30%;
	}

	/* お知らせ */
	.news_head{
		flex-direction: column;
		align-items: flex-start;
	}

	.news_tabs{
		justify-content: flex-start;
		gap: 12px;
	}

	.news_tab{
		width: 140px;
	}

	/* サービス案内 */
	.service_title{
		font-size: 22px;
	}

	.service_body,
	.service_item_reverse .service_body{
		padding: 30px;
	}

	/* お客様の声（2枚ずつ） */
	.voice_slider{
		gap: 16px;
	}

	.voice_viewport{
		max-width: calc(100% - 180px);
	}

	.voice_item{
		flex-basis: calc((100% - 27px) / 2);
	}

	/* リンク */
	.links_ja{
		font-size: 28px;
	}

	.links_body .btn2{
		margin-top: 40px;
	}
}




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

	/* メインビジュアル（デザインのとおり、写真の上にキャッチコピーと実績の丸を重ねる。大きさは画面の幅に合わせる） */
	.main{
		height: 55vw;
		min-height: 0;
	}

	.main_photo{
		background-image: url("../img/index/mainvisual_sp.jpg");
	}

	.main_inner{
		padding-top: 12vw;
	}

	.catchcopy{
		font-size: max(11px, 3.1vw);
		line-height: 1.5;
		letter-spacing: 0.04em;
	}

	.main_stats{
		gap: 3.5vw;
		margin-top: 4vw;
	}

	.stat{
		width: 19.2vw;
		height: 19.2vw;
	}

	.stat::before{
		inset: 0.5vw;
		border-width: 1px;
	}

	.stat_label{
		padding: 0 1vw 0.3vw;
		font-size: max(8px, 2.6vw);
		letter-spacing: 0;
	}

	.stat_label::after{
		bottom: -0.6vw;
		height: 0.6vw;
	}

	.stat_value{
		margin-top: 1.2vw;
		font-size: max(12px, 4.4vw);
	}

	.stat_unit{
		margin-left: 1px;
		font-size: max(8px, 2.6vw);
	}

	/* 最新のお知らせの帯（写真の下の端に重ねる） */
	.main_news{
		left: 2vw;
		gap: 3vw;
		height: 6.7vw;
		min-height: 22px;
		padding-left: 6vw;
		clip-path: polygon(3vw 0, 100% 0, 100% 100%, 0 100%);
	}

	.main_news_title{
		font-size: max(9px, 2.6vw);
	}

	.main_news_item{
		gap: 2.5vw;
		padding-right: 2vw;
		font-size: max(9px, 2.2vw);
	}

	.main_news_item .news_category{
		padding: 0 2vw;
		font-size: max(8px, 1.9vw);
	}

	/* お知らせ（デザインのとおり、見出しは中央に縦に並べ、絞り込みのボタンは出さない） */
	.news_head{
		align-items: center;
	}

	.title_inline{
		flex-direction: column;
		align-items: center;
		gap: 4px;
	}

	.news_tabs{
		display: none !important;
	}

	.news{
		margin-top: 0;
		padding: 50px 0 50px;
	}

	.title_inline{
		gap: 12px;
	}

	.news_tabs{
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		gap: 8px;
		width: 100%;
	}

	.news_tab{
		width: 100%;
		height: 38px;
		font-size: 13px;
	}

	.news_list{
		margin-top: 30px;
	}

	.news_item a{
		flex-wrap: wrap;
		gap: 6px 12px;
		padding: 14px 0;
	}

	.news_item .news_date{
		width: auto;
		font-size: 13px;
	}

	.news_category{
		min-width: 90px;
		font-size: 11px;
	}

	.news_category:empty{
		display: none;
	}

	.news_text{
		width: 100%;
		margin-left: 0;
		font-size: 14px;
		white-space: normal;
	}

	.news .btn{
		margin-top: 30px;
	}

	/* サービス案内（写真の下に文章） */
	.service{
		padding-top: 60px;
	}

	.service_item,
	.service_item_reverse{
		flex-direction: column;
		margin-top: 40px;
	}

	.service .lead + .service_item{
		margin-top: 40px;
	}

	.service_img,
	.service_body{
		width: 100%;
	}

	.service_body,
	.service_item_reverse .service_body{
		padding: 24px 20px 0;
	}

	.service_title{
		gap: 12px;
		padding-bottom: 14px;
		font-size: 19px;
	}

	.service_icon{
		width: 30px;
		height: 31px;
	}

	.service_text p{
		margin-top: 16px;
	}

	.service_text .btn{
		text-align: center;
	}

	.service_text .btn1{
		display: block;
		margin: 30px auto 0;
	}

	/* お客様の声（1枚ずつ） */
	.voice{
		margin-top: 60px;
		padding-bottom: 50px;
	}

	.voice::before{
		top: 220px;
	}

	.voice_slider{
		gap: 8px;
		margin-top: 30px;
		padding: 0 8px;
	}

	.voice_viewport{
		max-width: none;
		flex: 1;
	}

	.voice_item{
		flex-basis: 100%;
	}

	.voice_body{
		padding: 24px 20px 30px;
	}

	.voice_name{
		font-size: 16px;
	}

	.voice_text{
		margin-top: 10px;
	}

	.voice_arrow{
		width: 36px;
		height: 36px;
	}

	.voice_arrow::before{
		border-top-width: 5px;
		border-bottom-width: 5px;
		border-left-width: 9px;
	}

	.voice_dots{
		gap: 8px;
		margin-top: 20px;
	}

	.voice_dot{
		width: 11px;
		height: 11px;
	}

	.voice .btn{
		margin-top: 30px;
	}

	/* リンク（1列） */
	.links{
		padding: 60px 0;
	}

	.links_list{
		grid-template-columns: 1fr;
		gap: 16px;
	}

	.links_en{
		font-size: 15px;
	}

	.links_ja{
		font-size: 22px;
	}

	.links_body .btn2{
		margin-top: 20px;
	}

	/* お問い合わせ */
	.contact{
		padding: 50px 0 40px;
	}

	.contact .lead{
		margin-top: 24px;
	}

	.contact_buttons{
		flex-direction: column;
		align-items: center;
		gap: 16px;
		margin-top: 30px;
	}

	.contact_mail,
	.contact_tel .tel_link{
		width: 280px;
		height: 56px;
	}

	.contact_mail{
		font-size: 16px;
	}

	.contact_tel .tel_link{
		font-size: 24px;
	}

	/* 取扱保険会社（2列） */
	.insurance{
		padding: 60px 0;
	}

	.insurance_list{
		grid-template-columns: repeat(2, 1fr);
		gap: 10px;
		margin-top: 30px;
	}

	.insurance_item{
		min-height: 60px;
		font-size: 14px;
	}
}
