/* -------sns icon--------- */
@font-face {
	font-family: 'sns_ico';
	src:
		url('../fonts/sns_ico.ttf?sij4de') format('truetype'),
		url('../fonts/sns_ico.woff?sij4de') format('woff'),
		url('../fonts/sns_ico.svg?sij4de#sns_ico') format('svg');
	font-weight: normal;
	font-style: normal;
}

i.snsIcon {
	font-family: 'sns_ico' !important;
	speak: never;
	font-style: normal;
	font-weight: normal;
	font-variant: normal;
	text-transform: none;
	line-height: 1;

	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;

	color: inherit;
}

.icon-ap:before { content: "\e900";}
.icon-blo:before { content: "\e901";}
.icon-fb:before { content: "\e902";}
.icon-hp:before { content: "\e903";}
.icon-in:before { content: "\e904";}
.icon-line:before { content: "\e905";}
.icon-spo:before { content: "\e906";}
.icon-tt:before { content: "\e907";}
.icon-tw:before { content: "\e908";}
.icon-yt:before { content: "\e909";}
.icon-x:before { content: "\e90a";}

/* ////////////////////////////////////////////////////////////////////////////////

	Common

//////////////////////////////////////////////////////////////////////////////// */
:root {
	--color-bg: #FFFEFC;
	--color-text: #3A3A3A;
	--color-beige: #C9AD92;
	--color-line: #DFDEDC;
	--color-schedule-hover: #F9F2EA;
	--color-movie-bg: #A0B6CE;
	--color-pagetop: #9FB6CE;
	--font-en: "Tenor Sans", serif;
	--font-jp: "游ゴシック体", YuGothic, "游ゴシック", "Yu Gothic", sans-serif;
}
html {
	scroll-behavior: smooth;
	/* 背景アニメーションが動かない環境向けのフォールバック */
	background-color: var(--color-bg);
	/* -webkit-font-smoothing: antialiased; */
}
body {
	font-family: var(--font-jp);
	line-height: 1.6;
	letter-spacing: 0.04em;
	color: var(--color-text);
	background-color: transparent;
}

/* ------- 背景アニメーション --------- */

.siteBg {
	position: fixed;
	inset: 0;
	z-index: -1;
	overflow: hidden;
	pointer-events: none;
}
.siteBgCanvas {
	display: block;
	width: 100%;
	height: 100%;
}
/* フィルムグレイン。グラデーションのバンディングを目立たなくする */
.siteBgGrain {
	position: absolute;
	inset: 0;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
	/* ress.min.css が全要素に no-repeat を当てているので明示的に戻す */
	background-repeat: repeat;
	background-size: 200px 200px;
	opacity: 0.05;
	mix-blend-mode: multiply;
	animation: siteBgGrain 1.1s steps(1, end) infinite;
}
@keyframes siteBgGrain {
	0% { background-position: 0 0; }
	16% { background-position: -22px 14px; }
	33% { background-position: 18px -26px; }
	50% { background-position: -30px -12px; }
	66% { background-position: 26px 20px; }
	83% { background-position: -14px 28px; }
	100% { background-position: 0 0; }
}
/* 四隅を少し落として中央に視線を集める */
.siteBgVignette {
	position: absolute;
	inset: 0;
	background: radial-gradient(
		ellipse 120% 100% at 50% 45%,
		rgba(255, 255, 255, 0) 45%,
		rgba(201, 173, 146, 0.1) 78%,
		rgba(150, 113, 77, 0.14) 100%
	);
}
@media (prefers-reduced-motion: reduce) {
	.siteBgGrain {
		animation: none;
	}
}

* {
	outline:none;
}
img {
	width: 100%;
	vertical-align: middle;
}
li {
	list-style: none;
}
a {
	transition: all 0.5s ease;
	text-decoration: none;
	color: var(--color-text);
}
a,
.slick-prev,
.slick-next {
	cursor: pointer;
}

/* クリック波紋 */
.clickRipple {
	position: fixed;
	left: 0;
	top: 0;
	z-index: 100000;
	width: 12px;
	height: 12px;
	margin: -6px 0 0 -6px;
	border: 1px solid var(--color-movie-bg);
	border-radius: 50%;
	background: transparent;
	pointer-events: none;
	animation: clickRippleExpand 0.9s ease-out forwards;
}
@keyframes clickRippleExpand {
	0% {
		transform: scale(0.3);
		opacity: 1;
	}
	100% {
		transform: scale(10);
		opacity: 0;
	}
}
@media (prefers-reduced-motion: reduce) {
	.clickRipple {
		animation: none;
		display: none;
	}
}

.contentWrap {
	max-width: 1240px;
	margin: auto;
  box-sizing: content-box;
}

.snsList {
	display: flex;
	align-items: center;
	gap: min(4vw, 20px);
}
.snsList a {
	font-size: min(5.6vw, 20px);
}
.snsList li,
.snsList a {
	line-height: 1;
}
.snsList a i,
.snsList a img {
	vertical-align: bottom;
}
.snsList i.icon-x {
	font-size: 0.9em;
}
.snsList i.icon-yt {
	font-size: 1.3em;
}
.snsList img.mail {
	width: 1em;
}

.anim {
	opacity: 0;
  transform: translateY(20px);
	transition: all .4s ease-out;
}
.anim.on {
  transform: translateY(0px);
	opacity: 1;
}
@keyframes op {
	0% { opacity: 0;}
	100% { opacity: 1;}
}

@media screen and (min-width:821px) {
	.sp {display: none !important;}
}
@media screen and (max-width:820px) {
	.pc {display: none !important;}
}
@media (hover: hover) {
	a:hover {
		opacity: 0.6;
	}
}


/* ------- op --------- */
#op {
	position: fixed;
	top: 0;
	left: 0;
	width: 100vw;
	height: 100svh;
	background-color: var(--color-bg);
	z-index: 9999;
	overflow: hidden;
}
#op .opVisual {
	position: absolute;
	left: 50%;
	top: 50%;
	/* ロゴ高さの上から70%地点を画面中央に合わせる */
	transform: translate(-50%, -70%);
	width: min(360px, 72vw);
	/* logo_bk.png (2821 x 757) の元比率を固定 */
	aspect-ratio: 2821 / 757;
	height: auto;
	background-color: transparent;
	background-image: url("../images/logo_bk.png");
	background-position: center center;
	background-size: 100% 100%;
	background-repeat: no-repeat;
	opacity: 0;
	transition: opacity 1.2s ease;
}
#op .opVisual.is-in {
	opacity: 1;
}
@media (prefers-reduced-motion: reduce) {
	#op .opVisual {
		transition: none;
	}
}

/* ////////////////////////////////////////////////////////////////////////////////

	menu button

//////////////////////////////////////////////////////////////////////////////// */
header {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 100;

	opacity: 0;
	animation: op 1s ease-out 1s forwards;
}
header .hdrLogo {
	width: min(14vw, 196px);
  line-height: 0;
}
header .hdrLogo a {
	position: relative;
	display: block;
}
header .hdrLogo img {
	display: block;
	width: 100%;
	height: auto;
}
header .hdrLogoLight {
	position: absolute;
	left: 0;
	top: 0;
	opacity: 0;
	transition: opacity 0.35s ease;
	pointer-events: none;
}
header .hdrLogoDark {
	transition: opacity 0.35s ease;
}
body.is-menu-open header .hdrLogoDark {
	opacity: 0;
}
body.is-menu-open header .hdrLogoLight {
	opacity: 1;
}
.mainNav {
  display: flex;
	flex-wrap: wrap;
	list-style: none;
}
.mainNav a {
  font-family: var(--font-en);
  font-weight: 400;
  font-style: normal;
  font-size: min(3.4vw, 14px);
	letter-spacing: 0.04em;
	color: var(--color-text);
  text-decoration: none;
}
header .snsList a {
	color: var(--color-text);
}

