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

/* ------ メインビジュアル（写真に白い縦書きのキャッチコピー） ------ */
.main{
	position: relative;
	height: 799px; /* ヘッダー（99px）が上に重なるので、そのぶん高くする（写真の見えるところは 700px） */
	overflow: hidden;
	background-color: #f3f8fa;
}

.main_img,
.main_img img{
	display: block;
	width: 100%;
	height: 100%;
}

.main_img img{
	object-fit: cover;
}

/* キャッチコピーの後ろ（左側）だけ、写真を少し暗くして文字を読みやすくする */
.main::before{
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(90deg, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.12) 35%, rgba(0, 0, 0, 0) 55%);
	pointer-events: none;
}

.main_copy{
	position: absolute;
	top: 199px; /* ヘッダーの下から（99px + 100px） */
	left: max(30px, calc(50% - 503px));
	z-index: 2;
}

.catchcopy{
	writing-mode: vertical-rl;
	font-size: 48px;
	font-weight: 900;
	line-height: 1.5;
	letter-spacing: 0.12em;
	color: #ffffff;
	text-shadow: 0 0 6px rgba(0, 0, 0, 0.45), 0 0 20px rgba(0, 0, 0, 0.35);
}



/* ------ 私たちについて（左に文章、右に重なった写真2枚） ------ */
.about{
	overflow: hidden;
	padding: 90px 0 130px;
}

.about_inner{
	display: grid;
	grid-template-columns: minmax(0, 1fr) 47.5%;
	grid-template-areas:
		"title imgs"
		"body imgs";
	grid-template-rows: auto 1fr;
	column-gap: 60px;
}

.about_title{
	grid-area: title;
	align-self: end;
	padding-top: 120px;
}

.about_body{
	grid-area: body;
}

.about_text{
	margin-top: 48px;
	font-size: 28px;
	font-weight: 700;
	line-height: 1.8;
	letter-spacing: 0.04em;
}

/* 写真2枚（前の写真が左下、うしろの写真が右上。右の写真は画面の外まで出る） */
.about_imgs{
	grid-area: imgs;
	position: relative;
	margin-right: -9.25%;
	aspect-ratio: 570 / 696;
}

.about_img,
.about_img_sub{
	position: absolute;
	width: 100%;
	aspect-ratio: 570 / 558;
}

.about_img{
	bottom: 0;
	left: 0;
	z-index: 1;
}

.about_img_sub{
	top: 0;
	left: 56.7%;
}

/* うしろの写真がないときは、前の写真だけの高さにする */
.about_imgs:not(:has(.about_img_sub)){
	aspect-ratio: 570 / 558;
}

.about_img img,
.about_img_sub img{
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 24px;
}



/* ------ お知らせ（薄いベージュの帯） ------ */
.news{
	padding: 96px 0 80px;
	background-color: #f9f4eb;
}

.news_list{
	margin-top: 40px;
	border-top: 2px solid #c9c2b6;
}

.news_item{
	border-bottom: 2px solid #c9c2b6;
}

.news_item a{
	display: flex;
	align-items: center;
	gap: 22px;
	padding: 20px 0;
	font-size: 15px;
	line-height: 1.6;
}

.news_item a:hover{
	opacity: 0.7;
}

.news_date{
	flex-shrink: 0;
	width: 88px;
}

.news_category{
	flex-shrink: 0;
	min-width: 114px;
	padding: 3px 12px;
	font-size: 13px;
	text-align: center;
	color: #33aaa9;
	background-color: #ffffff;
	border: 1px solid #33aaa9;
}

.news_category:empty{
	visibility: hidden;
}

.news_title{
	flex: 1;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}



/* ------ ブログ（写真のカード） ------ */
.blog{
	padding: 120px 0 0;
}

.blog_list{
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
	margin-top: 56px;
}

/* PC では3件だけ（スマホは2列で4件） */
.blog_item:nth-child(n+4){
	display: none;
}

.blog_item a{
	display: block;
}

.blog_item a:hover{
	opacity: 0.8;
}

