@charset "UTF-8";

.l-grid {
	display: grid;
	grid-template-columns: 320px 1fr;
	align-items: start;
}

.l-sec {
	padding: 120px 0;
}

.l-sec.-pb-s {
	padding: 120px 0 0;
}

.c-heading {
	position: relative;
	display: inline-block;
	padding: 0 40px 15px 0;
	margin-bottom: 60px;
	border-right: 2px solid var(--c-green);
	border-bottom: 2px solid var(--c-green);
	border-radius: 0 0 20px;
}

.c-heading::before,
.c-heading::after {
	position: absolute;
	top: -70px;
	left: -80px;
	z-index: 1;
	display: block;
	width: 160px;
	aspect-ratio: 1/1;
	content: '';
	background-color: #95c95926;
	border-radius: 50%;
	filter: blur(15px);
}

.c-heading::after {
	top: -80px;
	left: 40px;
	width: 100px;
	background-color: #d8e7081a;
}

.c-heading > span {
	position: relative;
	z-index: 2;
	display: block;
	font-family: var(--font-serif);
	font-size: 28px;
	font-weight: 500;
	line-height: 1.5;
	color: var(--c-green);
	letter-spacing: 0.1em;
}

.c-list > li {
	position: relative;
	padding-left: 15px;
}

.c-list > li::before {
	position: absolute;
	top: calc((1em * 1.6) / 2 - 4px);
	left: 0;
	width: 8px;
	aspect-ratio: 1/1;
	content: '';
	background-color: var(--c-green);
	border-radius: 50%;
}

.c-note {
	position: relative;
	padding-left: 1em;
}

.c-note::before {
	position: absolute;
	top: 0;
	left: 0;
	content: '※';
}

.hero {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 100vh;
	background-color: var(--c-bg-green);
}

.hero_bg {
	position: absolute;
	bottom: 0;
	left: 0;
	z-index: 1;
	width: 100%;
	height: 100%;
	overflow: hidden;
	background-color: var(--c-white);
}

.hero_bg_img {
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 60%;
}

.hero_bg_img::after {
	position: absolute;
	inset: 0;
	content: '';
	background-image: url('../img/home/hero-bg-pattern.png');
	background-repeat: repeat-x;
	background-size: auto 100%;
	mix-blend-mode: screen;
}

.hero_bg_img > img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.hero_bg_circle {
	position: absolute;
	top: 50%;
	left: 50%;
	display: block;
	width: 600px;
	aspect-ratio: 1/1;
	border-radius: 50%;
	filter: blur(40px);
	transform: translate(-50%, -50%);
}

.hero_bg_circle.-circle1 {
	background: #56b9ac21;
	transform: translate(-100%, -60%);
}

.hero_bg_circle.-circle2 {
	background: #95c9591a;
	transform: translate(0%, -40%);
}

.hero_main {
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 1;
	width: 50%;
	min-width: 700px;
	max-width: 80vh;
	aspect-ratio: 700/600;
	opacity: 0;
	filter: blur(30px);
	transform: translate(-50%, -50%);
	transition:
		opacity 1s,
		filter 1.5s;
}

.-load .hero_main {
	opacity: 1;
	filter: blur(0);
}

.hero_main_img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 400px 400px 0 0;
}

.hero_cntwrap {
	position: relative;
	z-index: 2;
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	width: 100%;
	height: clamp(570px, 85vh, 1000px);
	padding: 100px 5vw 40px 10vw;
	margin-top: auto;
}

.hero_textwrap {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: space-between;
	height: 100%;
}

.hero_catch {
	display: flex;
	flex-direction: column;
	gap: 0.7em;
	align-items: flex-start;
	padding-left: 1em;
	font-family: var(--font-serif);
	font-size: clamp(28px, 2vw, 36px);
	font-weight: 500;
	letter-spacing: 0.1em;
	white-space: nowrap;
	writing-mode: vertical-rl;
}

.hero_catch.-sp {
	display: none;
}

.hero_catch > span {
	opacity: 0;
	transform: translateY(-50px);
	transition:
		opacity 1s,
		transform 1s;
	transition-delay: 0.6s;
}

.-load .hero_catch > span {
	opacity: 1;
	transform: translateY(0);
}

.-load .hero_catch > span:nth-child(1) {
	transition-delay: 0s;
}

.-load .hero_catch > span:nth-child(2) {
	transition-delay: 0.2s;
}