@media screen and (min-width:821px) {
	header {
		display: flex;
		justify-content: space-between;
		align-items: center;
		width: 100%;
		padding: min(4vw, 35px) clamp(16px, 3vw, 50px) min(2vw, 20px);
		background: transparent;
		transition: padding .35s ease;
	}
	/* 上を濃く、下は透明まで自然に落とす（コンテンツより下まで伸ばす） */
	header::before {
		content: "";
		position: absolute;
		left: 0;
		right: 0;
		top: 0;
		height: calc(100% + min(3.6vw, 40px));
		background: linear-gradient(
			180deg,
			rgba(255, 254, 252, 0.92) 0%,
			rgba(255, 254, 252, 0.55) 42%,
			rgba(255, 254, 252, 0.18) 72%,
			rgba(255, 254, 252, 0) 100%
		);
		pointer-events: none;
		z-index: -1;
	}
	header.is-scrolled {
		/* ページ最上部以外は上パディングを約20px狭くする */
		padding-top: max(8px, min(3vw, 30px) - 20px);
		padding-bottom: max(8px, min(3vw, 30px) - 20px);
	}
	header .hdrLogo {
		position: relative;
		z-index: 1;
		width: clamp(112px, 12.5vw, 196px);
		flex-shrink: 0;
		transition: width .35s ease;
    padding-bottom: 1.6vw;
	}
	header .snsList {
		position: relative;
		z-index: 1;
		gap: clamp(8px, 1.2vw, 20px);
		flex-shrink: 0;
	}
	header .snsList a {
		font-size: clamp(13px, 1.25vw, 20px);
	}
	.mainNav {
		position: absolute;
		top: 50%;
		left: 50%;
		transform: translate(-50%, -50%);
		justify-content: center;
		align-items: center;
		flex-wrap: nowrap;
		white-space: nowrap;
		gap: 0 clamp(4px, 1vw, 16px);
		max-width: calc(100% - clamp(240px, 36vw, 460px));
		z-index: 1;
	}
	.mainNav a {
		font-size: clamp(10px, 1.25vw, 14px);
		letter-spacing: clamp(0.01em, 0.03vw, 0.04em);
	}

	#menuButton {
		display: none;
	}
}
@media screen and (max-width:820px) {
	header {
		position: relative;
    z-index: 100;
	}
	header .hdrLogo {
		position: fixed;
		top: min(10vw, 4vh);
		left: min(5.6vw, 40px);
		transform: translateY(-50%);
		width: min(36vw, 160px);
		z-index: 10000;
	}
	#menuButton {
		display: block;
		width: min(15vw, 60px);
		height:40px;
		position: fixed;
		top: min(10vw, 4vh);
		right: min(4vw, 40px);
		transform: translateY(-50%);
		z-index: 9999;
	}
	#menuButton span {
		display: block;
		background: var(--color-text);
		width: min(10vw, 40px);
		height: 2px;
		position: absolute;
		transition: all 0.4s;
	}
	#menuButton.active span {
		background: #fff;
	}
	#menuButton span:first-child {
		top: 12px;
		left: 0;
	}
	#menuButton span:nth-child(2) {
		top: 50%;
		left: min(2.5vw, 10px);
		margin-top: -1px;
	}
	#menuButton span:nth-child(3) {
		bottom: 12px;
		left: min(5vw, 20px);
	}

	#menuButton.active span:first-child {
		transform: translateY(7px) rotate(21.8deg);
	}
	#menuButton.active span:nth-child(2) {
		transform: rotate(-11.3deg);
	}
	#menuButton.active span:nth-child(3) {
		transform: translateY(-7px) rotate(22.83deg);
	}

	#globalNav {
		display: none;
		position: fixed;
		top: 0px;
		left: 0px;
		z-index: 2;
	}
	.navWrap {
		display: flex;
		flex-direction: column;
		justify-content: center;
		background-color: #9FB6CE;
		height: 100vh;
		width: 100vw;
		padding: min(8vw, 64px);
	}
	.mainNav {
		flex-direction: column;
		padding-bottom: min(6vw, 48px);
		border-bottom: #fff solid 1px;
		margin-bottom: min(8vw, 64px);
	}
	.mainNav a,
	.navWrap .snsList a {
		font-size: min(6.2vw, 32px);
		color: #fff;
	}
	.navWrap .snsList a {
		font-size: min(5.6vw, 20px);
	}
}


/* ////////////////////////////////////////////////////////////////////////////////

	Contents

//////////////////////////////////////////////////////////////////////////////// */

h2 {
  font-family: var(--font-en);
  font-weight: 400;
  font-style: normal;
	font-size: min(4.4vw, 60px);
	letter-spacing: 0.02em;
	line-height: 1.2;
}
@media screen and (max-width:820px) {
	h2 {
		font-size: min(7.4vw, 34px);
	}
}

/* 見出しとVIEW MOREを同じ高さで両端に、コンテンツは下に縦積み */
.secHead {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: min(4vw, 32px);
	margin-bottom: min(8vw, 50px);
}

.moreWrap {
	display: flex;
	justify-content: center;
	margin-top: min(9vw, 48px);
}

.moreBtn {
	width: fit-content;
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.6em;
	min-width: min(44vw, 160px);
	padding: 1.05em 1.5em 1.05em 2em;
	border: 1px solid var(--color-beige);
	border-radius: 100px;
	background-color: transparent;
  font-family: var(--font-en);
  font-weight: 400;
  font-style: normal;
	font-size: min(3.2vw, 12px);
	line-height: 1;
	letter-spacing: 0.14em;
	color: var(--color-beige);
	text-decoration: none;
	transition: background-color .4s ease, border-color .4s ease, color .4s ease;
  box-sizing: border-box;
}
.moreBtn span {
	position: relative;
	display: block;
  width: 0.9em;
  height: 0.9em;
	border-radius: 100%;
	background-color: var(--color-beige);
	transition: background-color .4s ease;
}
.moreBtn:hover {
	opacity: 1;
}
@media (hover: hover) {
	.moreBtn:hover {
		background-color: var(--color-beige);
		color: #fff;
	}
	.moreBtn:hover span {
		background-color: #fff;
	}
}

/* --------- MAIN VISUAL --------- */

.mainVisual {
	width: 100vw;
	padding: min(1.6vw, 24px);
}
.mainVisualInner {
	position: relative;
	width: 100%;
	/* ファーストビューいっぱい（余白分を引く）＝オープニングと同サイズ感 */
	height: calc(100svh - min(3.2vw, 48px));
	border-radius: min(2.4vw, 20px);
	overflow: hidden;
}
.mainVisualLogo {
	display: none;
}
.mainVisualFrame {
	position: absolute;
	inset: 0;
}
/* 画像自体は画面全体の cover と同じスケール。枠で切り抜いて見せる */
.mainVisualImg {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: center center;
}
.mainVisualBanner {
	position: absolute;
	right: min(2.8vw, 20px);
	bottom: min(2.8vw, 20px);
	z-index: 2;
	display: flex;
	align-items: stretch;
	gap: min(1.6vw, 14px);
	box-sizing: border-box;
	width: min(42vw, 380px);
	padding: min(1.4vw, 12px);
	border-radius: min(2vw, 16px);
	background-color: rgba(150, 113, 77, 0.8);
	-webkit-backdrop-filter: blur(3px);
	backdrop-filter: blur(3px);
	color: #fff;
	text-decoration: none;
	line-height: 1.4;
	transition: background-color 0.3s ease, transform 0.45s ease, opacity 0.35s ease;
}
.mainVisualBannerThumb {
	flex: 0 0 auto;
	width: min(18vw, 88px);
	aspect-ratio: 1 / 1;
	overflow: hidden;
	border-radius: min(1vw, 8px);
}
.mainVisualBannerThumb img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.mainVisualBannerBody {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 0.25em;
	padding: 0.1em min(3.2vw, 28px) 0.1em 0;
}
.mainVisualBanner.is-noThumb .mainVisualBannerBody {
	padding-left: 0.2em;
}
.mainVisualBannerSub {
	display: block;
	font-family: var(--font-en);
	font-size: min(3.2vw, 14px);
	font-weight: 400;
	letter-spacing: 0.08em;
	line-height: 1.3;
}
.mainVisualBannerTitle {
	display: block;
	font-size: min(3.4vw, 17px);
	font-weight: 700;
	letter-spacing: 0.04em;
	line-height: 1.35;
  font-feature-settings: "palt";
}
.mainVisualBannerLead {
	display: block;
	margin-top: 0.15em;
	font-size: min(2.8vw, 11px);
	font-weight: 400;
	letter-spacing: 0.04em;
	line-height: 1.6;
	white-space: pre-line;
}
.mainVisualBannerMore {
	position: absolute;
	right: min(1.8vw, 16px);
	bottom: min(1.8vw, 16px);
	/* .moreBtn span と同じ: 0.6em × moreBtn の font-size */
	width: calc(0.9 * min(3.2vw, 12px));
	height: calc(0.9 * min(3.2vw, 12px));
	border-radius: 100%;
	background-color: #fff;
	pointer-events: none;
}
@media (hover: hover) {
	a.mainVisualBanner:hover {
		opacity: 1;
		background-color: rgba(201, 173, 146, 0.8);
	}
}

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

	body.page-top .mainVisual {
		min-height: 0;
		padding: min(4vw, 16px) min(5.2vw, 15px) min(24vw, 100px);
		box-sizing: border-box;
	}
	body.page-top .mainVisualInner {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		height: auto;
		min-height: 0;
		border-radius: 0;
		overflow: visible;
	}
	body.page-top .mainVisualLogo {
		display: block;
		width: min(52vw, 200px);
		margin: min(22vw, 70px) auto min(12vw, 60px);
		line-height: 0;
	}
	body.page-top .mainVisualLogo img {
		display: block;
		width: 100%;
		height: auto;
	}
	body.page-top .mainVisualFrame {
		position: relative;
		inset: auto;
		width: 100%;
		aspect-ratio: 100 / 65;
		border-radius: min(3.2vw, 12px);
		overflow: hidden;
		flex-shrink: 0;
	}
	/* バナーは画面下に固定。スクロールで右へ退避 */
	body.page-top .mainVisualBanner {
		position: fixed;
		left: min(5.2vw, 15px);
		right: min(5.2vw, 15px);
		bottom: max(min(4vw, 16px), env(safe-area-inset-bottom, 0px));
		width: auto;
		gap: min(3.2vw, 12px);
		padding: min(2.8vw, 10px);
		margin: 0;
		border-radius: min(3.2vw, 14px);
		z-index: 30;
		transition: transform 0.45s ease, opacity 0.35s ease;
	}
	body.page-top .mainVisualBanner.is-hide {
		transform: translateX(110%);
		opacity: 0;
		pointer-events: none;
	}
	body.page-top .mainVisualBannerThumb {
		width: min(22vw, 84px);
		border-radius: min(2vw, 8px);
	}
	body.page-top .mainVisualBannerBody {
		padding-right: min(6vw, 24px);
	}
	body.page-top .mainVisualBannerSub {
		font-size: min(3.2vw, 14px);
	}
	body.page-top .mainVisualBannerTitle {
		font-size: min(4.2vw, 16px);
	}
	body.page-top .mainVisualBannerLead {
		font-size: min(2.8vw, 11px);
	}
	body.page-top .mainVisualBannerMore {
		right: min(3.2vw, 14px);
		bottom: min(3.2vw, 14px);
	}
	/* INFORMATION をメイン画像下の余白の直後に詰める */
	body.page-top #information .contentWrap {
		padding-top: 0;
	}

	/* SP TOP: ヘッダーロゴは初期非表示 → スクロールでフェードイン
	   メニュー開時は logo.png を表示するためロゴ自体は出す */
	body.page-top header .hdrLogo {
		opacity: 0;
		pointer-events: none;
		transition: opacity 0.45s ease;
	}
	body.page-top header .hdrLogo.is-show,
	body.page-top.is-menu-open header .hdrLogo {
		opacity: 1;
		pointer-events: auto;
	}

	/* SP 下層など（TOP以外）の mainVisual は現状なし。念のため従来値を残す */
	.mainVisual {
		padding: min(2.4vw, 12px);
	}
	.mainVisualInner {
		height: calc(100svh - min(4.8vw, 24px));
		border-radius: min(3.2vw, 12px);
	}
}

