@charset "utf-8";

/* =========================================================
	Layout
	サイト全体の構造・共通エリア
========================================================= */

/* ====================================
	Header
==================================== */

/* --------------------------------
	Base
--------------------------------- */
.site-header {
	position: fixed;
	z-index: var(--z-header, 100);
	background: rgba(18, 18, 18, 0.8);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	border-bottom: 1px solid rgba(215, 189, 116, 0.2);
	top: 0;
	left: 0;
	width: 100%;
	transition: background 0.35s ease, transform 0.35s ease, padding 0.35s ease;
}

.site-header img {
	max-width: 100%;
	height: auto;
}

.site-header__inner {
	margin-inline: auto;
}

/* --------------------------------
   Layout
--------------------------------- */
.site-header__block {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 24px;
	min-height: 100px;
}

.site-header__brand {
	justify-self: center;
	text-align: center;
	line-height: 1;
	padding-bottom: 2px;
	padding-top: 6px;
}

.site-header__info {
	display: flex;
	justify-self: end;
	align-items: center;
	gap: 20px;
}

.site-header__recruit {
	display: flex;
	gap: 12px;
}

.site-header__recruit-item {
	flex: 0 0 auto;
}

.site-header__recruit a {
	display: block;
}

.site-header__recruit img {
	display: block;
}

.site-header__nav {
	position: relative;
}

/* --------------------------------
	Parts - Language 
--------------------------------- */
.site-header__language {
	position: relative;
	display: inline-block;
	width: fit-content;
}

.site-header__language-select {
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	border: none;
	outline: none;
	box-shadow: none;
	color: #fff;
	width: 170px;
	height: 38px;
	padding: 0 43px;
	cursor: pointer;
	border-radius: var(--radius-pill, 999px);
	font-size: 17px;
	background: #175334;
}

.site-header__language-select option {
	color:#fff
}