.-load .hero_catch > span:nth-child(3) {
	transition-delay: 0.3s;
}

.-load .hero_catch > span:nth-child(4) {
	transition-delay: 0.4s;
}

.hero_lead {
	position: relative;
	padding: 30px 0;
	font-size: 18px;
	line-height: 1.8;
	opacity: 0;
	transition: opacity 0.8s;
	transition-delay: 0.7s;
}

.-load .hero_lead {
	opacity: 1;
}

.hero_lead::after {
	position: absolute;
	top: -60px;
	right: -80px;
	z-index: 1;
	width: 300px;
	aspect-ratio: 1/1;
	content: '';
	background-color: #d7f1e3;
	border-radius: 50%;
	opacity: 0.8;
	filter: blur(40px);
}

.hero_lead > p {
	position: relative;
	z-index: 2;
}

.hero_reservation {
	z-index: 10;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 360px;
	max-width: 70vw;
	aspect-ratio: 1/1;
	background-color: var(--c-white);
	border-radius: 360px;
	box-shadow: 0 0 30px 0 rgb(0 0 0 / 15%);
	opacity: 0;
	transition: opacity 0.8s;
	transition-delay: 1s;
}

.-load .hero_reservation {
	opacity: 1;
}

.hero_reservation_text {
	font-family: var(--font-serif);
	font-size: 18px;
	font-weight: 500;
	line-height: 1.6;
	text-align: center;
}

.hero_reservation_links {
	margin-top: 20px;
}

.hero_reservation_heading {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 5px 20px;
	color: var(--c-white);
	background: var(--c-green);
	border-radius: 20px;
}

.hero_reservation_tel {
	font-family: var(--font-en);
	font-size: 30px;
	color: var(--c-green);
}

.hero_reservation_tel > span {
	font-size: 20px;
}

.anchornav {
	padding: 50px 0;
	background-color: var(--c-bg-green);
	border-top: 1px solid var(--c-border);
	border-bottom: 1px solid var(--c-border);
}

.anchornav_list {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	justify-content: center;
}

.anchornav_list > li a {
	display: inline-flex;
	gap: 0 10px;
	align-items: center;
	width: 100%;
	height: 100%;
	padding: 15px 20px;
	font-size: 18px;
	line-height: 1.4;
	background-color: var(--c-white);
	border-radius: 10px;
	transition: color 0.2s;
}

.anchornav_list > li a:hover {
	color: var(--c-green);
}

.anchornav_list > li a > .-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 70px;
	aspect-ratio: 1/1;
	background-color: var(--c-green);
	border-radius: 50px;
}

.anchornav_list > li a > .-icon img {
	width: 70%;
	aspect-ratio: 1/1;
}

.sidebar {
	position: sticky;
	top: 0;
	display: flex;
	flex-direction: column;
	height: 100vh;
	padding: 50px 40px;
	background-color: var(--c-white);
	border-right: 1px solid var(--c-border);
}

.sidebar_ttl {
	margin-bottom: 50px;
}

.sidebar_ttl > a {
	font-family: var(--font-serif);
	font-size: 20px;
	font-weight: 500;
	line-height: 1.5;
}

.sidebar_ttl > a > span {
	display: block;
	font-size: 16px;
}

.sidebar_list {
}

.sidebar_list > li > a {
	display: block;
	width: 100%;
	padding: 8px 0;
	margin-bottom: 5px;
}

.sidebar_reservation {
	margin-top: auto;
}

.sidebar_reservation_hd {
	margin-bottom: 10px;
}

.sidebar_reservation_tel {
	display: inline-block;
	margin-bottom: 5px;
	font-family: var(--font-en);
	font-size: 30px;
	font-weight: 500;
	line-height: 1;
	color: var(--c-green);
}

.sidebar_reservation_tel > span {
	font-size: 18px;
}

.home_main {
	overflow-x: hidden;
}

.flow {
}

.flow_intro {
	margin-bottom: 50px;
}

.flow_list {
	counter-reset: number;
}

.flow_list > li {
	position: relative;
	padding-bottom: 40px;
	padding-left: 60px;
	margin-bottom: 35px;
}

.flow_list > li::before {
	position: absolute;
	top: -12px;
	left: 0;
	display: inline-block;
	font-family: var(--font-en);
	font-size: 50px;
	color: var(--c-yellow);
	content: counter(number) '.';
	counter-increment: number;
}