/* --------- INFORMATION --------- */

#information .contentWrap {
	padding: min(13vw, 180px) min(4.4vw, 64px) min(7vw, 100px);
}
.infoList {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: min(3.2vw, 46px);
  max-width: 1120px;
  margin-left: auto;
  margin-right: auto;
}
.infoList > a {
	display: block;
	position: relative;
}
.infoList > a:hover {
  opacity: 1;
}
.infoList > a.new .img::after {
	content: "NEW";
	position: absolute;
	top: min(2vw, 8px);
	left: min(2vw, 8px);
	z-index: 1;
	padding: 0.2em 0.55em;
	font-size: min(2.8vw, 10px);
	font-family: var(--font-en);
	letter-spacing: 0.08em;
	color: #fff;
	background: #4E6175;
	border-radius: 2px;
	line-height: 1.4;
}
.infoList .img {
	width: 100%;
	aspect-ratio: 29/22;
	position: relative;
	overflow: hidden;
	border-radius: min(2vw, 8px);
}
.infoList .img img {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
  transition: transform 0.4s ease-out;
}
.infoList > a:hover .img img {
  transform: scale(1.1);
}
.infoList .infoText {
	display: block;
	text-align: left;
	margin-bottom: 0;
	letter-spacing: normal;
	font-size: inherit;
	color: inherit;
}
.infoList .date {
	font-family: var(--font-en);
	font-size: min(3vw, 13px);
	margin-top: min(4vw, 16px);
}
.infoList .title {
	font-size: min(3.8vw, 16px);
	font-weight: bold;
	margin-top: min(1vw, 8px);
	line-height: 1.5;
}

#infoPage {
	padding-bottom: min(10vw, 120px);
}
#infoPage .pageTitle {
	margin-bottom: min(6vw, 56px);
}
@media screen and (min-width:821px) {
	#infoPage .infoListPage {
		row-gap: min(5vw, 56px);
	}
}
@media screen and (max-width:820px) {
	#information .contentWrap {
		padding: min(16vw, 140px) min(6.4vw, 64px) min(10vw, 90px);
	}
	.infoList {
		grid-template-columns: 1fr;
		gap: 0;
		border-top: 1px solid var(--color-line);
	}
	.infoList > a {
		display: flex;
		align-items: flex-start;
		gap: min(4vw, 16px);
		padding: min(4.8vw, 20px) 0;
		border-bottom: 1px solid var(--color-line);
	}
	.infoList .img {
		width: min(34vw, 140px);
		flex-shrink: 0;
		aspect-ratio: 4 / 3;
		border-radius: min(2vw, 8px);
		margin: 0;
	}
	.infoList .infoText {
		flex: 1 1 auto;
		min-width: 0;
		padding-top: min(0.6vw, 4px);
	}
	.infoList .date {
		margin-top: 0;
		font-size: min(3vw, 12px);
	}
	.infoList .title {
		margin-top: min(2vw, 8px);
		font-size: min(3.8vw, 15px);
		font-weight: 400;
	}
	#infoPage .infoListPage {
		margin-top: 0;
	}
}

/* --------- INFORMATION DETAIL --------- */

#infoDetailPage {
	padding-bottom: min(12vw, 140px);
}
#scheduleDetailPage {
	padding-bottom: min(12vw, 140px);
}
.infoDetail {
	max-width: 1080px;
	margin: 0 auto;
}
.infoDetailDate {
	font-family: var(--font-en);
	font-size: min(3vw, 12px);
	line-height: 1.4;
	letter-spacing: 0.06em;
	color: #8a8a8a;
}
.infoDetailTitle {
	margin-top: min(2.4vw, 16px);
	font-size: min(5.6vw, 28px);
	font-weight: 700;
	line-height: 1.5;
	letter-spacing: 0.04em;
}
.infoDetailThumb {
	margin-top: min(6vw, 40px);
	width: 100%;
	overflow: hidden;
	border-radius: min(2vw, 8px);
}
.infoDetailThumb img {
	width: 100%;
	height: auto;
	vertical-align: bottom;
}
.infoDetailBody {
	margin-top: min(6vw, 40px);
	font-size: min(3.8vw, 15px);
	line-height: 2;
	letter-spacing: 0.04em;
}
.infoDetailBody > *:first-child {
	margin-top: 0;
}
.infoDetailBody > *:last-child {
	margin-bottom: 0;
}
.infoDetailBody p + p {
	margin-top: 1em;
}
.infoDetailBody img {
	display: block;
	max-width: 100%;
	height: auto;
	margin: 1.5em auto;
}
.infoDetailBody a {
	color: var(--color-beige);
	text-decoration: underline;
}
.infoDetailBody ul,
.infoDetailBody ol {
	margin: 1em 0;
	padding-left: 1.5em;
}
.infoDetailBody li + li {
	margin-top: 0.4em;
}
.infoDetailBody h2,
.infoDetailBody h3,
.infoDetailBody h4 {
	margin: 1.6em 0 0.6em;
	font-weight: 700;
	line-height: 1.5;
}
.infoDetailNav {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: min(4vw, 24px);
	margin-top: min(10vw, 72px);
}
.infoDetailNav .infoNavBtn.next {
	margin-left: auto;
}
.infoNavBtn {
	display: inline-flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.4em;
	min-width: min(36vw, 148px);
	padding: 1.05em 1.5em;
	border: 1px solid var(--color-beige);
	border-radius: 100px;
	background-color: transparent;
	font-family: var(--font-en);
	font-weight: 400;
	font-style: normal;
	font-size: min(3.2vw, 12px);
	line-height: 1;
	letter-spacing: 0.14em;
	color: var(--color-beige);
	text-decoration: none;
	transition: background-color .4s ease, border-color .4s ease, color .4s ease;
}
.infoNavBtn span {
	display: block;
	width: 0.55em;
	height: 0.55em;
	border-radius: 100%;
	background-color: var(--color-beige);
	flex-shrink: 0;
	transition: background-color .4s ease;
}
.infoNavBtn:hover {
	opacity: 1;
}
@media (hover: hover) {
	.infoNavBtn:hover {
		background-color: var(--color-beige);
		color: #fff;
	}
	.infoNavBtn:hover span {
		background-color: #fff;
	}
}
@media screen and (max-width:820px) {
	.infoDetailDate {
		font-size: min(3.2vw, 12px);
	}
	.infoDetailTitle {
		margin-top: min(3vw, 12px);
		font-size: min(5.2vw, 22px);
	}
	.infoDetailThumb {
		margin-top: min(8vw, 36px);
		border-radius: min(2.4vw, 10px);
	}
	.infoDetailBody {
		margin-top: min(8vw, 36px);
		font-size: min(3.8vw, 14px);
		line-height: 1.9;
	}
	.infoDetailNav {
		margin-top: min(12vw, 56px);
	}
	.infoNavBtn {
		min-width: min(38vw, 140px);
		padding: 1em 1.4em;
		font-size: min(3.4vw, 12px);
	}
}

/* --------- MOVIE PAGE --------- */

#moviePage {
	padding-bottom: min(10vw, 120px);
}
#moviePage .pageTitle {
	margin-bottom: min(6vw, 56px);
}
.movieList {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: min(4.4vw, 48px) min(2.8vw, 32px);
}
.movieListItem {
	display: block;
	text-align: left;
	color: var(--color-text);
}
.movieListItem:hover {
	opacity: 1;
}
.movieListItem .thumb {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border-radius: min(1.2vw, 8px);
	background-color: #eee;
}
.movieListItem .thumb img {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.4s ease-out;
}
@media (hover: hover) {
	.movieListItem:hover .thumb img {
		transform: scale(1.1);
	}
}
.movieListItem .category {
	margin-top: min(1.6vw, 14px);
	font-family: var(--font-en);
	font-size: min(2.8vw, 12px);
	letter-spacing: 0.06em;
	line-height: 1.4;
	color: #8a8a8a;
}
.movieListItem .title {
	margin-top: min(0.6vw, 6px);
	font-size: min(3.8vw, 16px);
	font-weight: 700;
	line-height: 1.5;
	letter-spacing: 0.04em;
}
@media screen and (max-width:820px) {
	#moviePage .pageTitle {
		margin-bottom: min(8vw, 40px);
	}
	.movieList {
		grid-template-columns: 1fr;
		gap: min(10vw, 48px);
	}
	.movieListItem .thumb {
		border-radius: min(2vw, 8px);
	}
	.movieListItem .category {
		margin-top: min(3.2vw, 14px);
		font-size: min(3vw, 12px);
	}
	.movieListItem .title {
		margin-top: min(1.6vw, 8px);
		font-size: min(4.2vw, 16px);
		font-weight: 400;
	}
}

/* --------- DISCOGRAPHY PAGE --------- */