.site-header__language .icon {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	color: var(--color-text-inverse, #fff);
	pointer-events: none;
}

.site-header__language .icon:first-of-type {
	left: 12px;
	width: 23px;
	height: 24px;
}

.site-header__language .icon:last-of-type {
	right: 8px;
	width: 13px;
	height: 15px;
}

/* --------------------------------
	Parts - Logo
--------------------------------- */
.site-header__logo-img {
	display: block;
	margin: 0 auto;
	width: 95px;
}

.site-header.is-top .site-header__logo-img {
	width: 82px;
}

.site-header__logo-text {
	position: relative;
	display: inline-block;
	padding: 0 70px;
	font-size: 12px;
	margin-top: 4px;
}

.site-header__logo-text::before,
.site-header__logo-text::after {
	content: "";
	position: absolute;
	top: 50%;
	width: 60px;
	height: 1px;
	background: var(--color-text, #fff);
	transform: translateY(-50%);
}

.site-header__logo-text::before {
	left: 0;
}

.site-header__logo-text::after {
	right: 0;
}

/* --------------------------------
	Parts - Info
--------------------------------- */
.site-header__hours {
	margin-bottom: 6px;
	font-size: 14px;
	display: flex;
	gap: 10px;
	align-items: baseline;
}

.site-header__hours .text-small {
	font-size: 11px;
}

.site-header__tel-link {
	display: flex;
	align-items: center;
	justify-content: end;
	gap: 8px;
	line-height: 1;
	font-family: var(--font-display-en);
	font-size: 30px;
	font-weight: 400;
}

.site-header__tel {
	letter-spacing: 0.05em;
}

/* --------------------------------
	Parts - Navigation
--------------------------------- */
.gnav {
	display: flex;
	justify-content: center;
	align-items: stretch;
}

.gnav__item {
	flex: 1;
	text-align: center;
}

.gnav__item a {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 72px;
	padding: 12px 20px;
	transition: transform 0.3s ease;
}

.gnav__item a:hover {
	transform: translateY(-3px);
}

.gnav__en {
	font-family: var(--font-serif-en);
	font-size: 19px;
	letter-spacing: 0.05em;
	background: var(--gradient-text-vertical);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	color: transparent;
}

.gnav__jp {
	position: relative;
	padding-top: 4px;
	font-size: 12px;
}

.gnav__jp::before {
	content: "";
	position: absolute;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	width: 30px;
	height: 1px;
	background: var(--gradient-main-sub);
	opacity: 0.7;
	transition: width 0.3s ease, opacity 0.3s ease;
}

.gnav__item a:hover .gnav__jp::before {
	width: 70px;
	opacity: 1;
}

/* --------------------------------
	States
--------------------------------- */

.site-header__inner {
	transition: padding 0.35s ease;
}

/* デフォルトは非表示 */
.site-header__info,
.site-header__nav {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transform: translateY(-10px);

	transition: opacity 0.35s ease, transform 0.35s ease, visibility 0s linear 0.35s; /* ←ここだけに入れる */
}

/* JSでトップ判定のときだけ表示 */
.site-header.is-top .site-header__info,
.site-header.is-top .site-header__nav {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transform: translateY(0);

	transition: opacity 0.35s ease, transform 0.35s ease, visibility 0s linear 0s;
}

/* デフォルトはメニューボタン表示 */
.site-header__menu-btn {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}

/* トップにいるときだけ非表示 */
.site-header.is-top .site-header__menu-btn {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

/* PCメニューボタン */
.site-header__menu-btn {
	position: absolute;
	top: 50%;
	right: 0;
	z-index: 5;
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 10px;
	width: 90px;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--color-text, #fff);
	cursor: pointer;
	transform: translateY(-50%);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

.site-header__menu-icon {
	position: relative;
	display: block;
	width: 46px;
	height: 8px;
}

.site-header__menu-icon span {
	position: absolute;
	top: 50%;
	display: block;
	width: 46px;
	height: 1px;
	background: var(--color-text, #fff);
	transform-origin: center;
	transition: transform 0.3s ease;
}

.site-header__menu-icon span:first-child {
	top: 0;
}

/* 下の線 */
.site-header__menu-icon span:last-child {
	top: 100%;
}

.site-header__menu-label {
	font-family: var(--font-serif-en);
	font-size: 14px;
	letter-spacing: 0.12em;
	line-height: 1;
	margin-top: 4px;
}

/* OPEN時（×に変形） */
.site-header.is-menu-open .site-header__menu-icon span:first-child {
	top: 50%;
	transform: translate(-50%, -50%) rotate(45deg);
}

.site-header.is-menu-open .site-header__menu-icon span:last-child {
	top: 50%;
	transform: translate(-50%, -50%) rotate(-45deg);
}

/* -------------------------------
	Scroll Header
-------------------------------- */
.site-header.is-scrolled {
	backdrop-filter: blur(14px);
	-webkit-backdrop-filter: blur(14px);
}

.site-header.is-scrolled .site-header__inner {
	padding-top: 2px;
	padding-bottom: 2px;
}

.site-header.is-scrolled .site-header__block {
	min-height: 72px;
}

.site-header.is-scrolled .site-header__logo-img {
	width: 64px;
}

.site-header.is-scrolled .site-header__nav {
	height: 0;
	min-height: 0;
	overflow: hidden;
}

.site-header.is-scrolled .site-header__menu-btn {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}

/* -------------------------------
	Menu Open Header
-------------------------------- */
.site-header.is-menu-open {
	background: transparent;
	border-bottom-color: transparent;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}

.site-header.is-menu-open .site-header__menu-btn {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}

.site-header.is-menu-open .site-header__menu-icon span:first-child {
	transform: translate(0, -50%) rotate(45deg);
}

.site-header.is-menu-open .site-header__menu-icon span:last-child {
	transform: translate(0, -50%) rotate(-45deg);
}

/* --------------------------------
	Responsive
--------------------------------- */
@media (max-width: 767px) {
	.site-header,
	.site-header.is-top,
	.site-header.is-scrolled {
		position: relative;
		top: auto;
		left: auto;
		width: 100%;
		transform: none;
		backdrop-filter: blur(12px);
		-webkit-backdrop-filter: blur(12px);
		border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	}

	.site-header__inner,
	.site-header.is-scrolled .site-header__inner {
		padding-top: 0;
		padding-bottom: 4px;
	}

	.site-header.is-scrolled .site-header__block {
		grid-template-columns: auto 1fr auto;
		align-items: center;
		gap: 8px;
		min-height: 56px;
	}

	.site-header__block {
		position: relative;
		display: flex;
		align-items: center;
		justify-content: center;
		min-height: 56px;
	}

	.site-header__brand {
		position: relative;
		z-index: var(--z-base, 1);
		padding-bottom: 0;
	}

	.site-header__language,
	.site-header.is-top .site-header__language,
	.site-header.is-scrolled .site-header__language {
		position: absolute;
		left: 8px;
		top: 50%;
		transform: translateY(-50%);
		z-index: 2;

		display: inline-block;
		opacity: 1;
		visibility: visible;
		pointer-events: auto;
	}

	.site-header__info,
	.site-header__nav,
	.site-header__menu-btn,
	.site-header.is-top .site-header__info,
	.site-header.is-top .site-header__nav,
	.site-header.is-top .site-header__menu-btn,
	.site-header.is-scrolled .site-header__info,
	.site-header.is-scrolled .site-header__nav,
	.site-header.is-scrolled .site-header__menu-btn {
		display: none;
		opacity: 0;
		visibility: hidden;
		pointer-events: none;
	}

	.menu-open .site-header__language,
	body.is-menu-open .site-header__language,
	.site-header.is-menu-open .site-header__language {
		left: auto;
		right: 20px;
		top: 20px;

		transform: none;

		z-index: 1001;
	}

	.site-header__language-select {
		width: 36px;
		height: 36px;
		padding: 0;
		font-size: 16px;
		color: transparent;
		border-radius: var(--radius-circle, 50%);
	}

	.site-header__language-select option {
		color: var(--color-text-inverse, #000);
		font-size: 14px;
	}

	.site-header__language .icon:first-of-type {
		left: 50%;
		transform: translate(-50%, -50%);
		width: 18px;
		height: 18px;
	}

	.site-header__language .icon:last-of-type {
		display: none;
	}

	.site-header__logo-img, .site-header.is-top .site-header__logo-img, .site-header.is-scrolled .site-header__logo-img {
		width: 39px;
	}

	.site-header__logo-text {
		display: block;
		font-size: 10px;
		padding: 0 36px;
		letter-spacing: 0.08em;
		line-height: 1.2;
		margin-top: 3px;
	}

	.site-header__logo-text::before,
	.site-header__logo-text::after {
		width: 30px;
		height: 1px;
	}
}

@media (min-width: 768px) {
	.site-header__tel-link {
		pointer-events: none;
		cursor: default;
	}
}

/* ====================================
	Fullscreen Menu
==================================== */
.site-menu {
	position: fixed;
	inset: 0;
	z-index: var(--z-menu, 90);
	backdrop-filter: blur(7px) saturate(80%);
	background: rgba(3, 32, 17, 0.85);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.4s ease, visibility 0.4s ease;
}

.site-menu.is-open {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}

.site-menu__inner {
	display: grid;
	grid-template-columns: 380px 1fr;
	align-items: center;
	gap: 64px;
	height: 100vh;
	padding-top: 120px;
	padding-bottom: 60px;
}

.site-menu__left {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 100%;
	padding-right: 64px;
	border-right: 1px solid rgba(255, 255, 255, 0.45);
	transform: translateX(-24px);
	opacity: 0;
	transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}

.site-menu__right {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-width: 0;
	transform: translateX(24px);
	opacity: 0;
	transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1);
	transition-delay: 0.22s;
}

.site-menu.is-open .site-menu__left,
.site-menu.is-open .site-menu__right {
	transform: translateX(0);
	opacity: 1;
}

/* ====================================
	Site Menu Language
==================================== */

.site-menu__language {
	display: none;
}

@media (max-width: 767px) {
	.site-menu__inner {
		position: relative;
	}

	.site-menu__language {
		position: absolute;
		top: 12px;
		right: 0px;
		z-index: 10;
		display: flex;
		align-items: center;
		justify-content: center;
		width: 36px;
		height: 36px;
		padding: 0;
		font-size: 16px;
		color: #000;
		border-radius: var(--radius-circle, 50%);
		background: #fff;
	}

	.site-menu__language .icon {
		width: 20px;
		height: 20px;
		color: currentColor;
		pointer-events: none;
		fill: #000;
	}

	.site-menu__language-select {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		opacity: 0;
		cursor: pointer;
		appearance: none;
		color: #000;
	}
}

/* --------------------------------
	Menu Tile Stagger Animation
--------------------------------- */
.site-menu__item {
	opacity: 0;
	transform: translateY(18px);
	transition: opacity 0.45s cubic-bezier(0.22, 1, 0.36, 1), transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
	will-change: opacity, transform;
}

.site-menu.is-open .site-menu__item {
	opacity: 1;
	transform: translateY(0);
}

/* 順番表示 */
.site-menu.is-open .site-menu__item:nth-child(1) {
	transition-delay: 0.34s;
}
.site-menu.is-open .site-menu__item:nth-child(2) {
	transition-delay: 0.4s;
}
.site-menu.is-open .site-menu__item:nth-child(3) {
	transition-delay: 0.46s;
}
.site-menu.is-open .site-menu__item:nth-child(4) {
	transition-delay: 0.52s;
}
.site-menu.is-open .site-menu__item:nth-child(5) {
	transition-delay: 0.58s;
}
.site-menu.is-open .site-menu__item:nth-child(6) {
	transition-delay: 0.64s;
}
.site-menu.is-open .site-menu__item:nth-child(7) {
	transition-delay: 0.7s;
}
.site-menu.is-open .site-menu__item:nth-child(8) {
	transition-delay: 0.76s;
}
.site-menu.is-open .site-menu__item:nth-child(9) {
	transition-delay: 0.82s;
}
.site-menu.is-open .site-menu__item:nth-child(10) {
	transition-delay: 0.88s;
}
.site-menu.is-open .site-menu__item:nth-child(11) {
	transition-delay: 0.94s;
}

/* バナーも少し遅れて出す */
.site-menu__banners {
	opacity: 0;
	transform: translateY(18px);
	transition: opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1), transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.site-menu.is-open .site-menu__banners {
	opacity: 1;
	transform: translateY(0);
	transition-delay: 1.02s;
}

.site-menu__left-inner {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
}

.site-menu__group-badge {
	position: absolute;
	top: -70px;
	left: 0;
}

.site-menu__group-badge img,
.site-menu__logo img {
	display: block;
}

.site-menu__logo {
	display: block;
	margin-bottom: 28px;
}

.site-menu__logo img {
	width: 170px;
	height: auto;
}

.site-menu__info {
	text-align: center;
}

.site-menu__hours {
	margin: 0 0 12px;
	color: var(--color-text, #fff);
	font-size: 14px;
	letter-spacing: 0.06em;
	line-height: 1.8;
}

.site-menu__hours span {
	font-size: 12px;
}

.site-menu__tel {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	color: var(--color-text, #fff);
	text-decoration: none;
	font-family: var(--font-display-en);
	font-size: 24px;
	line-height: 1;
}

.site-menu__right {
	padding-left: 8px;
}

.site-menu__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 5px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-menu__item a {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 82px;
	padding: 10px 12px;
	background: rgba(255, 255, 255, 0.9);
	color: #000;
	text-align: center;
	text-decoration: none;
	border-radius: var(--radius-md, 6px);
	border: 1px solid rgba(255, 255, 255, 0.08);
	box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.03) inset, 0 6px 16px rgba(0, 0, 0, 0.4);
	transition: background 0.3s ease, transform 0.3s ease, opacity 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease, color 0.3s ease;
}

.site-menu__item a:hover {
	background: var(--gradient-main);
	border: none;
	box-shadow: 0 10px 28px rgba(0, 0, 0, 0.6);
	transform: translateY(-3px);
}

.site-menu__item--wide {
	grid-column: 1 / -1;
}

.site-menu__item--wide a {
	min-height: 72px;
}

.site-menu__en {
	display: block;
	font-family: var(--font-display-en);
	font-size: 20px;
	letter-spacing: 0.08em;
	line-height: 1.1;
	font-weight: 400;
}

.site-menu__jp {
	position: relative;
	display: block;
	margin-top: 4px;
	font-size: 11px;
	letter-spacing: 0.08em;
	line-height: 1.6;
	padding-top: 4px;
}

.site-menu__jp::before {
	content: "";
	position: absolute;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	width: 50px;
	height: 1px;
	background: var(--gradient-main);
	opacity: 0.7;
	transition: width 0.3s ease, opacity 0.3s ease;
}

.site-menu a:hover .site-menu__jp::before {
	width: 100px;
	background: rgb(0, 0, 0);
	opacity: 1;
}

.site-menu__banners {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 36px;
	margin: 20px 0 0;
	padding: 0;
	list-style: none;
}

.site-menu__banner-item a {
	display: block;
	transition: transform 0.3s ease, opacity 0.3s ease;
}

.site-menu__banner-item a:hover {
	transform: translateY(-4px);
	opacity: 0.85;
}

.site-menu__banner-item img {
	display: block;
	width: 180px;
	height: 180px;
	border-radius: var(--radius-circle, 50%);
	object-fit: cover;
}

/* body固定 */
body.is-menu-open {
	overflow: hidden;
}

/* --------------------------------
	Responsive
--------------------------------- */

@media (max-width: 1200px) {
	.site-menu__inner {
		grid-template-columns: 240px 1fr;
		gap: 30px;
	}
}

@media (max-width: 767px) {
	.site-menu {
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
	}

	.site-menu__inner {
		display: block;
		height: auto;
		min-height: 100svh;
		padding-top: 10px;
		padding-bottom: 110px;
	}

	.site-menu__left {
		display: block;
		height: auto;
		padding-right: 0;
		margin-bottom: 28px;
		border-right: 0;
		border-bottom: 1px solid rgba(255, 255, 255, 0.18);
		padding-bottom: 24px;
		transform: translateY(-16px);
	}

	.site-menu__right {
		padding-left: 0;
		transform: translateY(16px);
	}

	.site-menu.is-open .site-menu__left,
	.site-menu.is-open .site-menu__right {
		transform: translateY(0);
	}

	.site-menu__left-inner {
		display: flex;
		flex-direction: column;
		align-items: center;
		padding-top: 10px;
	}

	.site-menu__group-badge {
		top: 0;
	}

	.site-menu__group-badge img {
		width: 44px;
		height: auto;
	}

	.site-menu__logo {
		margin-bottom: 14px;
	}

	.site-menu__logo img {
		width: 90px;
		height: auto;
	}

	.site-menu__hours {
		margin: 0 0 8px;
		font-size: 12px;
		line-height: 1.8;
		letter-spacing: 0.04em;
	}

	.site-menu__hours span {
		font-size: 10px;
	}

	.site-menu__tel {
		gap: 8px;
		font-size: 24px;
	}

	.site-menu__nav {
		width: 100%;
	}

	.site-menu__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 8px 5px;
	}

	.site-menu__item a {
		min-height: 60px;
		padding: 10px 8px;
		border-radius: var(--radius-sm, 4px);
	}

	.site-menu__item--wide {
		grid-column: 1 / -1;
	}

	.site-menu__item--wide a {
		min-height: 64px;
	}

	.site-menu__en {
		font-size: 17px;
		letter-spacing: 0.08em;
	}

	.site-menu__jp {
		margin-top: 3px;
		padding-top: 4px;
		font-size: 10px;
		line-height: 1.5;
		letter-spacing: 0.02em;
	}

	.site-menu__jp::before {
		width: 34px;
	}

	.site-menu a:hover .site-menu__jp::before {
		width: 60px;
	}

	.site-menu__banners {
		gap: 14px;
		margin-top: 18px;
	}

	.site-menu__banner-item img {
		width: 110px;
		height: 110px;
	}
}

@media (min-width: 768px) {
	.site-menu__tel {
		pointer-events: none;
		cursor: default;
	}
}


/* ====================================
Side Fixed Nav
==================================== */
.side-fixed-nav {
	position: fixed;
	top: 50%;
	right: 20px;
	transform: translateY(-50%);
	z-index: var(--z-fixed, 80);
}

.side-fixed-nav__list {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	padding: 20px 16px;
	margin: 0;
	list-style: none;
	background: rgba(18, 18, 18, 0.8);
	backdrop-filter: blur(6px);
	border-radius: var(--radius-pill, 999px);
	box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.06), 0 10px 30px rgba(0, 0, 0, 0.6), 0 0 20px rgba(214, 190, 115, 0.15);
}

.side-fixed-nav__link,
.fixed-side-nav__search {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	color: var(--color-text, #fff);
	text-decoration: none;
	transition: opacity 0.3s ease, transform 0.3s ease;
	font-size: 22px;
}

.side-fixed-nav__link--search svg {
	transform: scale(1.3);
}

.side-fixed-nav__link--history svg {
	transform: scale(1.3);
}

.side-fixed-nav__link:hover,
.fixed-side-nav__search:hover {
	opacity: 0.75;
	transform: scale(1.08);
}

/* --------------------------------
	Tooltip / Badge
--------------------------------- */

.side-fixed-nav__link {
	position: relative;
}

/* Tooltip */
.side-fixed-nav__link::before {
	content: attr(data-tooltip);
	position: absolute;
	top: 50%;
	right: calc(100% + 12px);
	z-index: 2;
	transform: translate(8px, -50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: max-content;
	padding: 7px 14px 6px;
	border: 1px solid rgba(255, 255, 255, 0.8);
	background: rgba(0, 0, 0, 0.9);
	color: #fff;
	font-family: var(--font-sans-jp);
	font-size: 12px;
	font-weight: 600;
	line-height: 1;
	letter-spacing: 0.04em;
	white-space: nowrap;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.25s ease, visibility 0.25s ease, transform 0.25s ease;
}

/* Tooltip arrow */
.side-fixed-nav__link::after {
	content: "";
	position: absolute;
	top: 50%;
	right: calc(100% + 8px);
	z-index: 2;
	transform: translate(8px, -50%) rotate(45deg);
	width: 8px;
	height: 8px;
	background: rgba(0, 0, 0, 0.9);
	border-top: 1px solid rgba(255, 255, 255, 1);
	border-right: 1px solid rgba(255, 255, 255, 1);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.25s ease, visibility 0.25s ease, transform 0.25s ease;
}

.side-fixed-nav__link:hover::before,
.side-fixed-nav__link:hover::after,
.side-fixed-nav__link:focus-visible::before,
.side-fixed-nav__link:focus-visible::after {
	opacity: 1;
	visibility: visible;
	transform: translate(0, -50%);
}

.side-fixed-nav__link:hover::after,
.side-fixed-nav__link:focus-visible::after {
	transform: translate(0, -50%) rotate(45deg);
}

/* Favorite badge */
.side-fixed-nav__badge {
	position: absolute;
	bottom: -4px;
	left: -9px;
	z-index: 3;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: #ff2c7d;
	font-size: 13px;
	font-weight: 700;
	line-height: 1;
	opacity: 0;
	transform: scale(0.6);
	transition: 0.25s ease;
	display: inline-flex;
	justify-content: center;
	align-items: center;
}

.side-fixed-nav__link--favorite.has-badge .side-fixed-nav__badge {
	opacity: 1;
	transform: scale(1);
}

/******************** Favoriteアニメーション ********************/
.side-fixed-nav__link--favorite.is-animating svg {
	animation: favPopWithColor 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

@keyframes favPopWithColor {
	0% {
		transform: scale(1);
		fill: #ffffff;
	}
	40% {
		transform: scale(1.4);
		fill: #ff2c7d;
	}
	70% {
		transform: scale(0.9);
		fill: #ff2c7d;
	}
	100% {
		transform: scale(1);
		fill: #ffffff;
	}
}
/****************************************************************/

/* --------------------------------
	Responsive
--------------------------------- */

@media (max-width: 767px) {
	.side-fixed-nav {
		display: block;
		position: fixed;
		right: 10px;
		bottom: 90px;
		z-index: 80;
		top: unset;
		transform: unset;
	}

	.side-fixed-nav__list {
		display: flex;
		flex-direction: column;
		gap: 0px;
		margin: 0;
		padding: 0 2px 10px;
		list-style: none;
	}

	.side-fixed-nav__item {
		display: block;
	}

	/* SPではホーム・ページ下部を非表示 */
	.side-fixed-nav__item:has(a[href="./"]),
	.side-fixed-nav__item:has(a[href="#footer"]) {
		display: none;
	}

	.side-fixed-nav__link {
		position: relative;
		width: 38px;
		height: 38px;
		color: #fff;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.side-fixed-nav__link .icon {
		width: 23px;
		height: 23px;
	}

	.side-fixed-nav__link--search {
		padding: 0;
		appearance: none;
		cursor: pointer;
		width: 38px;
		height: 38px;
	}

	/* SPではツールチップ非表示 */
	.side-fixed-nav__link::before,
	.side-fixed-nav__link::after {
		display: none;
	}

	/* 件数バッジも小さめ */
	.side-fixed-nav__badge {
		bottom: 4px;
		left: 0px;
		padding: 0 4px;
		font-size: 12px;
		line-height: 1;
	}
}

.side-fixed-nav__link--favorite {
	position: relative;
	overflow: visible;
}

.side-fixed-nav__link--favorite::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	display: block;
	width: 28px;
	height: 28px;
	border-radius: 999px;
	border: 2px solid #ff2c7d;
	opacity: 0;
	visibility: visible;
	transform: translate(-50%, -50%) scale(0.6);
	pointer-events: none;
	background: transparent;
}

.side-fixed-nav__link--favorite.is-animating::after {
	animation: favRipple 0.6s ease;
}

.side-fixed-nav__link--favorite.is-animating .icon {
	color: #ff2c7d;
	animation: favPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.side-fixed-nav__link--favorite:hover::after,
.side-fixed-nav__link--favorite:focus-visible::after {
	opacity: 0;
	visibility: hidden;
	transform: translate(-50%, -50%) scale(0.6);
}

.side-fixed-nav__link--favorite.is-animating::after {
	opacity: 0;
	visibility: visible;
	animation: favRipple 0.6s ease;
}
/* =========================
	Main
========================= */
.site-main {
	position: relative;
	z-index: var(--z-base, 1);
}

.site-main::before {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(3, 32, 17, 0.8);
	z-index: var(--z-under, -1);
}

.page-hero + .site-main::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: var(--z-under, -1);
	background: rgba(3, 32, 17, 0.8);
}

/* ====================================
	Layout Utility
==================================== */

.l-container {
	width: min(var(--container), calc(100% - var(--gutter) * 2));
	margin-inline: auto;
}

/* ====================================
	Section Common
==================================== */
.section {
	padding: 80px 0 0;
}

.section__head {
	position: relative;
	margin-bottom: 40px;
	text-align: center;
}

.section__foot {
	margin-top: 50px;
}

/* --------------------------------
	Responsive
--------------------------------- */

@media (max-width: 767px) {
	.section {
		padding: 40px 0 0;
	}

	.section__head {
		margin-bottom: 20px;
	}

	.section__foot {
		margin-top: 30px;
	}
}

/* ====================================
	Section Variant - Group
==================================== */

.section--group {
	background: rgba(18, 18, 18, 1);
	padding: 100px 0 90px;
}

.section--group .section__head {
	margin-bottom: 54px;
}

/* --------------------------------
	Responsive
--------------------------------- */

@media (max-width: 1200px) {
	.section--group .section__title {
		font-size: 68px;
	}
}

@media (max-width: 767px) {
	.section--group {
		padding: 70px 0 60px;
	}

	.section--group .section__head {
		margin-bottom: 36px;
	}

	.section--group .section__title {
		font-size: 48px;
		letter-spacing: 0.02em;
	}

	.section--group .section__sub {
		font-size: 15px;
	}

	.section--group .section__sub::before {
		width: 140px;
	}
}

/* ====================================
	Sub Page Main Content
==================================== */
.page-content {
	padding: 40px 0 200px;
}

@media (max-width: 767px) {
	.page-content {
		padding: 24px 0 80px;
	}
}

/* ====================================
	page-hero
==================================== */
.page-bg {
	position: fixed;
	inset: 0;
	z-index: var(--z-bg, -2);
	pointer-events: none;
	overflow: hidden;
	background-image: url("../images/under_bg.jpg");
	background-repeat: repeat-y;
	background-position-x: center;
}

.page-bg__image {
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
	object-position: center top;
}

.page-hero {
	position: relative;
	z-index: var(--z-base, 1);
	min-height: 460px;
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	overflow: hidden;
}

.page-hero__inner {
	position: relative;
	width: 100%;
	padding-top: 280px;
	padding-bottom: 90px;
}

.page-hero__inner::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: 136px;
	width: 160px;
	height: 1px;
	background: var(--gradient-main-sub);
	opacity: 0;
	transform: translateX(-50%) scaleX(0);
	transform-origin: center;
	will-change: transform, opacity;
}

.page-hero__title {
	margin: 0;
	font-family: var(--font-serif-en);
	font-size: 90px;
	font-weight: 500;
	line-height: 0.92;
	text-transform: uppercase;
	background: var(--gradient-text-vertical);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	color: transparent;
	text-shadow: 0 0 18px rgba(255, 255, 255, 0.08);
	letter-spacing: 0.05em;
}

/* 日本語 */
.page-hero__sub {
	position: relative;
	margin-top: 14px;
	padding-top: 18px;
	font-size: 18px;
	font-weight: 400;
	line-height: 1.6;
	letter-spacing: 0.18em;
	color: var(--color-text, #fff);
}

/* 少し光感 */
.page-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0) 35%);
	pointer-events: none;
}

/* =========================
Page Hero Animation
========================= */

/* 日本語側の既存ラインは使わない */
.page-hero__sub::before {
	content: none;
}

/* 初期状態 */
.page-hero__title,
.page-hero__sub,
.page-hero__inner::after {
	opacity: 0;
}

.page-hero__title,
.page-hero__sub {
	will-change: transform, opacity;
}

.page-hero__title {
	transform: translateY(26px);
}

.page-hero__sub {
	transform: translateY(-16px);
}

.page-hero.is-show .page-hero__inner::after {
	animation: pageHeroLineGrow 0.8s cubic-bezier(0.22, 1, 0.36, 1) 0s forwards;
}

.page-hero.is-show .page-hero__title {
	animation: pageHeroTitleFadeUp 0.8s cubic-bezier(0.22, 1, 0.36, 1) 0.15s forwards;
}

.page-hero.is-show .page-hero__sub {
	animation: pageHeroSubFadeDown 0.8s cubic-bezier(0.22, 1, 0.36, 1) 0.35s forwards;
}

/* Keyframes */
@keyframes pageHeroLineGrow {
	0% {
		opacity: 0;
		transform: translateX(-50%) scaleX(0);
	}

	100% {
		opacity: 1;
		transform: translateX(-50%) scaleX(1);
	}
}

@keyframes pageHeroTitleFadeUp {
	0% {
		opacity: 0;
		transform: translateY(26px);
	}
	100% {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes pageHeroSubFadeDown {
	0% {
		opacity: 0;
		transform: translateY(-16px);
	}
	100% {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ====================================
	Tablet
==================================== */
@media (max-width: 1200px) {
	.page-hero {
		min-height: 420px;
	}

	.page-hero__inner {
		padding-top: 150px;
		padding-bottom: 80px;
	}

	.page-hero__title {
		font-size: clamp(58px, 10vw, 96px);
	}

	.page-hero__sub {
		font-size: 16px;
	}
}

/* ====================================
	SP
==================================== */
@media (max-width: 767px) {

	.page-bg {
		background-size: 300%;
	}

	.page-hero {
		min-height: 170px;
	}

	.page-hero__inner {
		padding-top: 45px;
		padding-bottom: 35px;
	}

	.page-hero__title {
		font-size: 54px;
		line-height: 0.95;
		letter-spacing: 0.05em;
	}

	.page-hero__sub {
		margin-top: 5px;
		padding-top: 9px;
		font-size: 15px;
		letter-spacing: 0.08em;
	}

	.page-hero__inner::after {
		bottom: 65px;
		width: 90px;
	}
}

/* ====================================
	Breadcrumb
==================================== */
.breadcrumb {
	padding: 18px 0;
	overflow-x: auto;
}

.breadcrumb__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
}

.breadcrumb__item {
	display: flex;
	align-items: center;
	font-size: 14px;
	line-height: 1.4;
	color: rgba(255, 255, 255, 0.72);
	letter-spacing: 0.08em;
}

.page--global .breadcrumb__item {
	color: rgba(255, 255, 255, 0.72);
}

.breadcrumb__item + .breadcrumb__item::before {
	content: "›";
	display: inline-block;
	margin: 0 10px;
	color: rgba(255, 255, 255, 0.72);
}

.page--global .breadcrumb__item + .breadcrumb__item::before {
	color: rgba(255, 255, 255, 0.72);
}

.breadcrumb__item a {
	color: inherit;
	text-decoration: underline;
	transition: opacity 0.3s ease;
}

.breadcrumb__item a:hover {
	opacity: 0.7;
}

.breadcrumb__item[aria-current="page"] {
	color: #fff;
}

.page--global .breadcrumb__item[aria-current="page"] ,.page--home .breadcrumb__item[aria-current="page"] {
	color: #fff;
}

/* --------------------------------
	Responsive
--------------------------------- */

@media (max-width: 767px) {
	.breadcrumb {
		padding: 10px 0;
		overflow-x: auto;
		overflow-y: hidden;
		-webkit-overflow-scrolling: touch;
	}

	.breadcrumb__list {
		display: flex;
		flex-wrap: nowrap;
		align-items: center;
		width: max-content;
		margin: 0;
		padding: 0;
		list-style: none;
	}

	.breadcrumb__item {
		display: flex;
		align-items: center;
		flex: 0 0 auto;
		font-size: 13px;
		line-height: 1.4;
		letter-spacing: 0.08em;
		white-space: nowrap;
	}
}

/* ====================================
Footer
==================================== */
.site-footer {
	background: #000;
	color: var(--color-text, #fff);
	z-index: 0;
	position: relative;
}

.site-footer__main {
	padding: 56px 0 64px;
}

.site-footer__inner {
	display: grid;
	grid-template-columns: 370px 1fr;
	gap: 80px;
	align-items: start;
}

.site-footer__info {
	text-align: center;
}

.site-footer__logo {
	display: inline-block;
	text-decoration: none;
}

.site-footer__logo img {
	display: block;
	margin: 0 auto;
	width: 150px;
}

.site-footer__hours {
	font-size: 14px;
	line-height: 1.8;
	letter-spacing: 0.06em;
}

.site-footer__hours span {
	margin-right: 8px;
	font-size: 11px;
	opacity: 0.9;
}

.site-footer__hours span + span {
	margin-left: 18px;
}

.site-footer__tel {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 8px;
	color: var(--color-text, #fff);
	text-decoration: none;
	font-family: var(--font-display-en);
	font-size: 28px;
	line-height: 1;
	letter-spacing: 0.08em;
	transition: opacity 0.3s ease;
}

.site-footer__tel:hover {
	opacity: 0.75;
}

.site-footer__tel-icon {
	width: 24px;
	height: 24px;
	fill: currentColor;
	flex-shrink: 0;
}

.site-footer__nav-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 40px 34px;
	padding-top: 28px;
}

.fnav {
	margin: 0;
	padding: 0;
	list-style: none;
}

.fnav__item + .fnav__item {
	margin-top: 18px;
}

.fnav__item a {
	color: var(--color-text, #fff);
	text-decoration: none;
	font-size: 15px;
	line-height: 1.8;
	letter-spacing: 0.08em;
	transition: opacity 0.3s ease;
}

.fnav__item a:hover {
	opacity: 0.7;
}

.site-footer__bottom {
	padding: 18px 0 20px;
	text-align: center;
}

.site-footer__copy {
	display: inline-block;
	font-size: 13px;
	line-height: 1.4;
	letter-spacing: 0.24em;
	opacity: 0.92;
}

@media (max-width: 1200px) {
	.site-footer__inner {
		grid-template-columns: 300px 1fr;
		gap: 48px;
	}

	.site-footer__nav-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 767px) {
	.site-footer {
		padding-bottom: 74px;
	}

	.site-footer__logo img {
		width: clamp(100px, 27vw, 200px);
	}

	.site-footer__main {
		padding: 48px 0 0;
	}

	.site-footer__inner {
		grid-template-columns: 1fr;
		gap: 40px;
	}

	.site-footer__nav {
		display: none;
	}

	.site-footer__nav-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 24px 20px;
		padding-top: 0;
	}

	.site-footer__hours {
		font-size: 13px;
	}

	.site-footer__hours span + span {
		margin-left: 12px;
	}

	.site-footer__tel {
		font-size: 24px;
	}

	.site-footer__copy {
		font-size: 12px;
		letter-spacing: 0.14em;
	}
}

@media (min-width: 768px) {
	.site-footer__tel {
		pointer-events: none;
		cursor: default;
	}
}

/* ====================================
SP Fixed Footer Nav
==================================== */

.sp-fixed-nav {
	display: none;
}

@media (max-width: 767px) {
	.sp-fixed-nav {
		position: fixed;
		right: 0;
		bottom: 0;
		left: 0;
		z-index: 120;
		display: block;
		pointer-events: none;

		opacity: 0;
		visibility: hidden;
		transform: translateY(16px);
		transition: opacity 0.35s ease, transform 0.35s ease, visibility 0s linear 0.35s;
	}

	.sp-fixed-nav.is-show {
		opacity: 1;
		visibility: visible;
		transform: translateY(0);
		transition: opacity 0.35s ease, transform 0.35s ease, visibility 0s linear 0s;
	}

	.sp-fixed-nav__bar,
	.sp-fixed-nav__search {
		pointer-events: auto;
		font-family: var(--font-sans-jp);
	}

	.sp-fixed-nav__bar {
		position: relative;
		display: grid;
		grid-template-columns: repeat(3, 1fr) 80px;
		align-items: stretch;
		min-height: 58px;
		background: rgba(3, 32, 17, 0.8);
		box-shadow: 0 -4px 18px rgba(0, 0, 0, 0.28);
		backdrop-filter: blur(12px);
	}

	.sp-fixed-nav__item {
		font-family: var(--font-sans-jp);
		position: relative;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 4px;
		padding: 8px 4px 7px;
		color: var(--color-text, #fff);
		text-decoration: none;
		text-align: center;
		min-width: 0;
	}

	.sp-fixed-nav__item + .sp-fixed-nav__item::before {
		content: "";
		position: absolute;
		top: 10px;
		left: 0;
		width: 1px;
		height: calc(100% - 20px);
		background: var(--gradient-main-vertical3);
	}

	.sp-fixed-nav__icon {
		width: 22px;
		height: 22px;
		fill: currentColor;
		flex-shrink: 0;
	}

	.sp-fixed-nav__text {
		font-size: 10px;
		line-height: 1.2;
		letter-spacing: 0.06em;
		white-space: nowrap;
	}

	/* MENU */
	.sp-fixed-nav__menu-btn {
		position: absolute;
		right: 10px;
		bottom: 10px;
		z-index: 2;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 8px;
		width: 75px;
		height: 75px;
		padding: 0;
		border-radius: var(--radius-circle, 50%);
		background: var(--gradient-main);
		cursor: pointer;
		box-shadow: 0 6px 14px rgba(0, 0, 0, 0.35), 0 0 10px rgba(217, 208, 139, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.5);
		transition: transform 0.3s ease, box-shadow 0.3s ease, filter 0.3s ease;
	}

	.sp-fixed-nav__menu-btn::before {
		content: "";
		position: absolute;
		inset: 2px;
		border-radius: inherit;
		border: 1px solid rgba(0, 0, 0, 0.16);
		pointer-events: none;
	}

	.sp-fixed-nav__menu-btn:active {
		transform: scale(0.96);
		box-shadow: 0 6px 16px rgba(0, 0, 0, 0.38), 0 0 12px rgba(217, 208, 139, 0.35), inset 0 2px 5px rgba(0, 0, 0, 0.18);
	}

	.sp-fixed-nav__menu-btn > * {
		transform: translateY(5px);
	}

	.sp-fixed-nav__menu-lines {
		position: relative;
		display: block;
		width: 36px;
		height: 12px;
	}

	.sp-fixed-nav__menu-lines span {
		position: absolute;
		left: 0;
		display: block;
		width: 100%;
		height: 1px;
		background: #000;
		transition: transform 0.3s ease, opacity 0.3s ease;
	}

	.sp-fixed-nav__menu-lines span:first-child {
		top: 1px;
	}

	.sp-fixed-nav__menu-lines span:last-child {
		bottom: 1px;
	}

	.sp-fixed-nav__menu-text {
		font-family: var(--font-serif-en);
		font-size: 13px;
		letter-spacing: 0.12em;
		line-height: 1;
		margin-top: 3px;
		color: #000;
	}

	/* MENU上の女性検索 */
	.sp-fixed-nav__search {
		position: absolute;
		right: 17px;
		bottom: 89px;
		z-index: 3;
	}

	.sp-fixed-nav__search-btn {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 2px;
		width: 62px;
		height: 62px;
		padding: 0;
		border: 0;
		border-radius: var(--radius-circle, 50%);
		background: var(--color-text-inverse, #000);
		color: var(--color-text, #fff);
		cursor: pointer;
		box-shadow: 0 8px 18px rgba(0, 0, 0, 0.28);
	}

	.sp-fixed-nav__search-btn > * {
		transform: translateY(-5px);
	}

	.sp-fixed-nav__search-icon {
		width: 30px;
		height: 30px;
		fill: currentColor;
	}

	.sp-fixed-nav__search-label {
		font-size: 9px;
		line-height: 1.2;
		letter-spacing: 0.04em;
	}

	/* 開いている時のMENU */
	.sp-fixed-nav__menu-btn[aria-expanded="true"] .sp-fixed-nav__menu-lines span:first-child {
		top: 50%;
		transform: translateY(-50%) rotate(45deg);
	}

	.sp-fixed-nav__menu-btn[aria-expanded="true"] .sp-fixed-nav__menu-lines span:last-child {
		bottom: auto;
		top: 50%;
		transform: translateY(-50%) rotate(-45deg);
	}
}