/* 写真のない記事は、薄い緑のグラデーションの枠だけ出す */
.blog_img{
	aspect-ratio: 385 / 253;
	overflow: hidden;
	background: linear-gradient(135deg, #e3f3f2 0%, #f3f8fa 100%);
	border-radius: 14px;
}

.blog_img_in,
.blog_img img{
	display: block;
	width: 100%;
	height: 100%;
}

.blog_img img{
	object-fit: cover;
}

.blog_meta{
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 6px 14px;
	margin-top: 16px;
	font-size: 14px;
	line-height: 1.5;
	color: #9d9894;
}

.blog_category{
	padding: 2px 12px;
	font-size: 12px;
	color: #ffffff;
	background-color: #ff9a2d;
}

.blog_category:empty{
	display: none;
}

.blog_title{
	margin-top: 10px;
	font-size: 17px;
	font-weight: 700;
	line-height: 1.6;
	color: #28211f;
}



/* ------ サービス内容（写真と文章が左右交互） ------ */
.service{
	padding: 120px 0 0;
}

.service_list{
	margin-top: 40px;
}

.service_item{
	display: flex;
	align-items: center;
	gap: 64px;
	margin-top: 86px;
}

.service_item:nth-child(even){
	flex-direction: row-reverse;
}

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

.service_img img{
	display: block;
	width: 100%;
	aspect-ratio: 584 / 383;
	object-fit: cover;
	border-radius: 20px;
}

.service_body{
	flex: 1;
	min-width: 0;
}

/* 名前（前に短い線） */
.service_name{
	display: flex;
	align-items: center;
	gap: 14px;
	font-size: 28px;
	font-weight: 700;
	line-height: 1.5;
}

.service_name::before{
	content: "";
	flex-shrink: 0;
	width: 20px;
	height: 2px;
	background-color: #9d9894;
}

.service_text{
	margin-top: 32px;
	font-size: 16px;
	line-height: 1.9;
}

.service_body .btn_left{
	margin-top: 48px;
}



/* ------ 施設のご案内（写真のカード2つ） ------ */
.facility{
	padding: 140px 0 140px;
}

.facility_list{
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 76px;
	margin-top: 56px;
}

.facility_item a{
	display: block;
}

.facility_item a:hover{
	opacity: 0.8;
}

.facility_img img{
	display: block;
	width: 100%;
	aspect-ratio: 563 / 343;
	object-fit: cover;
	border-radius: 20px;
}

/* 施設の名前（右に緑の丸い矢印。下に線） */
.facility_name{
	position: relative;
	margin-top: 26px;
	padding: 0 50px 18px 0;
	font-size: 22px;
	font-weight: 700;
	line-height: 1.5;
	color: #28211f;
	border-bottom: 4px solid #f3efe8;
}

.facility_name::after{
	content: "";
	position: absolute;
	top: 2px;
	right: 0;
	width: 35px;
	height: 35px;
	background: #33aaa9 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 9'%3E%3Cpath d='M0 0l8 4.5L0 9z' fill='%23fff'/%3E%3C/svg%3E") no-repeat 14px center / 9px 10px;
	border-radius: 50%;
}



/* ------ お問い合わせ（緑の帯） ------ */
.contact_band{
	padding: 74px 0 60px;
	color: #ffffff;
	background-color: #33aaa9;
}

.contact_band_lead{
	margin-top: 24px;
	font-size: 18px;
	font-weight: 700;
	text-align: center;
}

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

/* 電話の側の箱はボタンと同じ幅にする（受付時間が長いと箱が広がり、隣のフォームのボタンが縮められて文字がはみ出しそうになるため） */
.contact_band_tel{
	flex-shrink: 0;
	width: 483px;
	text-align: center;
}

.contact_band_btn{
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	gap: 14px;
	width: 483px;
	height: 93px;
	padding: 0 28px;
	white-space: nowrap;
	font-weight: 700;
	line-height: 1.2;
	border-radius: 47px;
}

.contact_band_btn:hover{
	opacity: 0.85;
}

.contact_band_btn_tel{
	font-size: 32px;
	letter-spacing: 0.04em;
	color: #ffffff;
	border: 3px solid #ffffff;
}

.contact_band_btn_tel .icon_tel{
	width: 28px;
	height: 28px;
	fill: currentColor;
}

.contact_band_btn_form{
	font-size: 24px;
	color: #33aaa9;
	background-color: #ffffff;
}

.contact_band_btn_form .icon_mail{
	width: 28px;
	height: 21px;
}

/* 受付時間：見出しを左に、時間を右に並べる（時間が何行あっても、行の頭がそろう） */
.contact_band_hours{
	display: flex;
	justify-content: center;
	gap: 1em;
	margin-top: 14px;
	font-size: 18px;
	font-weight: 700;
	line-height: 1.6;
	text-align: left;
}

.contact_band_hours_label{
	flex-shrink: 0;
}





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

	.contact_band_btns{
		gap: 30px;
	}

	.contact_band_tel,
	.contact_band_btn{
		width: 420px;
	}

	.contact_band_btn_tel{
		font-size: 28px;
	}

	.contact_band_btn_form{
		font-size: 22px;
	}

	.contact_band_hours{
		font-size: 16px;
	}

	.about_text{
		font-size: 24px;
	}
}