#discographyPage {
	padding-bottom: min(10vw, 120px);
}
#discographyPage .pageTitle {
	margin-bottom: min(6vw, 56px);
}
.discoList {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: min(4.4vw, 48px) min(2.8vw, 32px);
}
.discoItem {
	display: block;
	text-align: left;
	color: var(--color-text);
}
.discoItem:hover {
	opacity: 1;
}
.discoItem .img {
	position: relative;
	width: 100%;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	background-color: #eee;
}
.discoItem .img img {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.4s ease-out;
}
@media (hover: hover) {
	.discoItem:hover .img img {
		transform: scale(1.1);
	}
}
.discoItem .title {
	margin-top: min(2vw, 14px);
	font-size: min(3.4vw, 16px);
	font-weight: bold;
	line-height: 1.4;
}
.discoItem .format {
	margin-top: min(1vw, 6px);
	font-family: var(--font-en);
	font-size: min(2.6vw, 13px);
	letter-spacing: 0.06em;
	line-height: 1.3;
}
.discoItem .date {
	margin-top: min(0.8vw, 6px);
	font-family: var(--font-en);
	font-size: min(2.6vw, 13px);
	color: #8a8a8a;
	line-height: 1.3;
}
@media screen and (max-width:820px) {
	.discoList {
		grid-template-columns: repeat(2, 1fr);
		gap: min(8vw, 36px) min(4vw, 16px);
	}
	.discoItem .title {
		font-size: min(3.8vw, 14px);
		margin-top: min(3vw, 12px);
	}
	.discoItem .format {
		font-size: min(2.8vw, 10px);
	}
	.discoItem .date {
		font-size: min(2.8vw, 10px);
	}
}

/* --------- DISCOGRAPHY DETAIL --------- */

#discoDetailPage {
	padding-bottom: min(12vw, 140px);
}
#discoDetailPage .pageTitle {
	margin-bottom: min(6vw, 56px);
}
.discoDetail {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: min(5vw, 64px);
	align-items: start;
	max-width: 1080px;
}
.discoDetailCover {
	position: relative;
	width: 100%;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	background-color: #eee;
}
.discoDetailCover img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.discoDetailTitle {
	font-size: min(4.4vw, 28px);
	font-weight: bold;
	line-height: 1.4;
	letter-spacing: 0.04em;
	margin-bottom: min(2.4vw, 20px);
}
.discoDetailMeta {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: min(3vw, 24px);
}
.discoDetailMetaText .format {
	font-family: var(--font-en);
	font-size: min(2.8vw, 12px);
	letter-spacing: 0.06em;
	line-height: 1.4;
}
.discoDetailMetaText .date {
	margin-top: 0.35em;
	font-family: var(--font-en);
	font-size: min(2.8vw, 12px);
	color: #8a8a8a;
	line-height: 1.4;
}
.discoPlayBtn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.7em;
	flex-shrink: 0;
	min-width: min(32vw, 132px);
	padding: 0.85em 1.5em;
	border: 1px solid var(--color-text);
	border-radius: 100px;
	background: transparent;
	font-family: var(--font-en);
	font-size: min(2.8vw, 12px);
	letter-spacing: 0.14em;
	line-height: 1;
	color: var(--color-text);
	transition: background-color .3s ease, color .3s ease;
}
.discoPlayBtn:hover {
	opacity: 1;
}
@media (hover: hover) {
	.discoPlayBtn:hover {
		background-color: var(--color-text);
		color: #fff;
	}
	.discoPlayBtn:hover .playIcon {
		border-color: #fff;
	}
	.discoPlayBtn:hover .playIcon::before {
		border-left-color: #fff;
	}
}
.discoPlayBtn .playIcon {
	position: relative;
	display: block;
	width: 1.35em;
	height: 1.35em;
	border: 1px solid currentColor;
	border-radius: 100%;
}
.discoPlayBtn .playIcon::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 54%;
	transform: translate(-50%, -50%);
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 0.28em 0 0.28em 0.45em;
	border-color: transparent transparent transparent currentColor;
}
.discoDetailContent {
	margin-top: min(3.6vw, 36px);
	padding-top: min(3.2vw, 32px);
	border-top: 1px solid var(--color-line);
	font-size: min(3.2vw, 14px);
	line-height: 1.8;
	letter-spacing: 0.04em;
}
.discoDetailContent > *:first-child {
	margin-top: 0;
}
.discoDetailContent > *:last-child {
	margin-bottom: 0;
}
.discoDetailContent p + p {
	margin-top: 1em;
}
.discoDetailContent h3,
.discoDetailContent h4 {
	font-size: min(3.2vw, 14px);
	font-weight: bold;
	letter-spacing: 0.06em;
	margin: 1.4em 0 0.6em;
}
.discoDetailContent ul,
.discoDetailContent ol {
	margin: 0.8em 0 0.8em 1.4em;
	padding-left: 1.2em;
}
.discoDetailContent ul {
	list-style-type: disc;
}
.discoDetailContent ol {
	list-style-type: decimal;
}
.discoDetailContent ul li,
.discoDetailContent ol li {
	list-style: inherit;
	display: list-item;
}
.discoDetailContent li + li {
	margin-top: 0.35em;
}
.discoDetailContent img {
	display: block;
	max-width: 100%;
	height: auto;
	margin: 1.5em auto;
}
.discoDetailContent a {
	color: var(--color-beige);
	text-decoration: underline;
}
@media screen and (max-width:820px) {
	#discoDetailPage .pageTitle {
		text-align: center;
		margin-bottom: min(8vw, 40px);
	}
	.discoDetail {
		grid-template-columns: 1fr;
		gap: min(6vw, 28px);
		max-width: none;
	}
	.discoDetailTitle {
		font-size: min(5.6vw, 22px);
		margin-bottom: min(3vw, 14px);
	}
	.discoDetailMeta {
		flex-direction: column;
		align-items: stretch;
		gap: min(7vw, 28px);
	}
	.discoDetailMetaText .format {
		font-size: min(3.2vw, 12px);
	}
	.discoDetailMetaText .date {
		font-size: min(3.2vw, 12px);
	}
	.discoPlayBtn {
		align-self: center;
		min-width: min(42vw, 160px);
		padding: 1em 1.8em;
		font-size: min(3.2vw, 12px);
	}
	.discoDetailContent {
		margin-top: min(10vw, 48px);
		padding-top: 0;
		border-top: none;
		font-size: min(3.6vw, 14px);
	}
	.discoDetailContent h3,
	.discoDetailContent h4 {
		font-size: min(3.8vw, 14px);
	}
}

/* --------- SCHEDULE --------- */

#schedule .contentWrap {
	padding: min(8vw, 110px) min(4.4vw, 64px) min(9vw, 124px);
}
.scheduleList {
	border-top: 1px solid var(--color-line);
  max-width: 1120px;
  margin-left: auto;
  margin-right: auto;
}
.scheduleList li {
	display: block;
	border-bottom: 1px solid var(--color-line);
}
.scheduleList li a {
	display: block;
	margin: min(1vw, 8px) 0;
	padding: min(2.4vw, 20px) min(1.6vw, 16px);
	transition: background-color .4s ease;
}
.scheduleList li a:hover {
	opacity: 1;
}
.scheduleList .scheduleDisc {
	display: flex;
	align-items: center;
	gap: min(3.2vw, 20px);
	line-height: 1;
}
.scheduleList .scheduleDisc .date {
  font-family: var(--font-en);
  font-weight: 600;
  font-style: normal;
	letter-spacing: 0;
	flex: 0 0 auto;
	width: min(28vw, 110px);
	position: relative;
	display: flex;
	align-items: center;
	font-size: min(8vw, 36px);
	padding-left: 0.55em;
}
.scheduleList .scheduleDisc .date > span:first-child {
	position: absolute;
	top: 50%;
	left: 0;
	transform: translate(-30%, -50%) rotate(-90deg);
	font-size: 0.333em;
	font-weight: 400;
	letter-spacing: 0.06em;
}
.scheduleList .scheduleBody {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: min(1.2vw, 10px);
	padding-left: min(3.8vw, 40px);
	border-left: 1px solid var(--color-line);
}
.scheduleList .tag {
	display: block;
	width: fit-content;
  font-family: var(--font-en);
  font-weight: 600;
  font-style: normal;
	font-size: min(3vw, 12px);
	letter-spacing: 0.04em;
	line-height: 1.2;
	border: none;
	padding: 0;
	margin: 0;
	border-radius: 0;
}
.scheduleList .scheduleBody .title {
	font-size: min(3.2vw, 16px);
	line-height: 1.5;
	letter-spacing: 0.02em;
}
@media (hover: hover) {
	.scheduleList li a:hover {
		background-color: var(--color-schedule-hover);
	}
}
@media screen and (max-width:820px) {
	#schedule .contentWrap {
		padding: min(10vw, 90px) min(6.4vw, 64px) min(14vw, 120px);
	}
	.scheduleList li a {
		margin: min(1.6vw, 8px) 0;
		padding: min(4vw, 18px) min(2vw, 10px);
	}
	/* SP: 上段=日付+カテゴリ / 下段=タイトル幅100% */
	.scheduleList .scheduleDisc {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		gap: min(4vw, 20px) min(1vw, 14px);
	}
	.scheduleList .scheduleDisc .date {
		width: auto;
		min-width: min(28vw, 94px);
		font-size: min(7.2vw, 28px);
		padding-top: 0;
	}
	.scheduleList .scheduleBody {
		display: contents;
	}
	.scheduleList .tag {
		padding-left: min(6vw, 30px);
		border-left: 1px solid var(--color-line);
		line-height: 1;
	}
	.scheduleList .scheduleBody .title {
		flex: 0 0 100%;
		width: 100%;
		font-size: min(3.6vw, 14px);
	}
}

/* --------- MOVIE --------- */

#movie {
	position: relative;
	overflow: hidden;
	padding: min(8.4vw, 120px) 0 min(8vw, 90px);
	background-color: var(--color-movie-bg);
	color: #fff;
}

