@charset "UTF-8";
/* CSS Document */

/*
ヘッダー
フッター
幅 1280px
PC 1025px〜
SMP 〜1024px（基準400px）
SMPのfont-sizeはXD数値の1/2（カンプ幅800pxのため）
*/

/* スムーススクロール */
html {
	scroll-behavior: smooth;
}


.site-header,
.site-header *,
.site-footer,
.site-footer *,
.site-contact,
.site-contact *,
.menu-panel,
.menu-panel * {
	box-sizing: border-box;
}

/* ロゴ — logo.webp（500×500）の余白をトリミングして表示。--logo-w = ロゴ本体の幅 */
.logo {
	--logo-w: 237px;
	position: relative;
	display: block;
	flex-shrink: 0;
	width: var(--logo-w);
	height: calc(var(--logo-w) * 133 / 447);
	overflow: hidden;
}

.logo img,
.logo::after {
	position: absolute;
	top: calc(var(--logo-w) * -183 / 447);
	left: calc(var(--logo-w) * -28 / 447);
	width: calc(var(--logo-w) * 500 / 447);
	height: calc(var(--logo-w) * 500 / 447);
	max-width: none;
}

/* ロゴホバー — ロゴの形に白フィルタ rgba(255,255,255,0.5) を重ねる */
.logo::after {
	content: "";
	background-color: rgba(255, 255, 255, 0);
	-webkit-mask: url("../images/hf/logo.webp") center / 100% 100% no-repeat;
	mask: url("../images/hf/logo.webp") center / 100% 100% no-repeat;
	transition: background-color 0.3s;
	pointer-events: none;
}

.logo:hover::after {
	background-color: rgba(255, 255, 255, 0.5);
}

/* Menuボタン — 変化前：menu-before.png / 変化後：menu-after.png（#0098BC）0.4秒（加工済画像） */
.menu-btn {
	border: 0;
	padding: 0;
	background: url("../images/hf/menu-before.png") center / 100% 100% no-repeat;
	clip-path: polygon(0 0, 100% 0, 100% 100%, 76.7% 99.3%, 61.3% 97.1%, 42.7% 91.4%, 32% 85.7%, 24.7% 80%, 19.3% 74.3%, 12% 62.9%, 7.3% 51.4%, 4% 40%, 1.3% 28.6%, 0.7% 17.1%);
	cursor: pointer;
}

.menu-btn::before {
	content: "";
	position: absolute;
	inset: 0;
	background: url("../images/hf/menu-after.png") center / 100% 100% no-repeat;
	opacity: 0;
	transition: opacity 0.4s;
}

.menu-btn:hover::before {
	opacity: 1;
}

.menu-mark {
	position: absolute;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
}

.menu-lines {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	width: 100%;
}

.menu-lines span {
	display: block;
	width: 100%;
	background: #fff;
}

.menu-mark small {
	color: #fff;
	font-family: "Montserrat", sans-serif;
	font-weight: 500;
	line-height: 1;
	letter-spacing: 0.15em;
	text-indent: 0.15em;
}

/* メニュー内のスクロールを背景ページへ伝えない（背景の固定は menu.js） */
/* 開閉は display の切り替えではなく、透明度でなめらかに（0.3秒）。閉じている間は visibility:hidden で操作・読み上げ対象外 */
.menu-panel {
	visibility: hidden;
	opacity: 0;
	overscroll-behavior: contain;
	transition: opacity 0.3s ease, visibility 0s linear 0.3s;
}

body.is-menu-open .menu-panel {
	visibility: visible;
	opacity: 1;
	transition: opacity 0.3s ease, visibility 0s linear 0s;
}

@media (prefers-reduced-motion: reduce) {
	.menu-panel,
	body.is-menu-open .menu-panel {
		transition: none;
	}
}

.menu-cols ul,
.menu-cols li,
.menu-sub,
.menu-sub li,
.site-footer-nav ul,
.site-contact ul {
	list-style: none;
	margin-left: 0;
	padding-left: 0;
}

/* 黄色枠（.site-contact-box）は .fade-in で透明度だけフェードイン。水色のグラデーション背景（.site-contact）は動かさない */
.site-contact {
	position: relative;
	z-index: 1;
	overflow-x: clip;
}

/* ── .fade-in：アイキャッチ（.mv-img / .hero-photo）の透明度だけのフェードイン（1.5秒・1回のみ）
   header.php の <head> のスクリプトが html に .fx-js を付けた時だけ隠す。
   JSが動かない／動きを減らす設定のときは .fx-js が付かず、そのまま表示される。
   footer.php のスクリプトが動かなかった時（.fx-ready が付かない）だけ、5秒後に表示する（保険）。 ── */
.fx-js .fade-in:not(.is-active) {
	opacity: 0;
}

.fx-js:not(.fx-ready) .fade-in:not(.is-active) {
	animation: fade-in-failsafe 0s 5s forwards;
}

/* ── .fade-up（緑枠）：30px 下から透明度とともに上がる（1秒・cubic-bezier(0.33, 1, 0.68, 1)・1回のみ）。
   隠す条件・保険・動きを減らす設定の扱いは .fade-in と同じ ── */
.fx-js .fade-up:not(.is-active) {
	opacity: 0;
	transform: translateY(30px);
}

.fx-js .fade-up.is-active {
	transition: opacity 1s cubic-bezier(0.33, 1, 0.68, 1), transform 1s cubic-bezier(0.33, 1, 0.68, 1);
}

.fx-js:not(.fx-ready) .fade-up:not(.is-active) {
	animation: fade-up-failsafe 0s 5s forwards;
}