.flow_list > li:not(:last-child) {
	border-bottom: 1px solid var(--c-border);
}

.flow_list_ttl {
	margin-bottom: 16px;
	font-size: 26px;
	font-weight: 500;
	color: var(--c-green);
	letter-spacing: 0.05em;
}

.flow_list_body {
	display: flex;
	flex-direction: column;
	gap: 10px 0;
}

.flow_list_sublist > li {
	margin-bottom: 8px;
}

.flow_list_sublist > li > h4 {
	font-size: 18px;
	font-weight: 500;
	color: var(--c-green);
}

.flow_note {
	padding: 40px 50px;
	margin-bottom: 60px;
	overflow: hidden;
	background: linear-gradient(270deg, var(--bg-subtle-2, #faf7e8) 0%, #e3f5f1 100%);
	border-radius: 20px;
}

.flow_note_ttl {
	margin-bottom: 20px;
	font-size: 20px;
}

.flow_note_list {
	margin-bottom: 15px;
}

.flow_note_list > li {
	position: relative;
	width: fit-content;
	padding: 10px 30px;
	margin-left: 12px;
	background: var(--c-white);
	border-radius: 16px;
}

.flow_note_list > li:not(:last-child) {
	top: 0;
	left: 0;
	margin-bottom: 8px;
}

.flow_note_list > li::before {
	position: absolute;
	top: calc(50% - 9px);
	left: -12px;
	display: block;
	content: '';
	border-color: transparent #fff transparent transparent;
	border-style: solid;
	border-width: 9px 12px 9px 0;
}

.voice {
}

.voice_ttl {
	display: inline-block;
	padding: 8px 0;
	margin-bottom: 20px;
	font-family: var(--font-serif);
	font-size: 24px;
	font-weight: 500;
	line-height: 1.5;
	color: #0e90ab;
	border-bottom: 1px solid #0e90ab;
}

.voice_item {
	padding: 40px 50px;
	margin-bottom: 60px;
	background-color: #e8f7fa;
	border-radius: 20px;
}

.voice_item_ttl {
	position: relative;
	padding-left: 50px;
	margin-bottom: 20px;
	font-size: 20px;
}

.voice_item_ttl::before {
	position: absolute;
	top: 0;
	left: 0;
	width: 40px;
	aspect-ratio: 40/34;
	content: '';
	background: url('../img/home/voice-icon@2x.webp') no-repeat center / contain;
}

.voice_item_qa {
	padding: 20px 30px;
	background-color: var(--c-white);
	border-radius: 10px;
}

.voice_item_qa:not(:last-child) {
	margin-bottom: 10px;
}

.voice_item_qa > dt {
	margin-bottom: 5px;
	font-size: 18px;
	font-weight: 500;
	color: #0e90ab;
}

.about {
}

.about_body {
}

.about_sec:not(:last-child) {
	margin-bottom: 60px;
}

.about_sec_ttl {
	position: relative;
	padding-left: 24px;
	margin-bottom: 15px;
	font-family: var(--font-serif);
	font-size: 32px;
	font-weight: 500;
	color: var(--c-green);
	letter-spacing: 0.1em;
}

.about_sec_ttl::before {
	position: absolute;
	top: calc((1em * 1.6) / 2 - 6px);
	left: 0;
	width: 12px;
	aspect-ratio: 1/1;
	content: '';
	background-color: var(--c-yellow);
	border-radius: 50%;
}

.about_sec_item {
	padding: 40px 50px;
	border: 3px solid #e9f4f1;
	border-radius: 20px;
}

.about_sec_item:not(:last-child) {
	margin-bottom: 15px;
}

.about_sec_item_ttl {
	margin-bottom: 16px;
	font-size: 26px;
	font-weight: 500;
	line-height: 1.5;
	color: var(--c-green);
	letter-spacing: 0.05em;
}

.about_sec_item_body {
}

.checklist {
	background-color: var(--c-bg-green);
}

.symptom {
	position: relative;
	padding: 70px 50px 50px;
	margin-top: 60px;
	background-color: #fff;
	background-image:
		linear-gradient(#f5f5f5 1px, transparent 1px), linear-gradient(90deg, #f5f5f5 1px, transparent 1px);
	background-size: 20px 20px;
}

.symptom_hd {
	position: absolute;
	top: -25px;
	left: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 18px 50px;
	white-space: nowrap;
	background-color: var(--c-green);
	border-radius: 30px;
	transform: translateX(-50%);
}

.symptom_hd::before,
.symptom_hd::after {
	position: absolute;
	content: '';
}

.symptom_hd::before {
	bottom: -20px;
	left: calc(50% - 15px);
	border-color: var(--c-green) transparent transparent transparent;
	border-style: solid;
	border-width: 20px 15px 0;
}

.symptom_hd::after {
	right: -40px;
	bottom: -25px;
	width: 90px;
	aspect-ratio: 1/1;
	background: url('../img/home/symptom-pen@2x.webp') no-repeat center / contain;
}

.symptom_hd_ttl {
	font-size: 20px;
	font-weight: 500;
	line-height: 1.4;
	color: var(--c-white);
	text-align: center;
}

.symptom_body {
}

.symptom_list {
	display: flex;
	flex-direction: column;
	gap: 15px;
	align-items: flex-start;
	margin-bottom: 20px;
}

.symptom_list > li {
	position: relative;
	padding-left: 34px;
	font-size: 20px;
}

.symptom_list > li::before {
	position: absolute;
	top: calc((1em * 1.6) / 2 - 12px);
	left: 0;
	display: block;
	width: 24px;
	aspect-ratio: 1/1;
	content: '';
	background: var(--c-white);
	border: 2px solid var(--c-green);
	border-radius: 4px;
}

.symptom_note {
	padding: 14px 20px;
	font-size: 18px;
	font-weight: 500;
	color: var(--c-red);
	text-align: center;
	background-color: #ffeff2;
	border-radius: 20px;
}

.gallery {
	width: 100%;
	height: 450px;
}

.gallery img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.activities {
}

.activities_body {
}

.activities_lead {
	margin-bottom: 40px;
}

.activities_cnt {
	padding: 40px 50px;
	background: var(--c-bg-green);
	border-radius: 20px;
}

.activities_cnt_ttl {
	margin-bottom: 15px;
	font-size: 26px;
	font-weight: 500;
	line-height: 150%;
	color: var(--c-green);
	letter-spacing: 0.05em;
}

.activities_cnt_text {
	margin-bottom: 20px;
}

.activities_cnt_list {
	counter-reset: number;
}

.activities_cnt_list > li {
	position: relative;
	padding: 16px 30px 16px 60px;
	background: var(--c-white);
	border-radius: 16px;
}

.activities_cnt_list > li:not(:last-child) {
	margin-bottom: 8px;
}

.activities_cnt_list > li::before {
	position: absolute;
	top: 50%;
	left: 30px;
	display: inline-block;
	font-family: var(--font-en);
	font-size: 26px;
	line-height: 1;
	color: var(--c-yellow);
	content: counter(number) '.';
	counter-increment: number;
	transform: translateY(-50%);
}

.greeting {
	margin-top: 50px;
}

.greeting_ttl {
	display: inline-block;
	padding: 8px 0;
	margin-bottom: 20px;
	font-family: var(--font-serif);
	font-size: 24px;
	font-weight: 500;
	line-height: 1.5;
	color: var(--c-green);
	border-bottom: 1px solid var(--c-green);
}

.greeting_body_text > p {
	margin-bottom: 1rem;
}

.greeting_body_text > p.-mb-0 {
	margin-bottom: 0;
}

.greeting_body_signature {
	margin-top: 30px;
	font-family: var(--font-serif);
	font-weight: 500;
	text-align: right;
}

.greeting_body_signature > strong {
	margin-left: 1rem;
	font-size: 24px;
}

.access {
}

.access_body {
}

.access_name {
	margin-bottom: 15px;
	font-family: var(--font-serif);
	font-size: 28px;
	font-weight: 500;
	line-height: 1.5;
}

.access_name > span {
	display: block;
	font-size: 20px;
}

.access_address {
	margin-bottom: 8px;
}

.access_tel {
}

.access_map {
	height: 400px;
	margin-top: 35px;
	overflow: hidden;
	border-radius: 5px;
}

.access_map > iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}

.access_gallery {
	display: flex;
	gap: 10px 20px;
	margin-top: 50px;
}

.access_gallery > figure {
	width: 100%;
	aspect-ratio: 430/300;
	overflow: hidden;
	border-radius: 5px;
}

.access_gallery > figure > img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media screen and (max-width: 1240px) {
	.l-grid {
		grid-template-columns: 1fr;
	}

	.hero_main {
		width: 50%;
		min-width: 500px;
		max-width: 80vh;
	}

	.hero_catch {
		font-size: 24px;
	}

	.hero_cntwrap {
	}

	.hero_lead {
		font-size: 16px;
	}

	.hero_reservation {
		width: 300px;
	}

	.hero_reservation_text {
		font-size: 15px;
	}

	.hero_reservation_links {
		margin-top: 10px;
	}

	.hero_reservation_tel {
		font-size: 25px;
	}

	.hero_reservation_tel > span {
		font-size: 16px;
	}

	.anchornav_list > li a {
		font-size: 16px;
	}

	.anchornav_list > li a > .-icon {
		width: 50px;
	}

	.sidebar {
		display: none;
	}
}

@media screen and (max-width: 768px) {
	html {
		scroll-padding-top: 70px;
	}

	.l-sec {
		padding: 70px 0;
	}

	.l-sec.-pb-s {
		padding: 70px 0 0;
	}

	.c-heading {
		padding: 0 25px 12px 0;
		margin-bottom: 40px;
	}

	.c-heading > span {
		font-size: 22px;
	}

	.c-heading::before,
	.c-heading::after {
		top: -50px;
		left: -60px;
		width: 120px;
		filter: blur(10px);
	}

	.c-heading::after {
		top: -50px;
		left: 30px;
		width: 80px;
	}

	.hero {
		height: auto;
		min-height: 100vh;
	}

	.hero_bg {
		bottom: 100px;
	}

	.hero_bg_img::after {
		background-size: auto 60%;
	}

	.hero_bg_circle {
		width: 400px;
	}

	.hero_main {
		position: relative;
		top: 0;
		left: 0;
		width: 90%;
		min-width: auto;
		max-width: 500px;
		margin-top: 200px;
		transform: translate(0, 0);
	}

	.hero_cntwrap {
		position: relative;
		bottom: auto;
		left: auto;
		flex-direction: column;
		align-items: center;
		width: 90%;
		max-width: 500px;
		height: auto;
		padding: 0;
	}

	.hero_textwrap {
		width: 100%;
	}

	.hero_catch.-tb {
		display: none;
	}

	.hero_catch.-sp {
		position: absolute;
		top: max(-95vw, -500px);
		right: 0;
		display: flex;
		font-size: 24px;
	}

	.hero_lead {
		font-size: 15px;
	}

	.hero_lead::after {
		content: none;
	}

	.anchornav {
		padding: 30px 0;
		border-top: none;
	}

	.anchornav_list > li {
		width: 100%;
	}

	.flow_list_ttl {
		font-size: 22px;
	}

	.flow_note {
		padding: 30px;
		margin-bottom: 40px;
	}

	.flow_note_ttl {
		font-size: 18px;
	}

	.flow_note_list > li {
		padding: 10px 20px;
	}

	.voice_ttl {
		font-size: 20px;
	}

	.voice_item {
		padding: 25px 20px 20px;
	}

	.voice_item_ttl {
		padding-left: 40px;
		font-size: 18px;
	}

	.voice_item_ttl::before {
		width: 30px;
	}

	.voice_item_qa {
		padding: 20px;
	}

	.about_sec_ttl {
		font-size: 24px;
	}

	.about_sec_item {
		padding: 30px;
	}

	.about_sec_item_ttl {
		margin-bottom: 10px;
		font-size: 22px;
	}

	.symptom_hd {
		padding: 18px 25px;
	}

	.symptom {
		padding: 100px 20px 40px;
	}

	.symptom_hd::after {
		right: -20px;
		bottom: -15px;
		width: 50px;
	}

	.symptom_hd_ttl {
		font-size: 18px;
	}

	.symptom_list > li {
		padding-left: 28px;
		font-size: 18px;
	}

	.symptom_list > li::before {
		top: calc((1em * 1.6) / 2 - 10px);
		width: 20px;
	}

	.symptom_note {
		font-size: 16px;
		text-align: left;
	}

	.gallery {
		height: 300px;
	}

	.activities_cnt {
		padding: 30px;
	}

	.activities_cnt_ttl {
		font-size: 22px;
	}

	.activities_cnt_list > li {
		padding: 16px 20px 16px 50px;
	}

	.activities_cnt_list > li::before {
		left: 20px;
	}

	.access_gallery {
		flex-direction: column;
	}
}