/* MOVIEの文字がスライドの後ろでティッカーのようにループ */
.movieTicker {
	display: flex;
	width: 100%;
	overflow: hidden;
	margin-bottom: -0.2em;
	font-size: min(22vw, 104px);
	line-height: 1;
	letter-spacing: 0.02em;
	white-space: nowrap;
	user-select: none;
	pointer-events: none;
}
.movieTickerTrack {
	display: flex;
	flex-shrink: 0;
	animation: movieTicker 24s linear infinite;
  opacity: 0.8;
}
.movieTickerTrack > span {
	padding-right: 0.8em;
}
@keyframes movieTicker {
	from { transform: translateX(0); }
	to { transform: translateX(-100%); }
}
@media (prefers-reduced-motion: reduce) {
	.movieTickerTrack {
		animation: none;
	}
}

.movieSlide {
	position: relative;
	z-index: 1;
}

.movieSlide .movieItem {
	padding: 0 min(1.4vw, 20px);
	transform-origin: center center;
	transition: transform 0.7s ease;
}
.movieSlide.is-no-transition .movieItem {
	transition: none;
}
.movieSlide.is-no-transition .movieItem .title {
	transition: none;
}
.movieSlide .movieItem > a {
	display: block;
}
.movieSlide .movieItem > a:hover {
	opacity: 1;
}
.movieSlide .slick-slide .movieItem {
	transform: scale(0.565);
}
.movieSlide .slick-center .movieItem,
.movieSlide .is-active-next .movieItem {
	transform: scale(1);
}
/* ループ境界の遷移中は次スライド（is-active-next）だけ拡大。旧 center は縮小のまま */
.movieSlide:has(.is-active-next) .slick-center:not(.is-active-next) .movieItem {
	transform: scale(0.565);
}

/* 前後のスライドは中央スライドに寄せて見切れさせる */
.movieSlide .slick-center + .slick-slide .movieItem,
.movieSlide .is-active-next + .slick-slide .movieItem {
	transform-origin: left center;
}
.movieSlide .slick-slide:has(+ .slick-center) .movieItem,
.movieSlide .slick-slide:has(+ .is-active-next) .movieItem {
	transform-origin: right center;
}
/* 遷移中の旧 center 隣接は通常オリジンに戻す */
.movieSlide:has(.is-active-next) .slick-center:not(.is-active-next) + .slick-slide .movieItem {
	transform-origin: center center;
}
.movieSlide:has(.is-active-next) .slick-slide:has(+ .slick-center:not(.is-active-next)) .movieItem {
	transform-origin: center center;
}
.movieSlide .movieItem .thumb {
	position: relative;
	width: 100%;
	aspect-ratio: 16/10;
	overflow: hidden;
	background-color: #000;
}
.movieSlide .movieItem .thumb img {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
  transition: transform 0.4s ease-out;
}
.movieSlide .movieItem > a:hover .thumb img {
  transform: scale(1.1);
}
.movieSlide .movieItem .title {
	margin-top: min(1.8vw, 16px);
	font-size: min(3.8vw, 16px);
	text-align: center;
	color: #fff;
	opacity: 0;
	transition: opacity 0.5s ease;
}
.movieSlide .slick-center .movieItem .title,
.movieSlide .is-active-next .movieItem .title {
	opacity: 1;
}
.movieSlide:has(.is-active-next) .slick-center:not(.is-active-next) .movieItem .title {
	opacity: 0;
}

.movieSlide .slick-next,
.movieSlide .slick-prev {
	position: absolute;
	top: 50%;
	width: min(6vw, 30px);
	aspect-ratio: 1/2;
	transform: translateY(-50%);
	z-index: 2;
}
.movieSlide .slick-prev {
	left: 24%;
	right: auto;
}
.movieSlide .slick-next {
	right: 24%;
	left: auto;
}
.movieSlide .slick-next::before,
.movieSlide .slick-prev::before {
	display: block;
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
  width: min(6vw, 80px);
	aspect-ratio: 1/1;
	border-top: #fff solid 1px;
	border-left: #fff solid 1px;
	transition: opacity 0.4s ease-in-out;
	opacity: 1;
}
.movieSlide .slick-prev::before {
	transform: translate(-50%, -50%) rotate(-45deg);
}
.movieSlide .slick-next::before {
	transform: translate(-50%, -50%) rotate(135deg);
}
.movieSlide .slick-next:hover::before,
.movieSlide .slick-prev:hover::before {
	opacity: 0.5;
}

#movie .moreBtn {
	border-color: #fff;
	background-color: transparent;
	color: #fff;
}
#movie .moreBtn span {
	background-color: #fff;
}
@media (hover: hover) {
	#movie .moreBtn:hover {
		background-color: #fff;
		color: var(--color-movie-bg);
	}
	#movie .moreBtn:hover span {
		background-color: var(--color-movie-bg);
	}
}
@media screen and (max-width:820px) {

	#movie {
		padding: min(11vw, 100px) 0 min(7vw, 64px);
	}
	.movieTicker {
		margin-bottom: 0;
	}
	.movieSlide .movieItem {
		padding: 0 min(2.6vw, 10px);
	}
	.movieSlide .slick-prev {
		left: 6%;
	}
	.movieSlide .slick-next {
		right: 6%;
	}
}

/* --------- BIOGRAPHY --------- */

#biography {
	position: relative;
}
#biography .contentWrap {
	padding: min(5vw, 76px) min(4.4vw, 64px) min(4.4vw, 64px);
}
#biography .profHero h2 {
	width: min(56%, 272px);
	margin-bottom: min(2.4vw, 32px);
}
#biography .profHero p {
	font-size: min(3.4vw, 14px);
	line-height: 2;
}
#biography .profMain img {
	border-radius: min(2vw, 16px);
}

/* --------- BIOGRAPHY PAGE --------- */

#biographyPage {
	padding-bottom: min(12vw, 140px);
}
#biographyPage .pageTitle {
	margin-bottom: min(6vw, 56px);
}
#biographyPage .bioHero {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: min(4vw, 56px);
	margin-bottom: min(8vw, 100px);
}
#biographyPage .bioText {
	width: 44%;
}
#biographyPage .bioLogo {
	width: min(56%, 272px);
	margin-bottom: min(2.4vw, 32px);
}
#biographyPage .bioText p {
	font-size: min(3.4vw, 14px);
	line-height: 2;
}
#biographyPage .bioMain {
	width: 49%;
}
#biographyPage .bioMain img {
	width: 100%;
	height: auto;
	border-radius: min(2vw, 16px);
	vertical-align: bottom;
}
#biographyPage .bioList {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: min(4vw, 40px);
	max-width: 1080px;
	margin: 0 auto;
}
#biographyPage .bioCard {
	text-align: center;
	font-family: var(--font-en);
	font-weight: 400;
	letter-spacing: 0.06em;
}
#biographyPage .bioCard .photo {
	width: min(100%, 245px);
	margin: 0 auto min(1.8vw, 24px);
	aspect-ratio: 1 / 1;
	border-radius: min(1.6vw, 14px);
	overflow: hidden;
}
#biographyPage .bioCard .photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
#biographyPage .bioCard .name {
	font-size: min(4.4vw, 20px);
	line-height: 1.2;
}
#biographyPage .bioCardMeta {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: min(0.8vw, 8px);
	margin-top: min(0.6vw, 6px);
}
#biographyPage .bioCard .part {
	font-size: min(2.8vw, 11px);
	letter-spacing: 0.08em;
}
#biographyPage .bioCard .snsList {
	justify-content: center;
	margin-top: 0;
}
#biographyPage .bioCard .snsList a {
	font-size: min(3.6vw, 16px);
}
@media screen and (max-width:820px) {
	#biographyPage .pageTitle {
		margin-bottom: min(8vw, 40px);
	}
	#biographyPage .bioHero {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: min(8vw, 36px);
		margin-bottom: min(12vw, 56px);
	}
	#biographyPage .bioMain {
		order: -1;
		width: 100%;
	}
	#biographyPage .bioMain img {
		border-radius: min(2.4vw, 12px);
	}
	#biographyPage .bioText {
		width: 100%;
		padding-bottom: 0;
		text-align: center;
	}
	#biographyPage .bioLogo {
		width: min(52%, 220px);
		margin: 0 auto min(5vw, 24px);
	}
	#biographyPage .bioText p {
		text-align: center;
		font-size: min(3.6vw, 14px);
		line-height: 1.9;
	}
	#biographyPage .bioList {
		grid-template-columns: 1fr;
		gap: min(12vw, 56px);
		max-width: none;
	}
	#biographyPage .bioCard {
		display: flex;
		flex-direction: column;
		align-items: center;
		text-align: left;
	}
	#biographyPage .bioCard .photo {
		width: min(60%, 245px);
		margin: 0 0 min(4vw, 18px);
		aspect-ratio: 1 / 1;
		border-radius: min(2.4vw, 12px);
	}
	#biographyPage .bioCard .name {
		width: min(60%, 245px);
		font-size: min(5vw, 20px);
	}
	#biographyPage .bioCardMeta {
		flex-direction: row;
		justify-content: space-between;
		align-items: center;
		width: min(60%, 245px);
		margin-top: min(2vw, 8px);
	}
	#biographyPage .bioCard .part {
		font-size: min(3.2vw, 12px);
	}
	#biographyPage .bioCard .snsList {
		gap: min(4vw, 16px);
	}
	#biographyPage .bioCard .snsList a {
		font-size: min(4.4vw, 18px);
	}
	/* SP: RION → TAICHI → NAO */
	#biographyPage .bioCard.member-rion { order: 1; }
	#biographyPage .bioCard.member-taichi { order: 2; }
	#biographyPage .bioCard.member-nao { order: 3; }
}