/* ── .fade-zoom（ピンク枠）：枠は固定、中の画像だけ 1.1倍→1倍＋透明→表示（1.2秒・1回のみ）。扱いは .fade-in と同じ ── */
.fx-js .fade-zoom:not(.is-active) img {
	opacity: 0;
	transform: scale(1.1);
}

.fx-js .fade-zoom.is-active img {
	transition: opacity 1.2s ease-out, transform 1.2s ease-out;
}

.fx-js:not(.fx-ready) .fade-zoom:not(.is-active) img {
	animation: fade-up-failsafe 0s 5s forwards;
}

@keyframes fade-up-failsafe {
	to {
		opacity: 1;
		transform: none;
	}
}

.fx-js .fade-in.is-active {
	transition: opacity 1.5s ease-in-out;
}

@keyframes fade-in-failsafe {
	to {
		opacity: 1;
	}
}

@media (prefers-reduced-motion: reduce) {
	.fx-js .fade-in:not(.is-active),
	.fx-js .fade-up:not(.is-active),
	.fx-js .fade-zoom:not(.is-active) img {
		opacity: 1;
		transform: none;
		animation: none;
	}

	.fx-js .fade-in.is-active,
	.fx-js .fade-up.is-active,
	.fx-js .fade-zoom.is-active img {
		transition: none;
	}
}

/* ヘッダー・メニュー・フッターのリンク：訪問済み・クリック中でもブラウザ既定の紫や下線を出さない */
.site-header a,
.menu-panel a,
.site-contact a,
.site-footer a {
	-webkit-tap-highlight-color: transparent;
}

.global-nav a,
.global-nav a:visited,
.global-nav a:active {
	color: #4a4a4a;
}

.header-contact,
.header-contact:visited,
.header-contact:active {
	color: #fff;
	text-decoration: none;
}

/* グローバルメニュー・Menu内メニュー・サイトメニュー ホバー（#30A5C1・太字・下線 0.2秒） */
.global-nav a,
.menu-link,
.menu-sub a,
.site-footer-nav ul a,
.site-footer-bottom a {
	text-decoration: underline;
	text-decoration-color: transparent;
	text-underline-offset: 0.3em;
	transition: color 0.2s, text-decoration-color 0.2s;
}

.global-nav a:hover,
.menu-link:hover,
.menu-sub a:hover,
.site-footer-nav ul a:hover,
.site-footer-bottom a:hover {
	color: #30A5C1;
	font-weight: 700;
	text-decoration-color: #30A5C1;
}

/* ─ 電話 / LINE / フォーム ボタン（Menu内・フッター共通） ─ */
.footer-tel,
.footer-line,
.footer-form {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	max-width: 100%;
	border: 2px solid;
	border-radius: 100px;
	box-shadow: 3px 5px 10px rgba(0, 98, 121, 0.2);
	font-family: "Zen Maru Gothic", sans-serif;
	font-weight: 700;
	text-align: center;
	transition: background-color 0.4s, border-color 0.4s;
}

.footer-tel {
	background: #E5855F;
	border-color: #E5855F;
}

.footer-line {
	background: #3EC676;
	border-color: #3EC676;
}

.footer-form {
	background: #F5C23E;
	border-color: #F5C23E;
}

/* 文字色は <a> ではなく文字に直接指定（a:visited など a への色指定で灰色にならないように） */
.footer-tel span,
.footer-tel strong,
.footer-line small,
.footer-line strong,
.footer-form small,
.footer-form strong {
	color: #fff;
	transition: color 0.4s;
}

.footer-tel span {
	display: flex;
	align-items: baseline;
	justify-content: center;
	white-space: nowrap;
}

.footer-tel small {
	font-weight: 500;
}

.footer-tel strong {
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: "Montserrat", sans-serif;
	font-weight: 600;
	line-height: 1;
}

.footer-tel strong img {
	object-fit: contain;
}

.footer-line small,
.footer-form small,
.footer-line strong,
.footer-form strong {
	display: block;
	line-height: 1.4;
}

.footer-form strong {
	display: flex;
	align-items: center;
	justify-content: center;
}

/* LINEアイコン（カンプどおり白い輪なし） */
.cta-line-icon {
	position: absolute;
	top: 50%;
	border-radius: 50%;
	transform: translateY(-50%);
}

/* 矢印 — ホバーで色が変わり、右に1回動く */
.footer-line::after,
.footer-form::after,
.contact-btn::after {
	content: "";
	position: absolute;
	background-color: #fff;
	-webkit-mask: url("../images/hf/icon-arrow.webp") center / contain no-repeat;
	mask: url("../images/hf/icon-arrow.webp") center / contain no-repeat;
	transition: background-color 0.4s, transform var(--arrow-time) var(--arrow-ease);
}

.icon-mail {
	display: inline-block;
	flex-shrink: 0;
	background-color: #fff;
	-webkit-mask: url("../images/hf/icon-mail.webp") center / contain no-repeat;
	mask: url("../images/hf/icon-mail.webp") center / contain no-repeat;
	transition: background-color 0.4s;
}

/* ─ Contact（黄色枠）ボタン ─ */
.contact-btn {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	max-width: 100%;
	border: 2px solid;
	font-family: "Zen Maru Gothic", sans-serif;
	font-weight: 700;
	white-space: nowrap;
	text-decoration: none;
	transition: background-color 0.4s, border-color 0.4s, color 0.4s;
}

.contact-btn::after {
	top: 50%;
}

/* 文字色は2クラス指定（a:visited などより優先） */
.contact-btn.is-line {
	background: #3EC676;
	border-color: #3EC676;
	color: #fff;
}

.contact-btn.is-mail {
	background: #F5C23E;
	border-color: #F5C23E;
	color: #fff;
}