/* ------ スマホ・タブレット ------ */
@media screen and (max-width: 1000px){

	/* 縦横比と最低の高さを一緒に使うと幅が広がるので、高さを幅から決める */
	.main{
		height: max(330px, 69.3vw);
	}

	/* スマホは写真が小さいので、キャッチコピーの後ろを広めに暗くする */
	.main::before{
		background: linear-gradient(90deg, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0.2) 45%, rgba(0, 0, 0, 0.04) 75%);
	}

	.main_copy{
		top: 24px;
		left: 24px;
	}

	.catchcopy{
		font-size: 24px;
		line-height: 1.45;
		text-shadow: 0 0 4px rgba(0, 0, 0, 0.55), 0 0 14px rgba(0, 0, 0, 0.45);
	}

	.about{
		padding: 56px 0 70px;
	}

	.about_inner{
		grid-template-columns: minmax(0, 1fr);
		grid-template-areas:
			"title"
			"imgs"
			"body";
		grid-template-rows: auto;
	}

	.about_title{
		padding-top: 0;
		text-align: center;
	}

	/* 写真2枚（前が左下、うしろが右上） */
	.about_imgs{
		width: 100%;
		max-width: 520px;
		margin: 30px auto 0;
		aspect-ratio: 750 / 600;
	}

	.about_img,
	.about_img_sub{
		width: 62%;
	}

	.about_img{
		left: 0;
	}

	.about_img_sub{
		left: auto;
		right: 0;
	}

	.about_imgs:not(:has(.about_img_sub)) .about_img{
		width: 100%;
	}

	.about_img img,
	.about_img_sub img{
		border-radius: 16px;
	}

	.about_text{
		margin-top: 30px;
		font-size: 18px;
	}

	.news{
		padding: 56px 0 50px;
	}

	.news .title{
		text-align: center;
	}

	.news_list{
		margin-top: 28px;
	}

	.news_item a{
		flex-wrap: wrap;
		gap: 8px 14px;
		padding: 16px 0;
		font-size: 14px;
	}

	.news_date{
		width: auto;
	}

	.news_category{
		min-width: 90px;
		padding: 1px 10px;
		font-size: 12px;
	}

	.news_title{
		flex-basis: 100%;
		white-space: normal;
		display: -webkit-box;
		-webkit-box-orient: vertical;
		-webkit-line-clamp: 2;
	}

	.blog{
		padding-top: 64px;
	}

	.blog_list{
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 26px 14px;
		margin-top: 30px;
	}

	.blog_item:nth-child(4){
		display: block;
	}

	.blog_img{
		border-radius: 10px;
	}

	.blog_meta{
		gap: 4px 8px;
		margin-top: 10px;
		font-size: 12px;
	}

	.blog_category{
		font-size: 11px;
		padding: 1px 8px;
	}

	.blog_title{
		margin-top: 6px;
		font-size: 14px;
	}

	.service{
		padding-top: 70px;
	}

	.service_list{
		margin-top: 0;
	}

	.service_item,
	.service_item:nth-child(even){
		flex-direction: column;
		align-items: stretch;
		gap: 22px;
		margin-top: 40px;
	}

	.service_img{
		width: 100%;
	}

	.service_img img{
		border-radius: 14px;
	}

	.service_name{
		font-size: 19px;
	}

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

	.service_body .btn_left{
		margin-top: 26px;
	}

	.facility{
		padding: 70px 0 70px;
	}

	.facility_list{
		grid-template-columns: minmax(0, 1fr);
		gap: 34px;
		margin-top: 30px;
	}

	.facility_img img{
		border-radius: 14px;
	}

	.facility_name{
		margin-top: 16px;
		padding-bottom: 12px;
		font-size: 16px;
	}

	.facility_name::after{
		top: 0;
		width: 28px;
		height: 28px;
		background-position: 11px center;
		background-size: 7px 8px;
	}

	.contact_band{
		padding: 50px 0 44px;
	}

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

	.contact_band_btns{
		flex-direction: column;
		align-items: stretch;
		gap: 22px;
		margin-top: 28px;
	}

	.contact_band_tel,
	.contact_band_btn{
		width: 100%;
		max-width: 420px;
		margin: 0 auto;
	}

	.contact_band_btn{
		height: 62px;
		padding: 0 16px;
	}

	.contact_band_btn_tel{
		font-size: 24px;
		border-width: 2px;
	}

	.contact_band_btn_tel .icon_tel{
		width: 24px;
		height: 24px;
	}

	.contact_band_btn_form{
		font-size: 18px;
	}

	.contact_band_btn_form .icon_mail{
		width: 22px;
		height: 17px;
	}

	.contact_band_hours{
		margin-top: 10px;
		font-size: 13px;
	}
}