/* 可視領域に入るとラインが引かれる */
.drawLine {
	display: block;
	width: 100%;
	height: 1px;
	background-color: var(--color-line);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 1.6s cubic-bezier(.22,.61,.36,1) 0.2s;
}
.drawLine.on {
	transform: scaleX(1);
}
.drawLine.drawLineV {
	position: absolute;
	top: 0;
	bottom: 0;
	width: 1px;
	height: auto;
	transform: scaleY(0);
	transform-origin: center top;
	pointer-events: none;
	z-index: 1;
}
.drawLine.drawLineV.on {
	transform: scaleY(1);
}
.profList .drawLineV.v0 { left: 0; }
.profList .drawLineV.v1 { left: 33.333%; }
.profList .drawLineV.v2 { left: 66.666%; }
.profList .drawLineV.v3 { left: auto; right: 0; }
@media (prefers-reduced-motion: reduce) {
	.drawLine {
		transform: scaleX(1);
		transition: none;
	}
	.drawLine.drawLineV {
		transform: scaleY(1);
	}
}

.profListWrap {
	width: 100%;
}
.profListWrap > .drawLineH {
	width: 100%;
}
.profListFrame {
	max-width: 1440px;
	margin: 0 auto;
	padding: 0 min(4.4vw, 64px);
}
.profList {
	position: relative;
	display: grid;
}
.profList .profCard {
	position: relative;
	text-align: center;
  font-family: var(--font-en);
  font-weight: 400;
  font-style: normal;
	letter-spacing: 0.06em;
}
.profList .profCard > .drawLine {
	display: none;
}
.profList .profCard .photo {
	width: min(100%, 245px);
	margin: 0 auto min(4vw, 24px);
	aspect-ratio: 1/1;
	border-radius: min(1.6vw, 14px);
	overflow: hidden;
}
.profList .profCard .photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.profList .profCard .name {
	font-size: min(4.8vw, 24px);
	line-height: 1.2;
}
.profList .profCard .part {
	font-size: min(3vw, 14px);
	letter-spacing: 0.08em;
	margin-top: min(0.6vw, 6px);
}
.profList .profCard .snsList {
	justify-content: center;
	margin-top: min(1.4vw, 14px);
}
.profList .profCard .snsList a {
	font-size: min(3.6vw, 20px);
}

@media screen and (min-width:821px) {

	#biography .profHero {
		display: flex;
		justify-content: space-between;
		align-items: center;
		gap: min(4vw, 56px);
		padding: min(3vw, 40px) 0 min(1.4vw, 20px);
	}
	#biography .profText {
		width: 44%;
	}
	#biography .profMain {
		width: 49%;
	}
	.profList {
		grid-template-columns: repeat(3, 1fr);
		padding-top: min(3.4vw, 48px);
		padding-bottom: min(3vw, 40px);
	}
}
@media screen and (max-width:820px) {

	#biography .contentWrap {
		padding: min(10vw, 90px) min(6.4vw, 64px) min(10vw, 90px);
	}
	/* SPはデザイン通り 写真 → ロゴ → テキスト の順 */
	#biography .profHero {
		display: flex;
		flex-direction: column;
		text-align: center;
	}
	#biography .profMain {
		order: -1;
	}
	#biography .profHero h2 {
		width: min(60%, 240px);
		margin: min(9vw, 72px) auto min(4vw, 32px);
	}
	#biography .profHero p {
		text-align: left;
	}

	.profListFrame {
		padding: 0 min(6.4vw, 64px);
	}
	/* SPは1カラムなので区切りの縦線は左右のみ */
	.profList .drawLineV.v1,
	.profList .drawLineV.v2 {
		display: none;
	}
	.profList {
		grid-template-columns: 1fr;
	}
	.profList .profCard {
		padding: min(10vw, 80px) 0;
	}
	.profList .profCard > .drawLine {
		display: block;
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
	}
	.profList .profCard.member-rion > .drawLine {
		display: none;
	}
	.profList .profCard .photo {
		width: min(60%, 245px);
	}
	/* SP: RION → TAICHI → NAO */
	.profList .profCard.member-rion { order: 1; }
	.profList .profCard.member-taichi { order: 2; }
	.profList .profCard.member-nao { order: 3; }
}

/* --------- FOOTER --------- */

footer {
	/* 背景アニメーションを透かす */
	background-color: transparent;
	color: var(--color-text);
	/* 下部の余白は fix 配置の #pageTop と重ならない高さを確保する */
	padding: min(3.4vw, 48px) min(4.4vw, 64px);
}
footer .ftrLogo {
	width: min(38vw, 196px);
	margin-bottom: min(5vw, 40px);
}
footer .ftrMenu {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4em min(2.4vw, 28px);
	font-family: var(--font-en);
	font-size: min(3.4vw, 14px);
	letter-spacing: 0.1em;
	margin-bottom: min(5vw, 18px);
}
footer .ftrMenu a,
footer .snsList a,
footer .ftrPolicy a,
footer .ftrOperated a {
	color: var(--color-text);
}
footer .snsList a {
	font-size: min(4vw, 17px);
}
footer .ftrFlexBox {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	margin-top: min(3.4vw, 44px);
}
footer .ftrPolicy {
	display: flex;
	gap: 0 min(3vw, 32px);
}
footer .ftrPolicy a {
	font-size: min(3vw, 12px);
}
footer .ftrOperated {
	font-family: var(--font-en);
	font-size: min(2.6vw, 10px);
	letter-spacing: 0.08em;
	line-height: 1.4;
	margin: 0;
}
footer .ftrOperated a {
	text-decoration: underline;
}
footer .copy {
	font-family: var(--font-en);
	font-size: min(2.6vw, 10px);
	letter-spacing: 0.08em;
}

@media screen and (max-width:820px) {
	footer {
		padding: min(10vw, 90px) min(6.4vw, 64px) min(10vw, 48px);
	}
	footer .ftrLogo {
		margin-bottom: min(8vw, 48px);
	}
	footer .ftrMenu {
		display: grid;
		grid-template-columns: 1fr 1fr;
		column-gap: min(8vw, 40px);
		row-gap: 0.7em;
		height: auto;
	}
	footer .ftrFlexBox {
		flex-direction: column-reverse;
		align-items: flex-start;
		gap: min(6vw, 40px);
	}
  footer .snsList {
    margin-bottom: min(8vw, 40px);
  }
	footer .ftrPolicy  {
		flex-direction: column;
		gap: 0.2em 0;
    margin-bottom: min(4vw, 20px);
	}
	footer .ftrOperated {
		font-size: min(2.8vw, 10px);
	}
}

/* --------- PAGE TOP --------- */

#pageTop {
	position: fixed;
	right: min(5.4vw, 78px);
	bottom: min(3vw, 40px);
	z-index: 20;

	display: flex;
	flex-direction: column;
	align-items: center;
	gap: min(1vw, 8px);

	font-family: var(--font-en);
	font-size: min(2.6vw, 9px);
	line-height: 1;
	letter-spacing: 0.14em;
	color: var(--color-text);

	opacity: 0;
	visibility: hidden;
	transform: translateY(10px);
	transition: opacity .5s ease, visibility .5s ease, transform .5s ease;
}
#pageTop.on {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
#pageTop .circle {
	position: relative;
	display: block;
	width: min(13vw, 59px);
	aspect-ratio: 1/1;
	border-radius: 100%;
	border: 1px solid var(--color-pagetop);
	background-color: var(--color-pagetop);
	box-sizing: border-box;
	transition: all 0.4s ease-out;
}
#pageTop .circle::before {
	content: "";
	display: block;
	position: absolute;
	top: 50%;
	left: 50%;
	width: min(3vw, 13px);
	aspect-ratio: 1/1;
	border-top: #fff solid 1px;
	border-left: #fff solid 1px;
	transform: translate(-50%, -30%) rotate(45deg);
	transition: border-color 0.4s ease-out;
}
#pageTop:hover {
	opacity: 1;
}
@media (hover: hover) {
	#pageTop:hover .circle {
		background-color: #fff;
		border-color: var(--color-pagetop);
	}
	#pageTop:hover .circle::before {
		border-top-color: var(--color-pagetop);
		border-left-color: var(--color-pagetop);
	}
}
@media screen and (max-width:820px) {
	#pageTop {
		right: min(8vw, 32px);
		bottom: min(8vw, 32px);
	}
}

/* ////////////////////////////////////////////////////////////////////////////////

	sub page

//////////////////////////////////////////////////////////////////////////////// */

.subPage {
	padding-top: min(18vw, 160px);
}
.subPage header {
	opacity: 1;
	animation: none;
}
.subPage h2,
.subPage .pageTitle {
	margin-bottom: min(8vw, 80px);
}
.subPage .contentWrap {
	padding: 0 min(4.4vw, 64px);
}
.pageTitle {
	font-family: var(--font-en);
	font-weight: 400;
	font-style: normal;
	font-size: min(4.4vw, 60px);
	letter-spacing: 0.02em;
	line-height: 1.2;
}

/* --------- SCHEDULE PAGE --------- */

#schedulePage {
	padding-bottom: min(10vw, 120px);
}
.scheduleFilter {
	margin-bottom: min(6vw, 48px);
}
.scheduleFilterToggle {
	display: none;
}
.scheduleFilterList {
	display: flex;
	flex-wrap: wrap;
	gap: min(2vw, 12px) min(1.4vw, 10px);
}
.scheduleFilterList button,
.scheduleFilterList a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: min(18vw, 72px);
	padding: 0.7em 1.4em;
	border: 1px solid var(--color-text);
	border-radius: 100px;
	background: transparent;
	font-family: var(--font-en);
	font-size: min(2.8vw, 11px);
	letter-spacing: 0.08em;
	line-height: 1;
	color: var(--color-text);
	cursor: pointer;
	text-decoration: none;
	transition: background-color .3s ease, border-color .3s ease, color .3s ease;
}
.scheduleFilterList button.is-active,
.scheduleFilterList a.is-active {
	background-color: var(--color-text);
	border-color: var(--color-text);
	color: #fff;
}
@media (hover: hover) {
	.scheduleFilterList button:hover,
	.scheduleFilterList a:hover {
		border-color: var(--color-text);
		color: var(--color-text);
	}
	.scheduleFilterList button.is-active:hover,
	.scheduleFilterList a.is-active:hover {
		color: #fff;
	}
}