/* ---------- 「＞」ボタンの共通ホバー（PCのみ・矢印が右に1回動く） ----------
   移動量・時間・イージングはここの変数で全ページ統一。スマホ（タッチ）ではホバー変化なし。 */
:root {
	--arrow-dist: 5px;
	--arrow-time: 0.4s;
	--arrow-ease: ease;
}

/* 矢印の戻り（マウスアウト）もなめらかに */
#page10 .btn::after,
#page10 .jump a::after,
#page30 .pill::after,
#page40 .pill::after,
#page50 .pill::after {
	transition: transform var(--arrow-time) var(--arrow-ease), border-color var(--arrow-time) var(--arrow-ease);
}

@media (hover: hover) and (pointer: fine) {

	/* SNS：saruwakakun「シンプルなフラットボタン」— ホバーで持ち上がる（上下の幅は以前の2倍） */
	.sns a:hover {
		transform: translateY(-8px);
	}

	/* ボタンの色変化 */
	.footer-line:hover,
	.footer-form:hover {
		background: #fff;
	}

	.footer-line:hover small,
	.footer-line:hover strong {
		color: #3EC676;
	}

	.footer-form:hover small,
	.footer-form:hover strong {
		color: #DDAE34;
	}

	.footer-form:hover .icon-mail {
		background-color: #F5C23E;
	}

	.header-contact:hover {
		background: #fff;
	}

	.header-contact:hover .icon-mail {
		background-color: #F5C23E;
	}

	.header-contact:hover span {
		color: #DDAE34;
	}

	/* 矢印の色 */
	.footer-line:hover::after {
		background-color: #3EC676;
	}

	.footer-form:hover::after {
		background-color: #F5C23E;
	}

	/* 矢印の移動（マスク矢印）。フッター下段のPC専用ボタン */
	.footer-line:hover::after,
	.footer-form:hover::after {
		transform: translateX(var(--arrow-dist));
	}

	/* 矢印の移動（回転したシェブロン） */
	#page10 .btn:hover::after,
	#page10 .facility-list a:hover .btn::after,
	#page10 .staff-track a:hover .btn::after,
	#page10 .jump a:hover::after {
		transform: translateX(var(--arrow-dist)) rotate(45deg);
	}
}

@media (hover: hover) and (pointer: fine) and (min-width: 1025px) {
	#page30 .pill:hover::after,
	#page40 .pill:hover::after,
	#page50 .pill:hover::after {
		transform: translateX(var(--arrow-dist)) rotate(45deg);
	}

	/* 黄色枠の相談ボタン。1024px以下では色も矢印も変えない */
	.contact-btn.is-line:hover {
		background: #fff;
		color: #3EC676;
	}

	.contact-btn.is-mail:hover {
		background: #fff;
		color: #DDAE34;
	}

	.contact-btn.is-line:hover::after {
		background-color: #3EC676;
	}

	.contact-btn.is-mail:hover::after {
		background-color: #F5C23E;
	}

	.contact-btn:hover::after {
		transform: translateX(var(--arrow-dist));
	}
}

/* ---------- Contact card（黄色枠） ---------- */
.site-contact-box {
	position: relative;
	border-style: solid;
	border-color: transparent;
	background:
		linear-gradient(#fff, #fff) padding-box,
		conic-gradient(#ebf4df 0deg, #d3eee7 40deg, #d3eee7 70deg, #f2e9a0 105deg, #f3e795 140deg, #faf5e0 180deg, #c6e8e0 215deg, #d6eed8 245deg, #f6eca2 265deg, #f8eda5 320deg, #ebf4df 360deg) border-box;
	text-align: center;
}

/* card content sits above the dots */
.site-contact-box> :not(.contact-dots) {
	position: relative;
	z-index: 1;
}

/* ---------- Contact card: dotted accents ---------- */
.site-contact-box .contact-dots {
	position: absolute;
	z-index: 0;
	pointer-events: none;
}

/* inside the card, top-right corner — カンプの dot_grade 画像（角は白カードの角丸で切る） */
.site-contact-box .contact-dots.is-tr {
	top: 0;
	right: 0;
	background: url("../images/hf/dot-grade.webp") center / cover no-repeat;
}

/* blue dotted circle poking out at the bottom-left.
   clip-path hides the part that would sit on top of the white card */
.site-contact-box .contact-dots.is-bl {
	bottom: -120px;
	left: -100px;
	z-index: -1;
	/* sits behind the white card */
	width: 240px;
	height: 240px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(116, 205, 216, 0.6) 3px, transparent 3.6px) 0 0 / 16px 16px;
}

.contact-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
}

.contact-icon img {
	object-fit: contain;
}

.contact-icon.is-phone {
	background: #E5855F;
}

.contact-icon.is-line {
	background: transparent;
}

.contact-icon.is-mail {
	background: #F5C23E;
}

.contact-tel {
	display: block;
	color: #E6774B;
	font-family: "Montserrat", sans-serif;
	font-weight: 600;
	line-height: 1;
	text-align: center;
	text-decoration: none;
}

/* ---------- SNS: colour icon on top, label below ---------- */
.sns {
	display: flex;
}

.sns a {
	display: flex;
	flex-direction: column;
	align-items: center;
	color: #4a4a4a;
	text-decoration: none;
	transition: transform 0.3s;
}

.sns img {
	display: block;
	object-fit: contain;
}

.sns span {
	color: #4a4a4a;
	font-family: "Montserrat", sans-serif;
	font-weight: 500;
	line-height: 1.2;
}

.site-footer address a {
	color: inherit;
	text-decoration: none;
}

.site-footer address {
	color: #6a6a6a;
	font-style: normal;
}