.pager {
	font-family: var(--font-en);
	font-weight: 400;
	font-style: normal;
	padding-top: min(8vw, 80px);
	position: relative;
	display: flex;
	justify-content: center;
	align-items: center;
	gap: min(2.4vw, 12px);
}
.pager .page-numbers {
	display: flex;
	justify-content: center;
	align-items: center;
	font-size: min(3.2vw, 13px);
	line-height: 1;
	width: min(9vw, 36px);
	height: min(9vw, 36px);
	border: 1px solid var(--color-line);
	border-radius: 100%;
	color: var(--color-text);
	background: transparent;
}
.pager .page-numbers.current {
	background-color: var(--color-beige);
	border-color: var(--color-beige);
	color: #fff;
}
.pager .page-numbers.dots {
	border: none;
	width: auto;
	min-width: 1em;
	letter-spacing: 0.1em;
}
.pager .page-numbers.prev,
.pager .page-numbers.next {
	position: relative;
}
.pager .page-numbers.prev::before,
.pager .page-numbers.next::before {
	content: "";
	display: block;
	width: 0.45em;
	height: 0.45em;
	border-top: 1px solid currentColor;
}
.pager .page-numbers.prev::before {
	border-left: 1px solid currentColor;
	transform: rotate(-45deg);
	margin-right: -0.1em;
}
.pager .page-numbers.next::before {
	border-right: 1px solid currentColor;
	transform: rotate(45deg);
	margin-left: -0.1em;
}
@media (hover: hover) {
	.pager a.page-numbers:hover {
		opacity: 1;
		border-color: var(--color-beige);
		color: var(--color-beige);
	}
}

@media screen and (max-width:820px) {
	.subPage {
		padding-top: min(28vw, 120px);
	}
	.subPage .contentWrap {
		padding: 0 min(6.4vw, 64px);
	}
	.pageTitle {
		font-size: min(8vw, 32px);
		margin-bottom: min(8vw, 40px);
	}
	.scheduleFilter {
		margin-bottom: min(8vw, 40px);
		border: 1px solid var(--color-text);
		border-radius: min(2vw, 8px);
		overflow: hidden;
	}
	.scheduleFilterToggle {
		display: flex;
		align-items: center;
		justify-content: space-between;
		width: 100%;
		padding: min(4vw, 16px) min(4.4vw, 18px);
		border: none;
		border-bottom: 1px solid transparent;
		background: transparent;
		font-size: min(3.6vw, 14px);
		letter-spacing: 0.04em;
		color: var(--color-text);
		cursor: pointer;
    box-sizing: border-box;
	}
	.scheduleFilterToggle::after {
		content: "";
		display: block;
		width: 14px;
		height: 14px;
		background:
			linear-gradient(var(--color-text), var(--color-text)) center / 100% 1px no-repeat,
			linear-gradient(var(--color-text), var(--color-text)) center / 1px 100% no-repeat;
		transform: rotate(0deg);
		transition: transform .3s ease;
	}
	.scheduleFilter.is-open .scheduleFilterToggle {
		border-bottom-color: var(--color-text);
	}
	.scheduleFilter.is-open .scheduleFilterToggle::after {
		transform: rotate(45deg);
	}
	.scheduleFilterPanel {
		display: none;
		padding: min(4vw, 16px) min(4.4vw, 18px) min(5vw, 20px);
	}
	.scheduleFilter.is-open .scheduleFilterPanel {
		display: block;
	}
	.scheduleFilterList {
		gap: min(2.8vw, 10px) min(2vw, 8px);
	}
	.scheduleFilterList button,
	.scheduleFilterList a {
		min-width: auto;
		padding: 0.75em 1.2em;
		font-size: min(3vw, 11px);
	}
	.scheduleFilterList button.is-active,
	.scheduleFilterList a.is-active {
		background-color: var(--color-text);
		border-color: var(--color-text);
	}
}



.descriptionHeader {
	border-bottom: 1px solid #8e8e8e;
	margin-top: min(10vw, 100px);
	padding-bottom: min(6vw, 34px);
}
.descriptionHeader h2 {
	font-size: min(5.2vw, 32px);
	line-height: 1.5;
}
.descriptionHeader .date {
	display: flex;
	align-items: center;
	font-size: min(3vw, 14px);
	margin-top: min(2vw, 16px);
}
.descriptionBody {
	margin-top: min(8vw, 50px);
	font-size: min(3.4vw, 16px);
}
.descriptionBody h3 {
  background-color: #e0e0e0;
  padding: min(3vw, 15px);
  margin-top: min(10vw, 60px);
  margin-bottom: min(2vw, 30px);
  font-size: min(5vw, 26px);
  font-weight: bold;
  border: none;
}
.descriptionBody h3:first-child {
  margin-top: 0;
}
.descriptionBody h3 strong {
  font-weight: bold;
}
.descriptionBody h4 {
  font-size: min(5vw, 24px);
  font-weight: bold;
  border-bottom: #8e8e8e solid 1px;
  padding-bottom: min(1vw, 5px);
  margin-bottom: min(7vw, 40px);
  margin-bottom: min(6vw, 30px);
}
.descriptionBody h4 strong {
  font-weight: bold;
}
.descriptionBody h5 {
  font-size: min(4.6vw, 22px);
  margin-bottom: min(3vw, 15px);
  margin-top: min(6vw, 30px);
}
.descriptionBody h5 strong {
  font-weight: bold;
}
.descriptionBody p {
  font-size: min(3.4vw, 16px);
  margin-bottom: min(4vw, 20px);
}
.descriptionBody a {
	color: #3A3A3A;
	text-decoration: underline;
}
.descriptionBody img {
	display: block;
  margin: min(6vw, 30px) auto;
	/* max-width: 800px; */
}
.descriptionBody iframe {
  width: 800px;
	height: auto;
  aspect-ratio: 100 / 56.25;
  max-width: 100%;
  margin: min(6vw, 30px) auto;
  display: block;
}
.descriptionBody ul {
  padding-left: min(4vw, 20px);
  margin: min(6vw, 30px) 0;
  font-size: min(3.4vw, 16px);
}
.descriptionBody ul li {
  list-style: disc;
}
.descriptionBody ol {
  list-style: decimal;
  padding-left: min(4vw, 24px);
  margin: min(6vw, 30px) 0;
  font-size: min(3.4vw, 16px);
}
.descriptionBody blockquote {
  background-color: #eee;
  padding: min(4vw, 20px)  min(10vw, 55px);
  margin-bottom: min(4vw, 20px);
  position: relative;
}
.descriptionBody blockquote::before {
  content: "“";
  font-size: min(8.6vw, 56px);
  line-height: 1;
  position: absolute;
  top: min(4.5vw, 20px);
  left: min(3vw, 15px);
  display: block;
  color: #bbb;
}
.descriptionBody blockquote::after {
  content: "“";
  font-size: min(8.6vw, 56px);
  line-height: 1;
  position: absolute;
  bottom: min(4.5vw, 20px);
  right: min(3vw, 15px);
  display: block;
  color: #bbb;
	transform: rotate(180deg);
}
.descriptionBody blockquote p:last-child {
  margin-bottom: 0;
}
.descriptionBody table {
  width: 100%;;
  font-size: min(3.2vw, 14px);
  margin-bottom: min(4vw, 20px);
	table-layout: fixed;
	border-spacing: 1px;
	border-collapse: separate !important;
}
.descriptionBody table th,
.descriptionBody table td {
  padding: min(2vw, 10px);
}
.descriptionBody table th {
	background-color: #999ea4;
	/* color: #fff; */
  font-weight: bold;
}
.descriptionBody table td {
	background-color: #eee;
}


/* --------- NOT FOUND --------- */

#notFoundPage {
	padding-bottom: min(12vw, 140px);
}
.notFoundBody {
	max-width: 860px;
	margin: 0 auto;
	padding-top: min(8vw, 80px);
	text-align: center;
}
.notFoundTitle {
	font-family: var(--font-en);
	font-weight: 400;
	font-style: normal;
	font-size: min(10vw, 60px);
	letter-spacing: 0.06em;
	line-height: 1.2;
	margin-bottom: min(4vw, 24px);
}
.notFoundText {
	font-size: min(3.6vw, 14px);
	line-height: 2;
	letter-spacing: 0.04em;
	color: #8a8a8a;
	margin-bottom: min(8vw, 48px);
}
@media screen and (max-width: 820px) {
	.notFoundBody {
		padding-top: min(10vw, 48px);
	}
	.notFoundTitle {
		font-size: min(10vw, 40px);
		margin-bottom: min(5vw, 20px);
	}
	.notFoundText {
		font-size: min(3.6vw, 14px);
		margin-bottom: min(10vw, 48px);
	}
}

/* ------ 個人情報保護方針 ------ */

#privacyPage {
	padding-bottom: min(12vw, 140px);
}
#privacyPage .pageTitle {
	margin-bottom: min(6vw, 56px);
}
.privacyBody {
	max-width: 860px;
	margin: 0 auto;
	font-size: min(3.8vw, 15px);
	line-height: 2;
	letter-spacing: 0.04em;
}
.privacyBody > *:first-child {
	margin-top: 0;
}
.privacyBody > *:last-child {
	margin-bottom: 0;
}
.privacyBody p {
  line-height: 1.8;
}
.privacyBody p + p {
	margin-top: 1em;
}
.privacyBody img {
	display: block;
	max-width: 100%;
	height: auto;
	margin: 1.5em auto;
}
.privacyBody a {
	color: var(--color-beige);
	text-decoration: underline;
}
.privacyBody ul,
.privacyBody ol {
	margin: 1em 0;
	padding-left: 1.5em;
}
.privacyBody ul li {
  list-style: disc;
}
.privacyBody ol li {
  list-style: decimal;
}
.privacyBody li + li {
	margin-top: 0.4em;
}
.privacyBody h2,
.privacyBody h3,
.privacyBody h4 {
	margin: 1.6em 0 0.6em;
	font-weight: 700;
	line-height: 1.5;
}