.site-footer-bottom a,
.site-footer-bottom small {
	color: #7b7b7b;
}

.site-footer-bottom small {
	font-family: "Montserrat", sans-serif;
}

/*PC*/
@media only screen and (min-width: 1025px) {
	html {
		overflow-x: hidden;
	}

	main {
		padding-top: 112px;
	}

	.site-header {
		position: fixed;
		top: 0;
		left: 0;
		z-index: 100;
		width: 100%;
		height: 112px;
		background: #fff;
		overflow: visible;
		container-type: inline-size;
	}

	/* トップ・30・40・50（header.php で .has-visual を付けるページ）：キービジュアル／アイキャッチが見えている間はヘッダー背景を透過、
	   スクロールして見えなくなったら menu.js が .is-scrolled を付けて白に（0.3秒）。
	   JSが動かない時は .js が付かないので、白いヘッダーのまま。 */
	.js .site-header.has-visual {
		background: transparent;
		transition: background-color 0.3s ease;
	}

	.js .site-header.has-visual.is-scrolled {
		background: #fff;
	}

	.site-header-bar {
		position: relative;
		display: flex;
		align-items: center;
		width: 1500px;
		max-width: 100%;
		height: 112px;
		margin: 0 auto;
		padding: 0 0 0 303px;
	}

	.site-header .logo {
		--logo-w: 237px;
		position: absolute;
		top: 22px;
		left: 27px;
	}

	.header-shortcuts {
		display: none;
	}

	.site-header-tools {
		display: flex;
		align-items: center;
	}

	.global-nav {
		display: flex;
		gap: 26px;
	}

	.global-nav a {
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 16px;
		font-weight: 500;
		letter-spacing: 0.1em;
		color: #4a4a4a;
		white-space: nowrap;
	}

	.header-tel {
		position: absolute;
		top: 15px;
		left: 780px;
		display: flex;
		align-items: flex-start;
		width: 310px;
		height: 82px;
		padding: 12px 14px 0 28px;
		border-radius: 41px;
		background: #E5855F;
		box-shadow: 3px 5px 10px rgba(0, 98, 121, 0.2);
		color: #fff;
	}

	.header-tel>span {
		display: flex;
		flex-direction: column;
		width: 100%;
	}

	.header-tel small {
		display: flex;
		align-items: center;
		gap: 10px;
		height: 24px;
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 16px;
		font-weight: 700;
		line-height: 23px;
		letter-spacing: 1.28px;
		color: #fff;
		text-align: left;
		white-space: nowrap;
	}

	.header-tel em {
		font-style: normal;
		font-size: 11px;
		font-weight: 500;
		line-height: 23px;
		letter-spacing: 0;
		color: #FCBEA4;
	}

	.header-tel strong {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 8px;
		margin-top: 1px;
		font-family: "Montserrat", sans-serif;
		font-size: 26px;
		font-weight: 600;
		line-height: 23px;
		letter-spacing: 1.56px;
		color: #fff;
		text-align: center;
	}

	.header-tel img {
		width: 28px;
		height: 28px;
		object-fit: contain;
	}

	.header-contact {
		position: absolute;
		top: 15px;
		left: 1100px;
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 12px;
		width: 218px;
		height: 82px;
		padding: 0 18px;
		border-radius: 41px;
		border: 2px solid #F5C23E;
		background: #F5C23E;
		box-shadow: 3px 5px 10px rgba(0, 98, 121, 0.2);
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 20px;
		font-weight: 700;
		line-height: 26px;
		letter-spacing: 1.2px;
		text-align: left;
		transition: background-color 0.4s, color 0.4s, border-color 0.4s;
	}

	.header-contact .icon-mail {
		width: 34px;
		height: 26px;
	}

	/* 文字色は文字に直接指定（a:visited などで灰色にならないように） */
	.header-contact span {
		display: block;
		color: #fff;
		transition: color 0.4s;
	}

	/* 1500px超では中央寄せのバーの外（画面右端）まで寄せる。1500px未満は縮小されたバーの右端＝画面右端なので 0 */
	.menu-btn {
		position: absolute;
		top: 0;
		right: min(0px, calc((1500px - 100cqi) / 2));
		z-index: 130;
		width: 150px;
		height: 140px;
	}

	.menu-mark {
		top: 36px;
		left: 59px;
		width: 48px;
	}

	.menu-lines {
		height: 36px;
	}

	.menu-lines span {
		height: 4px;
		border-radius: 2px;
	}

	.menu-mark small {
		margin-top: 10px;
		font-size: 13px;
	}

	.menu-panel {
		position: fixed;
		inset: 0;
		z-index: 200;
		overflow: auto;
		background:
			radial-gradient(ellipse 45% 40% at 12% 12%, rgba(254, 241, 196, 0.95), transparent 70%),
			radial-gradient(ellipse 40% 40% at 88% 10%, rgba(221, 240, 248, 0.95), transparent 70%),
			radial-gradient(ellipse 40% 45% at 85% 90%, rgba(253, 239, 192, 0.9), transparent 70%),
			radial-gradient(ellipse 45% 45% at 10% 92%, rgba(191, 230, 248, 0.9), transparent 70%),
			#fdfdfb;
	}

	body.is-menu-open {
		overflow: hidden;
	}

	body.is-menu-open .menu-panel {
		display: block;
	}

	.menu-close {
		position: absolute;
		top: 38px;
		right: 48px;
		display: flex;
		flex-direction: column;
		align-items: center;
		padding: 0;
		border: 0;
		background: transparent;
		color: #0098BC;
		cursor: pointer;
	}

	.menu-close span {
		position: relative;
		width: 40px;
		height: 32px;
	}

	.menu-close span::before,
	.menu-close span::after {
		content: "";
		position: absolute;
		top: 14.5px;
		left: -5.5px;
		width: 51px;
		height: 3px;
		background: #0098BC;
	}

	.menu-close span::before {
		transform: rotate(38.66deg);
	}

	.menu-close span::after {
		transform: rotate(-38.66deg);
	}

	.menu-close small {
		margin-top: 12px;
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 11px;
		font-weight: 700;
		letter-spacing: 0.1em;
	}

	.menu-panel-inner {
		display: flex;
		align-items: flex-start;
		justify-content: space-between;
		width: 1280px;
		max-width: 100%;
		margin: 181px auto 60px;
		padding: 0 50px;
	}

	.menu-cols {
		display: grid;
		flex: 1;
		grid-template-columns: minmax(0, 309px) minmax(0, 1fr);
	}

	.menu-link,
	.menu-sub a {
		font-family: "Zen Maru Gothic", sans-serif;
		font-weight: 500;
		letter-spacing: 0.2em;
		color: #4a4a4a;
	}

	.menu-cols>ul>li {
		margin-bottom: 38px;
		line-height: 26px;
	}

	.menu-cols>ul>li:last-child {
		margin-bottom: 0;
	}

	.menu-link {
		font-size: 18px;
	}

	.menu-staff-toggle {
		display: none;
	}

	.menu-sub {
		margin: 21px 0 -7px;
	}

	.menu-sub li {
		line-height: 36px;
	}

	.menu-sub .menu-sub-top {
		display: none;
	}

	.menu-sub a {
		font-size: 16px;
	}

	.menu-cta,
	.footer-cta {
		display: flex;
		flex-direction: column;
		flex-shrink: 0;
		gap: 30px;
		width: 420px;
	}

	.menu-cta {
		margin-top: -4px;
	}

	.footer-tel,
	.footer-line,
	.footer-form {
		width: 420px;
		height: 100px;
	}

	.footer-line {
		padding-left: 20px;
	}

	.footer-tel span {
		font-size: 15px;
		line-height: 1.4;
		letter-spacing: 0.1em;
	}

	.footer-tel small {
		margin-left: 10px;
		font-size: 10px;
		letter-spacing: 0.05em;
	}

	.footer-tel strong {
		gap: 14px;
		margin-top: 6px;
		font-size: 30px;
		letter-spacing: 0.06em;
	}

	.footer-tel strong img {
		width: 28px;
		height: 28px;
	}

	.footer-line small,
	.footer-form small {
		font-size: 14px;
		letter-spacing: 0.15em;
	}

	.footer-line strong,
	.footer-form strong {
		margin-top: 2px;
		font-size: 24px;
		letter-spacing: 0.2em;
	}

	.footer-form strong {
		margin-right: 28px;
	}

	.cta-line-icon {
		left: 50px;
		width: 55px;
		height: 55px;
	}

	.footer-form .icon-mail {
		width: 30px;
		height: 30px;
		margin-right: 14px;
	}

	.footer-line::after,
	.footer-form::after {
		top: calc(50% - 6.5px);
		right: 26.5px;
		width: 13px;
		height: 13px;
	}

	.site-contact {
		padding: 20px 0 40px;
		background:
			linear-gradient(to bottom, rgba(228, 243, 251, 0) calc(100% - 60px), #e4f3fb 100%),
			radial-gradient(1400px 880px at calc(50% - 450px) 1100px, #e4f3fb 99.5%, rgba(228, 243, 251, 0) 100%),
			#fff;
	}

	.site-contact-box {
		width: 1190px;
		max-width: calc(100% - 40px);
		margin: 0 auto;
		padding: 57px 14px 61px 18px;
		border-width: 10px;
		border-radius: 50px;
	}

	.site-contact-box .contact-dots.is-tr {
		width: 190px;
		height: 153px;
		border-top-right-radius: 40px;
	}

	.site-contact .en {
		margin-bottom: 22px;
		color: #0098BC;
		font-family: "Montserrat", sans-serif;
		font-size: 16px;
		font-weight: 500;
		line-height: 1.5;
		letter-spacing: 0.1em;
		text-align: center;
	}

	.site-contact h2 {
		margin-bottom: 40px;
		font-size: 36px;
		font-weight: 700;
		line-height: 1.5;
		letter-spacing: 0.2em;
		color: #4a4a4a;
	}

	.site-contact ul {
		display: grid;
		grid-template-columns: minmax(0, 361fr) minmax(0, 387fr) minmax(0, 390fr);
	}

	.site-contact li {
		position: relative;
		display: flex;
		flex-direction: column;
		align-items: center;
	}

	.site-contact li+li::before {
		content: "";
		position: absolute;
		top: 32px;
		left: 0;
		width: 1px;
		height: 188px;
		background: #E3E3E3;
	}

	.contact-icon {
		width: 70px;
		height: 70px;
		margin: 0 0 22.5px;
	}

	.contact-icon img {
		width: 30px;
		height: 30px;
	}

	.contact-icon.is-line img {
		width: 70px;
		height: 70px;
	}

	.site-contact li p {
		margin-bottom: 19.5px;
		color: #4a4a4a;
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 22px;
		font-weight: 700;
		line-height: 1.5;
		letter-spacing: 0.16em;
		text-align: center;
	}

	.contact-tel {
		font-size: 34px;
		letter-spacing: 1px;
	}

	.site-contact small {
		display: block;
		margin-top: 14px;
		color: #E6774B;
		font-size: 16px;
		line-height: 1.5;
		letter-spacing: 0.1em;
	}

	.contact-btn {
		width: 286px;
		height: 60px;
		margin-top: 5px;
		padding: 0 40px;
		border-radius: 30px;
		box-shadow: 3px 5px 10px rgba(0, 98, 121, 0.2);
		font-size: 18px;
		letter-spacing: 0.2em;
	}

	.contact-btn::after {
		right: 23.5px;
		width: 13px;
		height: 13px;
		margin-top: -6.5px;
	}

	.site-footer {
		padding: 48px 0 74px;
		background:
			radial-gradient(ellipse 40% 30% at 15% 45%, rgba(255, 255, 255, 0.55), transparent 70%),
			radial-gradient(ellipse 35% 25% at 85% 75%, rgba(255, 255, 255, 0.45), transparent 70%),
			linear-gradient(180deg, #e4f3fb 0%, #dcf0fb 45%, #e9f5fa 100%);
	}

	.site-footer-top,
	.site-footer-nav,
	.site-footer-bottom {
		width: 1280px;
		max-width: 100%;
		margin: 0 auto;
		padding: 0 50px;
	}

	.site-footer-top {
		display: grid;
		grid-template-columns: minmax(0, 519fr) minmax(0, 281fr) minmax(0, 380fr);
		align-items: start;
	}

	.site-footer-top .logo {
		--logo-w: 267px;
		margin-top: 21px;
	}

	.sns {
		gap: 52px;
		margin-top: 19px;
	}

	.sns a {
		gap: 12px;
	}

	.sns img {
		width: 50px;
		height: 50px;
	}

	.sns span {
		font-size: 16px;
		letter-spacing: 0.1em;
	}

	.site-footer address {
		font-size: 15px;
		line-height: 30px;
		letter-spacing: 0.08em;
	}

	.site-footer-nav {
		display: grid;
		grid-template-columns: minmax(0, 309fr) minmax(0, 451fr) 420px;
		align-items: start;
		margin-top: 86px;
	}

	.site-footer-nav ul {
		padding-top: 4px;
	}

	.site-footer-nav li {
		margin-bottom: 38px;
		line-height: 26px;
	}

	.site-footer-nav li:last-child {
		margin-bottom: 0;
	}

	.site-footer-nav li.sub {
		margin-bottom: 0;
		line-height: 36px;
	}

	.site-footer-nav li:not(.sub)+li.sub {
		margin-top: -17px;
	}

	.site-footer-nav li.sub+li:not(.sub) {
		margin-top: 31px;
	}

	.site-footer-nav a {
		color: #4a4a4a;
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 18px;
		font-weight: 500;
		letter-spacing: 0.2em;
	}

	.site-footer-nav .sub a {
		font-size: 16px;
	}

	.site-footer-bottom {
		display: flex;
		align-items: center;
		justify-content: space-between;
		margin-top: 59px;
	}

	.site-footer-bottom a {
		font-size: 15px;
		line-height: 24px;
		letter-spacing: 0.12em;
	}

	.site-footer-bottom small {
		font-size: 16px;
		line-height: 24px;
		letter-spacing: 0.04em;
	}
}

/* 表示幅が1500px未満のとき、ロゴとボタンが重ならないようヘッダー全体を縮小する */
@media only screen and (min-width: 1025px) {
	@container (max-width: 1499px) {
		.site-header-bar {
			width: 1500px;
			max-width: none;
			transform: scale(calc(100cqi / 1500px));
			transform-origin: top left;
		}
	}
}

/*SMP*/
@media only screen and (max-width: 1024px) {
	main {
		padding-top: 70px;
	}

	.site-header {
		position: fixed;
		top: 0;
		left: 0;
		z-index: 100;
		width: 100%;
		background: #fff;
	}

	.site-header-bar {
		display: flex;
		align-items: flex-start;
		height: 70px;
		padding: 0 0 0 4px;
	}

	.site-header-tools {
		display: none;
	}

	/* 幅400px未満ではロゴ・丸ボタン・Menuを幅に比例して縮め、重ならないようにする */
	.site-header .logo {
		--logo-w: min(118px, 29.5vw);
		margin-top: 13px;
	}

	.header-shortcuts {
		display: flex;
		gap: min(7.5px, 1.875vw);
		margin: 2.5px min(10px, 2.5vw) 0 auto;
	}

	.header-shortcuts a {
		display: flex;
		flex-direction: column;
		align-items: center;
		flex-shrink: 0;
		width: min(55px, 13.75vw);
		height: min(55px, 13.75vw);
		padding-top: 10.5px;
		border-radius: 50%;
		box-shadow: 1.5px 2.5px 5px rgba(0, 98, 121, 0.2);
		text-align: center;
	}

	.header-shortcuts img {
		width: 14px;
		height: 14px;
		object-fit: contain;
	}

	.header-shortcuts .is-line img {
		width: 22px;
		height: 22px;
		margin: -4px 0;
	}

	.header-shortcuts small {
		margin-top: 5px;
		color: #fff;
		font-size: 6.5px;
		font-weight: 700;
		line-height: 8px;
	}

	.header-shortcuts .is-phone {
		background: #E5855F;
	}

	.header-shortcuts .is-line {
		background: #3EC676;
	}

	.header-shortcuts .is-mail {
		background: #F5C23E;
	}

	.menu-btn {
		position: relative;
		flex-shrink: 0;
		width: min(75px, 18.75vw);
		height: 70px;
	}

	.menu-mark {
		top: 18px;
		right: 21px;
		width: 24px;
	}

	.menu-lines {
		height: 18px;
	}

	.menu-lines span {
		height: 2px;
		border-radius: 1px;
	}

	.menu-mark small {
		margin-top: 5px;
		font-size: 6.5px;
	}

	.menu-panel {
		position: fixed;
		inset: 0;
		z-index: 200;
		overflow: auto;
		padding: 56.5px 47px 45px;
		background:
			radial-gradient(ellipse 60% 30% at 5% 10%, rgba(254, 241, 196, 0.95), transparent 70%),
			radial-gradient(ellipse 60% 25% at 95% 5%, rgba(221, 240, 248, 0.95), transparent 70%),
			radial-gradient(ellipse 55% 30% at 100% 60%, rgba(253, 239, 192, 0.8), transparent 70%),
			radial-gradient(ellipse 60% 30% at 0 80%, rgba(191, 230, 248, 0.85), transparent 70%),
			#fdfdfb;
	}

	body.is-menu-open {
		overflow: hidden;
	}

	body.is-menu-open .menu-panel {
		display: block;
	}

	.menu-close {
		position: absolute;
		top: 20px;
		right: 24px;
		display: flex;
		flex-direction: column;
		align-items: center;
		padding: 0;
		border: 0;
		background: transparent;
		color: #0098BC;
		cursor: pointer;
	}

	.menu-close span {
		position: relative;
		width: 20px;
		height: 16px;
	}

	.menu-close span::before,
	.menu-close span::after {
		content: "";
		position: absolute;
		top: 7.25px;
		left: -2.8px;
		width: 25.6px;
		height: 1.5px;
		background: #0098BC;
	}

	.menu-close span::before {
		transform: rotate(38.66deg);
	}

	.menu-close span::after {
		transform: rotate(-38.66deg);
	}

	.menu-close small {
		margin-top: 5px;
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 6px;
		font-weight: 700;
		letter-spacing: 0.1em;
	}

	.menu-cols>ul>li {
		background: linear-gradient(to right, #c9c9c9 1px, transparent 1px) left bottom / 3px 1px repeat-x;
	}

	.menu-link {
		position: relative;
		display: flex;
		align-items: center;
		min-height: 49.5px;
		padding: 0 0 0 22.5px;
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 14px;
		font-weight: 500;
		letter-spacing: 2px;
		color: #4a4a4a;
	}

	.menu-link::before {
		content: "";
		position: absolute;
		top: calc(50% - 4.5px);
		left: 2.5px;
		width: 9px;
		height: 9px;
		border-radius: 50%;
		background: #74CDD8;
	}

	.menu-staff-head {
		display: flex;
		align-items: center;
	}

	.menu-staff-head .menu-link {
		flex: 1;
	}

	/* スタッフ紹介 ドロップダウン — 閉：「＋」 / 開：「−」 */
	.menu-staff-toggle {
		position: relative;
		flex-shrink: 0;
		width: 40px;
		height: 49.5px;
		padding: 0;
		border: 0;
		background: transparent;
		cursor: pointer;
	}

	.menu-staff-toggle::before,
	.menu-staff-toggle::after {
		content: "";
		position: absolute;
		top: calc(50% - 1px);
		right: 3px;
		width: 16px;
		height: 2px;
		background: #30A5C1;
		transition: transform 0.2s;
	}

	.menu-staff.is-collapsed .menu-staff-toggle::after {
		transform: rotate(90deg);
	}

	.menu-staff.is-collapsed .menu-sub {
		display: none;
	}

	.menu-sub {
		margin-top: -6.5px;
		padding-bottom: 12px;
	}

	.menu-sub a {
		display: block;
		padding-left: 5px;
		color: #4a4a4a;
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 14px;
		font-weight: 500;
		line-height: 35px;
		letter-spacing: 1px;
	}

	.menu-cta {
		display: flex;
		flex-direction: column;
		gap: 15.5px;
		margin-top: 30.5px;
	}

	.footer-tel,
	.footer-line,
	.footer-form {
		width: 100%;
		height: 60px;
	}

	.footer-line {
		padding-left: 9px;
	}

	.footer-tel span {
		font-size: 11px;
		line-height: 1.4;
		letter-spacing: 0.16em;
	}

	.footer-tel small {
		margin-left: 8px;
		font-size: 9px;
		letter-spacing: 0.05em;
	}

	.footer-tel strong {
		gap: 8px;
		margin-top: 4px;
		font-size: 19px;
		letter-spacing: 0.05em;
	}

	.footer-tel strong img {
		width: 15px;
		height: 15px;
	}

	.footer-line small,
	.footer-form small {
		font-size: 11px;
		letter-spacing: 0.15em;
	}

	.footer-line strong,
	.footer-form strong {
		font-size: 17px;
		letter-spacing: 0.15em;
	}

	.footer-form strong {
		margin-right: 22px;
	}

	.cta-line-icon {
		left: 42px;
		width: 32.5px;
		height: 32.5px;
	}

	.footer-form .icon-mail {
		width: 20px;
		height: 20px;
		margin-right: 10px;
	}

	.footer-line::after,
	.footer-form::after {
		top: calc(50% - 5px);
		right: 18px;
		width: 10px;
		height: 10px;
	}

	.site-contact {
		padding: 8px 8px 16px;
		background:
			linear-gradient(to bottom, rgba(228, 243, 251, 0) calc(100% - 40px), #e4f3fb 100%),
			radial-gradient(300px 937px at calc(50% + 50px) 1100px, #e4f3fb 99.5%, rgba(228, 243, 251, 0) 100%),
			#fff;
	}

	.site-contact-box {
		padding: 44px 14px 41px;
		border-width: 7px;
		border-radius: 30px;
	}

	.site-contact .en {
		margin-bottom: 10.5px;
		color: #0098BC;
		font-family: "Montserrat", sans-serif;
		font-size: 11px;
		line-height: 1.5;
		text-align: center;
	}

	.site-contact h2 {
		width: calc(100% + 28px);
		margin: 0 -14px 49.5px;
		font-size: 22.5px;
		font-weight: 700;
		line-height: 32.5px;
		letter-spacing: 1.2px;
		color: #4A4A4A;
		white-space: nowrap;
	}

	.site-contact ul {
		display: flex;
		flex-direction: column;
		align-items: center;
		gap: 39px;
	}

	.site-contact li {
		position: relative;
		display: flex;
		flex-direction: column;
		align-items: center;
		width: 100%;
		max-width: 314px;
		height: 139px;
		margin: 0;
		padding: 28.5px 12px 0;
		border: 1.5px solid #E3E3E3;
		border-radius: 10px;
		background: #fff;
	}

	.contact-icon {
		position: absolute;
		top: 0;
		left: 50%;
		width: 40px;
		height: 40px;
		margin: 0;
		transform: translate(-50%, -50%);
	}

	.contact-icon img {
		width: 20px;
		height: 20px;
	}

	.contact-icon.is-line img {
		width: 40px;
		height: 40px;
	}

	.contact-icon.is-mail img {
		width: 18px;
		height: 18px;
		filter: brightness(0) invert(1);
	}

	.site-contact li p {
		margin: 0 0 17px;
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 17px;
		font-weight: 700;
		line-height: 22px;
		letter-spacing: 1.7px;
		color: #4A4A4A;
		text-align: center;
	}

	.contact-tel {
		font-size: 22px;
		letter-spacing: 1.3px;
	}

	.contact-tel::before {
		content: "TEL：";
		font-size: 12px;
		letter-spacing: 0.7px;
	}

	.site-contact small {
		display: block;
		margin-top: 7px;
		color: #E6774B;
		font-family: "Noto Sans JP", sans-serif;
		font-size: 13px;
		font-weight: 500;
		line-height: 1.2;
		letter-spacing: 1px;
		text-align: center;
	}

	.contact-btn {
		width: 240px;
		height: 50px;
		padding: 0 22px;
		border-radius: 50px;
		box-shadow: 3px 5px 5px rgba(0, 98, 121, 0.2);
		font-size: 15px;
		line-height: 22px;
		letter-spacing: 1.2px;
	}

	/* 矢印は文字の後ろに並べる（カンプ：文字との間隔 LINE 28px / フォーム 22px、文字は中央から約6.5px左）
	   右の負のマージンで、矢印の幅を中央揃えの計算から外す */
	.contact-btn::after {
		position: static;
		flex-shrink: 0;
		width: 10px;
		height: 10px;
		margin: 0 -18px 0 21px;
	}

	.contact-btn.is-mail::after {
		margin: 0 -12px 0 15px;
	}

	.site-contact-box .contact-dots.is-tr {
		width: 95px;
		height: 76.5px;
		border-top-right-radius: 23px;
	}

	.site-contact-box .contact-dots.is-bl {
		bottom: -70px;
		left: -60px;
		width: 150px;
		height: 150px;
	}

	.site-footer {
		position: relative;
		padding: 30px 25px 43px;
		background:
			radial-gradient(ellipse 60% 20% at 20% 30%, rgba(255, 255, 255, 0.5), transparent 70%),
			radial-gradient(ellipse 50% 20% at 85% 70%, rgba(255, 255, 255, 0.4), transparent 70%),
			linear-gradient(180deg, #e4f3fb 0%, #dcf0fb 45%, #e9f5fa 100%);
		text-align: center;
	}

	.site-footer-top {
		display: flex;
		flex-direction: column;
		align-items: center;
	}

	.site-footer-top .logo {
		--logo-w: 168px;
	}

	.sns {
		justify-content: center;
		gap: 41.5px;
		margin-top: 31.5px;
	}

	.sns a {
		gap: 8px;
	}

	.sns img {
		width: 35px;
		height: 35px;
	}

	.sns span {
		font-size: 12px;
		letter-spacing: 0.09em;
	}

	.site-footer address {
		margin-top: 30px;
		font-size: 12px;
		line-height: 21.5px;
		letter-spacing: 0.05em;
		text-align: left;
	}

	.site-footer-nav {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 0 8px;
		margin-top: 46.5px;
		text-align: left;
	}

	.site-footer-nav li {
		margin-bottom: 16.5px;
		line-height: 21px;
	}

	.site-footer-nav li:last-child {
		margin-bottom: 0;
	}

	.site-footer-nav a {
		color: #4a4a4a;
		font-family: "Zen Maru Gothic", sans-serif;
		font-size: 14px;
		font-weight: 500;
		letter-spacing: 0.06em;
	}

	.site-footer-bottom {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
		margin-top: 18.5px;
	}

	.site-footer-bottom a {
		font-size: 12px;
		line-height: 18px;
		letter-spacing: 0.08em;
	}

	.site-footer-bottom small {
		font-size: 12px;
		line-height: 18px;
		letter-spacing: 0.05em;
	}

	/* ページトップボタン（html の scroll-behavior: smooth で滑らかにスクロール） */
	.to-top {
		position: absolute;
		right: 5px;
		bottom: 5px;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: flex-start;
		width: 50px;
		height: 50px;
		padding-top: 13px;
		border-radius: 50%;
		background: #30A5C1;
	}

	/* 矢印：カンプどおり線端・角を丸く（SVG） */
	.to-top-arrow {
		display: block;
		width: 12px;
		height: 12.5px;
	}

	.to-top small {
		margin-top: 2px;
		color: #fff;
		font-family: "Montserrat", sans-serif;
		font-size: 7px;
		font-weight: 600;
		line-height: 1;
		letter-spacing: 0.1em;
	}
}