.privacyBody h3 {
  border-bottom: var(--color-line) 1px solid;
  padding-bottom: 0.4em;
  margin-bottom: 1.1em;
  margin-top: 2.4em;
}

@media screen and (min-width: 821px) {
	.privacyBody {
		font-size: 15px;
	}
}

/* ------ お問い合わせ ------ */

#contactPage {
	padding-bottom: min(12vw, 140px);
}
#contactPage .pageTitle {
	margin-bottom: min(6vw, 56px);
}
.contactBody {
	max-width: 860px;
	margin: 0 auto;
	padding: 0;
	background: transparent;
}
.contactLead {
	text-align: center;
	font-size: min(3.6vw, 14px);
	line-height: 1.9;
	letter-spacing: 0.06em;
	color: #8a8a8a;
	margin-bottom: min(8vw, 56px);
}
.contactForm dl {
	display: flex;
	align-items: flex-start;
	gap: min(2.4vw, 28px);
	margin-bottom: min(2.8vw, 28px);
}
.contactForm dl dt {
	width: min(28%, 220px);
	flex-shrink: 0;
	padding-top: 0.9em;
}
.contactForm dl dd {
	flex: 1 1 auto;
	min-width: 0;
	margin-bottom: 0;
}
.contactForm input[type='text'],
.contactForm input[type='tel'],
.contactForm input[type='email'],
.contactForm textarea,
.contactForm select {
	margin: 0;
	padding: 0.85em 1.1em;
	outline: none;
	font-size: min(3.6vw, 15px);
	line-height: 1.5;
	color: var(--color-text);
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	background-color: #fff;
	width: 100%;
	border: 1px solid var(--color-line);
	border-radius: min(2vw, 10px);
	transition: border-color 0.3s ease;
	box-sizing: border-box;
}
.contactForm input[type='text']:focus,
.contactForm input[type='tel']:focus,
.contactForm input[type='email']:focus,
.contactForm textarea:focus,
.contactForm select:focus {
	border-color: var(--color-beige);
}
.contactForm textarea {
	height: min(42vw, 280px);
	resize: vertical;
	overflow: auto;
}
.contactForm dd:has(select) {
	position: relative;
}
.contactForm dd:has(select)::before {
	position: absolute;
	top: 50%;
	right: 18px;
	display: block;
	content: "";
	width: 0.55em;
	height: 0.55em;
	margin-top: -0.35em;
	border-right: 1px solid var(--color-text);
	border-bottom: 1px solid var(--color-text);
	transform: rotate(45deg);
	pointer-events: none;
}
.contactForm select {
	padding-right: 2.4em;
	cursor: pointer;
}
.formLabel {
	font-size: min(3.4vw, 14px);
	line-height: 1.5;
	letter-spacing: 0.04em;
	margin-bottom: 0;
}
.formLabel .tag {
	color: #ff0907;
	font-size: 0.9em;
	margin-left: 0.15em;
}
.contactPolicy {
	display: flex;
	align-items: flex-start;
	gap: 0.6em;
	margin-top: min(4vw, 36px);
	font-size: min(3.2vw, 13px);
	line-height: 1.7;
	letter-spacing: 0.04em;
	cursor: pointer;
}
.contactPolicy input[type="checkbox"] {
	flex-shrink: 0;
	width: 1.1em;
	height: 1.1em;
	margin-top: 0.25em;
	accent-color: var(--color-text);
	cursor: pointer;
}
.contactPolicy a {
	text-decoration: underline;
	color: var(--color-text);
}
.btnSubmit {
	margin: min(6vw, 48px) auto 0;
	max-width: min(52vw, 220px);
}
.btnSubmit .btn {
	width: 100%;
	display: block;
	text-align: center;
	background-color: var(--color-beige);
	color: #fff;
	font-size: min(3.6vw, 14px);
	font-weight: 400;
	letter-spacing: 0.14em;
	text-decoration: none;
	padding: 1em 1.6em;
	border: none;
	border-radius: 100px;
	box-sizing: border-box;
	cursor: pointer;
	transition: opacity 0.3s ease, background-color 0.3s ease;
}
.btnSubmit .btn:disabled {
	opacity: 0.4;
	cursor: not-allowed;
}
@media (hover: hover) {
	.btnSubmit .btn:not(:disabled):hover {
		opacity: 0.85;
	}
}
.btnSubmit a.btn {
	display: block;
	text-align: center;
}

.contactConfirm dl {
	padding-bottom: min(2.8vw, 28px);
	margin-bottom: min(2.8vw, 28px);
	border-bottom: 1px solid var(--color-line);
}
.contactConfirm dl:last-of-type {
	padding-bottom: 0;
	margin-bottom: 0;
	border-bottom: none;
}
.contactConfirm dl dt {
	padding-top: 0;
}
.contactConfirm .confirmValueInner {
	padding: 0;
	font-size: min(3.6vw, 15px);
	line-height: 1.7;
	letter-spacing: 0.04em;
	border: none;
	border-radius: 0;
	background-color: transparent;
	word-break: break-word;
}
.contactConfirmNav {
	display: flex;
	justify-content: center;
	align-items: center;
	flex-wrap: wrap;
	gap: min(4vw, 24px);
	margin-top: min(10vw, 72px);
}
.contactNavBtn {
	display: inline-flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.4em;
	min-width: min(36vw, 148px);
	padding: 1.05em 1.5em;
	border: 1px solid var(--color-beige);
	border-radius: 100px;
	background-color: transparent;
	font-family: var(--font-en);
	font-weight: 400;
	font-style: normal;
	font-size: min(3.2vw, 12px);
	line-height: 1;
	letter-spacing: 0.14em;
	color: var(--color-beige);
	text-decoration: none;
	cursor: pointer;
	transition: background-color .4s ease, border-color .4s ease, color .4s ease, opacity .3s ease;
}
.contactNavBtn span {
	display: block;
	width: 0.55em;
	height: 0.55em;
	border-radius: 100%;
	background-color: var(--color-beige);
	flex-shrink: 0;
	transition: background-color .4s ease;
}
.contactNavBtn.submit {
	background-color: var(--color-beige);
	color: #fff;
}
.contactNavBtn.submit span {
	background-color: #fff;
}
@media (hover: hover) {
	.contactNavBtn:hover {
		background-color: var(--color-beige);
		color: #fff;
	}
	.contactNavBtn:hover span {
		background-color: #fff;
	}
	.contactNavBtn.submit:hover {
		opacity: 0.85;
		color: #fff;
	}
}
.contactConfirmErrorTitle {
	margin-bottom: min(4vw, 24px);
	font-size: min(3.8vw, 15px);
	line-height: 1.8;
	letter-spacing: 0.04em;
}
.contactConfirm .errorWrap {
	border: 1px solid #ef0000;
	padding: min(4vw, 24px);
	border-radius: min(2vw, 10px);
	color: #ef0000;
	margin-bottom: min(6vw, 40px);
}
.contactConfirm .errorWrap .error_messe {
	font-size: min(3.4vw, 14px);
	line-height: 1.7;
}
.contactConfirm .errorWrap .error_messe + .error_messe {
	margin-top: 0.6em;
}
.contactThanks {
	padding-top: min(4vw, 24px);
	text-align: center;
}
.contactThanksLead {
	font-size: min(4.8vw, 22px);
	line-height: 1.7;
	letter-spacing: 0.06em;
	margin-bottom: min(3vw, 16px);
}
.contactThanksText {
	font-size: min(3.6vw, 14px);
	line-height: 2;
	letter-spacing: 0.04em;
	color: #8a8a8a;
	margin-bottom: min(8vw, 48px);
}

input[type='submit'] {
	display: inline-block;
	margin: 0;
	padding: 0;
	border: none;
	box-sizing: border-box;
	-webkit-appearance: button;
	appearance: button;
}

@media screen and (max-width: 820px) {
	#contactPage .pageTitle {
		margin-bottom: min(8vw, 40px);
	}
	.contactLead {
		font-size: min(3.6vw, 14px);
		margin-bottom: min(10vw, 48px);
	}
	.contactForm dl {
		display: block;
		margin-bottom: min(6vw, 28px);
	}
	.contactForm dl dt {
		width: auto;
		padding-top: 0;
		margin-bottom: min(2vw, 8px);
	}
	.contactForm dl dd {
		width: 100%;
	}
	.contactForm input[type='text'],
	.contactForm input[type='tel'],
	.contactForm input[type='email'],
	.contactForm textarea,
	.contactForm select {
		font-size: 16px;
		padding: 0.9em 1em;
		border-radius: min(2.4vw, 10px);
	}
	.contactForm textarea {
		height: min(48vw, 220px);
	}
	.formLabel {
		font-size: min(3.6vw, 14px);
	}
	.contactPolicy {
		margin-top: min(8vw, 36px);
		font-size: min(3.2vw, 12px);
	}
	.btnSubmit {
		margin-top: min(10vw, 48px);
		max-width: min(48vw, 200px);
	}
	.contactConfirm dl {
		padding-bottom: min(6vw, 28px);
		margin-bottom: min(6vw, 28px);
	}
	.contactConfirm .confirmValueInner {
		font-size: 16px;
	}
	.contactConfirmNav {
		margin-top: min(12vw, 56px);
		gap: min(5vw, 20px);
	}
	.contactNavBtn {
		min-width: min(38vw, 140px);
		padding: 1em 1.4em;
		font-size: min(3.4vw, 12px);
	}
	.contactThanksLead {
		font-size: min(5.2vw, 20px);
	}
	.contactThanksText {
		font-size: min(3.6vw, 14px);
		margin-bottom: min(10vw, 48px);
	}
}