@charset "UTF-8";
/* ============================================================
	site.css — Tailwind CSS（Browser CDN）移行後の統一スタイル

	ref.html と同じ構成:
	  1) レイヤー順宣言 … Tailwind utilities（各 HTML の
	     <style type="text/tailwindcss"> @theme で
	     md=768px / lg=1024px / wide=1301px を定義）が
	     components を上書きできるよう utilities を最後に置く
	  2) :root デザイントークン（--u は ref.html と同一の流動単位）
	  3) base … bootstrap-reboot 相当のリセット + ref.html ベース
	  4) components … 旧 style.css / header.css / contents.css の全容
	     （動効・hover は値を変えず移植。サイズは ref.html 対応値）
	============================================================ */
@layer theme, base, components, utilities;

/* ------------------------------------------------------------
	デザイントークン
------------------------------------------------------------ */
:root {
	/* ref.html 同一: 1330px は PDF 原稿幅 */
	--max-width: 1920px;
	--u: calc(min(100vw, var(--max-width)) / 1330);
	--default: #222;
	--font-jp: 'Noto Serif JP', 'Noto Serif CJK JP', 'Yu Mincho', 'Hiragino Mincho ProN', serif;
	--font-en_1: 'Noto Serif JP', 'Noto Serif', serif;
	--font_ja: var(--font-jp);
	--font_en: var(--font-en_1);
	--fsize_s: clamp(0.813rem, 0.79rem + 0.11vw, 0.875rem);
	--fsize_m: clamp(0.875rem, 0.83rem + 0.23vw, 1rem);
	--fsize_l: clamp(0.938rem, 0.869rem + 0.34vw, 1.125rem);
	--ways-eyebrow: #626f5e;
}

/*-----------------------------------------------------------------------------
	FAQ PAGE（オンライン FAQ の con_faq 構造を静的ページへ移植）
-----------------------------------------------------------------------------*/
.faq_page .faq_sec {
	padding-top: calc(104 * var(--u));
	padding-bottom: calc(148 * var(--u));
}

.faq_page .con_faq {
	width: 62.5%;
	max-width: calc(1100 * var(--u));
	margin-right: auto;
	margin-left: auto;
}

.faq_page .tmp_tab_btn {
	position: relative;
}

.faq_page .tmp_tab_btn ul {
	display: flex;
	flex-wrap: wrap;
	margin: 0;
}

.faq_page .tmp_tab_btn li {
	width: 50%;
}

.faq_page .tmp_tab_btn li a {
	position: relative;
	display: flex;
	width: 100%;
	align-items: center;
	justify-content: center;
	padding: calc(24 * var(--u)) calc(8 * var(--u)) calc(14 * var(--u));
	border-bottom: 2px solid #e4e4e4;
	color: #7d7d7d;
	font-size: calc(16 * var(--u));
	line-height: 1.6;
	letter-spacing: 0.04em;
	transition: border-color 0.3s ease-in-out, color 0.3s ease-in-out;
}

.faq_page .tmp_tab_btn li a::before {
	content: '';
	position: absolute;
	top: calc(11 * var(--u));
	left: 50%;
	width: calc(3 * var(--u));
	height: calc(3 * var(--u));
	border-radius: 50%;
	background: #2c5453;
	opacity: 0;
	transform: translateX(-50%);
	transition: opacity 0.3s ease-in-out;
}

.faq_page .tmp_tab_btn li.is-active a,
.faq_page .tmp_tab_btn li a:hover {
	border-color: #2c5453;
	color: #222;
}

.faq_page .tmp_tab_btn li.is-active a::before,
.faq_page .tmp_tab_btn li a:hover::before {
	opacity: 1;
}

.faq_page .tmp_tab_pan {
	margin-top: calc(60 * var(--u));
}

.faq_page .tmp_tab_pan > .tmp_tab_item:not(:first-child) {
	display: none;
}

.faq_page .tmp_tab_pan .tmp_st {
	margin: 0;
	text-align: center;
}

.faq_page .tmp_tab_pan .tmp_st .jp {
	display: inline-block;
	color: #222;
	font-size: calc(24 * var(--u));
	font-weight: 500;
	line-height: 1.8;
	letter-spacing: 0.08em;
}

.faq_page .tmp_tab_pan .faq_dl {
	margin: calc(20 * var(--u)) 0 0;
}

.faq_page .tmp_tab_pan .faq_inner dt {
	position: relative;
	padding: calc(18 * var(--u)) 0;
	border-bottom: 1px solid #d9d9d9;
	color: #555;
	cursor: pointer;
}

.faq_page .tmp_tab_pan .faq_inner dt:focus-visible {
	outline: 2px solid #2c5453;
	outline-offset: calc(4 * var(--u));
}

.faq_page .tmp_tab_pan .faq_inner .faq_txt,
.faq_page .tmp_tab_pan .faq_inner .faq_answer {
	display: flex;
	align-items: baseline;
}

.faq_page .tmp_tab_pan .faq_inner .tmp_ic {
	display: flex;
	width: calc(42 * var(--u));
	flex: 0 0 calc(42 * var(--u));
	align-items: center;
	justify-content: center;
	font-family: var(--font-en_1);
	font-size: calc(28 * var(--u));
	font-weight: 400;
	line-height: 1;
	letter-spacing: 0;
	text-align: center;
	color: #222;
}

.faq_page .tmp_tab_pan .faq_inner .txt {
	width: calc(100% - 42 * var(--u));
	padding-right: calc(30 * var(--u));
	font-size: calc(16 * var(--u));
	line-height: 1.8;
	letter-spacing: 0.025em;
}

.faq_page .tmp_tab_pan .faq_inner dt .ic {
	position: absolute;
	top: 50%;
	right: 0;
	display: block;
	width: calc(18 * var(--u));
	height: calc(18 * var(--u));
	transform: translateY(-50%);
}

.faq_page .tmp_tab_pan .faq_inner dt .ic::before,
.faq_page .tmp_tab_pan .faq_inner dt .ic::after {
	content: '';
	position: absolute;
	top: 50%;
	right: 0;
	display: block;
	width: calc(18 * var(--u));
	height: 1px;
	background: #555;
	transform: translateY(-50%);
}

.faq_page .tmp_tab_pan .faq_inner dt .ic::after {
	transform: translateY(-50%) rotate(90deg);
	transition: transform 0.5s ease;
}

.faq_page .tmp_tab_pan .faq_inner dt.is-active .ic::after {
	transform: translateY(-50%) rotate(0);
}

.faq_page .tmp_tab_pan .faq_inner dd {
	display: none;
	margin: 0 0 calc(22 * var(--u));
	padding: calc(20 * var(--u)) 0 calc(20 * var(--u)) calc(32 * var(--u));
}

.faq_page .tmp_tab_pan .faq_inner dd .faq_answer {
	align-items: flex-start;
	color: #7d7d7d;
}

.faq_page .tmp_tab_pan .faq_inner dd .faq_answer .ic_a {
	color: #7d7d7d;
}

.faq_page .faq_lead {
	text-align: center;
	color: #666;
	font-size: calc(16 * var(--u));
	line-height: 1.9;
	letter-spacing: 0.04em;
	margin-bottom: calc(24 * var(--u));
}

.faq_page .faq_status_notice {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: calc(10 * var(--u));
	margin-bottom: calc(48 * var(--u));
	font-size: calc(13 * var(--u));
	color: #8c531b;
}

.faq_page .faq_status_notice .notice_txt {
	color: #555;
	font-weight: 500;
	letter-spacing: 0.04em;
}

/* 要確認バッジ（未確定箇所の明示用スタイル・隣接文字の水平中心と揃えて配置） */
.badge_confirm {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: calc(2 * var(--u)) calc(8 * var(--u));
	margin: 0 calc(4 * var(--u));
	font-size: calc(12 * var(--u));
	font-weight: 700;
	line-height: 1.2;
	color: #8c531b;
	background-color: #fbf5ee;
	border: 1.5px solid #c29b68;
	border-radius: 4px;
	vertical-align: 0.12em;
	letter-spacing: 0.02em;
	white-space: nowrap;
}

.faq_page .faq_note {
	display: block;
	margin-top: calc(14 * var(--u));
	padding-top: calc(10 * var(--u));
	border-top: 1px dashed #e4dfd7;
	font-size: calc(13 * var(--u));
	color: #8c531b;
	line-height: 1.6;
}

.faq_page .faq_link {
	color: #2c5453;
	text-decoration: underline;
	text-underline-offset: 3px;
	transition: opacity 0.2s ease;
}

.faq_page .faq_link:hover {
	opacity: 0.75;
}

/* キャンセル規定の料金表 */
.faq_page .faq_cancel_table {
	max-width: calc(460 * var(--u));
	margin: calc(12 * var(--u)) 0;
	border: 1px solid #e8e3dc;
	border-radius: 4px;
	background: #faf8f5;
	overflow: hidden;
}

.faq_page .faq_cancel_row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: calc(10 * var(--u)) calc(18 * var(--u));
	border-bottom: 1px solid #eae5de;
	font-size: calc(14 * var(--u));
	line-height: 1.5;
}

.faq_page .faq_cancel_row:last-child {
	border-bottom: none;
}

.faq_page .faq_cancel_label {
	color: #555;
}

.faq_page .faq_cancel_val {
	font-weight: 600;
	color: #222;
}

/* 末尾のお問い合わせ案内ボックス */
.faq_page .faq_contact_box {
	margin-top: calc(72 * var(--u));
	padding: calc(44 * var(--u)) calc(32 * var(--u));
	text-align: center;
	background-color: #f8f6f2;
	border-radius: 4px;
}

.faq_page .faq_contact_text {
	font-size: calc(16 * var(--u));
	line-height: 1.8;
	color: #333;
	letter-spacing: 0.04em;
	margin-bottom: calc(20 * var(--u));
}

.faq_page .faq_contact_btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: calc(220 * var(--u));
	padding: calc(14 * var(--u)) calc(36 * var(--u));
	background: #2c5453;
	color: #fff;
	font-size: calc(14 * var(--u));
	letter-spacing: 0.08em;
	border-radius: 2px;
	transition: background 0.3s ease, opacity 0.3s ease;
}

.faq_page .faq_contact_btn:hover {
	background: #1f3b3a;
	color: #fff;
}

.faq_page .view_pc-tab {
	display: block;
}

@media (max-width: 991px) {
	.faq_page .faq_sec {
		padding: 60px 20px;
	}

	.faq_page .con_faq {
		width: 100%;
		max-width: 680px;
	}

	.faq_page .tmp_tab_btn li a {
		padding: 18px 8px 10px;
		font-size: 14px;
		letter-spacing: 0.02em;
	}

	.faq_page .tmp_tab_btn li a::before {
		top: 8px;
		width: 3px;
		height: 3px;
	}

	.faq_page .tmp_tab_pan {
		margin-top: 42px;
	}

	.faq_page .tmp_tab_pan .tmp_st .jp {
		font-size: 22px;
		letter-spacing: 0.06em;
	}

	.faq_page .tmp_tab_pan .faq_dl {
		margin-top: 14px;
	}

	.faq_page .tmp_tab_pan .faq_inner dt {
		padding: 18px 0;
	}

	.faq_page .tmp_tab_pan .faq_inner .tmp_ic {
		width: 34px;
		flex-basis: 34px;
		font-size: 26px;
	}

	.faq_page .tmp_tab_pan .faq_inner .txt {
		width: calc(100% - 34px);
		padding-right: 24px;
		font-size: 14px;
		line-height: 1.8;
	}

	.faq_page .tmp_tab_pan .faq_inner dt .ic {
		width: 16px;
		height: 16px;
	}

	.faq_page .tmp_tab_pan .faq_inner dt .ic::before,
	.faq_page .tmp_tab_pan .faq_inner dt .ic::after {
		width: 16px;
	}

	.faq_page .tmp_tab_pan .faq_inner dd {
		margin-bottom: 24px;
		padding: 14px 8px 0;
	}

	.faq_page .faq_lead {
		font-size: 14px;
		line-height: 1.8;
		margin-bottom: 16px;
	}

	.faq_page .faq_status_notice {
		margin-bottom: 32px;
		font-size: 12px;
		gap: 8px;
	}

	.badge_confirm {
		padding: 2px 7px;
		margin: 0 3px;
		font-size: 11px;
		line-height: 1.2;
		border-radius: 3px;
		vertical-align: 0.12em;
	}

	.faq_page .faq_note {
		margin-top: 10px;
		padding-top: 8px;
		font-size: 12px;
	}

	.faq_page .faq_cancel_table {
		max-width: 100%;
		margin: 10px 0;
	}

	.faq_page .faq_cancel_row {
		padding: 8px 12px;
		font-size: 13px;
	}

	.faq_page .faq_contact_box {
		margin-top: 48px;
		padding: 32px 20px;
	}

	.faq_page .faq_contact_text {
		font-size: 14px;
		margin-bottom: 16px;
	}

	.faq_page .faq_contact_btn {
		min-width: 200px;
		padding: 12px 28px;
		font-size: 13px;
	}

	.faq_page .view_pc-tab {
		display: none;
	}
}

@media (max-width: 767px) {
	.faq_page .faq_sec {
		padding: 52px 15px 70px;
	}

	.faq_page .tmp_tab_btn li a {
		min-height: 58px;
		padding-right: 4px;
		padding-left: 4px;
		font-size: 13px;
		line-height: 1.5;
	}

	.faq_page .tmp_tab_pan {
		margin-top: 36px;
	}

	.faq_page .tmp_tab_pan .tmp_st .jp {
		font-size: 20px;
	}

	.faq_page .tmp_tab_pan .faq_inner dt {
		padding: 18px 0;
	}

	.faq_page .tmp_tab_pan .faq_inner .faq_txt {
		margin-top: -5px;
	}

	.faq_page .tmp_tab_pan .faq_inner .txt {
		padding-right: 20px;
		line-height: 1.8;
	}

	.faq_page .tmp_tab_pan .faq_inner dd {
		padding-top: 12px;
	}

	.faq_page .faq_contact_box {
		margin-top: 36px;
		padding: 24px 16px;
	}

	.faq_page .faq_cancel_row {
		padding: 8px 10px;
		font-size: 12px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.faq_page .tmp_tab_btn li a,
	.faq_page .tmp_tab_btn li a::before,
	.faq_page .tmp_tab_pan .faq_inner dt .ic::after {
		transition: none;
	}
}

/* ------------------------------------------------------------
	CONTACT PAGE（オンライン contact の con_form 構造を静的ページへ移植）
------------------------------------------------------------ */
.contact_page .contact_sec {
	padding-top: calc(104 * var(--u));
	padding-bottom: calc(148 * var(--u));
}

.contact_page .con_form,
.contact_page .con_flow,
.contact_page .tmp_form,
.contact_page .contact_confirm,
.contact_page .contact_success,
.contact_page .contact_error {
	width: 100%;
	margin-right: auto;
	margin-left: auto;
}

.contact_page .con_flow,
.contact_page .tmp_form,
.contact_page .contact_confirm,
.contact_page .contact_success,
.contact_page .contact_error {
	width: 76.3889%;
	max-width: calc(1100 * var(--u));
}

.contact_page .con_flow {
	margin-bottom: calc(90 * var(--u));
}

.contact_page .box_flow {
	display: flex;
	align-items: flex-start;
	justify-content: center;
}

.contact_page .flow_item {
	position: relative;
	width: calc(190 * var(--u));
	text-align: center;
}

.contact_page .flow_item:not(:last-child)::after {
	content: '';
	position: absolute;
	top: calc(32.5 * var(--u));
	right: calc(-65 * var(--u));
	width: calc(130 * var(--u));
	height: 1px;
	background: #d9d9d9;
}

.contact_page .flow_item .text {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	margin: 0;
}

.contact_page .flow_item .ic {
	display: flex;
	width: calc(65 * var(--u));
	height: calc(65 * var(--u));
	align-items: center;
	justify-content: center;
	border: 1px solid #dedede;
	border-radius: 50%;
	background: #fff;
	color: #7d7d7d;
	font-family: var(--font-en_1);
	font-size: calc(42 * var(--u));
	line-height: 1;
	transition: border-color 0.22s ease, background-color 0.22s ease, color 0.22s ease;
}

.contact_page .flow_item .jp {
	display: block;
	margin-top: calc(13 * var(--u));
	color: #7d7d7d;
	font-size: calc(16 * var(--u));
	line-height: 1.6;
	letter-spacing: 0.04em;
	white-space: nowrap;
}

.contact_page .flow_item.is-active .ic {
	border-color: #1a1a1a;
	background: #1a1a1a;
	color: #fff;
}

.contact_page .flow_item.is-complete .ic {
	border-color: #1a1a1a;
	color: #1a1a1a;
}

.contact_page .flow_item.is-complete:not(:last-child)::after {
	background: #1a1a1a;
}

.contact_page .flow_item.is-active .jp {
	color: #1a1a1a;
}

.contact_page .tmp_form table {
	width: 100%;
	border-top: 1px solid #555;
}

.contact_page .tmp_form tr {
	position: relative;
	display: flex;
}

.contact_page .tmp_form tr::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 1px;
	background: #d9d9d9;
}

.contact_page .tmp_form th,
.contact_page .tmp_form td {
	display: block;
	box-sizing: border-box;
	text-align: left;
}

.contact_page .tmp_form th {
	width: 30.8333%;
	padding: calc(26 * var(--u)) calc(20 * var(--u)) calc(26 * var(--u)) 0;
	font-weight: 400;
}

.contact_page .tmp_form td {
	width: 69.1667%;
	padding: calc(18 * var(--u)) 0 calc(18 * var(--u)) calc(20 * var(--u));
}

.contact_page .box_th_inner {
	display: grid;
	grid-template-columns: calc(150 * var(--u)) calc(38 * var(--u));
	align-items: center;
	column-gap: calc(10 * var(--u));
}

.contact_page .box_th_inner .type {
	margin: 0;
	font-size: calc(16 * var(--u));
	line-height: 1.8;
	letter-spacing: 0.025em;
	white-space: nowrap;
}

.contact_page .required {
	display: inline-flex;
	width: 100%;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-width: 0;
	padding: calc(2 * var(--u)) calc(5 * var(--u));
	background: #555;
	color: #fff;
	font-size: calc(11 * var(--u));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.contact_page .box_td_inner {
	width: 100%;
}

.contact_page .box_td_inner input,
.contact_page .box_td_inner select,
.contact_page .box_td_inner textarea {
	box-sizing: border-box;
	border: 1px solid #d9d9d9;
	background: #fff;
	font-size: calc(16 * var(--u));
	line-height: 1.8;
	letter-spacing: 0.025em;
	outline: none;
	transition: border-color 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
}

.contact_page .box_td_inner input,
.contact_page .box_td_inner select {
	height: calc(58 * var(--u));
	padding: calc(10 * var(--u)) calc(16 * var(--u));
}

.contact_page .box_td_inner input:focus,
.contact_page .box_td_inner select:focus,
.contact_page .box_td_inner textarea:focus {
	border-color: #2c5453;
	box-shadow: 0 0 0 2px rgba(44, 84, 83, 0.12);
}

.contact_page .box_td_inner input::placeholder,
.contact_page .box_td_inner textarea::placeholder {
	color: #aaa;
	opacity: 1;
}

.contact_page .box_td_inner input.size_s {
	width: 28.9773%;
	min-width: calc(260 * var(--u));
}

.contact_page .box_td_inner input.size_m,
.contact_page .box_select {
	width: 54.5455%;
}

.contact_page .box_select {
	position: relative;
}

.contact_page .box_select::after {
	content: '▼';
	position: absolute;
	top: 50%;
	right: calc(18 * var(--u));
	color: #555;
	font-size: calc(10 * var(--u));
	line-height: 1;
	pointer-events: none;
	transform: translateY(-50%);
}

.contact_page .box_select select {
	width: 100%;
	padding-right: calc(42 * var(--u));
	appearance: none;
}

.contact_page .box_td_inner textarea {
	display: block;
	width: 100%;
	max-width: calc(790 * var(--u));
	min-height: calc(340 * var(--u));
	padding: calc(12 * var(--u)) calc(16 * var(--u));
	resize: vertical;
}

.contact_page .box_policy {
	display: flex;
	justify-content: center;
	margin-top: calc(44 * var(--u));
}

.contact_page .box_check {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: calc(10 * var(--u));
	cursor: pointer;
}

.contact_page .box_check input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
}

.contact_page .box_check .checkmark {
	display: inline-block;
	width: calc(22 * var(--u));
	height: calc(22 * var(--u));
	flex: 0 0 calc(22 * var(--u));
	border: 1px solid #999;
	background: #fff;
}

.contact_page .box_check input:checked + .checkmark {
	border-color: #2c5453;
	background: #2c5453;
}

.contact_page .box_check input:checked + .checkmark::after {
	content: '';
	display: block;
	width: calc(7 * var(--u));
	height: calc(12 * var(--u));
	margin: calc(2 * var(--u)) auto 0;
	border-right: 2px solid #fff;
	border-bottom: 2px solid #fff;
	transform: rotate(45deg);
}

.contact_page .box_check input:focus-visible + .checkmark {
	outline: 2px solid #2c5453;
	outline-offset: calc(4 * var(--u));
}

.contact_page .box_check .txt {
	font-size: calc(15 * var(--u));
	line-height: 1.8;
	letter-spacing: 0.025em;
}

.contact_page .box_check .txt a {
	color: #2c5453;
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.contact_page .box_btn_cont {
	display: flex;
	justify-content: center;
	margin-top: calc(38 * var(--u));
}

.contact_page .tmp_btn {
	width: calc(316 * var(--u));
}

.contact_page .form-confirm-button,
.contact_page .contact_confirm_actions button,
.contact_page .contact_home_button {
	position: relative;
	display: inline-flex;
	width: calc(316 * var(--u));
	max-width: 100%;
	min-width: 0;
	min-height: calc(45 * var(--u));
	align-items: center;
	justify-content: center;
	padding: calc(9 * var(--u)) calc(20 * var(--u));
	border: 1px solid #dedede;
	background: #fff;
	color: #1a1a1a;
	cursor: pointer;
	font-size: calc(16 * var(--u));
	line-height: 1.5;
	letter-spacing: 0.05em;
	transition: background 0.22s, color 0.22s, border-color 0.22s;
}

.contact_page .form-confirm-button::before,
.contact_page .form-confirm-button::after,
.contact_page .contact_confirm_actions button::before,
.contact_page .contact_confirm_actions button::after,
.contact_page .contact_home_button::before,
.contact_page .contact_home_button::after {
	content: '';
	display: block;
	position: absolute;
	top: 50%;
	right: calc(-15 * var(--u));
	width: calc(31 * var(--u));
	height: 1px;
	background: #dedede;
	transform: translateY(-50%);
}

.contact_page .form-confirm-button::after,
.contact_page .contact_confirm_actions button::after,
.contact_page .contact_home_button::after {
	z-index: 1;
	background: #1a1a1a;
	transform: translateY(-50%) scale(0, 1);
}

.contact_page .form-confirm-button:hover,
.contact_page .form-confirm-button:focus-visible,
.contact_page .contact_confirm_actions button:hover,
.contact_page .contact_confirm_actions button:focus-visible,
.contact_page .contact_home_button:hover,
.contact_page .contact_home_button:focus-visible {
	border-color: #1a1a1a;
	background: #fff;
	color: #1a1a1a;
}

.contact_page .form-confirm-button:hover::after,
.contact_page .form-confirm-button:focus-visible::after,
.contact_page .contact_confirm_actions button:hover::after,
.contact_page .contact_confirm_actions button:focus-visible::after,
.contact_page .contact_home_button:hover::after,
.contact_page .contact_home_button:focus-visible::after {
	animation: scrollX 1.5s infinite;
}

.contact_page .contact_confirm,
.contact_page .contact_success {
	text-align: center;
}

.contact_page .contact_confirm .tmp_st,
.contact_page .contact_success .tmp_st {
	margin: 0 0 calc(34 * var(--u));
	text-align: center;
}

.contact_page .contact_confirm .tmp_st .jp,
.contact_page .contact_success .tmp_st .jp {
	font-size: calc(28 * var(--u));
	font-weight: 500;
	line-height: 1.8;
	letter-spacing: 0.08em;
}

.contact_page .contact_review_list {
	margin: 0;
	border-top: 1px solid #555;
	text-align: left;
}

.contact_page .contact_review_list > div {
	display: flex;
	position: relative;
	border-bottom: 1px solid #d9d9d9;
}

.contact_page .contact_review_list dt,
.contact_page .contact_review_list dd {
	box-sizing: border-box;
	margin: 0;
	padding: calc(20 * var(--u));
	font-size: calc(16 * var(--u));
	line-height: 1.8;
}

.contact_page .contact_review_list dt {
	width: 30.8333%;
	color: #555;
}

.contact_page .contact_review_list dd {
	width: 69.1667%;
	white-space: pre-wrap;
	word-break: break-word;
}

.contact_page .contact_confirm_actions {
	display: flex;
	justify-content: center;
	gap: calc(18 * var(--u));
	margin-top: calc(42 * var(--u));
}

.contact_page .contact_confirm_actions button,
.contact_page .contact_home_button {
	text-decoration: none;
}

.contact_page .contact_success p {
	margin: 0 0 calc(42 * var(--u));
	font-size: calc(16 * var(--u));
	line-height: 2.2;
	letter-spacing: 0.025em;
}

.contact_page .contact_error {
	margin-top: calc(32 * var(--u));
	margin-bottom: calc(32 * var(--u));
	color: #a33;
	font-size: calc(16 * var(--u));
	line-height: 2;
	text-align: center;
}

.contact_page .contact_home_button {
	padding-right: calc(20 * var(--u));
}

/* 英語版: 項目名と必須バッジの余白・幅調整 */
.lang-en.contact_page .box_th_inner {
	grid-template-columns: calc(150 * var(--u)) auto;
	column-gap: calc(10 * var(--u));
	justify-content: flex-start;
}

.lang-en.contact_page .required {
	width: auto;
	min-width: 0;
	padding: calc(2 * var(--u)) calc(8 * var(--u));
	white-space: nowrap;
}

/* 英語版: ステップフローの文字重なり防止と接続線の位置調整 */
.lang-en.contact_page .flow_item {
	width: calc(260 * var(--u));
}

.lang-en.contact_page .flow_item:not(:last-child)::after {
	top: calc(32.5 * var(--u));
	left: 50%;
	right: auto;
	width: 100%;
	z-index: 0;
}

.lang-en.contact_page .flow_item .jp {
	font-size: calc(15 * var(--u));
	line-height: 1.4;
	white-space: normal;
	overflow-wrap: break-word;
}

@media (max-width: 991px) {
	.contact_page .contact_sec {
		padding: 60px 20px;
	}

	.contact_page .con_flow,
	.contact_page .tmp_form,
	.contact_page .contact_confirm,
	.contact_page .contact_success,
	.contact_page .contact_error {
		width: 100%;
		max-width: 680px;
	}

	.contact_page .con_flow {
		margin-bottom: 54px;
	}

	.contact_page .flow_item {
		width: 33.3333%;
	}

	.contact_page .flow_item:not(:last-child)::after {
		top: 28px;
		right: -24px;
		width: 48px;
	}

	.contact_page .flow_item .ic {
		width: 56px;
		height: 56px;
		font-size: 34px;
	}

	.contact_page .flow_item .jp {
		margin-top: 10px;
		font-size: 13px;
	}

	.contact_page .tmp_form tr {
		display: block;
	}

	.contact_page .tmp_form th,
	.contact_page .tmp_form td {
		width: 100%;
	}

	.contact_page .tmp_form th {
		padding: 18px 0 8px;
	}

	.contact_page .tmp_form td {
		padding: 0 0 22px;
	}

	.contact_page .box_th_inner .type {
		font-size: 15px;
	}

	.contact_page .required {
		min-width: 36px;
		padding: 2px 5px;
		font-size: 11px;
	}

	.contact_page .box_td_inner input,
	.contact_page .box_td_inner select,
	.contact_page .box_td_inner textarea {
		font-size: 14px;
	}

	.contact_page .box_td_inner input,
	.contact_page .box_td_inner select {
		height: 50px;
		padding: 9px 14px;
	}

	.contact_page .box_td_inner input.size_s,
	.contact_page .box_td_inner input.size_m,
	.contact_page .box_select {
		width: 100%;
		min-width: 0;
	}

	.contact_page .box_select::after {
		right: 16px;
		font-size: 10px;
	}

	.contact_page .box_select select {
		padding-right: 38px;
	}

	.contact_page .box_td_inner textarea {
		max-width: none;
		min-height: 200px;
		padding: 10px 14px;
	}

	.contact_page .box_policy {
		margin-top: 30px;
	}

	.contact_page .box_check {
		gap: 8px;
	}

	.contact_page .box_check .checkmark {
		width: 20px;
		height: 20px;
		flex-basis: 20px;
	}

	.contact_page .box_check input:checked + .checkmark::after {
		width: 6px;
		height: 10px;
		margin-top: 2px;
	}

	.contact_page .box_check .txt {
		font-size: 14px;
	}

	.contact_page .box_btn_cont {
		margin-top: 30px;
	}

	.contact_page .tmp_btn {
		width: 280px;
	}

	.contact_page .form-confirm-button,
	.contact_page .contact_confirm_actions button,
	.contact_page .contact_home_button {
		width: 280px;
		min-height: 46px;
		padding: 9px 22px;
		font-size: 14px;
	}

	.contact_page .form-confirm-button::before,
	.contact_page .form-confirm-button::after,
	.contact_page .contact_confirm_actions button::before,
	.contact_page .contact_confirm_actions button::after,
	.contact_page .contact_home_button::before,
	.contact_page .contact_home_button::after {
		right: -12px;
		width: 27px;
	}

	.contact_page .contact_confirm .tmp_st,
	.contact_page .contact_success .tmp_st {
		margin-bottom: 24px;
	}

	.contact_page .contact_confirm .tmp_st .jp,
	.contact_page .contact_success .tmp_st .jp {
		font-size: 22px;
	}

	.contact_page .contact_review_list dt,
	.contact_page .contact_review_list dd {
		padding: 14px 12px;
		font-size: 14px;
	}

	.contact_page .contact_review_list dt {
		width: 34%;
	}

	.contact_page .contact_review_list dd {
		width: 66%;
	}

	.contact_page .contact_confirm_actions {
		gap: 12px;
		margin-top: 30px;
	}

	.contact_page .contact_confirm_actions button,
	.contact_page .contact_home_button {
		max-width: 100%;
	}

	.contact_page .contact_success p {
		font-size: 14px;
		line-height: 2.2;
	}

	/* 英語版コンタクトフォーム（タブレット・モバイル共通） */
	.lang-en.contact_page .box_th_inner {
		display: flex;
		align-items: center;
		justify-content: flex-start;
		gap: 10px;
	}

	.lang-en.contact_page .required {
		width: auto;
		min-width: 0;
		padding: 2px 8px;
		font-size: 11px;
		white-space: nowrap;
	}

	.lang-en.contact_page .flow_item {
		width: 33.3333%;
	}

	.lang-en.contact_page .flow_item:not(:last-child)::after {
		top: 28px;
		left: 50%;
		right: auto;
		width: 100%;
	}

	.lang-en.contact_page .flow_item .jp {
		font-size: 13px;
		line-height: 1.35;
		white-space: normal;
		overflow-wrap: break-word;
	}
}

@media (max-width: 767px) {
	.contact_page .contact_sec {
		padding: 52px 15px 70px;
	}

	.contact_page .flow_item .ic {
		width: 48px;
		height: 48px;
		font-size: 30px;
	}

	.contact_page .flow_item:not(:last-child)::after {
		top: 24px;
		right: -18px;
		width: 36px;
	}

	.contact_page .flow_item .jp {
		font-size: 12px;
		letter-spacing: 0;
	}

	.contact_page .contact_review_list > div {
		display: block;
	}

	.contact_page .contact_review_list dt,
	.contact_page .contact_review_list dd {
		width: 100%;
		padding: 10px 12px;
	}

	.contact_page .contact_review_list dt {
		padding-bottom: 0;
	}

	.contact_page .contact_confirm_actions {
		flex-direction: column-reverse;
	}

	.contact_page .contact_confirm_actions button,
	.contact_page .contact_home_button {
		width: 280px;
		max-width: 100%;
	}

	/* 英語版コンタクトフォーム（狭幅モバイル） */
	.lang-en.contact_page .flow_item:not(:last-child)::after {
		top: 24px;
		left: 50%;
		right: auto;
		width: 100%;
	}

	.lang-en.contact_page .flow_item .jp {
		font-size: 12px;
		letter-spacing: 0;
		line-height: 1.3;
	}

	.contact_page .form-confirm-button::before,
	.contact_page .form-confirm-button::after,
	.contact_page .contact_confirm_actions button::before,
	.contact_page .contact_confirm_actions button::after,
	.contact_page .contact_home_button::before,
	.contact_page .contact_home_button::after {
		right: -8px;
		width: 30px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.contact_page .flow_item .ic,
	.contact_page .box_td_inner input,
	.contact_page .box_td_inner select,
	.contact_page .box_td_inner textarea,
	.contact_page .form-confirm-button,
	.contact_page .contact_confirm_actions button,
	.contact_page .contact_home_button {
		transition: none;
	}

	.contact_page .form-confirm-button::after,
	.contact_page .contact_confirm_actions button::after,
	.contact_page .contact_home_button::after {
		animation: none;
	}
}
@media (max-width: 991px) {
	:root {
		--u: 1px;
	}
}

/* ------------------------------------------------------------
	base（bootstrap-reboot 相当 + ref.html ベース）
	Tailwind preflight（base レイヤー・後から注入）に
	負けないよう html 結合で詳細度を確保
------------------------------------------------------------ */
@layer base {
	html {
		width: 100%;
		height: auto;
		font-size: 16px;
		overflow-x: hidden;
		-webkit-font-smoothing: antialiased;
		-moz-osx-font-smoothing: grayscale;
		-webkit-text-size-adjust: 100%;
		scroll-behavior: smooth;
		scroll-padding-top: 20px;
		background: #fff;
	}
	html body {
		position: relative;
		margin: 0;
		color: #333;
		font-family: var(--font-jp);
		font-size: calc(16 * var(--u));
		font-weight: 400;
		font-style: normal;
		line-height: 2;
		letter-spacing: 0.025em;
		overflow-x: hidden;
	}
	@media (max-width: 991px) {
		html body {
			font-size: 14px;
		}
	}
	html h1, html h2, html h3, html h4, html h5, html h6 {
		margin: 0;
		font-weight: 400;
		line-height: inherit;
		font-size: inherit;
	}
	html p {
		margin: 0 0 1rem;
	}
	html figure {
		margin: 0 0 1rem;
	}
	html ul, html ol {
		margin: 0 0 1rem;
		padding: 0;
	}
	html ul li {
		list-style: none;
	}
	html a {
		transition: 0.25s ease-in;
		text-decoration: none;
		color: inherit;
	}
	html a:hover {
		color: inherit;
	}
	html img {
		display: inline-block;
		vertical-align: middle;
		outline: none;
		border: none;
		max-width: 100%;
		height: auto;
	}
	html iframe {
		border: 0;
	}
	html :focus-visible {
		outline: 2px solid #2c5453;
		outline-offset: 6px;
	}
}

/* ------------------------------------------------------------
	components
------------------------------------------------------------ */
@layer components {

	/*-----------------------------------------------------------------------------
		Typography（旧 style.css）
	-----------------------------------------------------------------------------*/
	.en {
		font-family: var(--font-en_1);
		font-weight: 400;
		font-style: normal;
	}
	h2.title_center {
		text-align: center;
		font-size: clamp(1.375rem, 1.193rem + 0.91vw, 1.875rem);
		margin-bottom: clamp(2rem, 1.273rem + 3.64vw, 4rem);
		font-family: var(--font-jp);
		font-weight: 500;
		font-style: normal;
		letter-spacing: .075em;
	}
	h2.title_center span.en {
		display: block;
		font-size: clamp(0.875rem, 0.83rem + 0.23vw, 1rem);
		color: #adadad;
		margin-bottom: 2rem;
		text-transform: uppercase;
	}
	h2.rl {
		writing-mode: vertical-rl;
		font-size: clamp(1.375rem, 1.193rem + 0.91vw, 1.875rem);
		font-weight: 500;
		letter-spacing: .1em;
		position: relative;
		padding-bottom: 1em;
		margin-bottom: 1.5em;
		white-space: nowrap;
		line-height: 2;
	}
	.color_white h2.title_center span.en {
		color: #fff;
	}
	h3.rl {
		writing-mode: vertical-rl;
		font-size: clamp(1.125rem, 0.989rem + 0.68vw, 1.5rem);
		letter-spacing: .1em;
		position: relative;
		padding-left: 1.5rem;
		padding-bottom: 1em;
		margin-bottom: 1.5em;
		white-space: nowrap;
	}
	h3.rl span {
		display: block;
		margin-left: 1rem;
		font-size: clamp(0.813rem, 0.79rem + 0.11vw, 0.875rem);
	}
	h3.rl::before {
		content: '';
		display: block;
		width: 1px;
		height: 0;
		background: #adadad;
		position: absolute;
		left: 0;
		top: 0;
		transition: ease-out .4s;
		transition-delay: 1s;
	}
	h3.rl.isPlay::before {
		height: 100%;
	}
	h3.rlnb {
		writing-mode: vertical-rl;
		font-size: clamp(1.125rem, 0.989rem + 0.68vw, 1.5rem);
		letter-spacing: .1em;
		position: relative;
		padding-left: 1.5rem;
		padding-bottom: 1em;
		margin-bottom: 1.5em;
		white-space: nowrap;
	}
	p.rl {
		writing-mode: vertical-rl;
		line-height: 2;
	}
	@media (max-width: 991px) {
		h3.rl {
			writing-mode: horizontal-tb;
			padding-left: 0;
			padding-bottom: 0;
		}
		h3.rl span {
			margin-left: 0;
			margin-bottom: 10px;
		}
		h3.rl::before {
			display: none;
		}
	}
	@media (max-width: 767px) {
		h2.title_center {
			line-height: 1.5;
		}
		h2.title_center span.en {
			margin-bottom: 1rem;
		}
	}

	/*-----------------------------------------------------------------------------
		レイアウトコンテナ（旧 .container 系の実効値を固定化）
	-----------------------------------------------------------------------------*/
	.container, .container-md, .container-lg, .container-fluid {
		width: 100%;
		margin-inline: auto;
		padding-inline: 20px;
	}
	.container {
		max-width: 1340px;
	}
	.container-md {
		max-width: 1500px;
	}
	.container-lg {
		max-width: 1640px;
	}
	/*-----------------------------------------------------------------------------
		ボタン
	-----------------------------------------------------------------------------*/
	.btn_c_warp {
		display: flex;
		justify-content: center;
	}
	@keyframes scrollX {
		0% {
			transform: scale(0, 1);
			transform-origin: 0 0;
		}
		50% {
			transform: scale(1, 1);
			transform-origin: 0 0;
		}
		51% {
			transform: scale(1, 1);
			transform-origin: 100% 0;
		}
		100% {
			transform: scale(0, 1);
			transform-origin: 100% 0;
		}
	}
	a.btn {
		display: flex;
		justify-content: center;
		align-items: center;
		text-align: center;
		font-size: clamp(0.875rem, 0.83rem + 0.23vw, 1rem);
		color: #1a1a1a;
		border: 1px solid #dedede;
		width: 320px;
		max-width: 100%;
		height: 48px;
		position: relative;
	}
	a.btn:hover {
		border: 1px solid #1a1a1a;
	}
	a.btn::before {
		content: '';
		display: block;
		width: 32px;
		height: 1px;
		background: #dedede;
		position: absolute;
		right: -12px;
		top: 50%;
	}
	a.btn::after {
		content: '';
		display: block;
		width: 32px;
		height: 1px;
		background: #1a1a1a;
		position: absolute;
		right: -12px;
		top: 50%;
		z-index: +1;
		transform: scale(0, 1);
	}
	a.btn:hover::after {
		animation: scrollX 1.5s infinite;
	}
	.color_white a.btn {
		color: #fff;
		border-color: #fff;
	}
	.color_white a.btn:hover {
		border: 1px solid #dedede;
		background: rgba(240, 240, 240, 0.2);
	}
	.color_white a.btn::before {
		background: #fff;
	}
	.color_white a.btn::after {
		background: #dedede;
	}
	@media (max-width: 767px) {
		a.btn::before {
			width: 30px;
			right: -8px;
		}
		a.btn::after {
			width: 30px;
			right: -8px;
		}
	}

	/*-----------------------------------------------------------------------------
		Misc
	-----------------------------------------------------------------------------*/
	.mb {
		margin-bottom: clamp(1.25rem, 0.886rem + 1.82vw, 2.25rem);
	}
	.text-center, .text-left-center {
		text-align: center;
	}
	.color_white {
		color: #fff !important;
	}
	.lh2 {
		line-height: 2;
	}
	.sr-only {
		position: absolute;
		width: 1px;
		height: 1px;
		padding: 0;
		margin: -1px;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
		white-space: nowrap;
		border: 0;
	}
	.sec {
		padding-top: 130px;
		padding-bottom: 130px;
	}
	#policy {
		padding-bottom: 0;
	}
	.about_intro_text {
		font-size: calc(16 * var(--u));
		line-height: calc(48 * var(--u));
		letter-spacing: 0.025em;
	}
	@media (max-width: 991px) {
		.sec {
			padding-top: 80px;
			padding-bottom: 80px;
		}
		.about_intro_text {
			font-size: 14px;
			line-height: 2.4;
		}
	}
	@media (max-width: 767px) {
		.sec {
			padding-top: 60px;
			padding-bottom: 60px;
		}
		.text-left-center {
			text-align: left;
		}
	}

	/*-----------------------------------------------------------------------------
		フッター予約
	-----------------------------------------------------------------------------*/
	#footer_reserve {
		position: relative;
		background: url(../images/common/footer_reserve_bg.jpg) center center/cover no-repeat;
	}
	#footer_reserve::before {
		content: '';
		display: block;
		width: 100%;
		height: 100%;
		position: absolute;
		left: 0;
		top: 0;
		background: linear-gradient(100deg, rgba(145, 145, 145, 0.9) 0%, rgba(145, 145, 145, .98) 95%);
	}
	#footer_reserve > .container {
		position: relative;
		z-index: +1;
	}
	.footer_reserve_tel {
		text-align: center;
		line-height: 2;
	}
	.footer_reserve_tel h4 {
		font-size: var(--fsize_m);
	}
	.footer_reserve_tel a {
		color: #fff;
		font-size: clamp(1.5rem, 1.318rem + 0.91vw, 2rem);
	}
	.footer_reserve_tel small {
		display: block;
	}
	@media (max-width: 767px) {
		#footer_reserve a.btn {
			width: 100%;
			margin-bottom: 10px;
		}
	}

	/*-----------------------------------------------------------------------------
		フッター
	-----------------------------------------------------------------------------*/
	.f_info .container {
		margin-top: 70px;
		margin-bottom: 70px;
		font-size: clamp(0.813rem, 0.79rem + 0.11vw, 0.875rem);
	}
	.f_info_row {
		display: flex;
	}
	.f_info_left {
		width: 42%;
		display: flex;
		align-items: center;
		border-right: 1px solid #ccc;
	}
	.f_info_content {
		padding: 30px 10% 15px;
	}
	.f_info_content .sns_link {
		margin: 0;
	}
	.f_info_content .sns_link li {
		display: inline-block;
		margin-right: .75em;
	}
	.f_info_content ul.sns_link li img {
		transition: all .3s ease;
		opacity: .5;
	}
	.f_info_content ul.sns_link li a:hover img {
		opacity: 1;
	}
	.f_info_right {
		width: 58%;
		display: flex;
		justify-content: space-between;
		align-items: flex-start;
		padding: 30px 0 15px;
	}
	.f_info_right nav {
		padding-left: 12%;
		display: flex;
		column-gap: calc(40 * var(--u));
	}
	.f_info_right nav > ul {
		margin-right: 40%;
		margin-bottom: 0;
	}
	.f_info_right nav ul li a {
		white-space: nowrap;
		display: inline-block;
		padding-bottom: .5em;
	}
	.f_info_right nav ul li a span {
		display: inline-block;
		position: relative;
	}
	.f_info_right nav ul li a span::before {
		content: '';
		display: block;
		width: 0;
		height: 1px;
		position: absolute;
		bottom: 0;
		left: 0;
		background: #555;
		transition: 0.5s ease all;
	}
	.f_info_right nav ul li a:hover span::before {
		width: 100%;
	}
	.f_info_right nav > ul li ul {
		margin: 0;
	}
	.f_info_right nav > ul li ul li a {
		padding-left: 1.2rem;
		position: relative;
	}
	.f_info_right nav > ul li ul li a::before {
		content: '';
		display: block;
		width: 12px;
		height: 1px;
		background: #dedede;
		position: absolute;
		left: 0;
		/* リンク行高 30u の文字中心に合わせる（従来の top:1em は僅かに上寄り） */
		top: calc(30 * var(--u) / 2);
		transform: translateY(-50%);
	}
	.bogo-language-switcher-wrapper.footer_switcher {
		position: relative;
		height: auto;
		display: flex;
		justify-content: flex-end;
		margin-top: -4px;
	}
	.footer_switcher .bogo-language-switcher {
		margin: 0;
		display: flex;
	}
	.bogo-language-switcher-wrapper.footer_switcher .bogo-language-switcher a,
	.bogo-language-switcher-wrapper.footer_switcher .bogo-language-switcher span {
		color: var(--default);
		display: block;
		position: relative;
		font-family: var(--font-en_1);
		transition: 0.3s ease-in-out;
		font-size: 15px;
	}
	.bogo-language-switcher-wrapper.footer_switcher ul.bogo-language-switcher li:first-child a::before,
	.bogo-language-switcher-wrapper.footer_switcher ul.bogo-language-switcher li:first-child .bogo-language-name > span::before {
		background: var(--default);
	}
	.bogo-language-switcher-wrapper.footer_switcher .bogo-language-switcher a.current:after {
		content: "";
		display: block;
		width: 10px;
		height: 1px;
		position: absolute;
		left: 1px;
		bottom: 2px;
		transition: 0.3s ease-in-out;
		background: var(--default);
	}
	.bogo-language-switcher-wrapper.footer_switcher .bogo-language-switcher li.is-disabled .disabled-lang {
		color: var(--default);
		opacity: 0.35;
	}
	.copyright {
		font-size: 12px;
	}
	.copyright .container {
		position: relative;
		max-width: 1500px;
		padding: 1.5rem 20px;
	}
	.copyright .container::before {
		content: '';
		display: block;
		width: calc(100% - 30px);
		height: 1px;
		background: #ccc;
		position: absolute;
		left: 15px;
		top: 0;
	}
	.copyright .container p {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 1rem;
		margin: 0;
		padding-left: 15px;
	}
	.copyright .copyright_terms {
		margin-left: auto;
		font-family: var(--font-jp);
		text-decoration: underline;
		text-underline-offset: 0.2em;
	}
	@media (max-width: 1300px) {
		.f_info_left {
			width: 460px;
		}
		.f_info_right {
			width: calc(100% - 460px);
		}
		.f_info_right nav {
			padding-left: 8%;
		}
		.f_info_right nav > ul {
			margin-right: 20%;
		}
	}
	@media (max-width: 991px) {
		.f_info_right {
			display: none;
		}
		.f_info_row {
			justify-content: center;
		}
		.f_info_left {
			display: block;
			width: 100%;
			border-right: none;
			justify-content: center;
			text-align: center;
		}
		.f_info_content {
			padding: 30px 15px 0;
		}
		.f_info_content h4 {
			display: none;
		}
	}
	@media (max-width: 767px) {
		.f_info .container {
			margin-top: 50px;
			margin-bottom: 50px;
		}
	}

	/*-----------------------------------------------------------------------------
		following_banner
	-----------------------------------------------------------------------------*/
	.following_banner {
		position: fixed;
		right: 0;
		bottom: 20%;
		z-index: 88;
		transition: 0.3s ease all;
	}
	.following_banner.is_hidden {
		right: -100px;
	}
	.following_banner ul {
		margin: 0;
	}
	.following_banner ul li a {
		display: flex;
		justify-content: center;
		align-items: center;
		width: 64px;
		height: 120px;
		color: #fff;
		font-size: 14px;
		font-weight: 600;
		white-space: nowrap;
		writing-mode: vertical-rl;
		font-feature-settings: initial;
		position: relative;
		background: rgba(26, 25, 24, 0.7);
		line-height: 110%;
		letter-spacing: .1em;
	}
	.following_banner ul li:first-child a {
		background: rgba(78, 78, 136, 0.7);
	}
	.following_banner ul li a::before {
		content: '';
		display: block;
		width: 0;
		height: 100%;
		position: absolute;
		right: 0;
		top: 0;
		background: inherit;
		z-index: -1;
		transition: 0.2s ease all;
	}
	.following_banner ul li a:hover::before {
		width: 100%;
	}
	@media (max-width: 767px) {
		.following_banner {
			left: 0;
			bottom: 0;
			width: 100%;
		}
		.following_banner.is_hidden {
			bottom: -100px;
		}
		.following_banner ul {
			display: flex;
			width: 100%;
		}
		.following_banner ul li {
			width: 50%;
		}
		.following_banner ul li a {
			width: 100%;
			height: 50px;
			writing-mode: horizontal-tb;
		}
	}

	/**********************************************
		トップページ オープニング（旧 header.css）
	********************************************* */
	body.top-opening {
		overflow: hidden;
	}
	#top-opening {
		position: fixed;
		inset: 0;
		width: 100%;
		height: 100vh;
		height: 100svh;
		background: #fff;
		z-index: 10000;
		pointer-events: none;
		opacity: 1;
		transition: opacity 1.5s ease-out;
	}
	#top-opening.is_finish {
		opacity: 0;
	}

	/**********************************************
		トップページメインビジュアル
	********************************************* */
	#visual {
		width: 100%;
		height: 100vh;
		height: 100svh;
		position: relative;
		left: 0;
		top: 0;
		z-index: 1;
		background: url(../images/top/slide01.jpg) center center/cover no-repeat;
	}
	#visual:before {
		content: '';
		display: block;
		width: 100%;
		height: 100%;
		position: absolute;
		left: 0;
		top: 0;
		background: rgba(0, 0, 0, .2);
		z-index: 1;
	}

	/* オープニングとメインビジュアルのロゴ・コピー表示位置を完全一致させる */
	#top-opening .opening_logo,
	#visual .mv_inner {
		text-align: center;
		width: 100%;
		height: 100%;
		position: absolute;
		left: 0;
		top: 0;
		z-index: 11000;
		display: flex;
		justify-content: center;
		align-items: center;
		padding-top: 3rem;
	}
	#top-opening .opening_logo > h1,
	#visual .mv_inner h1 {
		display: flex;
		flex-flow: column;
		justify-content: center;
		align-items: center;
		margin: 0;
		transform: translateY(-2.5rem);
	}
	#top-opening .opening_logo img,
	#visual .mv_inner img {
		display: block;
		width: 100%;
		max-width: 90px;
		height: auto;
	}
	#top-opening .opening_logo .top-opening-copy,
	#visual .mv_inner .mv_copy {
		font-weight: 600;
		font-size: clamp(1rem, 0.909rem + 0.45vw, 1.25rem);
		margin: 3rem 0 0;
		line-height: 2;
		letter-spacing: 0.5rem;
		white-space: nowrap;
		box-sizing: border-box;
		max-width: 100%;
	}
	#top-opening .opening_logo .top-opening-copy {
		color: #333;
	}
	#visual .mv_inner .mv_copy {
		color: #fff;
	}

	/* タブレット幅（≤1023px）でコピーが画面端ではみ出さないよう字間と余白を調整する */
	@media (max-width: 1023px) {
		#top-opening .opening_logo,
		#visual .mv_inner {
			padding-top: 0;
		}
		#top-opening .opening_logo > h1,
		#visual .mv_inner h1 {
			transform: translateY(-2.5rem);
		}
		#top-opening .opening_logo img,
		#visual .mv_inner img {
			width: 72px;
		}
		#top-opening .opening_logo .top-opening-copy,
		#visual .mv_inner .mv_copy {
			font-size: 15px;
			letter-spacing: 0.22em;
			margin: 2.25rem 0 0;
			padding-inline: 24px;
			white-space: normal;
		}
	}

	@media (max-width: 767px) {
		#top-opening .opening_logo img,
		#visual .mv_inner img {
			width: 60px;
		}
		#top-opening .opening_logo .top-opening-copy,
		#visual .mv_inner .mv_copy {
			letter-spacing: 0.18em;
			margin: 2rem 0 0;
			padding-inline: 20px;
		}
	}

	/**********************************************
		下層ページ ローディング
	********************************************* */
	#page-loading {
		position: fixed;
		inset: 0;
		width: 100%;
		overflow: hidden;
		height: 100vh;
		background: #fff;
		z-index: 99999;
		opacity: 1;
		pointer-events: none;
		transition: opacity 1s ease;
	}
	#page-loading.is_finish {
		opacity: 0;
	}

	/**********************************************
		下層ページメインビジュアル
	********************************************* */
	#kv {
		width: 100%;
		height: calc(536 * var(--u));
		min-height: 420px;
		position: relative;
		left: 0;
		top: 0;
		z-index: 1;
		background: url(../images/visual/kv_default.jpg) center center/cover no-repeat;
	}
	#kv:before {
		content: '';
		display: block;
		width: 100%;
		height: 100%;
		position: absolute;
		left: 0;
		top: 0;
		background: rgba(0, 0, 0, .3);
		z-index: 1;
	}
	#kv .kv_inner {
		width: 100%;
		height: 100%;
		position: absolute;
		left: 0;
		top: 0;
		display: flex;
		justify-content: center;
		align-items: center;
		text-align: center;
		padding-top: 3rem;
		z-index: +1;
	}
	#kv .kv_inner h1 {
		margin: 0;
		color: #fff;
		letter-spacing: 0.25rem;
		font-size: clamp(1.5rem, 1.227rem + 1.36vw, 2.25rem);
	}
	#kv .kv_inner h1.kv_vertical {
		writing-mode: horizontal-tb;
		text-orientation: mixed;
		width: max-content;
		margin-inline: auto;
		text-align: left;
		font-size: calc(22 * var(--u));
		letter-spacing: 0.22em;
		line-height: calc(48 * var(--u));
		white-space: nowrap;
		font-weight: 500;
	}
	@media (max-width: 991px) {
		#kv {
			height: 50vh;
			min-height: 340px;
		}
		#kv .kv_inner h1.kv_vertical {
			font-size: 16px;
			line-height: 2.2;
		}
	}
	@media (max-width: 767px) {
		#kv .kv_inner {
			padding-top: 2rem;
		}
		#kv .kv_inner h1.kv_vertical {
			font-size: 14px;
			letter-spacing: 0.14em;
			line-height: 2.2;
		}
	}
	@media (min-width: 992px) and (max-width: 1199px) {
		#kv.about_kv {
			min-height: calc(620 * var(--u));
		}
		#kv.about_kv .kv_inner {
			padding-top: calc(84 * var(--u));
		}
		#kv.about_kv .kv_inner h1.kv_vertical {
			letter-spacing: 0.14em;
		}
	}
	@media (min-width: 1200px) {
		#kv.about_kv .kv_inner {
			padding-top: calc(96 * var(--u));
		}
		#kv.about_kv .kv_inner h1.kv_vertical {
			letter-spacing: 0.18em;
		}
	}
	#kv.about_kv .num_em {
		font-weight: 700;
		font-size: 1.0em;
		display: inline-block;
		vertical-align: baseline;
		-webkit-text-stroke: 0.35px currentColor;
		text-shadow: 0 0 1px rgba(255, 255, 255, 0.5);
	}

	/**********************************************
		パンくずリスト
	********************************************* */
	.breadcrumb-wrap {
		position: absolute;
		bottom: 0;
		left: 0;
		width: 100%;
		z-index: +2;
		color: #fff;
		font-size: clamp(0.875rem, 0.8rem + 0.3vw, 1.063rem);
		letter-spacing: 0.04em;
		padding-bottom: 1em;
		padding-left: max(3%, 20px);
		padding-right: max(3%, 20px);
		font-weight: 600;
		text-overflow: ellipsis;
		overflow: hidden;
		white-space: nowrap;
	}
	.breadcrumb-wrap a {
		color: #fff;
	}
	.breadcrumb-wrap a:hover {
		color: #ADADAD;
	}

	/**********************************************
		スクロールダウン
	********************************************* */
	.scroll_down {
		position: absolute;
		left: 3%;
		bottom: 120px;
		writing-mode: vertical-rl;
		z-index: 100;
		color: #fff;
		font-size: clamp(0.75rem, 0.73rem + 0.1vw, 0.813rem);
	}
	.scroll_down::before {
		animation: scrollY 2s infinite;
		background-color: #575757;
		bottom: -120px;
		content: "";
		height: 100px;
		left: 1px;
		margin: auto;
		position: absolute;
		right: 0;
		width: 1px;
		z-index: 102;
		opacity: 1;
	}
	.scroll_down::after {
		background-color: #fff;
		bottom: -120px;
		content: "";
		height: 100px;
		left: 1px;
		margin: auto;
		position: absolute;
		right: 0;
		width: 1px;
		z-index: 101;
		opacity: .5;
	}
	@keyframes scrollY {
		0% {
			transform: scale(1, 0);
			transform-origin: 0 0;
		}
		50% {
			transform: scale(1, 1);
			transform-origin: 0 0;
		}
		51% {
			transform: scale(1, 1);
			transform-origin: 0 100%;
		}
		100% {
			transform: scale(1, 0);
			transform-origin: 0 100%;
		}
	}
	@media (max-width: 767px) {
		#visual .scroll_down {
			bottom: 96px;
		}
		#visual .scroll_down::before,
		#visual .scroll_down::after {
			bottom: -96px;
			height: 80px;
			opacity: 1;
		}
	}
	@media (max-width: 380px), (max-width: 767px) and (max-height: 640px) {
		#top-opening .opening_logo > h1,
		#visual .mv_inner h1 {
			transform: translateY(-2rem);
		}
		#top-opening .opening_logo .top-opening-copy,
		#visual .mv_inner .mv_copy {
			font-size: 14px;
			letter-spacing: 0.16em;
			padding-inline: 16px;
		}
		#visual .scroll_down {
			bottom: 64px;
		}
		#visual .scroll_down::before,
		#visual .scroll_down::after {
			bottom: -64px;
			height: 48px;
		}
	}

	/**********************************************
		ヘッダーナビ
	********************************************* */
	#header {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 100%;
		padding: 32px 0;
		position: absolute;
		top: 0;
		left: 0;
		z-index: 100;
	}
	.header_nav {
		position: relative;
		transition: transform 0.3s ease;
		z-index: +1;
	}
	.header_nav ul {
		display: flex;
		justify-content: center;
		margin: 0;
	}
	.header_nav ul li a {
		display: block;
		color: #fff;
		font-size: clamp(0.875rem, 0.274rem + 0.97vw, 1.063rem);
		font-weight: 500;
		font-family: var(--font-en_1);
		padding: 16px clamp(0.625rem, 0.045rem + 0.71vw, 0.938rem) 15px;
		line-height: 1.5;
		position: relative;
	}
	.header_nav ul li a::before {
		content: '';
		display: block;
		position: absolute;
		bottom: 5px;
		left: 0;
		right: 0;
		background: #fff;
		width: 0;
		height: 1px;
		margin-right: auto;
		margin-left: auto;
		transition: 0.2s ease all;
	}
	.header_nav ul li a:hover::before {
		width: 16px;
	}
	@media (max-width: 991px) {
		.header_nav {
			display: none;
		}
	}

	/**********************************************
		ヘッダーロゴ
	********************************************* */
	.header_logo {
		position: absolute;
		left: 3%;
		top: 30px;
		width: 2.69rem;
		z-index: +2;
		transition: transform 0.3s ease;
	}
	@media (max-width: 767px) {
		.header_logo {
			left: 15px;
			top: 10px;
			width: 2.6rem;
		}
	}

	/**********************************************
		スクロール時のアニメーション
	********************************************* */
	.header_contents.hide .header_nav {
		transform: translateY(-200px);
	}
	.header_contents.hide .header_logo {
		transform: translateY(-200px);
	}

	/**********************************************
		トグルボタン
	********************************************* */
	#nav_toggle {
		position: fixed;
		top: 10px;
		right: 10px;
		width: 80px;
		height: 100px;
		padding: 50px 34px;
		cursor: pointer;
		z-index: 29999;
		opacity: 1;
		transition: 0.2s ease all;
	}
	#nav_toggle span {
		display: block;
		width: 32px;
		height: 1px;
		position: absolute;
		background: #fff;
		transition: 0.3s ease-in-out;
		left: 24px;
	}
	#nav_toggle span:nth-child(1) {
		top: 41px;
	}
	#nav_toggle span:nth-child(2) {
		top: 49px;
	}
	#nav_toggle span:nth-child(3) {
		top: 57px;
		width: 20px;
	}
	body.open #nav_toggle span {
		background: var(--default);
	}
	body.open #nav_toggle span:nth-child(1) {
		top: 49px;
		transform: rotate(45deg);
	}
	body.open #nav_toggle span:nth-child(2) {
		opacity: 0;
	}
	body.open #nav_toggle span:nth-child(3) {
		top: 49px;
		width: 32px;
		transform: rotate(-45deg);
	}
	body:not(.open) .is_scroll #nav_toggle span {
		background: #ADADAD;
	}
	@media (max-width: 767px) {
		#nav_toggle {
			top: 15px;
			right: 15px;
			width: 60px;
			height: 60px;
			padding: 10px 14px;
		}
		#nav_toggle span:nth-child(1) {
			top: 16px;
		}
		#nav_toggle span:nth-child(2) {
			top: 24px;
		}
		#nav_toggle span:nth-child(3) {
			top: 32px;
		}
		body.open #nav_toggle span:nth-child(1) {
			top: 24px;
			transform: rotate(45deg);
		}
		body.open #nav_toggle span:nth-child(3) {
			top: 24px;
			width: 32px;
			transform: rotate(-45deg);
		}
	}

	/**********************************************
		ハンバーガーメニュー
	********************************************* */
	#l_nav::-webkit-scrollbar {
		display: none;
	}
	#l_nav {
		position: fixed;
		top: 0;
		left: 0;
		width: 100%;
		height: 100dvh;
		background: #fbfbfb;
		z-index: 20000;
		opacity: 0;
		visibility: hidden;
		transition:
			opacity 0.5s ease,
			visibility 0.5s ease;
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;
		scrollbar-width: none;
		display: flex;
	}
	body.open #l_nav {
		opacity: 1;
		visibility: visible;
	}
	.l_nav_inner {
		opacity: 0;
		transform: translateY(20px);
		transition:
			opacity 0.5s ease 0.2s,
			transform 0.5s ease 0.2s;
	}
	body.open .l_nav_inner {
		opacity: 1;
		transform: translateY(0);
	}
	.l_nav_left {
		width: 38%;
		position: relative;
	}
	.l_nav_left::before {
		content: '';
		display: block;
		width: 38%;
		height: 100%;
		background: url(../images/common/l_nav_bg.jpg) center top/cover no-repeat;
		position: fixed;
	}
	.l_nav_right {
		width: 62%;
		padding: 60px 4% 60px 4%;
		display: flex;
		flex-direction: column;
		line-height: 2;
	}
	.l_nav_right .l_nav_logo {
		margin-bottom: 40px;
	}
	.l_nav_right nav {
		display: flex;
		justify-content: center;
		padding-bottom: 50px;
		border-bottom: 1px solid #dedede;
	}
	.l_nav_right nav > ul {
		margin: 0 8%;
	}
	.l_nav_right nav > ul a {
		color: var(--default);
		font-size: clamp(0.938rem, 0.869rem + 0.34vw, 1rem);
		font-weight: 400;
		display: block;
		padding: 6px 0;
		white-space: nowrap;
		transition: all .25s ease-out;
		position: relative;
	}
	.l_nav_right nav > ul a span {
		display: inline-block;
		position: relative;
	}
	.l_nav_right nav > ul a span::before {
		content: '';
		display: block;
		width: 0;
		height: 1px;
		position: absolute;
		bottom: 0;
		left: 0;
		background: #555;
		transition: 0.5s ease all;
	}
	.l_nav_right nav > ul a:hover span::before {
		width: 100%;
	}
	.l_nav_right nav > ul li ul li a {
		padding-left: 1.2rem;
		font-size: clamp(0.813rem, 0.744rem + 0.34vw, 1rem);
		position: relative;
	}
	.l_nav_right nav > ul li ul li a::before {
		content: '';
		display: block;
		width: 12px;
		height: 1px;
		background: #dedede;
		position: absolute;
		left: 0;
		top: 1.4em;
	}
	.l_nav_info {
		padding: 3rem 4rem;
		font-size: clamp(0.813rem, 0.767rem + 0.23vw, 0.938rem);
		display: flex;
		justify-content: center;
	}
	.l_nav_info_container {
		max-width: 680px;
	}
	.l_nav_info p {
		margin-bottom: 0;
	}
	.l_nav_info p.tel {
		font-size: clamp(1.125rem, 0.989rem + 0.68vw, 1.5rem);
		font-weight: 500;
	}
	.l_nav_info ul.sns_link {
		margin-top: .5rem;
	}
	.l_nav_info ul.sns_link li {
		display: inline-block;
		margin-right: .75em;
	}
	.l_nav_info ul.sns_link li img {
		transition: all .3s ease;
		opacity: .5;
	}
	.l_nav_info ul.sns_link li a:hover img {
		opacity: 1;
	}
	.l_nav_info a.btn {
		width: 100%;
	}
	@media (max-width: 991px) {
		.l_nav_left {
			width: 0;
			display: none;
		}
		.l_nav_right {
			width: 100%;
			padding-top: 15%;
		}
	}
	@media (max-width: 1023px) {
		.l_nav_info .l_nav_grid {
			text-align: center;
		}
	}
	@media (max-width: 767px) {
		.l_nav_right {
			padding-top: 80px;
		}
		.l_nav_right .l_nav_logo {
			margin-bottom: 1.5rem;
		}
		.l_nav_right nav {
			display: block;
			padding-bottom: 30px;
		}
		.l_nav_right nav > ul a {
			font-size: 17px;
		}
		.l_nav_right nav > ul a span::before {
			display: none;
		}
		.l_nav_right nav > ul > li.has-child > ul {
			display: none;
			padding-bottom: 5px;
		}
		.l_nav_right nav > ul > li.has-child > a {
			position: relative;
			padding-right: 30px;
		}
		.l_nav_right nav > ul > li.has-child > a::after,
		.l_nav_right nav > ul > li.has-child > a::before {
			content: '';
			position: absolute;
			right: 5px;
			top: 50%;
			width: 14px;
			height: 1px;
			background: #555;
			transition: transform .3s ease;
		}
		/* 縦線 */
		.l_nav_right nav > ul > li.has-child > a::after {
			transform: rotate(90deg);
		}
		/* 開いたら縦線を横にして「−」にする */
		.l_nav_right nav > ul > li.has-child.is-open > a::after {
			transform: rotate(0);
		}
		.l_nav_info {
			padding: 30px 20px;
			margin-top: 30px;
			font-size: clamp(0.813rem, 0.767rem + 0.23vw, 0.938rem);
		}
		.l_nav_info p.tel {
			font-size: 30px;
		}
	}

	/**********************************************
		言語スイッチャー
	********************************************* */
	.bogo-language-switcher-wrapper {
		line-height: 2;
	}
	.bogo-language-switcher-wrapper:not(.footer_switcher) {
		position: fixed;
		right: 90px;
		top: 0;
		width: 80px;
		height: 120px;
		display: flex;
		justify-content: center;
		align-items: center;
		z-index: 29999;
	}
	.bogo-language-switcher-wrapper:not(.footer_switcher) .bogo-language-switcher {
		margin: 0;
		display: flex;
		justify-content: center;
		align-items: center;
	}
	.bogo-language-switcher-wrapper:not(.footer_switcher) .bogo-language-switcher a,
	.bogo-language-switcher-wrapper:not(.footer_switcher) .bogo-language-switcher span {
		color: #fff;
		display: block;
		position: relative;
		font-family: var(--font-en_1);
		transition: 0.3s ease-in-out;
	}
	.bogo-language-switcher-wrapper:not(.footer_switcher) .bogo-language-switcher a.current:after {
		content: "";
		display: block;
		width: 10px;
		height: 1px;
		background: #fff;
		position: absolute;
		left: 1px;
		bottom: 2px;
		transition: 0.3s ease-in-out;
	}
	.bogo-language-switcher-wrapper .bogo-language-switcher .first .bogo-language-name > a,
	.bogo-language-switcher-wrapper .bogo-language-switcher .first .bogo-language-name > span {
		padding-right: 12px;
	}
	.bogo-language-switcher-wrapper .bogo-language-switcher .last .bogo-language-name > a,
	.bogo-language-switcher-wrapper .bogo-language-switcher .last .bogo-language-name > span {
		padding-left: 12px;
	}
	.lang-en .bogo-language-switcher-wrapper .bogo-language-switcher .last .bogo-language-name > a.current::after {
		left: 13px;
	}
	.bogo-language-switcher-wrapper ul.bogo-language-switcher li:first-child .bogo-language-name > a::before,
	.bogo-language-switcher-wrapper ul.bogo-language-switcher li:first-child .bogo-language-name > span::before {
		content: "";
		display: block;
		width: 1px;
		height: calc(100% - 20px);
		background: #757474;
		position: absolute;
		right: 0px;
		top: 10px;
		transition: 0.3s ease-in-out;
	}
	.bogo-language-switcher a.current {
		pointer-events: none;
	}
	.bogo-language-switcher .last a:not(.current) {
		color: #ADADAD;
		opacity: .9;
	}
	.bogo-language-switcher a:not(.current):hover {
		opacity: .8 !important;
	}
	.bogo-language-switcher li.is-disabled {
		cursor: not-allowed;
	}
	.bogo-language-switcher li.is-disabled .disabled-lang,
	.bogo-language-switcher .disabled-lang {
		pointer-events: none;
		user-select: none;
	}
	.bogo-language-switcher-wrapper:not(.footer_switcher) .bogo-language-switcher li.is-disabled .disabled-lang {
		color: rgba(255, 255, 255, 0.35);
	}
	body.open .bogo-language-switcher-wrapper:not(.footer_switcher) .bogo-language-switcher a.current {
		color: #ADADAD;
	}
	body.open .bogo-language-switcher-wrapper:not(.footer_switcher) .bogo-language-switcher a.current:after {
		background: #ADADAD;
	}
	body.open .bogo-language-switcher-wrapper:not(.footer_switcher) ul.bogo-language-switcher li:first-child a::before,
	body.open .bogo-language-switcher-wrapper:not(.footer_switcher) ul.bogo-language-switcher li:first-child .bogo-language-name > span::before {
		background: #ADADAD;
	}
	body.open .bogo-language-switcher-wrapper:not(.footer_switcher) .bogo-language-switcher li.is-disabled .disabled-lang {
		color: rgba(173, 173, 173, 0.4);
	}
	.is_scroll .bogo-language-switcher-wrapper:not(.footer_switcher) ul.bogo-language-switcher a.current {
		color: #ADADAD;
	}
	.is_scroll .bogo-language-switcher-wrapper:not(.footer_switcher) ul.bogo-language-switcher li:first-child a::before,
	.is_scroll .bogo-language-switcher-wrapper:not(.footer_switcher) ul.bogo-language-switcher li:first-child .bogo-language-name > span::before {
		background: #ADADAD;
	}
	.is_scroll .bogo-language-switcher-wrapper:not(.footer_switcher) .bogo-language-switcher a.current:after {
		background: #ADADAD;
	}
	.is_scroll .bogo-language-switcher-wrapper:not(.footer_switcher) .bogo-language-switcher li.is-disabled .disabled-lang {
		color: rgba(173, 173, 173, 0.4);
	}
	@media (max-width: 767px) {
		.bogo-language-switcher-wrapper:not(.footer_switcher) {
			right: 68px;
			top: 26px;
			width: 80px;
			height: auto;
			display: flex;
			justify-content: center;
			align-items: center;
			z-index: 29999;
		}
	}

	/**********************************************
		アニメーション（旧 contents.css）
	********************************************* */
	.anime_fade {
		opacity: 0;
	}
	.anime_fade.isPlay {
		animation: textFade 1.2s cubic-bezier(.77, 0, .175, 1) forwards;
		animation-delay: var(--anime-delay, 0s);
	}
	.anime_fade2 {
		opacity: 0;
	}
	.anime_fade2.isPlay {
		animation: imgFade 1.2s cubic-bezier(.77, 0, .175, 1) forwards;
		animation-delay: var(--anime-delay, 0s);
	}
	@keyframes textFade {
		0% {
			opacity: 0;
			filter: blur(10px);
			transform: translateY(10px);
		}
		100% {
			opacity: 1;
			filter: blur(0);
			transform: translateY(0);
		}
	}
	@keyframes imgFade {
		0% {
			opacity: 0;
			filter: blur(10px);
		}
		100% {
			opacity: 1;
			filter: blur(0);
		}
	}

	/* 1024px以下の画面向けアニメーション軽量化（GPU負荷軽減・スクロールカクつき防止） */
	@media (max-width: 1024px) {
		.anime_fade.isPlay {
			animation: textFadeMobile 0.7s cubic-bezier(.25, 1, .5, 1) forwards;
			animation-delay: var(--anime-delay, 0s);
		}
		.anime_fade2.isPlay {
			animation: imgFadeMobile 0.7s cubic-bezier(.25, 1, .5, 1) forwards;
			animation-delay: var(--anime-delay, 0s);
		}
		@keyframes textFadeMobile {
			0% {
				opacity: 0;
				transform: translateY(14px);
			}
			100% {
				opacity: 1;
				transform: translateY(0);
			}
		}
		@keyframes imgFadeMobile {
			0% {
				opacity: 0;
				transform: scale(0.98);
			}
			100% {
				opacity: 1;
				transform: scale(1);
			}
		}
	}

	/* 視覚効果の低減設定対応 */
	@media (prefers-reduced-motion: reduce) {
		.anime_fade,
		.anime_fade2 {
			opacity: 1 !important;
			animation: none !important;
			filter: none !important;
			transform: none !important;
		}
	}

	/**********************************************
		TYPOGRAPHY SYSTEM (aligned with ref.html)
	********************************************* */
	/* Section Headings & Eyebrows */
	.sec h2.title_center {
		font-size: calc(36 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.03em;
		margin-bottom: calc(40 * var(--u));
	}
	.sec h2.title_center span.en {
		font-size: calc(14 * var(--u));
		line-height: calc(22 * var(--u));
		letter-spacing: 0.06em;
		color: #d1d1d1;
		margin-bottom: calc(20 * var(--u));
		text-transform: uppercase;
	}
	#top_experience h2.title_center span.en {
		color: var(--ways-eyebrow);
	}
	@media (max-width: 991px) {
		.sec h2.title_center {
			font-size: 29px;
			line-height: 1.8;
			letter-spacing: 0.04em;
			margin-bottom: 2rem;
		}
		.sec h2.title_center span.en {
			font-size: 12px;
			line-height: 20px;
			margin-bottom: 1rem;
		}
	}

	/* Vertical Headings (aligned with ref.html) */
	.sec h3.rl {
		font-size: calc(24 * var(--u));
		line-height: 1.2;
		letter-spacing: 0.08em;
	}
	.sec h3.rl span.en {
		font-size: calc(13 * var(--u));
		letter-spacing: 0.03em;
		margin-left: calc(16 * var(--u));
	}
	@media (max-width: 991px) {
		.sec h3.rl {
			font-size: 22px;
			line-height: 1.4;
		}
		.sec h3.rl span.en {
			font-size: 13px;
			margin-left: 0;
		}
	}

	/* Buttons (aligned with ref.html) */
	.sec a.btn {
		position: relative;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		font-size: calc(16 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.05em;
		width: calc(316 * var(--u));
		min-height: calc(45 * var(--u));
		height: auto;
		padding: calc(9 * var(--u)) calc(20 * var(--u));
		border: 1px solid #dedede;
		transition: background 0.22s, color 0.22s, border-color 0.22s;
	}
	.sec a.btn::before {
		content: '';
		display: block;
		width: calc(31 * var(--u));
		height: 1px;
		background: #dedede;
		position: absolute;
		right: calc(-15 * var(--u));
		top: 50%;
	}
	.sec a.btn::after {
		content: '';
		display: block;
		width: calc(31 * var(--u));
		height: 1px;
		background: #1a1a1a;
		position: absolute;
		right: calc(-15 * var(--u));
		top: 50%;
		z-index: +1;
		transform: scale(0, 1);
		transition: transform 0.2s;
	}
	.sec a.btn:hover::after {
		animation: scrollX 1.5s infinite;
	}
	/* .sec a.btn 与 a.btn:hover 同特异度，后者被源码顺序覆盖，故显式恢复 hover 黑边框 */
	.sec a.btn:hover {
		border: 1px solid #1a1a1a;
	}
	.sec.color_white a.btn:hover {
		border: 1px solid #dedede;
		background: rgba(240, 240, 240, 0.2);
	}
	@media (max-width: 991px) {
		.sec a.btn {
			font-size: 14px;
			width: 280px;
			min-height: 46px;
			padding: 9px 22px;
		}
		.sec a.btn::before,
		.sec a.btn::after {
			width: 27px;
			right: -12px;
		}
	}

	/**********************************************
		CTA バナー
	********************************************* */
	.cta_wrap {
		/* CTAを左右対称の余白で中央に配置（旧仕様：右側に12%の余白） */
		padding-inline: 6%;
		margin-top: 90px;
		padding-top: 190px;
		margin-bottom: clamp(3.125rem, 1.989rem + 5.68vw, 6.25rem);
		position: relative;
	}
	.cta_wrap::before {
		content: '';
		display: block;
		width: 1px;
		height: 120px;
		background: #dedede;
		position: absolute;
		left: 50%;
		top: 0;
	}
	.cta_box {
		display: block;
		width: 100%;
		aspect-ratio: 12 / 5;
		position: relative;
		overflow: hidden;
	}
	@media (min-width: 768px) {
		.cta_wrap_three .cta_box {
			aspect-ratio: 4 / 3;
		}
	}
	.cta_box::before {
		content: '';
		display: block;
		width: 100%;
		height: 100%;
		background: rgba(0, 0, 0, .3);
		position: absolute;
		left: 0;
		top: 0;
		transition: .8s ease;
		z-index: +1;
	}
	.cta_box:hover::before {
		background: rgba(0, 0, 0, .4);
	}
	.cta_box figure {
		width: 100%;
		height: 100%;
	}
	.cta_box figure img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
		transition: 1s ease all;
	}
	/* プラン比較の暖簾画像は鹿が上部にあるため表示位置を調整する */
	.cta_box.cta_box_plans figure img,
	.cta_box figure img[src*="top_plans"] {
		object-position: center 28%;
	}
	.cta_box:hover figure img {
		transform: scale(1.06);
	}
	.cta_box .cta_ttl {
		position: absolute;
		left: 7%;
		bottom: 10%;
		color: #fff;
		z-index: +2;
	}
	.cta_box .cta_ttl h3 {
		margin: 0;
	}
	.cta_box .cta_ttl h3 span {
		display: block;
	}
	.cta_box .cta_ttl h3 span.en {
		font-size: var(--fsize_m);
		opacity: .8;
		margin-bottom: 1rem;
	}
	.cta_box .cta_ttl h3 span.ja {
		font-size: clamp(1.25rem, 1.023rem + 1.14vw, 1.875rem);
		padding-right: 1em;
		position: relative;
	}
	.cta_box .cta_ttl h3 span.ja::before {
		content: '';
		display: block;
		position: absolute;
		top: 0;
		bottom: 0;
		right: 0;
		margin-top: auto;
		margin-bottom: auto;
		background: url(../images/common/arrow_right.svg) right center no-repeat;
		background-size: 8px 13px;
		width: 8px;
		height: 13px;
		transition: 0.8s ease all;
	}
	.cta_box:hover .cta_ttl h3 span.ja::before {
		transform: translateX(5px);
	}
	@media (max-width: 991px) {
		.cta_box .cta_ttl h3 span.en {
			font-size: 14px;
			margin-bottom: .75rem;
		}
		.cta_box .cta_ttl h3 span.ja {
			font-size: 20px;
		}
		.cta_wrap {
			padding-inline: 2.5%;
			padding-top: 100px;
		}
		.cta_wrap::before {
			height: 80px;
			top: -40px;
		}
	}
	@media (max-width: 767px) {
		.cta_box .cta_ttl h3 span.en {
			margin-bottom: .75rem;
		}
		.cta_box .cta_ttl h3 span.ja {
			font-size: 18px;
		}
		.cta_wrap {
			padding-inline: 10px;
			padding-top: 80px;
		}
		.cta_wrap::before {
			height: 70px;
			top: -20px;
		}
	}

	/**********************************************
		TOP_ABOUT
	********************************************* */
	#top_about {
		position: relative;
		min-height: calc(612 * var(--u));
		padding: calc(136 * var(--u)) calc(24 * var(--u)) calc(122 * var(--u));
		text-align: center;
	}
	.video-box {
		position: absolute;
		top: 0;
		overflow: hidden;
		width: 100%;
		height: 100%;
		min-height: 500px;
		z-index: -1;
	}
	.video {
		position: absolute;
		top: 50%;
		left: 50%;
		min-width: 100%;
		min-height: 100%;
		transform: translate(-50%, -50%);
		filter: blur(5px);
	}
	#top_about::before {
		content: '';
		display: block;
		width: 100%;
		height: 100%;
		position: absolute;
		left: 0;
		top: 0;
		background: linear-gradient(180deg, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, .9) 20%, rgba(255, 255, 255, .9) 70%, rgba(255, 255, 255, 1) 90%);
	}
	#top_about .title_center {
		margin-bottom: calc(61 * var(--u));
	}
	#top_about p {
		font-size: calc(16 * var(--u));
		line-height: calc(36 * var(--u));
		letter-spacing: 0.025em;
		margin-bottom: calc(76 * var(--u));
	}
	@media (max-width: 1024px) {
		#top_about .video {
			filter: none;
		}
	}
	@media (max-width: 1023px) {
		#top_about {
			min-height: 0;
			padding: 90px 36px 95px;
		}
		#top_about .title_center {
			margin-bottom: 36px;
		}
		#top_about p {
			font-size: 14px;
			line-height: 2.3;
			margin-bottom: 48px;
		}
	}
	#top_parallax {
		height: calc(523 * var(--u));
		background-image: url(../images/top/top_parallax.jpg);
		background-position: center center;
		background-size: cover;
		background-repeat: no-repeat;
	}
	@media (max-width: 1023px) {
		#top_parallax {
			height: 380px;
		}
	}
	@media (max-width: 767px) {
		#top_parallax {
			height: 280px;
		}
	}

	/**********************************************
		TOP_EXPERIENCE
	********************************************* */
	#top_experience {
		position: relative;
		padding-bottom: calc(47 * var(--u));
	}
	#top_experience::before {
		content: '';
		display: block;
		width: 500px;
		height: 775px;
		background: url(../images/top/momiji.png) center center/contain no-repeat;
		position: absolute;
		bottom: -500px;
		right: -20px;
		z-index: -1;
		opacity: .08;
	}
	/* Ways header */
	.ways-header {
		height: calc(304 * var(--u));
		padding-top: calc(122 * var(--u));
		text-align: center;
	}
	/* Way rows grid layout */
	.way-row {
		display: grid;
		grid-template-columns: 41.578947% 58.421053%;
		min-height: calc(899 * var(--u));
		position: relative;
	}
	.way-copy {
		position: relative;
		padding-right: calc(20 * var(--u));
		padding-top: calc(4 * var(--u));
		display: flex;
		flex-direction: column;
		align-items: center;
		min-width: 0;
	}
	.way-row > figure.media {
		height: calc(740 * var(--u));
		margin-top: calc(42 * var(--u));
		align-self: start;
		position: relative;
		overflow: hidden;
		background: #bfbfbf;
	}
	.way-row > figure.media img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}
	/* Even rows: image left, text right */
	.way-row:nth-child(even) {
		grid-template-columns: 58.421053% 41.578947%;
	}
	.way-row:nth-child(even) > figure.media {
		grid-column: 1;
		grid-row: 1;
	}
	.way-row:nth-child(even) > .way-copy {
		grid-column: 2;
		grid-row: 1;
	}
	/* 3つの整い: 内容別の背景色（茶事=抹茶 / SPA=水色 / 懐石=生成り）。
	   帯の継ぎ目はグラデーションで前の帯の色から溶け込ませ、ハードな境界を避ける */
	.way-row[data-way='tea'] {
		background: linear-gradient(180deg, #fff 0%, #e2e8d5 14%);
	}
	.way-row[data-way='spa'] {
		background: linear-gradient(180deg, #e2e8d5 0%, #e1eaee 18%);
	}
	.way-row[data-way='gastronomy'] {
		background: linear-gradient(180deg, #e1eaee 0%, #f4edde 18%, #f4edde 86%, #fff 100%);
	}
	.way-row a.btn {
		border-color: #2c5453;
	}
	/* Vertical heading */
	.vertical-heading {
		display: inline-flex;
		flex-direction: row-reverse;
		gap: calc(16 * var(--u));
		border-left: 1px solid #2c5453;
		padding-left: calc(23 * var(--u));
		align-items: flex-start;
	}
	.vertical-heading .vertical-en {
		writing-mode: vertical-rl;
		font-size: calc(13 * var(--u));
		line-height: 1;
		letter-spacing: 0.03em;
		padding-top: calc(2 * var(--u));
		white-space: nowrap;
	}
	.vertical-title {
		writing-mode: vertical-rl;
		text-orientation: mixed;
		font-size: calc(24 * var(--u));
		line-height: 1.2;
		letter-spacing: 0.08em;
		white-space: nowrap;
		font-weight: 400;
		margin: 0;
	}
	/* Vertical copy */
	.vertical-copy {
		display: flex;
		flex-direction: row-reverse;
		gap: calc(14 * var(--u));
		margin-top: calc(28 * var(--u));
		max-width: 100%;
		align-items: flex-start;
	}
	.vertical-column {
		display: block;
		writing-mode: vertical-rl;
		text-orientation: mixed;
		font-size: calc(16 * var(--u));
		line-height: 1;
		letter-spacing: 0.065em;
		white-space: nowrap;
	}
	.vertical-row {
		display: contents;
	}
	.vertical-space {
		display: none;
	}
	.vertical-lead {
		font-size: calc(20 * var(--u));
		letter-spacing: 0.02em;
		margin-left: calc(10 * var(--u));
		line-height: 1.2;
	}
	#top_experience #top_ex_gastronomy .vertical-row:first-child .vertical-lead {
		margin-left: 0;
	}
	.vertical-latin {
		font-family: var(--font-en);
		font-size: 1.1em;
		letter-spacing: 0.07em;
	}
	/* Button spacing per section */
	.way-copy > .btn_c_warp {
		margin-top: calc(51 * var(--u));
	}
	.way-row[data-way='spa'] .vertical-copy {
		margin-top: calc(32 * var(--u));
	}
	.way-row[data-way='spa'] .btn_c_warp {
		margin-top: calc(54 * var(--u));
	}
	#top_experience #top_ex_spa {
		padding-bottom: calc(68 * var(--u));
	}
	.way-row[data-way='gastronomy'] .vertical-heading {
		transform: translateX(calc(-15 * var(--u)));
	}
	.way-row[data-way='gastronomy'] .way-copy {
		padding-top: 0;
	}
	.way-row[data-way='gastronomy'] .vertical-copy {
		margin-top: calc(28 * var(--u));
	}
	.way-row[data-way='gastronomy'] .btn_c_warp {
		margin-top: calc(30 * var(--u));
		transform: translateX(calc(-10 * var(--u)));
	}
	/* Tablet: 1024px and below */
	@media (max-width: 1023px) {
		#top_experience {
			padding-bottom: 10px;
		}
		/* タブレット以下も帯の境目を背景色でつなぎ、余白部分で白く途切れないようにする */
		.way-row[data-way='tea'] {
			background: linear-gradient(180deg, #fff 0%, #e2e8d5 14%);
		}
		.way-row[data-way='spa'] {
			background: linear-gradient(180deg, #e2e8d5 0%, #e1eaee 18%);
		}
		.way-row[data-way='gastronomy'] {
			background: linear-gradient(180deg, #e1eaee 0%, #f4edde 18%, #f4edde 86%, #fff 100%);
		}
		.ways-header {
			height: auto;
			padding: 85px 20px 75px;
		}
		.way-row,
		.way-row:nth-child(even) {
			grid-template-columns: 44% 56%;
			min-height: 710px;
			margin-bottom: 0;
			padding-bottom: 70px;
		}
		.way-row:nth-child(even) {
			grid-template-columns: 56% 44%;
		}
		.way-row > figure.media {
			height: 500px;
			margin-top: 36px;
		}
		.vertical-heading {
			gap: 13px;
			padding-left: 19px;
		}
		.vertical-title {
			font-size: 22px;
			letter-spacing: 0.06em;
		}
		.vertical-heading .vertical-en {
			font-size: 11px;
		}
		.vertical-copy {
			display: block;
			margin-top: 32px !important;
			padding: 0 28px;
			max-width: 400px;
		}
		.vertical-column {
			display: contents;
			writing-mode: horizontal-tb;
			white-space: normal;
			font-size: 14px;
			line-height: 2.2;
			letter-spacing: 0.025em;
		}
		#top_experience #top_ex_spa .vertical-row {
			display: block;
			white-space: nowrap;
		}
		#top_experience #top_ex_spa .vertical-space {
			display: inline;
		}
		#top_experience #top_ex_gastronomy .vertical-row {
			display: block;
			white-space: nowrap;
		}
		#top_experience #top_ex_gastronomy .vertical-row:first-child,
		#top_experience #top_ex_gastronomy .vertical-row:nth-child(2) {
			text-align: center;
		}
		#top_experience #top_ex_gastronomy .vertical-lead {
			text-align: center;
		}
		#top_experience #top_ex_gastronomy .vertical-row:first-child .vertical-lead {
			margin-bottom: 0;
			line-height: 1.5;
		}
		#top_experience #top_ex_gastronomy .vertical-row:nth-child(2) .vertical-lead {
			line-height: 1.5;
			margin-bottom: 15px;
		}
		.vertical-lead {
			display: block;
			writing-mode: horizontal-tb;
			font-size: 17px;
			line-height: 2;
			margin: 0 0 15px;
		}
		.way-copy .vertical-heading {
			max-height: none;
		}
		.way-copy > .btn_c_warp {
			margin-top: 28px !important;
			width: calc(100% - 64px);
			max-width: 280px;
		}
		.way-row[data-way='gastronomy'] .vertical-heading {
			transform: none;
		}
	}
	/* Mobile: 768px and below */
	@media (max-width: 767px) {
		#top_experience::before {
			width: 250px;
			bottom: -200px;
		}
		.ways-header {
			padding: 70px 20px 59px;
		}
		.way-row,
		.way-row:nth-child(even) {
			display: flex;
			flex-direction: column;
			min-height: 0;
			margin-bottom: 0;
			padding-bottom: 100px;
		}
		.way-copy {
			padding-inline: 24px;
		}
		.way-copy .vertical-heading {
			margin-right: 8px;
		}
		.vertical-title {
			font-size: 22px;
		}
		.vertical-copy {
			padding: 0;
			width: min(100%, 490px);
			margin-top: 31px !important;
		}
		.vertical-column {
			font-size: 14px;
			line-height: 2.25;
		}
		#top_experience #top_ex_spa .vertical-copy {
			font-size: clamp(10px, calc((100vw - 48px) / 28.5), 14px);
		}
		#top_experience #top_ex_spa .vertical-row {
			font-size: inherit;
			line-height: 2.25;
		}
		#top_experience #top_ex_spa .vertical-column {
			font-size: inherit;
			line-height: inherit;
		}
		#top_experience #top_ex_gastronomy .vertical-copy {
			font-size: min(14px, calc((100vw - 48px) / 23));
		}
		#top_experience #top_ex_gastronomy .vertical-row {
			font-size: inherit;
			line-height: 2.25;
		}
		#top_experience #top_ex_gastronomy .vertical-column:not(.vertical-lead) {
			font-size: inherit;
			line-height: inherit;
		}
		#top_experience #top_ex_gastronomy .vertical-row:nth-child(2) .vertical-lead {
			margin-bottom: 13px;
		}
		.vertical-lead {
			font-size: 17px;
			margin-bottom: 13px;
		}
		.way-copy > .btn_c_warp {
			align-self: center;
			width: 280px;
			margin-top: 29px !important;
			margin-inline: auto;
			transform: none;
		}
		.way-row > figure.media,
		.way-row:nth-child(even) > figure.media {
			width: 88%;
			align-self: center;
			margin-inline: auto;
			height: auto;
			aspect-ratio: 777 / 740;
			margin-top: 36px;
			max-height: 480px;
		}
	}

	/**********************************************
		TOP_ROOM (ROOM & FACILITY) — ref.html .room と同一レイアウト
	********************************************* */
	#top_room {
		position: relative;
		padding-top: calc(119 * var(--u));
		padding-bottom: calc(110 * var(--u));
	}
	/* PC表示時は1330px基準で水平中央寄せし、大画面でも写真が左端に張り付かないようにする */
	.top_room_wrap {
		--room-u: calc(min(100vw, 1330px) / 1330);
		position: relative;
		width: 100%;
		max-width: 1330px;
		min-height: calc(1200 * var(--room-u));
		margin-inline: auto;
	}
	#top_room .section-head {
		padding-inline: 20px;
	}
	#top_room h2.title_center {
		margin-bottom: 0;
	}
	.top_room_copy {
		position: relative;
		margin-top: calc(75 * var(--room-u));
		margin-left: 51.05%;
		width: 48.2%;
		z-index: 2;
	}
	.top_room_copy .room_intro {
		font-size: calc(16 * var(--room-u));
		line-height: calc(36 * var(--room-u));
		letter-spacing: 0;
		margin-bottom: calc(16 * var(--room-u));
	}
	.top_room_copy p {
		font-size: calc(16 * var(--room-u));
		line-height: calc(36 * var(--room-u));
		letter-spacing: 0;
		margin: 0;
	}
	.top_room_copy .btn_c_warp {
		margin-top: calc(40 * var(--room-u));
	}
	.top_room_copy a.btn {
		background-color: #fff;
	}
	.top_room_photos .room_photo_main {
		position: absolute;
		left: calc(20 * var(--room-u));
		top: calc(360 * var(--room-u));
		width: calc(540 * var(--room-u));
		height: calc(440 * var(--room-u));
		overflow: hidden;
		background: #bfbfbf;
	}
	.top_room_photos .room_photo_main img {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}
	.top_room_photos .room_photo_sub {
		position: absolute;
		left: calc(485 * var(--room-u));
		top: calc(690 * var(--room-u));
		width: calc(440 * var(--room-u));
		height: calc(294 * var(--room-u));
		aspect-ratio: 2400 / 1601;
		overflow: hidden;
		background: #bfbfbf;
		z-index: 1;
	}
	.top_room_photos .room_photo_sub img {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		object-fit: contain;
		object-position: center;
		display: block;
	}
	/* タブレット表示時（768〜1024px）は副写真の高さに応じて高さを確保し、#top_plansとの重なりを防ぐ */
	@media (max-width: 1024px) {
		#top_room {
			min-height: calc(780px + 36.03vw);
			padding: 80px 0 85px;
		}
		.top_room_wrap {
			min-height: calc(615px + 36.03vw);
		}
		#top_room .section-head {
			padding-inline: 30px;
		}
		.top_room_copy {
			width: 48%;
			margin-left: 50%;
			margin-top: 40px;
		}
		.top_room_copy .room_intro {
			font-size: 14px;
			line-height: 2.1;
			letter-spacing: 0.025em;
			margin-bottom: 14px;
		}
		.top_room_copy p {
			font-size: 14px;
			line-height: 2.1;
			letter-spacing: 0.025em;
			margin: 0;
		}
		.top_room_copy .btn_c_warp {
			margin-top: 28px;
			max-width: 85%;
		}
		.top_room_photos .room_photo_main {
			left: 2%;
			top: 280px;
			width: 42%;
			height: 350px;
		}
		.top_room_photos .room_photo_sub {
			left: 29%;
			top: 615px;
			width: 54%;
			height: auto;
			aspect-ratio: 2400 / 1601;
		}
	}
	@media (max-width: 767px) {
		#top_room {
			padding: 74px 24px 75px;
			min-height: 0;
		}
		.top_room_wrap {
			min-height: 0;
		}
		#top_room .section-head {
			padding: 0;
		}
		.top_room_copy {
			width: 100%;
			margin-left: 0;
			margin-top: 33px;
		}
		.top_room_copy .room_intro {
			margin-bottom: 18px;
		}
		.top_room_copy .btn_c_warp {
			margin-top: 31px;
			margin-inline: auto;
			width: 280px;
			max-width: 100%;
		}
		/* モバイル表示時は主写真・副写真をそれぞれ水平中央寄せし、上下に並べる */
		.top_room_photos {
			position: relative;
			display: flex;
			flex-direction: column;
			align-items: center;
			gap: 24px;
			margin-top: 40px;
			height: auto;
		}
		.top_room_photos .room_photo_main {
			position: relative;
			left: auto;
			top: auto;
			width: 100%;
			max-width: 540px;
			height: auto;
			aspect-ratio: 2400 / 1600;
			margin-inline: auto;
		}
		.top_room_photos .room_photo_sub {
			position: relative;
			left: auto;
			right: auto;
			top: auto;
			width: 100%;
			max-width: 540px;
			height: auto;
			aspect-ratio: 2400 / 1601;
			margin-inline: auto;
		}
	}

	/**********************************************
		TOP_PLANS
	********************************************* */
	#top_plans {
		position: relative;
		min-height: calc(820 * var(--u));
		display: flex;
		flex-direction: column;
		justify-content: center;
		padding: calc(140 * var(--u)) calc(25 * var(--u)) calc(140 * var(--u));
		background: #333;
		overflow: hidden;
	}
	#top_plans .plans_bg {
		position: absolute;
		inset: 0;
		z-index: 1;
	}
	#top_plans .plans_bg picture {
		display: block;
		width: 100%;
		height: 100%;
	}
	#top_plans .plans_bg img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		object-position: center 25%;
		filter: brightness(0.55);
	}
	#top_plans .container {
		position: relative;
		z-index: 2;
	}
	#top_plans .plans_copy {
		font-size: calc(16 * var(--u));
		line-height: calc(36 * var(--u));
		letter-spacing: 0.025em;
		margin-top: calc(50 * var(--u));
		margin-bottom: 0;
	}
	#top_plans .plans_names {
		font-size: calc(18 * var(--u));
		line-height: 2;
		letter-spacing: 0.035em;
		padding: calc(12 * var(--u)) calc(24 * var(--u));
		display: inline-block;
		background: rgba(255, 255, 255, 0.12);
		border: 1px solid rgba(255, 255, 255, 0.3);
		margin-top: calc(36 * var(--u));
		margin-bottom: 0;
	}
	#top_plans .btn_c_warp {
		margin-top: calc(56 * var(--u));
	}
	@media (max-width: 1023px) {
		#top_plans {
			min-height: 0;
			display: block;
			padding: 80px 36px 85px;
		}
		#top_plans .plans_copy {
			font-size: 14px;
			line-height: 2.3;
			margin-top: 38px;
		}
		#top_plans .plans_names {
			font-size: 15px;
			padding: 10px 18px;
			margin-top: 27px;
		}
		#top_plans .btn_c_warp {
			margin-top: 35px;
		}
	}

	/**********************************************
		TOP_STAY
	********************************************* */
	#top_stay {
		padding-top: calc(121 * var(--u));
	}
	#top_stay > .container-lg > p {
		font-size: calc(16 * var(--u));
		line-height: calc(36 * var(--u));
		letter-spacing: 0.025em;
		margin-top: calc(70 * var(--u));
		padding-inline: calc(22 * var(--u));
	}
	#top_stay .top_stay_grid {
		margin-top: calc(56 * var(--u));
		min-height: calc(699 * var(--u));
	}
	.stay_card {
		display: block;
	}
	.stay_picture {
		display: block;
		position: relative;
		overflow: hidden;
		height: calc(483 * var(--u));
	}
	.stay_picture figure {
		width: 100%;
		height: 100%;
		margin: 0;
	}
	.stay_picture figure img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		transition: transform 0.8s ease;
		display: block;
	}
	.stay_picture::after {
		content: '';
		position: absolute;
		inset: 0;
		background: linear-gradient(180deg, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.6) 100%);
		transition: background 0.4s ease;
	}
	.stay_picture:hover figure img {
		transform: scale(1.05);
	}
	.stay_picture:hover::after {
		background: linear-gradient(180deg, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.7) 100%);
	}
	.stay_card_title {
		position: absolute;
		left: 1.5rem;
		right: 1.5rem;
		bottom: 1.25rem;
		color: #fff;
		font-size: calc(24 * var(--u));
		line-height: 1.4;
		letter-spacing: 0.025em;
		margin: 0;
		z-index: 2;
		display: flex;
		align-items: center;
		justify-content: space-between;
	}
	.stay_card_title .chevron {
		width: calc(9 * var(--u));
		height: calc(9 * var(--u));
		border-right: 1px solid #fff;
		border-top: 1px solid #fff;
		transform: rotate(45deg);
		transition: transform 0.3s ease;
	}
	.stay_picture:hover .stay_card_title .chevron {
		transform: translateX(4px) rotate(45deg);
	}
	.stay_card_txt {
		margin-top: calc(25 * var(--u));
		font-size: calc(16 * var(--u));
		line-height: calc(30 * var(--u));
		letter-spacing: 0;
		color: #555;
	}
	@media (min-width: 1024px) {
		.stay_card_middle {
			margin-top: calc(70 * var(--u));
		}
		.stay_card_last {
			margin-top: calc(130 * var(--u));
		}
	}
	@media (max-width: 1023px) {
		#top_stay {
			padding-top: 80px;
		}
		#top_stay > .container-lg > p {
			font-size: 14px;
			line-height: 2.3;
			margin-top: 36px;
			padding-inline: 34px;
		}
		#top_stay .top_stay_grid {
			margin-top: 46px;
			min-height: 0;
		}
		.stay_picture {
			height: 340px;
		}
		.stay_card_title {
			font-size: 20px;
		}
		.stay_card_title .chevron {
			width: 9px;
			height: 9px;
		}
		.stay_card_txt {
			font-size: 13px;
			line-height: 2;
			margin-top: 21px;
		}
		.stay_card_middle {
			margin-top: 50px;
		}
		.stay_card_last {
			margin-top: 100px;
		}
	}
	@media (max-width: 767px) {
		.stay_card_title {
			font-size: 18px;
		}
		.stay_picture {
			height: 260px;
		}
		.stay_card_middle,
		.stay_card_last {
			margin-top: 30px;
		}
	}

	/**********************************************
		TOP_STORY — ref.html .story と同一レイアウト
	********************************************* */
	#top_story {
		position: relative;
		text-align: center;
		min-height: calc(1178 * var(--u));
		margin-inline: calc(11 * var(--u));
		border-bottom: 1px solid #d1d1d1;
		padding: 0 0 calc(123 * var(--u));
	}
	#top_story .story_artwork {
		display: block;
		width: calc(100% + 22 * var(--u));
		max-width: none;
		margin-left: calc(-11 * var(--u));
		height: auto;
	}
	#top_story .story_tagline {
		font-size: calc(22 * var(--u));
		line-height: calc(38 * var(--u));
		letter-spacing: 0.055em;
		margin-top: calc(44 * var(--u));
		margin-bottom: 0;
		white-space: nowrap;
	}
	#top_story .btn_c_warp {
		margin-top: calc(62 * var(--u));
	}
	@media (max-width: 1023px) {
		#top_story .story_tagline {
			white-space: normal;
		}
		#top_story {
			min-height: 0;
			margin-inline: 15px;
			padding: 0 0 88px;
		}
		#top_story .story_artwork {
			width: calc(100% + 30px);
			margin-left: -15px;
			height: auto;
			aspect-ratio: 1330 / 865;
		}
		#top_story .story_tagline {
			font-size: 20px;
			line-height: 1.9;
			margin-top: 35px;
		}
		#top_story .btn_c_warp {
			margin-top: 36px;
		}
	}
	@media (max-width: 767px) {
		#top_story {
			margin-inline: 15px;
			padding: 0 0 72px;
		}
		#top_story .story_tagline {
			font-size: 18px;
			margin-top: 28px;
			letter-spacing: 0.015em;
			line-height: 2;
		}
		#top_story .btn_c_warp {
			margin-top: 29px;
		}
	}
	@media (max-width: 359px) {
		#top_story .story_tagline {
			font-size: 16px;
		}
	}

	/**********************************************
		TOP_NEWS
	********************************************* */
	#top_news {
		min-height: calc(605 * var(--u));
		padding: calc(139 * var(--u)) 0 calc(129 * var(--u));
	}
	/* top_faq_copy と同一仕様 */
	.top_news_info {
		height: 100%;
	}
	.top_news_info .vertical-heading {
		min-height: calc(216 * var(--u));
	}
	.top_news_info .btn_c_warp {
		margin-top: calc(49 * var(--u));
	}
	.top_news_archive a {
		display: block;
		position: relative;
		padding: calc(26 * var(--u)) 0 calc(23 * var(--u));
		line-height: 2;
	}
	.top_news_archive {
		min-width: 0;
	}
	.top_news_archive a::before {
		content: '';
		display: block;
		width: 100%;
		height: 1px;
		background: #dedede;
		position: absolute;
		left: 0;
		top: 0;
	}
	.top_news_archive a::after {
		content: '';
		display: block;
		width: 0;
		height: 1px;
		background: var(--default);
		position: absolute;
		left: 0;
		top: 0;
		transition: .3s ease-out;
	}
	.top_news_archive a:hover::after {
		width: 100%;
	}
	.top_news_archive a .meta {
		display: flex;
		align-items: center;
		margin-bottom: .75rem;
	}
	.top_news_archive a .date {
		display: block;
		color: #808080;
		font-size: calc(13 * var(--u));
		line-height: 1.6;
	}
	.top_news_archive a .news_cat,
	.top_news_archive a .news_card_badge {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		margin-left: clamp(8px, calc(10 * var(--u)), 12px);
		padding: 2px clamp(6px, calc(8 * var(--u)), 10px);
		border: 1px solid #7ea3e3;
		color: #4d79d1;
		font-size: clamp(10.5px, calc(11 * var(--u)), 12px);
		font-weight: 500;
		line-height: 1.35;
		letter-spacing: 0.04em;
		border-radius: 2px;
		background: #fff;
		white-space: nowrap;
		flex-shrink: 0;
		transition: background 0.3s ease, border-color 0.3s ease, color 0.3s ease;
	}
	.top_news_archive a:hover .news_cat,
	.top_news_archive a:hover .news_card_badge {
		border-color: #4d79d1;
		color: #4d79d1;
		background: #f0f5ff;
	}
	.top_news_archive a p.ttl {
		margin: 0;
		font-size: calc(14 * var(--u));
		line-height: 1.8;
		letter-spacing: 0.05em;
		transition: .3s ease;
	}
	.top_news_archive a:hover p.ttl {
		color: #808080;
	}
	@media (max-width: 1023px) {
		#top_news {
			min-height: 0;
			padding: 85px 0;
		}
		/* 以下 top_faq_copy の ≤1023px 仕様と同一 */
		.top_news_info .vertical-heading {
			min-height: 170px;
		}
		.top_news_info .btn_c_warp {
			margin-top: 28px;
			width: 75%;
			max-width: 280px;
		}
		.top_news_archive a {
			padding: 21px 0;
		}
		.top_news_archive a .date {
			font-size: 13px;
		}
		.top_news_archive a .news_cat,
		.top_news_archive a .news_card_badge {
			font-size: 11px;
			min-width: 0;
			padding: 2px 7px;
			line-height: 1.35;
		}
		.top_news_archive a p.ttl {
			font-size: 14px;
		}
	}
	@media (max-width: 991px) {
		.top_news_archive {
			margin-bottom: clamp(1.25rem, 0.886rem + 1.82vw, 2.25rem);
		}
	}
	/* 以下 top_faq_copy の ≤767px 仕様と同一 */
	@media (max-width: 767px) {
		.top_news_info {
			width: 100%;
			padding: 0 25px 2rem;
		}
		.top_news_info .vertical-heading {
			min-height: 177px;
		}
		.top_news_info .btn_c_warp {
			width: 280px;
			margin-top: 28px;
		}
	}

	/**********************************************
		TOP_ACCESS
	********************************************* */
	#top_access {
		padding-top: calc(201 * var(--u));
		position: relative;
	}
	#top_access h3.rl {
		position: relative;
		z-index: +1;
		margin-right: clamp(3rem, 4vw, 3.175rem);
	}
	#top_access .map {
		width: 100%;
		height: calc(471 * var(--u));
		margin-top: 0;
		margin-bottom: calc(11 * var(--u));
	}
	#top_access .map iframe {
		width: 100%;
		height: 100%;
	}
	.togmap {
		margin-bottom: calc(11 * var(--u));
	}
	.togmap a {
		padding-right: 1.25rem;
		display: inline-block;
		position: relative;
		font-size: calc(13 * var(--u));
		line-height: 2;
		letter-spacing: 0.08em;
	}
	.togmap a::after {
		content: '';
		display: block;
		width: 1rem;
		height: 1rem;
		background: url(../images/common/open_in_new.svg) center center/cover no-repeat;
		position: absolute;
		right: 0;
		top: calc(50% - .5rem);
		transition: .3s ease;
	}
	.togmap a:hover {
		color: #808080;
	}
	.togmap a:hover::after {
		opacity: .6;
	}
	#top_access .access_info {
		padding-top: calc(51 * var(--u));
		padding-bottom: calc(151 * var(--u));
	}
	#top_access .access_name {
		font-size: calc(22 * var(--u));
		line-height: 1.7;
		letter-spacing: 0.15em;
		font-weight: 500;
		margin-bottom: 0.5rem;
	}
	#top_access .access_address,
	#top_access .access_phone {
		font-size: calc(16 * var(--u));
		line-height: calc(32 * var(--u));
		letter-spacing: 0.035em;
	}
	#top_access .access_info .btn_c_warp {
		margin-top: calc(40 * var(--u));
	}
	@media (max-width: 1023px) {
		#top_access {
			padding-top: 120px;
		}
		#top_access .map {
			height: 400px;
		}
		.togmap a {
			font-size: 13px;
		}
		#top_access .access_info {
			padding: 42px 25px 95px;
		}
		#top_access .access_name {
			font-size: 18px;
		}
		#top_access .access_address,
		#top_access .access_phone {
			font-size: 14px;
			line-height: 2;
		}
		#top_access .access_info .btn_c_warp {
			margin-top: 30px;
		}
	}
	@media (max-width: 991px) {
		#top_access h3.rl {
			margin-right: 0;
			text-align: center;
		}
	}
	@media (max-width: 767px) {
		#top_access .map {
			height: 300px;
		}
	}

	/**********************************************
		TOP_FAQ
	********************************************* */
	#top_faq {
		position: relative;
		min-height: calc(536 * var(--u));
		padding: calc(76 * var(--u)) 0;
		background: #fbfbfb;
	}
	/* top_faq_copy と同一仕様（flex 縦積み・中央寄せ・余白） */
	.top_faq_copy,
	.top_news_info {
		padding: 2rem;
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
		text-align: center;
	}
	@media (max-width: 767px) {
		.top_faq_copy,
		.top_news_info {
			width: 100%;
			min-width: 0;
			padding: 0 25px 2rem;
		}
		.top_faq_copy .btn_c_warp,
		.top_news_info .btn_c_warp {
			width: 100%;
			max-width: 280px;
		}
	}
	.top_faq_copy .vertical-heading {
		min-height: calc(216 * var(--u));
	}
	.top_faq_copy p {
		font-size: calc(16 * var(--u));
		line-height: 2;
		letter-spacing: 0.025em;
		margin-top: calc(51 * var(--u));
		margin-bottom: 0;
	}
	.top_faq_copy .btn_c_warp {
		margin-top: calc(49 * var(--u));
	}
	.top_faq_pic {
		margin: 0;
		height: calc(384 * var(--u));
		overflow: hidden;
		box-shadow: 0 10px 30px rgba(0, 0, 0, 0.06);
	}
	.top_faq_pic img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}
	@media (max-width: 1023px) {
		#top_faq {
			min-height: 405px;
			padding: 50px 0;
		}
		.top_faq_copy .vertical-heading {
			min-height: 170px;
		}
		.top_faq_copy p {
			font-size: 13px;
			margin-top: 32px;
			padding-inline: 26px;
		}
		.top_faq_copy .btn_c_warp {
			margin-top: 28px;
			width: 75%;
			max-width: 280px;
		}
		.top_faq_pic {
			height: 300px;
		}
	}
	@media (max-width: 767px) {
		.top_faq_copy {
			width: 100%;
			padding: 0 25px 2rem;
		}
		.top_faq_copy .vertical-heading {
			min-height: 177px;
		}
		.top_faq_copy p {
			margin-top: 26px;
			padding: 0;
			font-size: 14px;
		}
		.top_faq_copy .btn_c_warp {
			width: 280px;
			margin-top: 28px;
		}
		.top_faq_pic {
			margin-top: 37px;
			width: 88%;
			height: auto;
			aspect-ratio: 690 / 384;
		}
	}

	/**********************************************
		TOP FOOTER & RESERVATION (aligned with ref.html)
	********************************************* */
	#footer_reserve {
		position: relative;
		min-height: calc(484 * var(--u));
		padding: calc(88 * var(--u)) calc(24 * var(--u)) calc(70 * var(--u));
	}
	#footer_reserve h2.title_center {
		font-size: calc(30 * var(--u));
		letter-spacing: 0.03em;
		margin-bottom: calc(55 * var(--u));
	}
	.footer_reserve_tel {
		margin-top: calc(39 * var(--u));
	}
	.footer_reserve_tel h4 {
		font-size: calc(16 * var(--u));
		line-height: 2;
		letter-spacing: 0.08em;
	}
	.footer_reserve_tel a {
		font-size: calc(30 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.025em;
		font-weight: 600;
	}
	.footer_reserve_tel small {
		font-size: calc(14 * var(--u));
		line-height: 1.8;
		letter-spacing: 0.015em;
		margin-top: calc(5 * var(--u));
	}
	.f_info {
		padding: calc(70 * var(--u)) calc(11 * var(--u)) 0;
	}
	.f_info .container {
		margin-top: 0;
		margin-bottom: 0;
		min-height: calc(328 * var(--u));
	}
	/* 汉堡菜单 l_nav_info 的 h4 与页脚 f_info_content 的 h4 同样式 */
	.f_info_content h4,
	.l_nav_info h4 {
		font-size: calc(18 * var(--u));
		line-height: 1.6;
		letter-spacing: 0.08em;
		font-weight: 500;
		margin-bottom: 0.5rem;
	}
	.f_info_content p {
		font-size: calc(13 * var(--u));
		line-height: 2;
	}
	.f_info_content a.btn {
		font-size: calc(14 * var(--u));
		width: calc(240 * var(--u));
		min-height: calc(42 * var(--u));
		margin-top: calc(19 * var(--u));
	}
	.f_info_right nav ul li a {
		font-size: calc(13 * var(--u));
		line-height: calc(30 * var(--u));
		letter-spacing: 0.055em;
	}
	.copyright p {
		font-size: calc(11 * var(--u));
		line-height: 1.5;
	}
	@media (max-width: 1023px) {
		#footer_reserve {
			min-height: 0;
			padding: 72px 30px 74px;
		}
		#footer_reserve h2.title_center {
			font-size: 24px;
			margin-bottom: 39px;
		}
		.footer_reserve_tel {
			margin-top: 32px;
		}
		.footer_reserve_tel h4 {
			font-size: 14px;
		}
		.footer_reserve_tel a {
			font-size: 24px;
		}
		.footer_reserve_tel small {
			font-size: 13px;
			margin-top: 11px;
		}
		.f_info {
			padding: 52px 24px 0;
		}
		.f_info .container {
			min-height: 0;
		}
		.f_info_content h4,
		.l_nav_info h4 {
			font-size: 16px;
		}
		.f_info_content p {
			font-size: 13px;
		}
		.f_info_content a.btn {
			font-size: 14px;
			width: 220px;
			min-height: 40px;
			margin-top: 15px;
		}
		.f_info_right nav ul li a {
			font-size: 13px;
			line-height: 2.2;
		}
		.copyright p {
			font-size: 11px;
		}
	}

	/**********************************************
		IMG_CONTENT 共通レイアウト（ref-about = 初版 contents.css 由来。
		Tailwind 移行時に欠落していた汎用ルールを復元）
	********************************************* */
	.img_content .txt {
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
	}
	.img_content figure {
		width: 100%;
		height: 100%;
		min-height: 650px;
		margin: 0;
	}
	.img_content figure img {
		width: 100%;
		height: 740px;
		object-fit: cover;
	}
	.img_content .txt {
		max-height: 800px;
		padding-left: 2rem;
		padding-right: 2rem;
	}
	@media (min-width: 1501px) {
		.img_right_content .txt {
			padding-left: calc((100vw - 1500px) / 2);
		}
		.img_left_content .txt {
			padding-right: calc((100vw - 1500px) / 2);
		}
	}

	/**********************************************
		ABOUT
	********************************************* */
	#about .img_content figure {
		min-height: 600px;
		position: relative;
	}
	#about .img_content.container-fluid {
		padding-inline: 0;
	}
	#about .img_content figure::before {
		content: '';
		display: block;
		width: 100%;
		height: 100%;
		position: absolute;
		left: 0;
		top: 0;
		background: rgba(0, 0, 0, .5);
		z-index: +1;
	}
	#about .img_content figure img {
		width: 100%;
		height: 600px;
		object-fit: cover;
	}
	#about .img_content figure .inner {
		width: 100%;
		height: 100%;
		display: flex;
		justify-content: center;
		align-items: center;
		position: absolute;
		left: 0;
		top: 0;
		z-index: +2;
		color: #fff;
		padding: 4rem 2rem;
	}
	#about .img_content figure .inner p {
		writing-mode: horizontal-tb;
		font-size: calc(26 * var(--u));
		letter-spacing: .12em;
		position: relative;
		padding: 0;
		font-weight: 500;
		margin: 0;
		line-height: 1.8;
		text-align: center;
		text-shadow: 0 2px 14px rgba(0, 0, 0, 0.5);
		white-space: nowrap;
	}
	.about01_2 .txt {
		display: flex;
		height: 100%;
		align-items: center;
		padding: 6rem 0 0;
	}
	.about01_2 .pic {
		position: relative;
		z-index: +3;
		margin-top: -3rem;
	}
	#policy .circle_wrap {
		padding: 4%;
		margin-bottom: 180px;
	}
	#policy .circle_wrap .circle_row > div:nth-child(even) {
		transform: translateY(120px);
	}
	#policy .circle_inner {
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
		width: 100%;
		aspect-ratio: 1 / 1;
		position: relative;
	}
	#policy .circle_inner::before {
		content: '';
		display: block;
		width: 130%;
		height: 130%;
		position: absolute;
		left: -15%;
		top: -15%;
		background: transparent;
		border: 1px solid #dcd8d2;
		border-radius: 50%;
	}
	#policy .circle_inner p {
		margin: 0;
		font-size: clamp(0.8125rem, calc(0.75rem + 0.2vw), 0.875rem);
		line-height: 1.6;
		letter-spacing: 0.02em;
	}
	#policy .circle_inner p.en {
		color: #adadad;
		font-size: clamp(0.6875rem, calc(0.625rem + 0.2vw), 0.875rem);
		letter-spacing: 0.04em;
	}
	#policy .circle_inner p.ja {
		font-size: clamp(0.875rem, calc(0.8rem + 0.2vw), 1rem);
		font-weight: 600;
		letter-spacing: 0.08em;
	}
	#policy .policy_note h4 {
		font-size: clamp(1rem, calc(0.875rem + 0.35vw), 1.25rem);
		margin-bottom: clamp(1rem, calc(0.75rem + 0.55vw), 1.25rem);
		display: flex;
		flex-direction: column;
	}
	#policy .policy_note h4 .ttl_ja {
		display: block;
		font-size: inherit;
		line-height: 1.5;
		color: #000;
	}
	#policy .policy_note h4 span.en {
		color: #adadad;
		display: block;
		font-size: clamp(0.75rem, calc(0.6875rem + 0.18vw), 0.875rem);
		margin-top: 0.5rem;
		line-height: 1.4;
		letter-spacing: 0.04em;
	}
	#policy .policy_note p {
		font-size: clamp(0.8125rem, calc(0.75rem + 0.2vw), 0.9375rem);
		line-height: 2;
		letter-spacing: 0.02em;
		margin-bottom: 0;
		color: #444;
	}
	#policy .policy02 .md\:grid-cols-5 {
		column-gap: clamp(1.5rem, 1rem + 1.2vw, 2.5rem);
	}
	@media (max-width: 1300px) {
		#policy .policy_note h4 .ttl_ja {
			min-height: 2.8em;
		}
	}
	@media (max-width: 1200px) {
		#policy .policy_note p {
			font-size: clamp(0.75rem, calc(0.6875rem + 0.25vw), 0.875rem);
			line-height: 1.8;
			letter-spacing: 0.02em;
		}
	}
	@media (max-width: 991px) {
		#about {
			padding-top: 60px;
		}
		#about .img_content figure {
			min-height: 500px;
		}
		#about .img_content figure img {
			height: 500px;
		}
		#about .img_content figure .inner {
			padding: 3rem;
		}
		#about .img_content figure .inner p {
			font-size: 16px;
			white-space: normal;
		}
		.about01_2 .txt {
			display: flex;
			height: 100%;
			align-items: center;
			padding: 2rem 0 4rem;
		}
		#policy .circle_wrap {
			padding: 2%;
			margin-bottom: 130px;
		}
		#policy .circle_wrap .circle_row > div:nth-child(even) {
			transform: translateY(80px);
		}
	}
	@media (max-width: 767px) {
		#about {
			padding-top: 30px;
		}
		#about .img_content figure {
			min-height: 420px;
		}
		#about .img_content figure img {
			height: 420px;
		}
		#about .img_content figure .inner {
			padding: 2rem 1.25rem;
		}
		#about .img_content figure .inner p {
			font-size: 14px;
			letter-spacing: .08em;
			line-height: 1.7;
		}
		#policy .circle_wrap {
			margin-bottom: 3rem;
		}
		#policy .circle_wrap .circle_row > div:nth-child(even) {
			transform: translateY(0);
		}
		#policy .circle_inner::before {
			width: 110%;
			height: 110%;
			position: absolute;
			left: -5%;
			top: -5%;
		}
		#policy .circle_wrap .circle_row > div:nth-child(4),
		#policy .circle_wrap .circle_row > div:nth-child(5) {
			margin-top: -4%;
		}
		#policy .policy_note p {
			font-size: 0.8125rem;
			line-height: 1.8;
		}
		#policy .policy_note h4 span.en {
			margin-top: 5px;
		}
	}

	/**********************************************
		EXPERIENCE ページ (3つの整い)
	********************************************* */
	.exp_lead_sec {
		padding-top: calc(100 * var(--u));
		padding-bottom: calc(20 * var(--u));
	}
	.exp_lead_sec h2.title_center {
		font-family: var(--font_ja);
		font-size: calc(36 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.18em;
		font-weight: 500;
		white-space: nowrap;
	}
	.exp_lead_sec > .container > p {
		max-width: calc(760 * var(--u));
		margin-right: auto;
		margin-left: auto;
		font-size: calc(16 * var(--u));
		line-height: calc(36 * var(--u));
		letter-spacing: 0.025em;
		color: #3f3f3f;
		word-break: break-word;
	}
	.exp_pills {
		display: flex;
		justify-content: center;
		align-items: center;
		gap: calc(24 * var(--u));
		flex-wrap: wrap;
		margin-top: calc(44 * var(--u));
	}
	.exp_pill_btn {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		gap: calc(10 * var(--u));
		min-width: calc(190 * var(--u));
		padding: calc(13 * var(--u)) calc(36 * var(--u));
		border: 1px solid #c9c4bb;
		border-radius: 9999px;
		background: #fff;
		color: #2b2b2b;
		font-family: var(--font_ja);
		font-size: calc(16 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.08em;
		text-decoration: none;
		transition: all 0.3s cubic-bezier(0.25, 1, 0.5, 1);
		box-shadow: 0 calc(2 * var(--u)) calc(8 * var(--u)) rgba(0, 0, 0, 0.02);
	}
	.exp_pill_btn:hover {
		background: #2b2b2b;
		color: #fff;
		border-color: #2b2b2b;
		box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
	}
	.exp_pill_btn svg {
		width: calc(10 * var(--u));
		height: calc(6 * var(--u));
		fill: currentColor;
		transition: transform 0.3s ease;
	}
	.exp_pill_btn:hover svg {
		transform: translateY(2px);
	}

	/* 3-Column Triptych Photo Banner */
	.exp_triptych {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr) minmax(0, 1fr);
		gap: calc(12 * var(--u));
		width: 100vw;
		height: calc(382 * var(--u));
		margin: calc(48 * var(--u)) 0 calc(72 * var(--u));
		margin-left: calc(50% - 50vw);
	}
	.exp_triptych figure {
		margin: 0;
		overflow: hidden;
		height: 100%;
		position: relative;
	}
	.exp_triptych figure img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
		transition: transform 0.8s cubic-bezier(0.25, 1, 0.5, 1);
	}
	.exp_triptych figure:hover img {
		transform: scale(1.04);
	}

	/* Section Headers */
	.exp_sec {
		scroll-margin-top: calc(80 * var(--u));
		position: relative;
		padding-top: calc(48 * var(--u));
		padding-bottom: calc(48 * var(--u));
	}
	.exp_sec_header {
		text-align: center;
		margin-bottom: calc(48 * var(--u));
	}
	.exp_sec_header .en {
		display: block;
		color: #adadad;
		font-family: var(--font_en);
		font-size: calc(14 * var(--u));
		line-height: calc(22 * var(--u));
		letter-spacing: 0.25em;
		margin-bottom: calc(12 * var(--u));
		text-transform: uppercase;
	}
	.exp_sec_header .ja {
		font-family: var(--font_ja);
		font-size: calc(36 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.18em;
		color: #1a1a1a;
		font-weight: 500;
		margin: 0;
	}

	/* Split Row Layouts */
	.exp_split_row {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: calc(80 * var(--u));
		align-items: center;
		margin-bottom: calc(56 * var(--u));
	}
	.exp_split_row.spa_row {
		grid-template-columns: minmax(0, calc(606 * var(--u))) minmax(0, calc(480 * var(--u)));
		gap: calc(150 * var(--u));
	}
	.exp_feature_row {
		width: 100%;
		margin-left: 0;
	}
	#exp_kaiseki .exp_feature_row {
		grid-template-columns: minmax(0, 1fr) minmax(0, calc(873 * var(--u)));
		gap: calc(40 * var(--u));
		margin-bottom: calc(100 * var(--u));
	}
	#exp_tea .exp_feature_row {
		grid-template-columns: minmax(0, 1fr) minmax(0, calc(873 * var(--u)));
		gap: calc(40 * var(--u));
		margin-bottom: calc(100 * var(--u));
	}
	.exp_sub_row {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: calc(80 * var(--u));
		width: calc(100% - 20 * var(--u));
		margin-right: auto;
		margin-left: auto;
		margin-bottom: calc(80 * var(--u));
	}
	.exp_split_row > * {
		min-width: 0;
	}
	.exp_split_row figure {
		margin: 0;
		overflow: hidden;
		aspect-ratio: 16 / 11;
		min-width: 0;
	}
	.exp_sub_row figure {
		aspect-ratio: 595 / 383;
	}
	#exp_kaiseki .exp_feature_row figure,
	#exp_tea .exp_feature_row figure {
		aspect-ratio: 873 / 564;
	}
	#exp_tea .exp_sub_row figure {
		aspect-ratio: 3 / 4;
		max-width: calc(480 * var(--u));
		width: 100%;
		margin: 0 auto;
		justify-self: center;
	}
	.exp_split_row figure img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	/* Tate-gaki and Headings */
	.exp_vhead_wrap {
		display: flex;
		align-items: flex-start;
		justify-content: center;
		width: 100%;
		margin-bottom: calc(32 * var(--u));
	}
	.exp_vhead {
		writing-mode: vertical-rl;
		font-family: var(--font_ja);
		font-size: calc(24 * var(--u));
		letter-spacing: 0.08em;
		line-height: 1.2;
		font-weight: 500;
		color: #1a1a1a;
		margin: 0;
		white-space: nowrap;
	}
	.exp_desc {
		font-family: var(--font_ja);
		font-size: calc(16 * var(--u));
		line-height: calc(36 * var(--u));
		color: #3f3f3f;
		letter-spacing: 0.025em;
		margin: 0;
		padding-right: calc(20 * var(--u));
		padding-left: calc(20 * var(--u));
		word-break: break-word;
	}
	.experience_page #exp_spa .btn_c_warp {
		margin-top: calc(32 * var(--u));
	}
	#exp_spa .exp_text_block {
		padding-right: calc(60 * var(--u));
	}
	.exp_sub_ttl {
		font-family: var(--font_ja);
		font-size: calc(20 * var(--u));
		line-height: 1.5;
		font-weight: 500;
		color: #1a1a1a;
		letter-spacing: 0.12em;
		margin: 0 0 calc(20 * var(--u));
		text-align: center;
	}

	/* Overlapping Media for SPA */
	.exp_overlap_wrap {
		position: relative;
		min-width: 0;
		height: calc(542 * var(--u));
		padding-bottom: 0;
	}
	.exp_overlap_main {
		width: calc(606 * var(--u));
		max-width: 100%;
		height: calc(450 * var(--u));
		margin-left: 0;
		overflow: hidden;
		position: relative;
	}
	.exp_overlap_main img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}
	.exp_overlap_sub {
		position: absolute;
		left: calc(100% - 102 * var(--u));
		bottom: 0;
		width: calc(213 * var(--u));
		height: calc(261 * var(--u));
		z-index: 2;
		overflow: hidden;
		box-shadow: 0 16px 36px rgba(0, 0, 0, 0.12);
	}
	.exp_overlap_sub img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	/* Menu list & Centered notes */
	.exp_menu_list {
		font-family: var(--font_ja);
		font-size: calc(15 * var(--u));
		line-height: calc(30 * var(--u));
		letter-spacing: 0.1em;
		color: #2b2b2b;
		text-align: center;
		padding: 0;
		border: 0;
		margin: 0;
		word-break: break-word;
	}
	.exp_divider_line {
		width: 100%;
		height: 1px;
		background: #e6e3dc;
		margin: calc(32 * var(--u)) 0;
	}
	.exp_note_center {
		text-align: center;
		font-family: var(--font_ja);
		font-size: calc(14 * var(--u));
		line-height: calc(26 * var(--u));
		color: #666;
		letter-spacing: 0.05em;
		margin: calc(40 * var(--u)) 0 calc(20 * var(--u));
	}
	.exp_latest_news {
		margin-top: calc(44 * var(--u));
	}
	#exp_tea .exp_divider_line {
		margin-top: calc(115 * var(--u));
	}

	/* タブレット縦向き（≤1024px）およびモバイル表示時は1カラム化し、exp_sub_row内の画像を水平中央に配置する */
	@media (max-width: 1024px) {
		.exp_sec {
			padding-top: 32px;
			padding-bottom: 32px;
		}
		.exp_lead_sec {
			padding: 60px 0 20px;
		}
		.exp_lead_sec h2.title_center {
			font-size: 24px;
			line-height: 1.5;
			letter-spacing: 0.12em;
			margin-bottom: 28px;
			white-space: normal;
		}
		.exp_lead_sec > .container > p {
			max-width: 640px;
			font-size: 14px;
			line-height: 2.2;
			letter-spacing: 0.025em;
		}
		.exp_pills {
			gap: 12px;
			margin-top: 28px;
		}
		.exp_pill_btn {
			min-width: 135px;
			padding: 11px 24px;
			font-size: 14px;
			line-height: 1.5;
		}
		.exp_pill_btn svg {
			width: 10px;
			height: 6px;
		}
		.exp_triptych {
			grid-template-columns: 1fr;
			gap: 12px;
			width: 100%;
			height: auto;
			margin: 32px 0 40px;
			margin-left: 0;
		}
		.exp_triptych figure {
			height: auto;
			aspect-ratio: 4 / 3;
		}
		.exp_sec_header {
			margin-bottom: 32px;
		}
		.exp_sec_header .en {
			font-size: 13px;
			line-height: 1.6;
			letter-spacing: 0.2em;
			margin-bottom: 8px;
		}
		.exp_sec_header .ja {
			font-size: 24px;
			line-height: 1.5;
			letter-spacing: 0.12em;
		}
		.exp_split_row,
		.exp_split_row.spa_row,
		.exp_sub_row {
			grid-template-columns: 1fr;
			gap: 28px;
			margin-bottom: 44px;
		}
		.exp_feature_row {
			width: 100%;
			margin-left: 0;
		}
		.exp_sub_row {
			grid-template-columns: 1fr;
			width: 100%;
			margin-right: auto;
			margin-left: auto;
			justify-items: center;
		}
		#exp_kaiseki .exp_feature_row,
		#exp_tea .exp_feature_row,
		#exp_kaiseki .exp_sub_row,
		#exp_tea .exp_sub_row {
			grid-template-columns: 1fr;
		}
		.exp_split_row figure,
		.exp_sub_row figure,
		#exp_kaiseki .exp_feature_row figure,
		#exp_tea .exp_feature_row figure {
			aspect-ratio: 16 / 11;
		}
		.exp_sub_row figure {
			width: 100%;
			max-width: 640px;
			margin-right: auto;
			margin-left: auto;
			justify-self: center;
		}
		#exp_tea .exp_sub_row figure {
			aspect-ratio: 3 / 4;
			max-width: 360px;
			width: 100%;
			margin-right: auto;
			margin-left: auto;
			justify-self: center;
		}
		.exp_sub_row figure img {
			display: block;
			width: 100%;
			height: 100%;
			object-fit: cover;
			margin-right: auto;
			margin-left: auto;
		}
		.exp_text_block {
			width: 100%;
			max-width: 640px;
			margin: 0 auto;
			align-items: center;
			text-align: center;
		}
		.exp_vhead_wrap {
			justify-content: center;
			margin-bottom: 20px;
		}
		.exp_vhead {
			writing-mode: horizontal-tb;
			font-size: 22px;
			line-height: 1.5;
			letter-spacing: 0.08em;
			white-space: normal;
		}
		.exp_desc {
			font-size: 14px;
			line-height: 2.2;
			letter-spacing: 0.025em;
			padding-right: 20px;
			padding-left: 20px;
			text-align: center;
		}
		.experience_page #exp_spa .btn_c_warp {
			margin-top: 28px;
		}
		#exp_spa .exp_text_block {
			padding-right: 0;
		}
		.exp_sub_ttl {
			font-size: 20px;
			line-height: 1.5;
			margin-bottom: 20px;
		}
		.exp_overlap_wrap {
			padding-bottom: 0;
			height: auto;
			display: grid;
			grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
			gap: 12px;
		}
		.exp_overlap_main {
			width: 100%;
			height: auto;
			margin: 0;
			aspect-ratio: 4 / 3;
		}
		.exp_overlap_sub {
			position: static;
			width: 100%;
			height: auto;
			box-shadow: none;
			aspect-ratio: 4 / 3;
		}
		.exp_menu_list {
			font-size: 15px;
			line-height: 1.9;
			padding: 0;
		}
		.exp_note_center {
			font-size: 13px;
			line-height: 2.2;
			margin: 32px 0 16px;
		}
		.exp_latest_news {
			margin-top: 28px;
		}
		.exp_divider_line {
			margin: 24px 0;
		}
		#exp_tea .exp_divider_line {
			margin-top: 48px;
		}
	}
	@media (max-width: 767px) {
		.exp_pills {
			gap: 10px;
			margin-top: 24px;
		}
		.exp_pill_btn {
			min-width: 0;
			padding: 10px 16px;
			font-size: 13px;
		}
		.exp_overlap_wrap {
			grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
		}
	}

	/**********************************************
		ROOM & FACILITY ページ (宿泊・客室・施設)
	********************************************* */
	.room_lead_sec {
		padding-top: calc(100 * var(--u));
		/* padding-bottom: calc(110 * var(--u)); */
		text-align: center;
	}
	.room_lead_sec h2.title_center {
		font-family: var(--font_ja);
		font-size: calc(36 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.18em;
		color: #1a1a1a;
		font-weight: 500;
		margin-bottom: 0;
		white-space: nowrap;
	}

	/* Section Base Layout */
	.room_sec {
		position: relative;
		margin-bottom: calc(100 * var(--u));
		width: 100%;
		overflow-x: clip;
		overflow-y: visible;
		padding-top: calc(40 * var(--u));
		padding-bottom: calc(50 * var(--u));
	}

	/* Bleed layout containers: 1330px centered content grid */
	.room_grid_layout {
		max-width: var(--max-width);
		margin: 0 auto;
		display: grid;
		width: 100%;
		min-height: calc(480 * var(--u));
		box-sizing: border-box;
		position: relative;
	}
	.room_bleed_right .room_grid_layout {
		padding-right: 0;
		padding-left: calc(45 * var(--u));
	}
	.room_bleed_left .room_grid_layout {
		padding-left: 0;
		padding-right: calc(45 * var(--u));
	}

	/* Specific Section Grid Geometries based on 1330px Artboard */
	#room_annex .room_grid_layout {
		grid-template-columns: minmax(0, calc(420 * var(--u))) minmax(0, 1fr);
		gap: calc(200 * var(--u));
	}
	#room_spa .room_grid_layout {
		grid-template-columns: minmax(0, calc(500 * var(--u))) minmax(0, 1fr);
		gap: calc(85 * var(--u));
	}
	#room_main_house .room_grid_layout {
		grid-template-columns: minmax(0, calc(420 * var(--u))) minmax(0, 1fr);
		gap: calc(155 * var(--u));
	}
	#room_tea_house .room_grid_layout {
		grid-template-columns: minmax(0, calc(775 * var(--u))) minmax(0, 1fr);
		gap: calc(90 * var(--u));
	}

	/* Text block: badge at top, description at bottom */
	.room_text_block {
		display: flex;
		flex-direction: column;
		justify-content: space-between;
		height: 100%;
		min-width: 0;
		min-height: calc(480 * var(--u));
		box-sizing: border-box;
	}
	.room_grid_layout.reverse .room_text_block {
		max-width: calc(465 * var(--u));
		margin-left: auto;
	}

	/* Vertical Badges */
	.room_badge {
		display: inline-flex;
		align-items: flex-start;
		flex-shrink: 0;
		border-left: 1px solid #1a1a1a;
		padding-left: calc(18 * var(--u));
		gap: calc(12 * var(--u));
		align-self: center;
	}
	.room_badge .ja {
		writing-mode: vertical-rl;
		font-family: var(--font_ja);
		font-size: calc(24 * var(--u));
		line-height: 1.2;
		letter-spacing: 0.08em;
		font-weight: 500;
		color: #1a1a1a;
		margin: 0;
		white-space: nowrap;
	}
	.room_badge .en {
		writing-mode: vertical-rl;
		font-family: var(--font_en);
		font-size: calc(13 * var(--u));
		letter-spacing: 0.18em;
		color: #888;
		text-transform: uppercase;
		margin-top: calc(4 * var(--u));
	}

	/* Room Description Text */
	.room_desc {
		font-family: var(--font_ja);
		font-size: calc(16 * var(--u));
		line-height: calc(36 * var(--u));
		letter-spacing: 0.025em;
		color: #3f3f3f;
		margin: 0;
		word-break: break-word;
	}

	/* Bleed Media Containers */
	.room_media_wrap {
		position: relative;
		width: 100%;
		height: 100%;
		min-width: 0;
		min-height: calc(480 * var(--u));
	}

	/* 1. Annex Cluster (Right Bleed) */
	.room_annex_cluster {
		position: relative;
		width: 100%;
		min-width: 0;
		height: calc(640 * var(--u));
	}
	.room_bleed_right .room_annex_cluster .main_img {
		position: absolute;
		top: 0;
		left: 0;
		bottom: 0;
		right: calc(-1 * max(0px, (100vw - var(--max-width)) / 2));
	}
	.room_annex_cluster .main_img img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		object-position: center bottom;
		display: block;
	}
	.room_annex_cluster .sub_top {
		position: absolute;
		top: calc(-60 * var(--u));
		left: calc(-140 * var(--u));
		width: calc(220 * var(--u));
		aspect-ratio: 4 / 3;
		z-index: 2;
		box-shadow: 0 16px 36px rgba(0, 0, 0, 0.12);
	}
	.room_annex_cluster .sub_top img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}
	.room_annex_cluster .sub_bottom {
		position: absolute;
		bottom: calc(-35 * var(--u));
		left: calc(-180 * var(--u));
		width: calc(260 * var(--u));
		aspect-ratio: 4 / 3;
		z-index: 2;
		box-shadow: 0 16px 36px rgba(0, 0, 0, 0.12);
	}
	.room_annex_cluster .sub_bottom img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	/* 2. Spa Cluster (Left Bleed) */
	.room_spa_cluster {
		position: relative;
		width: 100%;
		min-width: 0;
		height: calc(480 * var(--u));
	}
	.room_bleed_left .room_spa_cluster .spa_main {
		position: absolute;
		top: 0;
		right: 0;
		bottom: 0;
		left: calc(-1 * max(0px, (100vw - var(--max-width)) / 2));
	}
	.room_spa_cluster .spa_main img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}
	.room_spa_cluster .spa_sub {
		position: absolute;
		bottom: calc(-38 * var(--u));
		left: calc(100% - 60 * var(--u));
		width: calc(340 * var(--u));
		aspect-ratio: 4 / 3;
		z-index: 2;
		box-shadow: 0 16px 36px rgba(0, 0, 0, 0.12);
	}
	.room_spa_cluster .spa_sub img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	/* 3. Main House Cluster (Right Bleed) */
	.room_main_cluster {
		position: relative;
		width: 100%;
		min-width: 0;
		height: calc(480 * var(--u));
	}
	.room_bleed_right .room_main_cluster .main_bld_img {
		position: absolute;
		top: 0;
		left: 0;
		bottom: 0;
		right: calc(-1 * max(0px, (100vw - var(--max-width)) / 2));
	}
	.room_main_cluster .main_bld_img img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}
	.room_main_cluster .main_bld_sub {
		position: absolute;
		bottom: calc(-118 * var(--u));
		left: calc(-86 * var(--u));
		width: calc(280 * var(--u));
		aspect-ratio: 4 / 3;
		z-index: 2;
		box-shadow: 0 16px 36px rgba(0, 0, 0, 0.12);
	}
	.room_main_cluster .main_bld_sub img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	/* 4. Tea House Cluster (Left Bleed) — mirrors SPA Cluster pattern */
	#room_tea_house {
		margin-top: calc(160 * var(--u));
	}

	.room_tea_cluster {
		position: relative;
		width: 100%;
		min-width: 0;
		height: calc(480 * var(--u));
	}
	.room_bleed_left .room_tea_cluster .room_tea_single {
		position: absolute;
		top: 0;
		right: 0;
		bottom: 0;
		left: calc(-1 * max(0px, (100vw - var(--max-width)) / 2));
	}
	.room_tea_cluster .room_tea_single img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	.room_specs_sec {
		margin-bottom: calc( 50 * var(--u));
	}
	/* 5. Specifications & Triptych */
	.room_specs_sec .exp_sec_header {
		text-align: center;
		margin-bottom: calc(50 * var(--u));
	}
	.room_specs_sec .exp_sec_header .en {
		display: block;
		font-family: var(--font_en);
		font-size: calc(14 * var(--u));
		line-height: calc(22 * var(--u));
		letter-spacing: 0.25em;
		color: #888;
		margin-bottom: calc(12 * var(--u));
	}
	.room_specs_sec .exp_sec_header .ja {
		font-family: var(--font_ja);
		font-size: calc(36 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.18em;
		font-weight: 500;
		color: #1a1a1a;
		margin: 0;
	}

	.room_specs_triptych {
		width: 100vw;
		margin-left: calc(50% - 50vw);
		display: grid;
		grid-template-columns: 1fr 1.3fr 1fr;
		gap: calc(12 * var(--u));
		height: calc(480 * var(--u));
		min-height: 320px;
		margin-bottom: calc(80 * var(--u));
	}
	.room_specs_triptych figure,
	.room_specs_triptych .triptych_item {
		width: 100%;
		height: 100%;
		overflow: hidden;
		margin: 0;
	}
	.room_specs_triptych figure img,
	.room_specs_triptych .triptych_item img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	/* Specs Table */
	.room_specs_table {
		max-width: calc(1360 * var(--u));
		margin: 0 auto;
		border-top: 1px solid #e0dbd3;
	}
	.room_specs_row {
		display: grid;
		grid-template-columns: calc(200 * var(--u)) 1fr;
		padding: calc(24 * var(--u)) calc(8 * var(--u));
		border-bottom: 1px solid #e0dbd3;
		align-items: baseline;
	}
	.room_specs_th {
		font-size: calc(16 * var(--u));
		letter-spacing: 0.12em;
		color: #1a1a1a;
		font-weight: 500;
	}
	.room_specs_td {
		font-size: calc(15 * var(--u));
		color: #444;
		line-height: calc(30 * var(--u));
		letter-spacing: 0.04em;
	}

	/* Center Vertical Divider */
	.room_sec_divider {
		display: flex;
		justify-content: center;
		margin: calc(70 * var(--u)) 0;
	}
	.room_sec_divider .divider_line,
	.room_sec_divider::after {
		content: "";
		display: block;
		width: 1px;
		height: calc(60 * var(--u));
		background: #1a1a1a;
	}
	.room_sec_divider:has(.divider_line)::after {
		display: none;
	}

	/* Responsive Media Queries */
	@media (max-width: 991px) {
		.room_sec {
			margin-bottom: 80px;
			overflow-x: visible;
			padding-top: 0;
			padding-bottom: 0;
		}
		#room_tea_house {
			margin-top: 0;
		}
		.room_grid_layout,
		.room_grid_layout.reverse,
		#room_annex .room_grid_layout,
		#room_spa .room_grid_layout,
		#room_main_house .room_grid_layout,
		#room_tea_house .room_grid_layout {
			grid-template-columns: 1fr;
			gap: 30px;
			min-height: auto;
			padding: 0 20px !important;
		}
		.room_text_block,
		#room_annex .room_text_block {
			padding: 0;
			height: auto;
			min-height: auto;
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: flex-start;
			text-align: center;
			margin: 0 auto;
			max-width: 640px;
			width: 100%;
		}
		.room_grid_layout.reverse .room_text_block {
			max-width: 640px;
			margin-left: auto;
			margin-right: auto;
		}
		.room_grid_layout.reverse > .room_text_block {
			order: 1;
		}
		.room_grid_layout.reverse > .room_media_wrap {
			order: 2;
		}
		.room_badge {
			margin-bottom: 20px;
			padding-left: 12px;
			border-left: 2px solid #1a1a1a;
			align-items: baseline;
			align-self: center;
			display: inline-flex;
		}
		.room_badge .ja {
			font-size: 22px;
			writing-mode: horizontal-tb;
		}
		.room_badge .en {
			writing-mode: horizontal-tb;
			font-size: 12px;
			margin-top: 0;
			margin-left: 8px;
		}
		.room_desc {
			font-size: 14px;
			line-height: 2.2;
			text-align: center;
		}
		.room_lead_sec h2.title_center {
			font-size: 24px;
			line-height: 1.5;
			letter-spacing: 0.12em;
			margin-bottom: 28px;
			white-space: normal;
		}

		/* Bleed resets for mobile */
		.room_media_wrap {
			min-height: auto;
			height: auto;
			min-width: 0;
		}
		.room_annex_cluster,
		.room_spa_cluster,
		.room_main_cluster,
		.room_tea_cluster {
			height: auto;
			min-height: auto;
			position: static;
			max-width: 640px;
			width: 100%;
			margin: 0 auto;
		}
		.room_bleed_right .room_annex_cluster .main_img {
			position: static;
			width: 100%;
			height: auto;
			aspect-ratio: 3 / 2;
			right: auto;
			left: auto;
		}
		.room_bleed_left .room_tea_cluster .room_tea_single {
			position: static;
			width: 100%;
			height: auto;
			aspect-ratio: 16 / 10;
			right: auto;
			left: auto;
		}
		.room_annex_cluster {
			display: grid;
			grid-template-columns: 1fr 1fr;
			gap: 12px;
		}
		.room_annex_cluster .main_img {
			grid-column: span 2;
		}
		.room_annex_cluster .sub_top,
		.room_annex_cluster .sub_bottom {
			position: static;
			width: 100%;
			box-shadow: none;
			aspect-ratio: 4 / 3;
		}
		.room_spa_cluster,
		.room_main_cluster {
			display: grid;
			grid-template-columns: 1fr 1fr;
			gap: 12px;
		}
		.room_annex_cluster > *,
		.room_spa_cluster > *,
		.room_main_cluster > *,
		.room_tea_cluster > * {
			min-width: 0;
		}
		.room_bleed_left .room_spa_cluster .spa_main,
		.room_spa_cluster .spa_sub,
		.room_bleed_right .room_main_cluster .main_bld_img,
		.room_main_cluster .main_bld_sub {
			position: static;
			width: 100%;
			height: auto;
			box-shadow: none;
			aspect-ratio: 4 / 3;
			right: auto;
			left: auto;
		}
		.room_specs_triptych {
			grid-template-columns: 1fr;
			height: auto;
			min-height: auto;
			gap: 8px;
			width: 100%;
			margin-left: 0;
			margin-bottom: 40px;
		}
		.room_specs_triptych figure,
		.room_specs_triptych .triptych_item {
			aspect-ratio: 16 / 9;
		}
		.room_specs_table {
			max-width: 100%;
		}
		.room_specs_row {
			grid-template-columns: 130px 1fr;
			padding: 16px 8px;
		}
		.room_specs_th {
			font-size: 15px;
		}
		.room_specs_td {
			font-size: 14px;
			line-height: 1.8;
		}
		.room_specs_sec .exp_sec_header .ja {
			font-size: 24px;
			line-height: 1.5;
			letter-spacing: 0.12em;
		}
		.room_specs_sec .exp_sec_header .en {
			font-size: 13px;
			line-height: 1.6;
			letter-spacing: 0.2em;
			margin-bottom: 8px;
		}
	}

	@media (max-width: 767px) {
		.room_specs_row {
			grid-template-columns: 1fr;
			gap: 6px;
			padding: 12px 0;
		}
	}

	/* ============================================================
		NEWS ページ（お知らせ・メディア）
	============================================================ */
	.news_list_sec {
		padding-top: calc(90 * var(--u));
		padding-bottom: calc(140 * var(--u));
		background: #fff;
	}

	.news_list_sec .container {
		max-width: 1340px !important;
		width: 100% !important;
		padding-inline: clamp(20px, 3.5vw, 40px);
	}

	.news_page_layout {
		display: block;
		width: 100%;
	}

	.news_page_layout:has(.news_sidebar) {
		display: grid;
		grid-template-columns: minmax(0, 1fr) 240px;
		column-gap: calc(56 * var(--u));
		row-gap: calc(40 * var(--u));
		align-items: start;
	}

	.news_page_layout.no_sidebar {
		display: block;
		width: 100%;
	}

	.news_content_area {
		min-width: 0;
		width: 100%;
	}

	.news_cards_grid {
		display: grid;
		grid-template-columns: repeat(4, minmax(0, 1fr));
		column-gap: calc(32 * var(--u));
		row-gap: calc(54 * var(--u));
	}

	.news_card {
		display: flex;
		flex-direction: column;
		transition: opacity 0.35s cubic-bezier(0.25, 1, 0.5, 1), transform 0.35s cubic-bezier(0.25, 1, 0.5, 1);
	}

	.news_card.is-hidden {
		display: none;
	}

	.news_card_link {
		display: flex;
		flex-direction: column;
		text-decoration: none;
		color: inherit;
		height: 100%;
	}

	.news_card_thumb {
		position: relative;
		width: 100%;
		aspect-ratio: 207 / 139;
		overflow: hidden;
		background: #eee;
		border-radius: 1px;
		margin: 0;
	}

	.news_card_thumb img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
		transition: transform 0.6s cubic-bezier(0.25, 1, 0.5, 1);
	}

	.news_card_link:hover .news_card_thumb img {
		transform: scale(1.05);
	}

	.news_card_meta {
		display: flex;
		align-items: center;
		margin-top: calc(16 * var(--u));
		margin-bottom: calc(10 * var(--u));
		gap: calc(12 * var(--u));
	}

	.news_card_date {
		font-family: var(--font-en_1, 'Noto Serif JP', serif);
		font-size: clamp(12px, calc(13 * var(--u)), 14px);
		color: #737373;
		letter-spacing: 0.04em;
		line-height: 1;
		white-space: nowrap;
		flex-shrink: 0;
	}

	.news_card_badge {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		padding: 2px clamp(6px, calc(8 * var(--u)), 10px);
		border: 1px solid #7ea3e3;
		color: #4d79d1;
		font-size: clamp(10.5px, calc(11 * var(--u)), 12px);
		font-weight: 500;
		line-height: 1.35;
		letter-spacing: 0.04em;
		border-radius: 2px;
		background: #fff;
		white-space: nowrap;
		flex-shrink: 0;
		transition: background 0.3s ease, border-color 0.3s ease, color 0.3s ease;
	}

	.news_card_link:hover .news_card_badge {
		border-color: #4d79d1;
		background: #f0f5ff;
	}

	.news_card_title {
		margin: 0;
		font-family: var(--font-jp);
		font-size: clamp(14px, calc(15 * var(--u)), 16px);
		font-weight: 500;
		line-height: 1.75;
		letter-spacing: 0.04em;
		color: #222;
		transition: color 0.3s ease;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical;
		overflow: hidden;
	}

	.news_card_link:hover .news_card_title {
		color: #8e7249;
	}

	/* 右側 CATEGORY サイドバー */
	.news_sidebar {
		position: sticky;
		top: 120px;
		padding-left: calc(24 * var(--u));
	}

	.news_sidebar_ttl {
		font-family: var(--font-en_1, 'Noto Serif JP', serif);
		font-size: calc(21 * var(--u));
		font-weight: 400;
		letter-spacing: 0.22em;
		color: #222;
		margin: 0 0 calc(28 * var(--u));
		text-transform: uppercase;
		line-height: 1.2;
	}

	.news_cat_list {
		list-style: none;
		margin: 0;
		padding: 0;
		display: flex;
		flex-direction: column;
		gap: calc(16 * var(--u));
	}

	.news_cat_item {
		margin: 0;
		padding: 0;
	}

	.news_cat_btn {
		display: inline-flex;
		align-items: baseline;
		background: none;
		border: none;
		padding: 0;
		cursor: pointer;
		font-family: inherit;
		color: #444;
		text-decoration: none;
		font-size: calc(14 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.05em;
		transition: color 0.25s ease, transform 0.25s ease;
	}

	.news_cat_btn .arrow {
		display: inline-block;
		margin-right: calc(8 * var(--u));
		color: #999;
		font-family: var(--font-en_1, serif);
		font-size: calc(16 * var(--u));
		transition: transform 0.25s ease, color 0.25s ease;
	}

	.news_cat_btn .name {
		color: inherit;
	}

	.news_cat_btn .count {
		margin-left: calc(5 * var(--u));
		color: #888;
		font-family: var(--font-en_1, 'Noto Serif JP', serif);
		font-size: calc(13 * var(--u));
	}

	.news_cat_btn:hover {
		color: #111;
	}

	.news_cat_btn:hover .arrow {
		color: #111;
		transform: translateX(3px);
	}

	.news_cat_item.is-active .news_cat_btn {
		color: #111;
		font-weight: 600;
	}

	.news_cat_item.is-active .news_cat_btn .arrow {
		color: #111;
		font-weight: 600;
	}

	.news_cat_item.is-active .news_cat_btn .count {
		color: #222;
		font-weight: 600;
	}

	/* レスポンシブ表示 */
	@media (max-width: 1279px) {
		.news_list_sec {
			padding-top: 70px;
			padding-bottom: 110px;
		}
		.news_page_layout:has(.news_sidebar) {
			grid-template-columns: minmax(0, 1fr) 200px;
			column-gap: clamp(24px, 3vw, 36px);
		}
		.news_cards_grid {
			grid-template-columns: repeat(3, minmax(0, 1fr));
			column-gap: clamp(20px, 2.5vw, 28px);
			row-gap: 42px;
		}
		.news_card_meta {
			margin-top: 14px;
			margin-bottom: 8px;
			gap: 10px;
		}
		.news_card_date {
			font-size: 13px;
		}
		.news_card_badge {
			font-size: 11px;
			padding: 2px 8px;
		}
		.news_card_title {
			font-size: 15px;
			line-height: 1.7;
		}
		.news_sidebar {
			top: 100px;
			padding-left: clamp(12px, 1.5vw, 18px);
		}
		.news_sidebar_ttl {
			font-size: 18px;
			letter-spacing: 0.18em;
			margin-bottom: 20px;
		}
		.news_cat_list {
			gap: 14px;
		}
		.news_cat_btn {
			font-size: 13.5px;
		}
	}

	@media (max-width: 1023px) {
		.news_list_sec {
			padding-top: 50px;
			padding-bottom: 80px;
		}
		.news_page_layout:has(.news_sidebar) {
			display: flex;
			flex-direction: column-reverse;
			gap: 32px;
		}
		.news_sidebar {
			position: static;
			top: auto;
			padding-left: 0;
			width: 100%;
			border-bottom: 1px solid #e8e6e1;
			padding-bottom: 20px;
			margin-bottom: 8px;
		}
		.news_sidebar_ttl {
			font-size: 17px;
			letter-spacing: 0.16em;
			margin-bottom: 14px;
		}
		.news_cat_list {
			flex-direction: row;
			flex-wrap: wrap;
			gap: 10px;
		}
		.news_cat_btn {
			font-size: 13.5px;
			padding: 6px 14px;
			border-radius: 9999px;
			background: #fff;
			border: 1px solid #ddd;
		}
		.news_cat_btn .arrow {
			display: none;
		}
		.news_cat_item.is-active .news_cat_btn {
			background: #222;
			color: #fff;
			border-color: #222;
		}
		.news_cat_item.is-active .news_cat_btn .count {
			color: #e0e0e0;
		}
		.news_cards_grid {
			grid-template-columns: repeat(2, minmax(0, 1fr));
			column-gap: 20px;
			row-gap: 36px;
		}
		.news_card_date {
			font-size: 12.5px;
		}
		.news_card_badge {
			font-size: 11px;
			padding: 2px 7px;
		}
		.news_card_title {
			font-size: 14.5px;
			line-height: 1.7;
		}
	}

	@media (max-width: 640px) {
		.news_list_sec {
			padding-top: 36px;
			padding-bottom: 60px;
		}
		.news_cards_grid {
			grid-template-columns: 1fr;
			row-gap: 28px;
		}
		.news_card_meta {
			margin-top: 12px;
			margin-bottom: 6px;
		}
		.news_card_title {
			font-size: 14.5px;
			line-height: 1.65;
		}
	}

	/* ============================================================
		NEWS 記事詳細ページ（Single Post Detail）
	============================================================ */
	.news_detail_sec {
		padding-top: calc(70 * var(--u));
		padding-bottom: calc(130 * var(--u));
		background: #fff;
	}

	.news_detail_container {
		max-width: 860px;
		margin: 0 auto;
	}


	.news_detail_header {
		padding-bottom: calc(28 * var(--u));
		border-bottom: 1px solid #e8e6e1;
		margin-bottom: calc(36 * var(--u));
	}

	.news_detail_meta {
		display: flex;
		align-items: center;
		gap: calc(14 * var(--u));
		margin-bottom: calc(14 * var(--u));
	}

	.news_detail_date {
		font-family: var(--font-en_1, 'Noto Serif JP', serif);
		font-size: calc(14 * var(--u));
		color: #707070;
		letter-spacing: 0.04em;
		line-height: 1;
	}

	.news_detail_title {
		font-family: var(--font-jp);
		font-size: clamp(1.4rem, 1.2rem + 0.9vw, 1.95rem);
		line-height: 1.6;
		letter-spacing: 0.04em;
		color: #222;
		font-weight: 500;
		margin: 0;
	}

	.news_detail_thumb {
		margin: calc(36 * var(--u)) 0;
		overflow: hidden;
		border-radius: 2px;
		background: #f5f5f3;
		aspect-ratio: 16 / 10;
	}

	.news_detail_thumb img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	.news_detail_body {
		font-family: var(--font-jp);
		font-size: calc(15.5 * var(--u));
		line-height: 2.15;
		letter-spacing: 0.05em;
		color: #333;
	}

	.news_detail_body p {
		margin-bottom: 2em;
	}

	.news_detail_body h3 {
		font-size: calc(20 * var(--u));
		font-weight: 500;
		letter-spacing: 0.06em;
		color: #222;
		margin: 2.4em 0 1em;
		padding-bottom: 0.5em;
		border-bottom: 1px solid #e8e6e1;
	}

	.news_detail_body blockquote {
		margin: 2.2em 0;
		padding: 1.6em 2em;
		background: #faf8f5;
		border-left: 3px solid #8e7249;
		font-style: normal;
		color: #555;
		line-height: 2;
	}

	.news_detail_body ul {
		margin: 1.5em 0;
		padding-left: 1.5em;
		list-style: disc;
	}

	.news_detail_body ul li {
		margin-bottom: 0.6em;
	}

	/* 投稿本文内のメディアキャプション */
	.news_detail_body figure {
		margin-bottom: 2em;
	}

	.news_detail_body .wp-element-caption,
	.news_detail_body figcaption {
		font-size: calc(13 * var(--u));
		line-height: 1.6;
		color: #666;
		text-align: center;
		margin-top: calc(10 * var(--u));
		letter-spacing: 0.03em;
	}

	/* 底部上下篇分割卡片与一覧返回区 */
	.news_detail_footer {
		margin-top: calc(72 * var(--u));
	}

	.news_detail_footer {
		width: 100%;
		max-width: calc(1020 * var(--u));
		margin: calc(75 * var(--u)) auto 0;
	}

	.news_adjacent_wrap {
		width: 100%;
		border-top: 1px solid #dedede;
		border-bottom: 1px solid #dedede;
	}

	.news_adjacent_grid {
		display: grid;
		grid-template-columns: 1fr 1fr;
		min-height: calc(110 * var(--u));
	}

	.adjacent_item {
		display: flex;
		align-items: stretch;
		position: relative;
	}

	.adjacent_item.prev {
		border-right: 1px solid #dedede;
	}

	.adjacent_link {
		display: flex;
		align-items: center;
		width: 100%;
		padding: calc(24 * var(--u)) calc(32 * var(--u));
		text-decoration: none;
		color: inherit;
		gap: calc(24 * var(--u));
		transition: background-color 0.25s ease;
	}

	.adjacent_link:hover {
		background-color: #faf9f6;
	}

	.adjacent_item.next .adjacent_link {
		justify-content: flex-end;
		text-align: right;
	}

	.adjacent_arrow {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 22px;
		height: 22px;
		color: #333;
		line-height: 1;
		flex-shrink: 0;
		transition: transform 0.25s ease, color 0.25s ease;
	}

	.adjacent_arrow svg {
		width: 20px;
		height: 20px;
		display: block;
	}

	.adjacent_item.prev .adjacent_link:hover .adjacent_arrow {
		transform: translateX(-4px);
		color: #8e7249;
	}

	.adjacent_item.next .adjacent_link:hover .adjacent_arrow {
		transform: translateX(4px);
		color: #8e7249;
	}

	.adjacent_text {
		display: flex;
		flex-direction: column;
		gap: calc(8 * var(--u));
		min-width: 0;
	}

	.adjacent_date {
		font-family: var(--font-en_1, 'Noto Serif JP', serif);
		font-size: calc(13.5 * var(--u));
		color: #666;
		letter-spacing: 0.05em;
		line-height: 1.2;
	}

	.adjacent_title {
		margin: 0;
		font-family: var(--font-jp);
		font-size: calc(14.5 * var(--u));
		color: #222;
		line-height: 1.6;
		letter-spacing: 0.04em;
		font-weight: 400;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical;
		overflow: hidden;
		transition: color 0.25s ease;
	}

	.adjacent_link:hover .adjacent_title {
		color: #8e7249;
	}

	/* 一覧へ戻る ボタン（下划线 + 圆圈箭头） */
	.news_back_list_wrap {
		display: flex;
		justify-content: center;
		margin-top: calc(64 * var(--u));
	}

	.news_back_list_btn {
		display: inline-flex;
		flex-direction: column;
		align-items: center;
		text-decoration: none;
		color: #222;
		cursor: pointer;
	}

	.news_back_list_inner {
		display: inline-flex;
		align-items: center;
		gap: 22px;
		padding: 0 16px 14px;
		transition: color 0.25s ease;
	}

	.news_back_list_txt {
		font-family: var(--font-jp);
		font-size: calc(15.5 * var(--u));
		letter-spacing: 0.14em;
		color: inherit;
		font-weight: 400;
	}

	.news_back_list_circle {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 22px;
		height: 22px;
		border: 1px solid currentColor;
		border-radius: 50%;
		flex-shrink: 0;
		transition: transform 0.25s ease;
	}

	.news_back_list_circle svg {
		width: 10px;
		height: 10px;
		display: block;
	}

	.news_back_list_line {
		display: block;
		width: calc(280 * var(--u));
		max-width: 100%;
		height: 1px;
		background: #222;
		transition: background-color 0.25s ease, transform 0.25s ease;
	}

	.news_back_list_btn:hover .news_back_list_inner {
		color: #8e7249;
	}

	.news_back_list_btn:hover .news_back_list_circle {
		transform: translateX(4px);
		border-color: #8e7249;
	}

	.news_back_list_btn:hover .news_back_list_line {
		background: #8e7249;
	}

	@media (max-width: 1023px) {
		.news_detail_sec {
			padding-top: 50px;
			padding-bottom: 80px;
		}
		.news_detail_header {
			padding-bottom: 20px;
			margin-bottom: 24px;
		}
		.news_detail_date {
			font-size: 13px;
		}
		.news_detail_title {
			font-size: 1.4rem;
		}
		.news_detail_thumb {
			margin: 24px 0;
		}
		.news_detail_body {
			font-size: 15px;
			line-height: 1.95;
		}
		.news_detail_body h3 {
			font-size: 18px;
		}
		.news_detail_body .wp-element-caption,
		.news_detail_body figcaption {
			font-size: 13px;
			margin-top: 8px;
		}
		.news_detail_footer {
			margin-top: 50px;
		}
		.adjacent_link {
			padding: 20px 24px;
			gap: 16px;
		}
		.adjacent_date {
			font-size: 13px;
		}
		.adjacent_title {
			font-size: 13.5px;
		}
		.news_back_list_wrap {
			margin-top: 48px;
		}
		.news_back_list_txt {
			font-size: 15px;
		}
		.news_back_list_line {
			width: 220px;
		}
	}

	@media (max-width: 640px) {
		.news_adjacent_grid {
			grid-template-columns: 1fr;
		}
		.adjacent_item.prev {
			border-right: none;
			border-bottom: 1px solid #dedede;
		}
		.adjacent_link {
			padding: 16px 14px;
			gap: 12px;
		}
		.adjacent_item.next .adjacent_link {
			justify-content: flex-start;
			text-align: left;
			flex-direction: row;
		}
		.adjacent_item.next .adjacent_link:hover .adjacent_arrow {
			transform: translateX(-4px);
		}
		.news_back_list_wrap {
			margin-top: 36px;
		}
		.news_back_list_line {
			width: 190px;
		}
	}

	/**********************************************
		STAYページ（滞在）
	********************************************* */
	.stay_page #stay_main {
		overflow-x: clip;
	}
	@media (min-width: 992px) {
		.stay_page .stay_model_sec > .container,
		.stay_page .stay_excursion_sec > .container,
		.stay_page .stay_arranged_sec > .container,
		.stay_page .stay_season_sec > .container {
			max-width: var(--max-width);
			padding-inline: max(20px, calc(20 * var(--u)));
		}
	}
	.stay_intro_sec {
		padding-top: calc(100 * var(--u));
		padding-bottom: calc(40 * var(--u));
		overflow: clip;
	}
	.stay_intro_sec > .container {
		padding-bottom: calc(60 * var(--u));
	}
	.stay_intro_title {
		margin: 0;
		font-family: var(--font_ja);
		font-size: calc(36 * var(--u));
		font-weight: 500;
		line-height: 1.5;
		letter-spacing: 0.18em;
		text-align: center;
		white-space: nowrap;
	}
	.stay_intro_copy,
	.stay_section_header p {
		font-family: var(--font_ja);
		font-size: calc(16 * var(--u));
		line-height: calc(36 * var(--u));
		letter-spacing: 0.025em;
		color: #444;
	}
	.stay_intro_copy {
		margin: calc(62 * var(--u)) auto 0;
		text-align: center;
	}
	.stay_anchor_nav {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, calc(240 * var(--u))));
		justify-content: center;
		gap: calc(36 * var(--u));
		margin-top: calc(64 * var(--u));
	}
	.stay_anchor_nav a {
		position: relative;
		display: flex;
		align-items: center;
		justify-content: center;
		min-height: calc(44 * var(--u));
		padding: calc(10 * var(--u)) calc(36 * var(--u)) calc(10 * var(--u)) calc(18 * var(--u));
		border: 1px solid #e3e1dc;
		border-radius: 999px;
		font-family: var(--font_ja);
		font-size: calc(14 * var(--u));
		letter-spacing: 0.08em;
		color: #555;
		transition: border-color 0.3s ease, color 0.3s ease;
	}
	.stay_anchor_nav a:hover,
	.stay_anchor_nav a:focus-visible {
		border-color: #68766f;
		color: #2c5453;
	}
	.stay_anchor_arrow {
		position: absolute;
		right: calc(16 * var(--u));
		top: 50%;
		width: calc(7 * var(--u));
		height: calc(7 * var(--u));
		border-right: 1px solid currentColor;
		border-bottom: 1px solid currentColor;
		transform: translateY(-65%) rotate(45deg);
	}
	.stay_intro_visual {
		width: 100vw;
		height: calc(420 * var(--u));
		margin: 0 calc(50% - 50vw);
		overflow: hidden;
	}
	.stay_intro_visual img,
	.stay_model_image img,
	.stay_attraction_card figure img,
	.stay_arranged_row figure img,
	.stay_month_card figure img {
		display: block;
		width: 100%;
		height: 100%;
		object-fit: cover;
	}
	.stay_intro_visual img {
		object-position: center 58%;
	}
	.stay_section {
		position: relative;
	}
	.stay_section_header {
		max-width: calc(900 * var(--u));
		margin: 0 auto;
		text-align: center;
	}
	.stay_section_header .en {
		display: block;
		margin-bottom: calc(12 * var(--u));
		font-family: var(--font_en);
		font-size: calc(14 * var(--u));
		line-height: calc(22 * var(--u));
		letter-spacing: 0.25em;
		color: #b7b7b2;
	}
	.stay_section_header h2 {
		margin: 0;
		font-family: var(--font_ja);
		font-size: calc(36 * var(--u));
		font-weight: 500;
		line-height: 1.5;
		letter-spacing: 0.18em;
		color: #1a1a1a;
	}
	.stay_section_header p {
		margin: calc(58 * var(--u)) auto 0;
	}
	.stay_model_sec .stay_section_header {
		max-width: calc(1180 * var(--u));
	}
	.stay_model_sec .stay_section_header p {
		white-space: nowrap;
	}
	.stay_model_sec {
		padding-top: calc(40 * var(--u));
		padding-bottom: calc(80 * var(--u));
		border-bottom: 1px solid #e4e1da;
	}
	.stay_model_timeline {
		max-width: calc(960 * var(--u));
		margin: calc(64 * var(--u)) auto 0;
		padding: calc(18 * var(--u)) calc(32 * var(--u));
		border: 1px solid #e4e1da;
		border-radius: 999px;
		text-align: center;
		background-color: #faf9f6;
	}
	.stay_model_timeline p {
		margin: 0;
		font-family: var(--font_ja);
		font-size: calc(15 * var(--u));
		line-height: 1.6;
		letter-spacing: 0.06em;
		color: #555;
	}
	.stay_model_rows {
		margin-top: calc(88 * var(--u));
	}
	.stay_model_row {
		display: grid;
		grid-template-columns: minmax(0, calc(595 * var(--u))) minmax(0, 1fr);
		gap: calc(90 * var(--u));
		align-items: center;
		margin-bottom: calc(120 * var(--u));
	}
	.stay_model_row:last-child {
		margin-bottom: 0;
	}
	.stay_model_row.is-reverse .stay_model_image {
		order: 2;
	}
	.stay_model_row.is-reverse .stay_model_copy {
		order: 1;
	}
	.stay_model_image {
		width: 100%;
		aspect-ratio: 3 / 2;
		margin: 0;
		overflow: hidden;
	}
	.stay_attraction_card figure,
	.stay_arranged_row figure {
		width: 100%;
		aspect-ratio: 4 / 3;
		margin: 0;
		overflow: hidden;
	}
	.stay_model_copy {
		max-width: calc(500 * var(--u));
	}
	.stay_model_copy h3,
	.stay_attraction_card h3,
	.stay_arranged_row h3 {
		font-family: var(--font_ja);
		font-size: calc(24 * var(--u));
		font-weight: 500;
		line-height: 1.5;
		letter-spacing: 0.12em;
		color: #1a1a1a;
	}
	.stay_model_copy h3 {
		margin: 0 0 calc(30 * var(--u));
		text-align: center;
	}
	.stay_model_copy p,
	.stay_attraction_card p,
	.stay_arranged_row p {
		font-family: var(--font_ja);
		font-size: calc(16 * var(--u));
		line-height: calc(34 * var(--u));
		letter-spacing: 0.025em;
		color: #444;
	}
	.stay_model_copy p,
	.stay_attraction_card p,
	.stay_arranged_row p {
		margin: 0;
	}
	.stay_excursion_sec {
		padding-top: calc(80 * var(--u));
		padding-bottom: calc(40 * var(--u));
	}
	.stay_attractions_grid {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: calc(150 * var(--u));
		margin-top: calc(88 * var(--u));
	}
	.stay_attractions_column {
		display: flex;
		flex-direction: column;
		min-width: 0;
	}
	.stay_attractions_column .stay_attraction_card + .stay_attraction_card {
		margin-top: calc(76 * var(--u));
	}
	.stay_attractions_label_slot {
		display: flex;
		justify-content: center;
		height: calc(300 * var(--u));
		padding-top: calc(52 * var(--u));
		box-sizing: border-box;
	}
	.stay_vertical_label {
		display: inline-flex;
		align-items: flex-start;
		gap: calc(12 * var(--u));
		border-left: 1px solid #6b817a;
		padding-left: calc(18 * var(--u));
	}
	.stay_vertical_label .ja {
		writing-mode: vertical-rl;
		font-family: var(--font_ja);
		font-size: calc(24 * var(--u));
		font-weight: 500;
		line-height: 1.3;
		letter-spacing: 0.12em;
		white-space: nowrap;
	}
	.stay_vertical_label .en {
		writing-mode: vertical-rl;
		font-family: var(--font_en);
		font-size: calc(13 * var(--u));
		letter-spacing: 0.18em;
		color: #888;
		white-space: nowrap;
	}
	.stay_attractions_label {
		position: relative;
		min-height: 0;
		border-left: 0;
	}
	.stay_attractions_label::before {
		content: '';
		position: absolute;
		top: 0;
		left: 0;
		width: 1px;
		height: calc(130 * var(--u));
		background: #6b817a;
	}
	.stay_attraction_card {
		min-width: 0;
	}
	.stay_attraction_card figure {
		position: relative;
	}
	.stay_attraction_card figure::after {
		content: '';
		position: absolute;
		inset: 48% 0 0;
		background: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.42));
		pointer-events: none;
	}
	.stay_attraction_card h3 {
		position: absolute;
		right: calc(16 * var(--u));
		bottom: calc(20 * var(--u));
		left: calc(16 * var(--u));
		z-index: 1;
		margin: 0;
		color: #fff;
		text-align: center;
		text-shadow: 0 1px 8px rgba(0, 0, 0, 0.18);
	}
	.stay_attraction_card p {
		margin-top: calc(22 * var(--u));
	}
	.stay_arranged_sec {
		margin-top: calc(48 * var(--u));
		padding-top: calc(44 * var(--u));
		/* border-top: 1px solid #e4e1da; */
	}
	.stay_arranged_header {
		display: grid;
		grid-template-columns: minmax(0, calc(600 * var(--u))) minmax(0, 1fr);
		gap: calc(60 * var(--u));
		align-items: center;
		min-height: calc(250 * var(--u));
		max-width: calc(980 * var(--u));
		margin: 0 auto;
	}
	.stay_arranged_intro {
		max-width: calc(680 * var(--u));
		margin: 0;
		white-space: normal;
		font-family: var(--font_ja);
		font-size: calc(16 * var(--u));
		line-height: calc(36 * var(--u));
		letter-spacing: 0.025em;
		color: #444;
	}
	.stay_arranged_label {
		justify-self: end;
	}
	.stay_arranged_list {
		max-width: calc(1280 * var(--u));
		margin: calc(92 * var(--u)) auto 0;
	}
	.stay_arranged_row {
		display: grid;
		grid-template-columns: minmax(0, calc(345 * var(--u))) minmax(0, 1fr);
		gap: calc(70 * var(--u));
		align-items: center;
		padding: calc(52 * var(--u)) 0 calc(60 * var(--u));
		border-top: 1px solid #e4e1da;
	}
	.stay_page #stay_main .stay_arranged_list > article.stay_arranged_row:first-of-type {
		border-top: 0 !important;
	}
	.stay_page #stay_main .stay_arranged_list > article.stay_arranged_row:last-of-type {
		border-top: 1px solid #e4e1da !important;
		border-bottom: 0 !important;
	}
	.stay_arranged_row h3 {
		margin: 0 0 calc(26 * var(--u));
	}
	.stay_season_sec {
		margin-top: 0;
		padding-top: calc(80 * var(--u));
		padding-bottom: calc(50 * var(--u));
		border-top: 1px solid #e4e1da;
	}
	.stay_season_chart {
		display: block;
		width: calc(100% + calc(80 * var(--u)));
		max-width: calc(1500 * var(--u));
		margin: calc(84 * var(--u)) auto 0;
		padding: 0;
		background: transparent;
	}
	.stay_season_chart img {
		display: block;
		width: 100%;
		height: auto;
	}
	.stay_months_slider {
		position: relative;
		width: 100vw;
		margin: calc(82 * var(--u)) calc(50% - 50vw) 0;
	}
	.stay_months_view {
		width: 100%;
		margin: 0;
		padding: 0 calc(20 * var(--u)) calc(12 * var(--u));
		overflow-x: auto;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
		scroll-behavior: smooth;
		scroll-snap-type: x proximity;
		scroll-padding-left: calc(20 * var(--u));
	}
	.stay_months_view::-webkit-scrollbar {
		display: none;
	}
	.stay_months_track {
		position: relative;
		display: flex;
		gap: calc(60 * var(--u));
		width: max-content;
	}
	.stay_month_card {
		width: calc(440 * var(--u));
		flex: 0 0 calc(440 * var(--u));
		scroll-snap-align: start;
	}
	.stay_months_nav {
		position: absolute;
		top: calc(165 * var(--u));
		transform: translateY(-50%);
		z-index: 10;
		display: flex;
		align-items: center;
		justify-content: center;
		width: calc(56 * var(--u));
		height: calc(56 * var(--u));
		min-width: 44px;
		min-height: 44px;
		padding: 0;
		border-radius: 50%;
		border: 1px solid rgba(0, 0, 0, 0.08);
		background: rgba(255, 255, 255, 0.94);
		backdrop-filter: blur(8px);
		-webkit-backdrop-filter: blur(8px);
		box-shadow: 0 4px 18px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.04);
		color: #1a1a1a;
		cursor: pointer;
		opacity: 1;
		visibility: visible;
		transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease, opacity 0.25s ease, visibility 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
	}
	.stay_months_nav_prev {
		left: max(16px, calc(24 * var(--u)));
	}
	.stay_months_nav_next {
		right: max(16px, calc(24 * var(--u)));
	}
	.stay_months_nav:hover:not(:disabled) {
		background: #1a1a1a;
		color: #ffffff;
		border-color: #1a1a1a;
		box-shadow: 0 6px 24px rgba(0, 0, 0, 0.16);
	}
	.stay_months_nav_prev:hover:not(:disabled) {
		transform: translateY(-50%) translateX(-3px);
	}
	.stay_months_nav_next:hover:not(:disabled) {
		transform: translateY(-50%) translateX(3px);
	}
	.stay_months_nav:active:not(:disabled) {
		transform: translateY(-50%) scale(0.94);
	}
	.stay_months_nav:focus-visible {
		outline: 2px solid #8e7249;
		outline-offset: 3px;
	}
	.stay_months_nav:disabled,
	.stay_months_nav.is-disabled {
		opacity: 0;
		visibility: hidden;
		pointer-events: none;
	}
	.stay_months_nav_arrow {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: calc(22 * var(--u));
		height: calc(22 * var(--u));
		min-width: 18px;
		min-height: 18px;
		line-height: 1;
	}
	.stay_months_nav_arrow svg {
		display: block;
		width: 100%;
		height: 100%;
	}
	.stay_month_card figure {
		position: relative;
	}
	.stay_month_name {
		position: absolute;
		bottom: 0;
		left: calc(22 * var(--u));
		display: flex;
		align-items: center;
		justify-content: center;
		min-width: calc(54 * var(--u));
		min-height: calc(68 * var(--u));
		padding: calc(10 * var(--u));
		background: #fff;
		font-family: var(--font_ja);
		font-size: calc(18 * var(--u));
		line-height: 1.4;
		writing-mode: vertical-rl;
		letter-spacing: 0.12em;
		color: #1a1a1a;
	}
	.stay_month_card dl {
		margin: calc(20 * var(--u)) 0 0;
		font-family: var(--font_ja);
		font-size: calc(14 * var(--u));
		line-height: calc(28 * var(--u));
		letter-spacing: 0.025em;
		color: #444;
	}
	.stay_month_card dl div {
		display: grid;
		grid-template-columns: calc(92 * var(--u)) minmax(0, 1fr);
	}
	.stay_month_card dt {
		position: relative;
		padding-right: calc(14 * var(--u));
		white-space: nowrap;
	}
	.stay_month_card dt::after {
		content: '';
		position: absolute;
		right: calc(6 * var(--u));
		top: 50%;
		width: 1px;
		height: calc(16 * var(--u));
		background: #c6c6c1;
		transform: translateY(-50%);
	}
	.stay_month_card dd {
		margin: 0;
	}
	@media (min-width: 992px) and (max-width: 1279px) {
		.stay_model_row,
		.stay_model_row.is-reverse {
			grid-template-columns: 1fr;
			gap: 48px;
		}
		.stay_model_row.is-reverse .stay_model_image,
		.stay_model_row.is-reverse .stay_model_copy {
			order: initial;
		}
		.stay_model_copy {
			width: 100%;
			max-width: 760px;
			margin: 0 auto;
		}
	}
	@media (max-width: 991px) {
		.stay_intro_sec {
			padding-top: 70px;
			padding-bottom: 32px;
		}
		.stay_intro_sec > .container {
			padding-bottom: 40px;
		}
		.stay_intro_title {
			font-size: 24px;
			line-height: 1.5;
			letter-spacing: 0.12em;
			white-space: normal;
		}
		.stay_intro_copy {
			margin-top: 36px;
			font-size: 14px;
			line-height: 2.2;
		}
		.stay_anchor_nav {
			grid-template-columns: 1fr;
			max-width: 360px;
			gap: 12px;
			margin: 42px auto 0;
		}
		.stay_anchor_nav a {
			min-height: 44px;
			padding: 10px 36px 10px 18px;
			font-size: 14px;
		}
		.stay_anchor_arrow {
			right: 16px;
			width: 7px;
			height: 7px;
		}
		.stay_intro_visual {
			height: 260px;
			margin-top: 0;
		}
		.stay_section_header {
			max-width: 640px;
		}
		.stay_section_header .en {
			margin-bottom: 10px;
			font-size: 12px;
			line-height: 1.6;
		}
		.stay_section_header h2 {
			font-size: 24px;
			line-height: 1.5;
			letter-spacing: 0.12em;
		}
		.stay_section_header p {
			margin-top: 34px;
			font-size: 14px;
			line-height: 2.2;
		}
		.stay_model_sec .stay_section_header p {
			white-space: normal;
		}
		.stay_model_sec {
			padding-top: 40px;
			padding-bottom: 36px;
		}
		.stay_model_timeline {
			margin-top: 36px;
			padding: 16px 20px;
			border-radius: 8px;
		}
		.stay_model_timeline p {
			font-size: 13px;
			line-height: 1.8;
			letter-spacing: 0.04em;
		}
		.stay_model_rows {
			margin-top: 54px;
		}
		.stay_model_row,
		.stay_model_row.is-reverse {
			grid-template-columns: 1fr;
			gap: 30px;
			margin-bottom: 76px;
		}
		.stay_model_row.is-reverse .stay_model_image,
		.stay_model_row.is-reverse .stay_model_copy {
			order: initial;
		}
		.stay_model_copy {
			width: 100%;
			max-width: 640px;
			margin: 0 auto;
			text-align: center;
		}
		.stay_model_copy h3 {
			margin-bottom: 18px;
			font-size: 22px;
			letter-spacing: 0.1em;
		}
		.stay_model_copy p,
		.stay_attraction_card p,
		.stay_arranged_row p {
			font-size: 14px;
			line-height: 2.2;
		}
		.stay_model_copy p {
			text-align: left;
		}
		.stay_excursion_sec {
			padding-top: 48px;
			padding-bottom: 32px;
		}
		.stay_attractions_grid {
			display: grid;
			grid-template-columns: 1fr;
			margin-top: 54px;
		}
		.stay_attractions_column {
			display: contents;
		}
		.stay_attractions_column .stay_attraction_card + .stay_attraction_card {
			margin-top: 0;
		}
		.stay_attractions_label_slot {
			order: 1;
			height: auto;
			padding-top: 0;
			margin: 0 auto 40px;
		}
		.stay_attractions_label {
			min-height: 0;
			border-left: 1px solid #6b817a;
			margin: 0;
		}
		.stay_attractions_label::before {
			display: none;
		}
		.stay_vertical_label {
			align-items: baseline;
			gap: 10px;
			padding-left: 12px;
		}
		.stay_vertical_label .ja,
		.stay_vertical_label .en {
			writing-mode: horizontal-tb;
		}
		.stay_vertical_label .ja {
			font-size: 22px;
		}
		.stay_vertical_label .en {
			font-size: 12px;
		}
		.stay_attraction_card {
			order: 0;
			margin-bottom: 70px;
		}
		.stay_attraction_card_right_top {
			order: 2;
		}
		.stay_attraction_card_left_middle {
			order: 3;
		}
		.stay_attraction_card_right_middle {
			order: 4;
		}
		.stay_attraction_card_left_bottom {
			order: 5;
		}
		.stay_attraction_card_right_bottom {
			order: 6;
			margin-bottom: 0;
		}
		.stay_attraction_card h3 {
			margin: 0;
			bottom: 16px;
			font-size: 22px;
		}
		.stay_attraction_card p {
			margin-top: 12px;
		}
		.stay_arranged_sec {
			margin-top: 36px;
			padding-top: 32px;
		}
		.stay_arranged_header {
			display: flex;
			flex-direction: column;
			gap: 30px;
			min-height: 0;
			max-width: none;
		}
		.stay_arranged_label {
			order: -1;
			align-self: center;
		}
		.stay_arranged_intro {
			max-width: 640px;
			white-space: normal;
			font-size: 14px;
			line-height: 2.2;
			text-align: center;
		}
		.stay_arranged_list {
			margin-top: 54px;
		}
		.stay_arranged_row {
			grid-template-columns: 1fr;
			gap: 26px;
			padding: 40px 0;
		}
		.stay_arranged_row h3 {
			margin-bottom: 16px;
			font-size: 20px;
			letter-spacing: 0.08em;
		}
		.stay_season_sec {
			margin-top: 64px;
			padding-top: 32px;
			padding-bottom: 40px;
		}
		.stay_season_chart {
			width: 100%;
			max-width: none;
			margin-top: 54px;
			padding: 0;
			overflow: visible;
		}
		.stay_months_slider {
			margin-top: 54px;
		}
		.stay_months_view {
			padding: 0 0 10px;
			scroll-padding: 0 max(16px, calc((100vw - 280px) / 2));
			scroll-snap-type: x mandatory;
		}
		.stay_months_track {
			gap: 20px;
			padding-inline: max(16px, calc((100vw - 280px) / 2));
		}
		.stay_month_card {
			width: 280px;
			flex-basis: 280px;
			scroll-snap-align: center;
			scroll-snap-stop: normal;
			cursor: pointer;
		}
		.stay_months_nav {
			top: 105px;
			width: 44px;
			height: 44px;
			min-width: 44px;
			min-height: 44px;
		}
		.stay_months_nav_prev {
			left: 10px;
		}
		.stay_months_nav_next {
			right: 10px;
		}
		.stay_months_nav_arrow {
			width: 18px;
			height: 18px;
		}
		.stay_month_name {
			left: 14px;
			min-width: 44px;
			min-height: 58px;
			font-size: 16px;
		}
		.stay_month_card dl {
			margin-top: 16px;
			font-size: 12px;
			line-height: 2;
		}
		.stay_month_card dl div {
			grid-template-columns: 74px minmax(0, 1fr);
		}
		.stay_month_card dt {
			padding-right: 12px;
		}
		.stay_month_card dt::after {
			right: 5px;
			height: 14px;
		}
	}

	@media (prefers-reduced-motion: reduce) {
		.stay_anchor_nav a {
			transition: none;
		}
		.stay_months_view {
			scroll-behavior: auto;
		}
		.stay_months_nav {
			transition: none;
		}
		.stay_months_nav_prev:hover:not(:disabled),
		.stay_months_nav_next:hover:not(:disabled),
		.stay_months_nav:active:not(:disabled) {
			transform: translateY(-50%);
		}
	}


	/* ==================================================================
	   STORY PAGE (story.html) STYLES — こだわり・物語
	   Strictly complying with AGENTS.md fluid responsive (--u) & bleed architecture
	   ========================================================================== */

	.story_page #kv {
		background: url(../images/story/story_kv.jpg) center center / cover no-repeat;
	}

	/* Section 1: 物語の語り出し (Story Introduction) */
	.story_intro_sec {
		padding-top: calc(120 * var(--u));
		padding-bottom: 0;
	}

	.story_lead_ttl {
		font-family: var(--font_ja, 'Noto Serif JP', serif);
		font-size: calc(32 * var(--u));
		line-height: 1.6;
		letter-spacing: 0.18em;
		font-weight: 500;
		text-align: center;
		color: #1a1a1a;
		margin: 0 auto calc(100 * var(--u));
	}

	.story_row {
		max-width: var(--max-width);
		margin-left: auto;
		margin-right: auto;
		padding-left: calc(30 * var(--u));
		padding-right: calc(30 * var(--u));
		box-sizing: border-box;
	}

	/* Row 1: Left double-image cluster, right text */
	.story_row_1 {
		display: grid;
		grid-template-columns: calc(670 * var(--u)) minmax(0, 1fr);
		gap: calc(55 * var(--u));
		align-items: center;
		margin-bottom: calc(140 * var(--u));
	}

	.story_cluster_lead {
		position: relative;
		width: 100%;
		height: calc(520 * var(--u));
	}

	.story_cluster_lead .lead_main_img {
		position: absolute;
		top: 0;
		left: 0;
		width: calc(427 * var(--u));
		height: calc(451 * var(--u));
		z-index: 1;
		box-shadow: 0 16px 36px rgba(0, 0, 0, 0.06);
	}

	.story_cluster_lead .lead_main_img img,
	.story_cluster_lead .lead_sub_img img,
	.story_single_img img,
	.story_sub_img img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	.story_cluster_lead .lead_sub_img {
		position: absolute;
		bottom: 0;
		right: calc(30 * var(--u));
		width: calc(278 * var(--u));
		height: calc(218 * var(--u));
		z-index: 2;
		box-shadow: 0 16px 36px rgba(0, 0, 0, 0.12);
	}

	/* Poetry prose stanzas */
	.story_prose_block {
		width: fit-content;
		/* max-width: calc(480 * var(--u)); */
		min-width: 0;
	}

	.story_prose_block p {
		font-family: var(--font_ja, 'Noto Serif JP', serif);
		font-size: calc(15 * var(--u));
		line-height: calc(36 * var(--u));
		letter-spacing: 0.04em;
		color: #333;
		margin: 0 0 calc(28 * var(--u));
		white-space: normal;
		overflow-wrap: break-word;
	}

	.story_prose_block p:last-child {
		margin-bottom: 0;
	}

	/* Row 2: Left text, right single image */
	.story_row_2 {
		display: grid;
		grid-template-columns: minmax(0, 1fr) calc(500 * var(--u));
		gap: calc(100 * var(--u));
		align-items: center;
		margin-bottom: calc(140 * var(--u));
	}

	.story_row_2 .story_prose_block {
		margin-left: auto;
		max-width: calc(580 * var(--u));
	}

	.story_single_img {
		position: relative;
		width: 100%;
		box-shadow: 0 16px 36px rgba(0, 0, 0, 0.08);
	}

	.story_row_2 .story_single_img {
		width: calc(358 * var(--u));
		height: calc(451 * var(--u));
		/* margin-left: auto; */
	}

	/* Row 3: Left single image, right text */
	.story_row_3 {
		display: grid;
		grid-template-columns: calc(520 * var(--u)) minmax(0, 1fr);
		gap: calc(100 * var(--u));
		align-items: center;
		margin-bottom: calc(160 * var(--u));
	}

	.story_row_3 .story_single_img {
		width: calc(509 * var(--u));
		height: calc(422 * var(--u));
	}

	/* Panorama Interstitial Bleed Banner */
	.story_panorama_wrap {
		width: 100vw;
		position: relative;
		left: 50%;
		right: 50%;
		margin-left: -50vw;
		margin-right: -50vw;
		height: calc(451 * var(--u));
		min-height: 280px;
		overflow: hidden;
	}

	.story_panorama {
		width: 100%;
		height: 100%;
		margin: 0;
	}

	.story_panorama img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	/* Section 2: こだわりの見出し (Pillars of Craftsmanship) */
	.story_pillars_sec {
		padding-top: calc(140 * var(--u));
		padding-bottom: calc(40 * var(--u));
	}

	.story_pillars_ttl {
		font-family: var(--font_ja, 'Noto Serif JP', serif);
		font-size: calc(32 * var(--u));
		line-height: 1.6;
		letter-spacing: 0.18em;
		font-weight: 500;
		text-align: center;
		color: #1a1a1a;
		margin: 0 auto calc(110 * var(--u));
	}

	.story_pillar_item {
		margin-bottom: calc(160 * var(--u));
	}

	.story_pillar_item:last-child {
		margin-bottom: calc(100 * var(--u));
	}

	/* Bleed media grid layout conforming to AGENTS.md */
	.story_grid_bleed {
		max-width: var(--max-width);
		margin: 0 auto;
		display: grid;
		min-height: calc(522 * var(--u));
		box-sizing: border-box;
		position: relative;
	}

	.story_bleed_right {
		padding-right: 0;
		padding-left: calc(60 * var(--u));
		grid-template-columns: calc(440 * var(--u)) 1fr;
		gap: calc(50 * var(--u));
	}

	.story_bleed_left {
		padding-left: 0;
		padding-right: calc(60 * var(--u));
		grid-template-columns: 1fr calc(440 * var(--u));
		gap: calc(70 * var(--u));
	}

	/* 冒頭のストーリー行と同じ流動単位でスパの二枚構成を配置する */
	#story_pillar_2 {
		--story-pillar-2-main-width: calc(725 * var(--u));
		--story-pillar-2-main-height: calc(522 * var(--u));
		--story-pillar-2-sub-width: calc(325 * var(--u));
		--story-pillar-2-sub-height: calc(229 * var(--u));
		--story-pillar-2-text-gap: calc(48 * var(--u));
	}

	#story_pillar_2 .story_grid_bleed {
		padding-right: 0;
		padding-left: calc(188 * var(--u));
		grid-template-columns: var(--story-pillar-2-main-width) minmax(0, 1fr);
		gap: var(--story-pillar-2-text-gap);
	}

	#story_pillar_2 .story_grid_bleed.reverse .story_vert_lead_block {
		margin-left: 0;
	}

	/* Vertical badge and text block */
	.story_vert_lead_block {
		display: flex;
		flex-direction: column;
		justify-content: flex-start;
		height: 100%;
		box-sizing: border-box;
		padding-top: calc(20 * var(--u));
		align-items: center;
	}

	.story_grid_bleed.reverse .story_vert_lead_block {
		max-width: calc(420 * var(--u));
		margin-left: auto;
	}

	.story_vert_badge {
		display: inline-flex;
		flex-direction: row-reverse;
		align-items: flex-start;
		/* border-left: 1px solid #1a1a1a; */
		padding-left: calc(18 * var(--u));
		gap: calc(12 * var(--u));
		margin-bottom: calc(40 * var(--u));
	}

	.story_vert_badge .ja {
		writing-mode: vertical-rl;
		font-family: var(--font_ja, 'Noto Serif JP', serif);
		font-size: calc(24 * var(--u));
		line-height: 1.25;
		letter-spacing: 0.08em;
		font-weight: 500;
		color: #1a1a1a;
		margin: 0;
		white-space: nowrap;
	}

	.story_desc {
		font-family: var(--font_ja, 'Noto Serif JP', serif);
		font-size: calc(15 * var(--u));
		line-height: calc(34 * var(--u));
		letter-spacing: 0.03em;
		color: #3f3f3f;
		margin: 0;
	}

	/* Bleed Media Cluster */
	.story_media_wrap {
		position: relative;
		width: 100%;
		height: 100%;
		min-height: calc(522 * var(--u));
	}

	.story_pillar_cluster {
		position: relative;
		width: 100%;
		height: calc(522 * var(--u));
	}

	#story_pillar_2 .story_media_wrap {
		min-height: var(--story-pillar-2-main-height);
		height: var(--story-pillar-2-main-height);
	}

	#story_pillar_2 .story_pillar_cluster {
		height: var(--story-pillar-2-main-height);
	}

	/* Right Bleed Positioning */
	.story_bleed_right .story_pillar_cluster .story_main_bleed {
		position: absolute;
		top: 0;
		left: 0;
		bottom: 0;
		right: calc(-1 * max(0px, (100vw - var(--max-width)) / 2));
	}

	/* Left Bleed Positioning */
	.story_bleed_left .story_pillar_cluster .story_main_bleed {
		position: absolute;
		top: 0;
		right: 0;
		bottom: 0;
		left: calc(-1 * max(0px, (100vw - var(--max-width)) / 2));
	}

	#story_pillar_2 .story_pillar_cluster .story_main_bleed {
		left: 0;
		right: 0;
	}

	.story_main_bleed img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	/* Floating sub-image for Pillar 2 (Spa) */
	.story_pillar_cluster .story_sub_float {
		position: absolute;
		bottom: calc(-100 * var(--u));
		left: calc(80px - max(0px, (100vw - var(--max-width)) / 2));
		width: calc(320 * var(--u));
		aspect-ratio: 4 / 3;
		z-index: 2;
		box-shadow: 0 16px 36px rgba(0, 0, 0, 0.12);
	}

	#story_pillar_2 .story_pillar_cluster .story_sub_float {
		bottom: 0;
		left: 0;
		width: var(--story-pillar-2-sub-width);
		height: var(--story-pillar-2-sub-height);
		aspect-ratio: auto;
		transform: translate(-50%, 50%);
	}

	.story_sub_float img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}

	/* Pillar Lower Row (Pillars 1 & 3) */
	.story_sub_row {
		max-width: var(--max-width);
		margin: calc(70 * var(--u)) auto 0;
		padding-left: calc(30 * var(--u));
		padding-right: calc(30 * var(--u));
		display: grid;
		grid-template-columns: calc(596 * var(--u)) 1fr;
		gap: calc(90 * var(--u));
		align-items: center;
		box-sizing: border-box;
	}

	.story_sub_img {
		width: 100%;
		height: calc(384 * var(--u));
		box-shadow: 0 16px 36px rgba(0, 0, 0, 0.08);
	}

	.story_sub_desc p {
		font-family: var(--font_ja, 'Noto Serif JP', serif);
		font-size: calc(15 * var(--u));
		line-height: calc(34 * var(--u));
		letter-spacing: 0.03em;
		color: #3f3f3f;
		margin: 0;
	}

	/* Section 3: 茶室『如春』の由来 (Origin of Tea House) */
	.story_chashitsu_sec {
		position: relative;
		width: 100%;
		height: calc(508 * var(--u));
		min-height: 400px;
		display: flex;
		align-items: center;
		justify-content: center;
		overflow: hidden;
		color: #fff;
		margin-top: calc(80 * var(--u));
	}

	.story_chashitsu_bg {
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		z-index: 1;
	}

	.story_chashitsu_bg img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
		filter: brightness(0.65);
	}

	.story_chashitsu_inner {
		position: relative;
		z-index: 2;
		text-align: center;
		padding: 0 20px;
		max-width: 1080px;
		margin: 0 auto;
	}

	.story_chashitsu_inner h2 {
		font-family: var(--font_ja, 'Noto Serif JP', serif);
		font-size: calc(32 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.18em;
		font-weight: 500;
		color: #fff;
		margin: 0 auto calc(32 * var(--u));
	}

	.story_chashitsu_text {
		font-family: var(--font_ja, 'Noto Serif JP', serif);
		font-size: calc(15 * var(--u));
		line-height: calc(36 * var(--u));
		letter-spacing: 0.04em;
		color: rgba(255, 255, 255, 0.95);
		margin: 0;
	}

	@media (min-width: 992px) and (max-width: 1023px) {
		.story_page {
			--u: calc(100vw / 1330);
		}
	}

	/* Responsive Degradation (< 991px) strictly following AGENTS.md */
	@media (max-width: 991px) {
		.story_intro_sec {
			padding-top: 60px;
		}

		.story_lead_ttl,
		.story_pillars_ttl {
			font-size: 24px;
			letter-spacing: 0.12em;
			margin-bottom: 40px;
		}

		.story_row {
			padding-left: 20px;
			padding-right: 20px;
		}

		.story_row_1,
		.story_row_2,
		.story_row_3 {
			grid-template-columns: 1fr;
			gap: 32px;
			margin-bottom: 70px;
		}

		.story_row_2 .story_prose_block,
		.story_prose_block {
			width: auto;
			max-width: 100%;
			text-align: center;
			margin: 0 auto;
		}

		.story_prose_block p {
			font-size: 14px;
			line-height: 2.2;
			margin-bottom: 20px;
			white-space: normal;
		}

		.story_cluster_lead {
			height: auto;
			display: grid;
			grid-template-columns: repeat(2, 1fr);
			gap: 16px;
			position: static;
			min-width: 0;
			width: 100%;
			max-width: 100%;
			margin: 0 auto;
			align-items: center;
			justify-content: center;
		}

		.story_cluster_lead > *,
		.story_grid_bleed > *,
		.story_media_wrap,
		.story_pillar_cluster,
		.story_pillar_cluster > * {
			min-width: 0;
		}

		.story_cluster_lead .lead_main_img,
		.story_cluster_lead .lead_sub_img {
			position: static;
			width: 100%;
			height: auto;
			aspect-ratio: 4 / 3;
			box-shadow: none;
			margin: 0 auto;
		}

		.story_row_2 .story_single_img,
		.story_row_3 .story_single_img {
			width: 100%;
			max-width: 100%;
			height: auto;
			aspect-ratio: 16 / 10;
			margin: 0 auto;
		}

		.story_panorama_wrap {
			height: 260px;
			min-height: 220px;
			margin-left: 0;
			margin-right: 0;
			left: auto;
			right: auto;
			width: 100%;
		}

		.story_pillars_sec {
			padding-top: 70px;
			padding-bottom: 20px;
		}

		.story_pillar_item {
			margin-bottom: 80px;
		}

		.story_grid_bleed {
			grid-template-columns: 1fr;
			padding-left: 20px;
			padding-right: 20px;
			min-height: auto;
			gap: 28px;
		}

		.story_bleed_left {
			padding-left: 20px;
			padding-right: 20px;
		}

		.story_bleed_right {
			padding-left: 20px;
			padding-right: 20px;
		}

		#story_pillar_2 .story_grid_bleed {
			padding-left: 20px;
			padding-right: 20px;
			grid-template-columns: 1fr;
			gap: 32px;
		}

		.story_grid_bleed.reverse {
			display: flex;
			flex-direction: column-reverse;
		}

		#story_pillar_2 .story_grid_bleed.reverse {
			display: flex;
			flex-direction: column;
		}

		#story_pillar_2 .story_grid_bleed.reverse .story_vert_lead_block {
			margin-left: auto;
			margin-right: auto;
		}

		.story_vert_lead_block {
			align-items: center;
			text-align: center;
			margin: 0 auto;
			padding-top: 0;
			max-width: 640px;
			width: 100%;
		}

		.story_grid_bleed.reverse .story_vert_lead_block {
			max-width: 640px;
			margin-left: auto;
			margin-right: auto;
		}

		/* Vertical badge degrades to horizontal with left border accent */
		.story_vert_badge {
			margin: 0 auto 20px;
			padding-left: 12px;
			border-left: 2px solid #1a1a1a;
			align-items: baseline;
			align-self: center;
			display: inline-flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			gap: 8px;
			width: 100%;
			max-width: 100%;
			box-sizing: border-box;
		}

		.story_vert_badge .ja {
			writing-mode: horizontal-tb;
			font-size: 20px;
			line-height: 1.35;
			letter-spacing: 0.08em;
			white-space: normal;
		}

		.story_desc {
			font-size: 14px;
			line-height: 2.2;
			text-align: center;
			width: 100%;
			max-width: 100%;
			box-sizing: border-box;
		}

		.story_media_wrap {
			min-height: auto;
			height: auto;
			position: static;
		}

		#story_pillar_2 .story_media_wrap {
			min-height: auto;
			height: auto;
		}

		.story_pillar_cluster {
			height: auto;
			position: static;
		}

		#story_pillar_2 .story_pillar_cluster {
			height: auto;
		}

		#story_pillar_2 .story_pillar_cluster .story_main_bleed {
			position: static;
			top: auto;
			right: auto;
			bottom: auto;
			left: auto;
			width: 100%;
			height: auto;
			aspect-ratio: 4 / 3;
			box-shadow: none;
			margin: 0 auto;
		}

		.story_bleed_right .story_pillar_cluster .story_main_bleed,
		.story_bleed_left .story_pillar_cluster .story_main_bleed {
			position: static;
			width: 100%;
			height: auto;
			aspect-ratio: 16 / 10;
			right: auto;
			left: auto;
		}

		#story_pillar_2 .story_pillar_cluster .story_main_bleed,
		#story_pillar_2.story_pillar_item .story_bleed_left .story_pillar_cluster .story_main_bleed {
			aspect-ratio: 4 / 3;
		}

		.story_spa_cluster {
			height: auto;
			display: grid;
			grid-template-columns: repeat(2, 1fr);
			gap: 16px;
			position: static;
			min-width: 0;
			width: 100%;
			max-width: 100%;
			margin: 0 auto;
			align-items: center;
			justify-content: center;
		}

		.story_pillar_cluster .story_sub_float {
			position: static;
			width: 100%;
			height: auto;
			aspect-ratio: 4 / 3;
			box-shadow: none;
		}

		#story_pillar_2 .story_pillar_cluster .story_sub_float {
			position: static;
			left: auto;
			bottom: auto;
			width: 100%;
			height: auto;
			aspect-ratio: 4 / 3;
			box-shadow: none;
			transform: none;
			margin: 0 auto;
		}

		.story_sub_row {
			grid-template-columns: 1fr;
			gap: 24px;
			padding-left: 20px;
			padding-right: 20px;
			margin-top: 36px;
			text-align: center;
		}

		.story_sub_img {
			height: auto;
			aspect-ratio: 16 / 10;
		}

		.story_sub_desc p {
			font-size: 14px;
			line-height: 2.2;
			text-align: center;
		}

		.story_chashitsu_sec {
			height: auto;
			min-height: 320px;
			padding: 60px 20px;
			margin-top: 40px;
		}

		.story_chashitsu_inner h2 {
			font-size: 24px;
			margin-bottom: 24px;
		}

		.story_chashitsu_text {
			font-size: 14px;
			line-height: 2.2;
		}
	}

	@media (max-width: 640px) {
		.story_vert_badge .ja {
			font-size: 18px;
		}

		.story_cluster_lead,
		.story_spa_cluster {
			grid-template-columns: 1fr;
			gap: 16px;
		}
	}
}

/* Page-content containers must win over Tailwind's generated .container utilities. */
.experience_page .exp_lead_sec > .container,
.experience_page .exp_sec > .container,
.room_page .room_lead_sec > .container,
.room_page .room_specs_sec > .container {
	max-width: var(--max-width);
}

@media (min-width: 1025px) {
	.experience_page .exp_lead_sec > .container,
	.experience_page .exp_sec > .container {
		padding-right: calc(20 * var(--u));
		padding-left: calc(20 * var(--u));
	}
}

@media (max-width: 991px) {
	#top_access > .container > .flex.justify-end {
		justify-content: center;
	}
}

/* 下層ページでは直前のセクションに続けてCTAを配置する */
.experience_page .cta_wrap,
.room_page .cta_wrap,
.story_page .cta_wrap,
.stay_page .cta_wrap,
.access_page .cta_wrap,
.news_page .cta_wrap {
	margin-top: 0;
}

@media (max-width: 991px) {
	.experience_page .cta_wrap::before,
	.room_page .cta_wrap::before,
	.story_page .cta_wrap::before,
	.stay_page .cta_wrap::before,
	.access_page .cta_wrap::before,
	.news_page .cta_wrap::before {
		top: 0;
	}
}

/* フッターの情報ブロック全体を中央にそろえる */
.f_info > .container {
	display: flex;
	justify-content: center;
}
.f_info > .container > .f_info_row {
	width: 100%;
}

/* 992px以上では左右の情報を同じ基準幅で中央にそろえる */
@media (min-width: 992px) {
	.f_info_row {
		min-width: 675px;
	}
	.f_info_left {
		width: 42%;
		flex: 1 1 42%;
		min-width: 360px;
		justify-content: center;
	}
	.f_info_right {
		width: auto;
		flex: 1 1 58%;
		min-width: 0;
	}
}

/* 中間幅ではナビゲーションの列間隔を詰め、言語切り替えの位置を保つ */
@media (min-width: 992px) and (max-width: 1279px) {
	.f_info_right nav {
		column-gap: calc(20 * var(--u));
	}
	.f_info_right nav > ul:first-child {
		margin-right: 0;
	}
}

.lang-en .vertical-title,
.lang-en .vertical-column,
.lang-en .exp_vhead,
.lang-en .room_badge .ja,
.lang-en .room_badge .en,
.lang-en .story_vert_badge .ja {
	writing-mode: horizontal-tb;
	text-orientation: mixed;
	white-space: normal;
}

.lang-en .following_banner ul li a {
	writing-mode: horizontal-tb;
	white-space: normal;
}

.lang-en #top_experience .vertical-en,
.lang-en #top_experience .vertical-title,
.lang-en #top_experience .vertical-column {
	font-family: var(--font_en);
}

.lang-en #top_experience .vertical-en {
	writing-mode: horizontal-tb;
	text-orientation: mixed;
	padding-top: 0;
	letter-spacing: 0.12em;
}

.lang-en #top_experience .vertical-title {
	line-height: 1.45;
	letter-spacing: 0.04em;
}

@media (min-width: 1024px) {
	.lang-en #top_experience .vertical-copy {
		display: block;
		width: min(100%, calc(400 * var(--u)));
		margin-top: calc(36 * var(--u));
		font-family: var(--font_en);
		font-size: calc(16 * var(--u));
		line-height: 1.9;
		letter-spacing: 0.025em;
		text-align: left;
	}

	.lang-en #top_experience .vertical-column {
		display: inline;
		font-size: inherit;
		line-height: inherit;
		letter-spacing: inherit;
	}

	.lang-en #top_experience .vertical-lead {
		display: block;
		margin-left: 0;
		margin-bottom: calc(12 * var(--u));
		font-size: calc(19 * var(--u));
		line-height: 1.55;
	}
}

.lang-en #top_experience #top_ex_spa .vertical-row {
	display: contents;
	white-space: normal;
}
.lang-en #top_experience #top_ex_spa .vertical-space {
	display: inline;
}
.lang-en #top_experience #top_ex_gastronomy .vertical-row {
	display: contents;
	white-space: normal;
}

html body.lang-en {
	--font-jp: var(--font_en);
	--font_ja: var(--font_en);
	font-family: var(--font_en);

	/* 英語版見出しの基本流体スケールトークン（PC端は現行サイズ、画面幅に応じて滑らかに動的縮小） */
	--en-h1-size: clamp(22px, calc(18px + 1.1vw), calc(32 * var(--u)));
	--en-h2-size: clamp(18px, calc(15px + 0.9vw), calc(28 * var(--u)));
	--en-h3-size: clamp(16px, calc(14px + 0.6vw), calc(22 * var(--u)));
}

/* 汎用見出しタグの動的スケーリング */
.lang-en h1 {
	font-size: var(--en-h1-size);
	line-height: 1.35;
	letter-spacing: 0.04em;
}

.lang-en h2 {
	font-size: var(--en-h2-size);
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.lang-en h3 {
	font-size: var(--en-h3-size);
	line-height: 1.45;
	letter-spacing: 0.03em;
}

.lang-en #top_experience .way-copy {
	justify-content: center;
}

.lang-en #top_faq .vertical-en,
.lang-en #top_faq .vertical-title {
	font-family: var(--font_en);
}

.lang-en #top_faq .vertical-heading {
	min-height: 0;
}

.lang-en #top_faq .vertical-en {
	writing-mode: horizontal-tb;
	text-orientation: mixed;
	padding-top: 0;
	letter-spacing: 0.12em;
}

.lang-en #top_faq .vertical-title {
	line-height: 1.45;
	letter-spacing: 0.04em;
}

/* --------------------------------------------------
   H1: 主要具名タイトルの動的調整
-------------------------------------------------- */
/* 下層ページ共通 KV タイトル（About ページの長文 KV 固有スタイルは保持） */
.lang-en #kv:not(.about_kv) .kv_inner h1,
.lang-en #kv:not(.about_kv) .kv_inner h1.kv_vertical {
	font-size: clamp(15px, calc(13px + 0.7vw), calc(22 * var(--u)));
	line-height: clamp(1.4, calc(1.3 + 0.4vw), 1.8);
	letter-spacing: 0.08em;
}

.lang-en #kv .kv_inner h1.kv_vertical {
	letter-spacing: 0.08em;
}

@media (max-width: 767px) {
	.lang-en #kv .kv_inner h1.kv_vertical {
		width: calc(100% - 40px);
		max-width: 100%;
		box-sizing: border-box;
		text-align: center;
		white-space: normal;
		overflow-wrap: break-word;
	}
}

/* トップページ MV キャッチコピー / オープニング H1 */
.lang-en #visual .mv_inner h1,
.lang-en #top-opening .opening_logo > h1 {
	font-size: clamp(17px, calc(15px + 0.7vw), calc(24 * var(--u)));
	line-height: 1.5;
	letter-spacing: 0.06em;
}

/* お知らせ詳細ページタイトル H1 */
.lang-en .news_detail_title {
	font-size: clamp(20px, calc(17px + 0.9vw), calc(28 * var(--u)));
	line-height: 1.45;
	letter-spacing: 0.03em;
}

/* 404 ページ H1 */
.lang-en #main-contents.error_404 .error_title h1 {
	font-size: clamp(22px, calc(18px + 1vw), calc(32 * var(--u)));
	line-height: 1.35;
}

/* --------------------------------------------------
   H2: 主要具名タイトルの動的調整
-------------------------------------------------- */
/* 共通セクション見出し */
.lang-en h2.title_center,
.lang-en .sec h2.title_center {
	font-size: clamp(22px, calc(18px + 1.3vw), calc(36 * var(--u)));
	line-height: 1.35;
	letter-spacing: 0.08em;
}

.lang-en h2.title_center span.en,
.lang-en .sec h2.title_center span.en {
	font-size: clamp(12px, calc(11px + 0.25vw), calc(14 * var(--u)));
	line-height: 1.5;
	letter-spacing: 0.08em;
}

/* 各ページ主要セクション見出し H2 */
.lang-en .exp_sec_header h2.ja,
.lang-en .room_specs_header h2.ja {
	font-size: clamp(22px, calc(18px + 1.3vw), calc(36 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.08em;
}

.lang-en .story_lead_ttl,
.lang-en .story_pillars_ttl {
	font-size: clamp(18px, calc(15px + 1vw), calc(30 * var(--u)));
	line-height: 1.45;
	letter-spacing: 0.08em;
}

.lang-en .story_chashitsu_inner h2 {
	font-size: clamp(20px, calc(17px + 1.4vw), calc(36 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.08em;
}

.lang-en.stay_page .stay_intro_title {
	font-size: clamp(20px, calc(16px + 1vw), calc(30 * var(--u)));
	line-height: 1.45;
	letter-spacing: 0.04em;
}

.lang-en.stay_page .stay_section_header h2 {
	font-size: clamp(18px, calc(15px + 0.9vw), calc(28 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.lang-en.plans_page .plans_intro_title {
	font-size: clamp(18px, calc(15px + 0.9vw), calc(28 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.lang-en.plans_page .plans_card_title {
	font-size: clamp(16px, calc(14px + 0.6vw), calc(22 * var(--u)));
	line-height: 1.45;
}

.lang-en .access_intro_title {
	font-size: clamp(22px, calc(18px + 1.4vw), calc(38 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.08em;
}

.lang-en .access_section_head h2 {
	font-size: clamp(20px, calc(17px + 1.2vw), calc(34 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.06em;
}

.lang-en .spa_champ_title,
.lang-en .spa_shower_title {
	font-size: clamp(19px, calc(16px + 0.9vw), calc(28 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.lang-en .spa_tate_heading {
	font-size: clamp(20px, calc(16px + 1.1vw), calc(28 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.06em;
}

.lang-en .news_sidebar_ttl {
	font-size: clamp(16px, calc(14px + 0.5vw), calc(20 * var(--u)));
	line-height: 1.4;
}

.lang-en .news_detail_body h2 {
	font-size: clamp(18px, calc(15px + 0.8vw), calc(24 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

/* --------------------------------------------------
   H3: 主要具名タイトルの動的調整
-------------------------------------------------- */
/* 横組み化された見出し H3 */
.lang-en #top_experience .vertical-title,
.lang-en #top_faq .vertical-title,
.lang-en #top_news .vertical-title,
.lang-en #top_access h3.rl,
.lang-en .sec h3.rl {
	font-size: clamp(17px, calc(14px + 0.85vw), calc(26 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.lang-en .sec h3.rl span.en {
	font-size: clamp(12px, calc(11px + 0.2vw), calc(13 * var(--u)));
	letter-spacing: 0.04em;
}

/* トップ STAY カード H3 */
.lang-en .stay_card_title {
	font-size: clamp(15px, calc(13px + 0.5vw), calc(20 * var(--u)));
	line-height: 1.4;
}

/* CTA 見出し H3 */
.lang-en .cta_box .cta_ttl h3 {
	font-size: clamp(18px, calc(15px + 0.7vw), calc(24 * var(--u)));
	line-height: 1.4;
}

.lang-en .cta_box .cta_ttl h3 span.en {
	font-size: clamp(20px, calc(16px + 1vw), calc(30 * var(--u)));
	line-height: 1.35;
	letter-spacing: 0.06em;
}

/* 各ページ サブセクション見出し H3 */
.lang-en .exp_vhead {
	font-size: clamp(18px, calc(15px + 0.8vw), calc(26 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.lang-en .room_card_body h3.ja,
.lang-en .room_badge .ja {
	font-size: clamp(17px, calc(14px + 0.75vw), calc(24 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.lang-en.stay_page .stay_model_copy h3 {
	font-size: clamp(18px, calc(15px + 0.7vw), calc(24 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.lang-en.stay_page .stay_arranged_row h3 {
	font-size: clamp(16px, calc(14px + 0.6vw), calc(22 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.lang-en.stay_page .stay_attraction_card h3 {
	font-size: clamp(15px, calc(13px + 0.5vw), calc(20 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.03em;
}

.lang-en.plans_page .plans_detail_main h3,
.lang-en.plans_page .plans_detail_info h3 {
	font-size: clamp(15px, calc(13px + 0.5vw), calc(20 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.03em;
}

.lang-en .access_location h3,
.lang-en .access_route h3 {
	font-size: clamp(16px, calc(14px + 0.5vw), calc(20 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

.lang-en .access_spot_body h3 {
	font-size: clamp(15px, calc(13px + 0.4vw), calc(18 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.03em;
}

.lang-en .news_card_title {
	font-size: clamp(14px, calc(13px + 0.25vw), calc(16 * var(--u)));
	line-height: 1.45;
}

.lang-en .news_detail_body h3 {
	font-size: clamp(16px, calc(14px + 0.55vw), calc(22 * var(--u)));
	line-height: 1.45;
	letter-spacing: 0.03em;
}

.lang-en .spa_step_title,
.lang-en .spa_feature_title,
.lang-en .spa_bath_title {
	font-size: clamp(16px, calc(14px + 0.5vw), calc(20 * var(--u)));
	line-height: 1.4;
	letter-spacing: 0.04em;
}

/* About ページの英文 KV は行数が多いため、共通外枠の寸法を変えずに領域内に収まるよう文字サイズと内側余白を調整 */
.lang-en #kv.about_kv .kv_inner {
	padding-top: calc(52 * var(--u));
	padding-bottom: calc(36 * var(--u));
	box-sizing: border-box;
}

.lang-en #kv.about_kv .kv_inner h1.kv_vertical {
	font-size: calc(18 * var(--u));
	line-height: calc(31 * var(--u));
	letter-spacing: 0.05em;
	width: max-content;
	max-width: 90%;
	white-space: nowrap;
}

@media (min-width: 1200px) {
	.lang-en #kv.about_kv .kv_inner {
		padding-top: calc(52 * var(--u));
		padding-bottom: calc(36 * var(--u));
	}
	.lang-en #kv.about_kv .kv_inner h1.kv_vertical {
		font-size: calc(18 * var(--u));
		line-height: calc(31 * var(--u));
		letter-spacing: 0.05em;
	}
}

@media (min-width: 992px) and (max-width: 1199px) {
	.lang-en #kv.about_kv .kv_inner {
		padding-top: calc(50 * var(--u));
		padding-bottom: calc(36 * var(--u));
	}
	.lang-en #kv.about_kv .kv_inner h1.kv_vertical {
		font-size: calc(16.5 * var(--u));
		line-height: calc(28.5 * var(--u));
		letter-spacing: 0.05em;
	}
}

@media (max-width: 991px) {
	.lang-en #kv.about_kv .kv_inner {
		padding-top: 44px;
		padding-bottom: 34px;
	}
	.lang-en #kv.about_kv .kv_inner h1.kv_vertical {
		font-size: 14.5px;
		line-height: 1.58;
		letter-spacing: 0.04em;
	}
}

@media (max-width: 767px) {
	.lang-en #kv.about_kv .kv_inner {
		padding-top: 38px;
		padding-bottom: 28px;
		padding-left: 16px;
		padding-right: 16px;
	}
	.lang-en #kv.about_kv .kv_inner h1.kv_vertical {
		font-size: 13px;
		line-height: 1.5;
		letter-spacing: 0.03em;
		width: calc(100% - 32px);
		max-width: 100%;
		text-align: center;
		white-space: normal;
		overflow-wrap: break-word;
	}
}

.lang-en .story_prose_block p {
	white-space: normal;
	overflow-wrap: break-word;
}

@media (max-width: 767px) {
	#top_experience .way-row > figure.media {
		margin-top: 36px;
	}

	#top_experience .way-row .btn_c_warp {
		transform: none;
	}
}

@layer components {
	/* PLANSページ */
	#kv.plans_kv {
		background-image: url(../images/plans/kv.jpg);
		background-position: center center;
	}

	.plans_main {
		position: relative;
		overflow-x: clip;
	}

	.plans_intro_sec {
		padding-top: calc(100 * var(--u));
		padding-bottom: 0;
	}

	.plans_intro_inner {
		width: 76.3889%;
		max-width: calc(1100 * var(--u));
		margin-right: auto;
		margin-left: auto;
		text-align: center;
	}

	.plans_intro_title {
		margin: 0;
		font-size: calc(36 * var(--u));
		font-weight: 500;
		line-height: 1.6;
		letter-spacing: 0.16em;
	}

	.plans_intro_copy {
		max-width: calc(760 * var(--u));
		margin: calc(24 * var(--u)) auto 0;
		font-size: calc(16 * var(--u));
		line-height: calc(36 * var(--u));
		letter-spacing: 0.025em;
		text-align: center;
	}

	.plans_mobile_break {
		display: none;
	}

	.wrp_packages {
		--plans-gap: calc(28 * var(--u));
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		column-gap: var(--plans-gap);
		row-gap: calc(92 * var(--u));
		width: 83.3333%;
		max-width: calc(1110 * var(--u));
		margin: calc(98 * var(--u)) auto calc(110 * var(--u));
	}

	.plans_card {
		display: flex;
		min-width: 0;
		height: 100%;
		flex-direction: column;
	}

	.plans_card:has(.plans_accordion[open]) {
		position: relative;
		z-index: 2;
	}

	.plans_card_title {
		display: flex;
		flex-direction: column-reverse;
		align-items: center;
		justify-content: center;
		margin: 0;
		text-align: center;
	}

	.plans_card_title .en {
		color: #d1d1d1;
		font-size: calc(28 * var(--u));
		line-height: 1;
		letter-spacing: 0.1em;
	}

	.plans_card_title .jp {
		margin-top: calc(12 * var(--u));
		font-size: calc(22 * var(--u));
		font-weight: 500;
		line-height: 1.6;
		letter-spacing: 0.12em;
	}

	.plans_card .inner_img img,
	.plans_detail_main_image img {
		display: block;
		width: 100%;
		aspect-ratio: 505 / 336;
		object-fit: cover;
	}

	.plans_card .inner_txt {
		width: 94.7368%;
		flex: 0 0 auto;
		min-height: calc(256 * var(--u));
		margin: calc(14 * var(--u)) auto 0;
	}

	.plans_card_lead {
		margin: 0;
		font-size: calc(17 * var(--u));
		line-height: 1.7;
		letter-spacing: 0.06em;
		text-align: center;
	}

	.plans_card .box_cate {
		display: flex;
		flex-wrap: wrap;
		justify-content: center;
		margin: calc(14 * var(--u)) 0 0;
	}

	.plans_card .box_cate .cate {
		margin: 0 calc(3 * var(--u)) calc(5 * var(--u));
		padding: 0 calc(10 * var(--u));
		background: #222;
		color: #fff;
		font-size: calc(13 * var(--u));
		line-height: 1.7;
		letter-spacing: 0.04em;
		text-align: center;
	}

	.plans_card .box_cate .cate .t::before {
		content: '#';
	}

	.plans_card_copy {
		margin: calc(18 * var(--u)) 0 0;
		font-size: calc(14 * var(--u));
		line-height: 2;
		letter-spacing: 0.025em;
	}

	.plans_card .inner_btn {
		width: 89.4737%;
		margin: calc(28 * var(--u)) auto 0;
	}

	.plans_page a.plans_booking_btn {
		width: 100%;
		min-height: calc(48 * var(--u));
		height: auto;
		padding: calc(10 * var(--u)) calc(20 * var(--u));
		font-size: calc(15 * var(--u));
		letter-spacing: 0.06em;
	}

	.plans_card .inner_detail {
		width: 100%;
		margin-top: calc(12 * var(--u));
	}

	.plans_accordion {
		width: 100%;
	}

	.plans_accordion_summary {
		display: flex;
		width: 89.4737%;
		min-height: calc(48 * var(--u));
		align-items: center;
		justify-content: space-between;
		margin: 0 auto;
		padding: calc(10 * var(--u)) calc(18 * var(--u));
		border: 1px solid #222;
		background: #fff;
		color: #222;
		font-size: calc(15 * var(--u));
		line-height: 1.5;
		letter-spacing: 0.06em;
		cursor: pointer;
		list-style: none;
		transition: background 0.3s ease, color 0.3s ease;
	}

	.plans_accordion_summary::-webkit-details-marker {
		display: none;
	}

	.plans_accordion_summary::marker {
		content: '';
	}

	.plans_accordion_summary:hover {
		background: #222;
		color: #fff;
	}

	.plans_accordion_summary:focus-visible {
		outline: 2px solid #2c5453;
		outline-offset: 6px;
	}

	.plans_accordion_icon {
		position: relative;
		width: calc(18 * var(--u));
		height: calc(18 * var(--u));
		flex: 0 0 auto;
		border: 1px solid currentColor;
		border-radius: 50%;
	}

	.plans_accordion_icon::before,
	.plans_accordion_icon::after {
		content: '';
		position: absolute;
		top: 50%;
		left: 50%;
		width: 45%;
		height: 1px;
		background: currentColor;
		transform: translate(-50%, -50%);
		transition: opacity 0.3s ease, transform 0.3s ease;
	}

	.plans_accordion_icon::after {
		transform: translate(-50%, -50%) rotate(90deg);
	}

	.plans_accordion[open] .plans_accordion_summary {
		border-bottom-color: transparent;
	}

	.plans_accordion[open] .plans_accordion_icon::after {
		opacity: 0;
		transform: translate(-50%, -50%) rotate(0);
	}

	.plans_accordion_panel {
		position: relative;
		z-index: 1;
		width: calc(300% + var(--plans-gap) + var(--plans-gap));
		padding: calc(54 * var(--u));
		border: 1px solid #222;
		background: #fff;
	}

	.plans_accordion.is-ready .plans_accordion_panel {
		overflow: hidden;
		padding: 0;
		border: 0 solid transparent;
		height: 0;
		transform-origin: top center;
		opacity: 0;
		transform: translateY(-14px) scaleY(0.96);
		transition: height 0.72s cubic-bezier(.22, 1.2, .36, 1), padding 0.72s cubic-bezier(.22, 1.2, .36, 1), border-width 0.72s cubic-bezier(.22, 1.2, .36, 1), opacity 0.2s ease, transform 0.72s cubic-bezier(.22, 1.2, .36, 1);
	}

	.plans_accordion.is-ready[open] .plans_accordion_panel {
		padding: calc(54 * var(--u));
		border-width: 1px;
		border-color: #222;
		opacity: 1;
		transform: translateY(0) scaleY(1);
	}

	.plans_accordion.is-ready.is-closing .plans_accordion_panel {
		padding: 0;
		border-width: 0;
		border-color: transparent;
		opacity: 0;
		transform: translateY(-14px) scaleY(0.96);
	}

	.plans_card:nth-child(3n + 1) .plans_accordion_panel {
		margin-left: 0;
	}

	.plans_card:nth-child(3n + 2) .plans_accordion_panel {
		margin-left: calc(-100% - var(--plans-gap));
	}

	.plans_card:nth-child(3n) .plans_accordion_panel {
		margin-left: calc(-200% - var(--plans-gap) - var(--plans-gap));
	}

	.plans_detail_main {
		display: grid;
		grid-template-columns: minmax(0, 1.58fr) minmax(0, 1fr);
		gap: 7.9%;
		align-items: start;
	}

	.plans_detail_main h3,
	.plans_detail_info h3 {
		margin: 0;
		font-size: calc(22 * var(--u));
		font-weight: 500;
		line-height: 1.6;
		letter-spacing: 0.08em;
	}

	.plans_detail_lead {
		margin: calc(16 * var(--u)) 0 0;
		font-size: calc(14 * var(--u));
		line-height: 1.8;
		letter-spacing: 0.07em;
	}

	.plans_detail_main_copy > p:not(.plans_detail_lead) {
		margin: calc(22 * var(--u)) 0 0;
		font-size: calc(14 * var(--u));
		line-height: 2;
		letter-spacing: 0.025em;
	}

	.plans_detail_table {
		width: 100%;
		margin-top: calc(28 * var(--u));
		border-collapse: collapse;
		font-size: calc(14 * var(--u));
		line-height: 1.8;
	}

	.plans_detail_table th,
	.plans_detail_table td {
		padding: calc(8 * var(--u)) calc(10 * var(--u));
		border-bottom: 1px solid #e4e4e4;
		text-align: left;
		vertical-align: top;
	}

	.plans_detail_table th {
		width: 36%;
		background: #f0f3f9;
		font-weight: 400;
	}

	.plans_detail_note {
		margin: calc(12 * var(--u)) 0 0;
		color: #666;
		font-size: calc(14 * var(--u));
		line-height: 1.8;
	}

	.plans_detail_main_image {
		margin: calc(16 * var(--u)) 0 0;
	}

	.plans_detail_info {
		display: grid;
		grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);
		gap: 3.2%;
		margin-top: calc(44 * var(--u));
		padding: calc(28 * var(--u));
		border: 1px solid #e4e4e4;
	}

	.plans_info_list {
		margin: calc(14 * var(--u)) 0 0;
	}

	.plans_info_item {
		display: grid;
		grid-template-columns: minmax(calc(120 * var(--u)), 36%) minmax(0, 1fr);
		font-size: calc(14 * var(--u));
		line-height: 1.9;
	}

	.plans_info_item dt,
	.plans_info_item dd {
		margin: 0;
		padding: calc(8 * var(--u)) calc(10 * var(--u));
	}

	.plans_info_item dt {
		background: #f0f3f9;
	}

	.plans_info_item dd {
		min-width: 0;
	}

	.plans_info_item dd p {
		margin: 0;
	}

	.plans_info_note {
		margin-top: calc(8 * var(--u)) !important;
		color: #666;
		font-size: calc(14 * var(--u));
		line-height: 1.7;
	}

	.plans_info_note span {
		display: block;
	}

	.plans_stay_links {
		display: grid;
		gap: calc(10 * var(--u));
		margin-top: calc(14 * var(--u));
	}

	.plans_stay_link {
		position: relative;
		isolation: isolate;
		display: flex;
		min-height: calc(86 * var(--u));
		align-items: center;
		justify-content: space-between;
		padding: calc(20 * var(--u)) calc(48 * var(--u)) calc(20 * var(--u)) calc(22 * var(--u));
		overflow: hidden;
		color: #fff;
		font-size: calc(14 * var(--u));
		line-height: 1.5;
	}

	.plans_stay_link::before,
	.plans_stay_link::after {
		content: '';
		position: absolute;
		inset: 0;
	}

	.plans_stay_link::before {
		z-index: -2;
		background-position: center;
		background-size: cover;
		transition: transform 0.5s ease;
	}

	.plans_stay_link::after {
		z-index: -1;
		background: rgba(34, 34, 34, 0.58);
		transition: opacity 0.3s ease;
	}

	.plans_stay_link_tea::before {
		background-image: url(../images/plans/link-tea.jpg);
	}

	.plans_stay_link_cuisine::before {
		background-image: url(../images/plans/link-cuisine.jpg);
	}

	.plans_stay_link_spa::before {
		background-image: url(../images/plans/link-spa.jpg);
	}

	.plans_stay_link:hover::before {
		transform: scale(1.05);
	}

	.plans_stay_link:hover::after {
		opacity: 0.25;
	}

	.plans_link_arrow {
		position: relative;
		width: calc(26 * var(--u));
		height: calc(26 * var(--u));
		flex: 0 0 auto;
		border: 1px solid rgba(255, 255, 255, 0.9);
		border-radius: 50%;
	}

	.plans_link_arrow::before {
		content: '→';
		position: absolute;
		inset: 0;
		display: flex;
		align-items: center;
		justify-content: center;
		font-family: var(--font-en_1);
		font-size: calc(16 * var(--u));
		line-height: 1;
	}

	.plans_detail_btn {
		width: 56.6038%;
		margin: calc(44 * var(--u)) auto 0;
	}

	.plans_detail_btn a.plans_booking_btn {
		font-size: calc(14 * var(--u));
	}

	@media (max-width: 1023px) {
		.plans_intro_sec {
			padding-top: 80px;
		}

		.plans_intro_inner {
			width: 76.3889%;
			max-width: none;
		}

		.plans_intro_title {
			font-size: 30px;
			line-height: 1.8;
		}

		.plans_intro_copy {
			max-width: 760px;
			margin-top: 24px;
			font-size: 15px;
			line-height: 2.2;
		}

		.plans_tablet_break {
			display: none;
		}

		.wrp_packages {
			--plans-gap: 4%;
			grid-template-columns: repeat(2, minmax(0, 1fr));
			width: 90%;
			max-width: none;
			margin-top: 74px;
			row-gap: 78px;
		}

		.plans_card_title .en {
			font-size: 34px;
		}

		.plans_card_title .jp {
			margin-top: 10px;
			font-size: 22px;
		}

		.plans_card .inner_txt,
		.plans_card .inner_btn,
		.plans_accordion_summary {
			width: 95%;
		}

		.plans_card .inner_txt {
			min-height: 0;
			margin-top: 12px;
		}

		.plans_card_lead {
			font-size: 16px;
		}

		.plans_card .box_cate {
			margin-top: 12px;
		}

		.plans_card .box_cate .cate {
			margin-right: 3px;
			margin-bottom: 4px;
			padding-inline: 9px;
			font-size: 12px;
		}

		.plans_card_copy {
			margin-top: 16px;
			font-size: 14px;
			line-height: 2.2;
		}

		.plans_page a.plans_booking_btn,
		.plans_accordion_summary {
			min-height: 46px;
			padding: 9px 18px;
			font-size: 14px;
		}

		.plans_accordion_panel {
			width: calc(200% + var(--plans-gap));
		}

		.plans_accordion.is-ready[open] .plans_accordion_panel {
			padding: 42px;
		}

		.plans_card:nth-child(3n + 1) .plans_accordion_panel,
		.plans_card:nth-child(3n + 2) .plans_accordion_panel,
		.plans_card:nth-child(3n) .plans_accordion_panel {
			margin-left: 0;
		}

		.plans_card:nth-child(odd) .plans_accordion_panel {
			margin-left: 0;
		}

		.plans_card:nth-child(even) .plans_accordion_panel {
			margin-left: calc(-100% - var(--plans-gap));
		}

		.plans_detail_main h3,
		.plans_detail_info h3 {
			font-size: 21px;
		}

		.plans_detail_lead {
			font-size: 14px;
		}

		.plans_detail_main_copy > p:not(.plans_detail_lead),
		.plans_detail_table,
		.plans_info_item {
			font-size: 14px;
		}

		.plans_detail_note {
			font-size: 14px;
		}

		.plans_detail_info {
			padding: 24px;
		}

		.plans_info_note {
			font-size: 14px;
		}

		.plans_stay_link {
			font-size: 14px;
		}
	}

	@media (max-width: 767px) {
		#kv.plans_kv {
			background-position: center center;
		}

		.plans_intro_sec {
			padding-top: 60px;
		}

		.plans_intro_inner {
			width: 86.6667%;
		}

		.plans_intro_title {
			font-size: 27px;
			line-height: 1.65;
			letter-spacing: 0.12em;
		}

		.plans_mobile_break {
			display: block;
		}

		.plans_intro_copy {
			margin-top: 20px;
			font-size: 14px;
			line-height: 2.2;
			text-align: left;
		}

		.wrp_packages {
			display: block;
			width: 90%;
			margin-top: 48px;
			margin-bottom: 72px;
		}

		.plans_card + .plans_card {
			margin-top: 78px;
		}

		.plans_card_title .en {
			font-size: 31px;
		}

		.plans_card_title .jp {
			margin-top: 8px;
			font-size: 19px;
			letter-spacing: 0.1em;
		}

		.plans_card .inner_txt,
		.plans_card .inner_btn,
		.plans_accordion_summary,
		.plans_accordion_panel {
			width: 95%;
		}

		.plans_card .inner_txt {
			margin-top: 12px;
		}

		.plans_card_lead {
			font-size: 16px;
			line-height: 1.8;
		}

		.plans_card_copy {
			font-size: 14px;
			line-height: 2.2;
		}

		.plans_card .inner_btn {
			margin-top: 24px;
		}

		.plans_card .inner_detail {
			margin-top: 10px;
		}

		.plans_page a.plans_booking_btn,
		.plans_accordion_summary {
			min-height: 46px;
			padding: 9px 16px;
			font-size: 14px;
		}

		.plans_accordion_panel {
			margin-left: auto !important;
			margin-right: auto;
		}

		.plans_accordion.is-ready[open] .plans_accordion_panel {
			padding: 26px 20px;
		}

		.plans_detail_main {
			display: block;
		}

		.plans_detail_main h3,
		.plans_detail_info h3 {
			font-size: 20px;
			text-align: center;
		}

		.plans_detail_lead {
			margin-top: 10px;
			font-size: 14px;
			line-height: 1.9;
			text-align: center;
		}

		.plans_detail_main_copy > p:not(.plans_detail_lead) {
			margin-top: 18px;
			padding-top: 16px;
			border-top: 1px solid #e4e4e4;
			font-size: 14px;
			line-height: 2.1;
		}

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

		.plans_detail_table th,
		.plans_detail_table td {
			padding: 8px;
		}

		.plans_detail_table th {
			width: 35%;
		}

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

		.plans_detail_main_image {
			margin-top: 22px;
		}

		.plans_detail_info {
			display: block;
			margin-top: 28px;
			padding: 0;
			border: 0;
		}

		.plans_info_section {
			padding: 18px 14px;
			border: 1px solid #e4e4e4;
		}

		.plans_info_list {
			margin-top: 12px;
		}

		.plans_info_item {
			grid-template-columns: 35% minmax(0, 1fr);
			font-size: 14px;
			line-height: 1.9;
		}

		.plans_info_item dt,
		.plans_info_item dd {
			padding: 7px 8px;
		}

		.plans_info_note {
			font-size: 14px;
		}

		.plans_stay_section {
			margin-top: 28px;
		}

		.plans_stay_links {
			gap: 8px;
			margin-top: 12px;
		}

		.plans_stay_link {
			min-height: 70px;
			padding: 16px 42px 16px 16px;
		}

		.plans_link_arrow {
			width: 24px;
			height: 24px;
		}

		.plans_detail_btn {
			width: 100%;
			margin-top: 28px;
		}
	}

	@media (prefers-reduced-motion: reduce) {
		.plans_accordion_summary,
		.plans_accordion_icon::before,
		.plans_accordion_icon::after,
		.plans_stay_link::before,
		.plans_stay_link::after {
			transition: none;
		}

		.plans_accordion.is-ready .plans_accordion_panel {
			transition: none;
		}
	}
}

.plans_card .inner_title + .inner_img {
	margin: calc(36 * var(--u)) 0 0;
}

@media (max-width: 1023px) {
	.plans_card .inner_title + .inner_img {
		margin-top: 30px;
	}
}

@media (max-width: 767px) {
	.plans_card .inner_title + .inner_img {
		margin-top: 28px;
	}
}


/* 画面幅に合わせて本文と補助ラベルの可読幅を確保する */
@layer components {
	@media (min-width: 1025px) {
		.experience_page .exp_feature_row > .exp_text_block {
			padding-left: calc(30 * var(--u));
		}
		.lang-en .exp_vhead {
			white-space: nowrap;
		}
	}

	@media (max-width: 1024px) {
		.room_page .room_badge,
		.stay_page .stay_vertical_label {
			max-width: 100%;
			flex-wrap: wrap;
			justify-content: center;
			row-gap: 8px;
		}
		.room_page .room_badge .ja,
		.stay_page .stay_vertical_label .ja,
		.stay_page .stay_vertical_label .en {
			white-space: normal;
		}
		.experience_page .exp_desc {
			padding-inline: 0;
			text-align: left;
		}
	}

	@media (max-width: 767px) {
		.room_page .room_badge,
		.stay_page .stay_vertical_label {
			flex-direction: column;
			align-items: center;
		}
		.room_page .room_badge .en {
			margin-left: 0;
		}
		#policy .policy_note p {
			font-size: 14px;
			line-height: 2;
		}
	}
}

/* ユーティリティの固定列数を、このセクションの可読幅に合わせる */
@media (min-width: 768px) and (max-width: 1279px) {
	#policy .policy02 > .md\:grid-cols-5 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 32px;
	}
	#policy .policy_note h4 .ttl_ja {
		min-height: 0;
	}
	#policy .policy_note p {
		font-size: 14px;
		line-height: 2;
	}
}

@media (max-width: 767px) {
	#policy .policy02 > .grid-cols-2 {
		grid-template-columns: 1fr;
		gap: 28px;
	}
	#policy .policy02 .policy_note h4 {
		margin-bottom: 12px;
	}
}


/* 英文は縦組み用の幅を引き継がず、単語単位で自然に折り返す */
.lang-en .room_badge {
	flex-direction: column;
	align-items: center;
	max-width: 100%;
	text-align: center;
}
.lang-en .room_badge .en {
	margin-left: 0;
}
/* 英文のストーリーバッジは2行（ラベル・タイトル）で折り返さず表示する */
.lang-en .story_vert_badge {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: calc(8 * var(--u));
}
@media (min-width: 992px) {
	.lang-en .story_vert_badge {
		padding-left: 0;
	}
	.lang-en .story_vert_badge .ja {
		white-space: nowrap;
		letter-spacing: 0.04em;
	}
	.lang-en .story_vert_lead_block {
		align-items: flex-start;
	}
	.lang-en #story_pillar_2 .story_grid_bleed {
		padding-left: calc(100 * var(--u));
		grid-template-columns: var(--story-pillar-2-main-width) minmax(calc(440 * var(--u)), 1fr);
	}
	.lang-en #story_pillar_2 .story_grid_bleed.reverse .story_vert_lead_block {
		max-width: calc(450 * var(--u));
	}
}
.lang-en .story_prose_block {
	width: 100%;
	min-width: 0;
}
.lang-en .room_desc,
.lang-en .exp_desc,
.lang-en .story_desc,
.lang-en .story_prose_block p {
	text-align: left;
	word-break: normal;
	overflow-wrap: break-word;
}
.lang-en .l_nav_right nav > ul a {
	white-space: normal;
	overflow-wrap: break-word;
}
.lang-en .l_nav_right nav > ul {
	min-width: 0;
}

@media (min-width: 768px) {
	.lang-en .following_banner {
		--following-banner-width: 112px;
	}
	.lang-en .following_banner ul li a {
		width: var(--following-banner-width);
		height: 64px;
		padding: 12px 8px;
		letter-spacing: 0.04em;
	}
	.lang-en .following_banner.is_hidden {
		right: calc(-1 * var(--following-banner-width));
	}
}

@media (max-width: 1023px) {
	.plans_page .plans_detail_main,
	.plans_page .plans_detail_info {
		grid-template-columns: minmax(0, 1fr);
		gap: 28px;
	}
	.plans_page .plans_detail_main_image {
		margin-top: 0;
	}
}

/* 英語版トップKVコピー: 英文可読性向上のためフォント・字間・太さを最適化 */
.lang-en #top-opening .opening_logo .top-opening-copy,
.lang-en #visual .mv_inner .mv_copy {
	font-family: 'Noto Serif JP', 'Noto Serif', serif;
	font-weight: 500;
	font-size: clamp(1.05rem, 0.95rem + 0.45vw, 1.3rem);
	letter-spacing: 0.06em;
	word-spacing: 0.04em;
}
.lang-en #visual .mv_inner .mv_copy {
	text-shadow: 0 2px 10px rgba(0, 0, 0, 0.55);
}

@media (max-width: 1023px) {
	.lang-en #top-opening .opening_logo .top-opening-copy,
	.lang-en #visual .mv_inner .mv_copy {
		font-size: 15.5px;
		letter-spacing: 0.04em;
		line-height: 1.6;
		padding-inline: 24px;
	}
}

@media (max-width: 767px) {
	.lang-en #top-opening .opening_logo .top-opening-copy,
	.lang-en #visual .mv_inner .mv_copy {
		font-size: 15px;
		letter-spacing: 0.04em;
		line-height: 1.6;
		padding-inline: 20px;
	}
	.lang-en .room_badge .ja,
	.lang-en .exp_vhead,
	.lang-en .story_vert_badge .ja {
		letter-spacing: 0.04em;
		line-height: 1.5;
	}
	.plans_page .plans_info_item {
		grid-template-columns: minmax(0, 1fr);
	}
	.plans_page .plans_info_item + .plans_info_item {
		margin-top: 12px;
	}
}

@media (max-width: 380px), (max-width: 767px) and (max-height: 640px) {
	.lang-en #top-opening .opening_logo .top-opening-copy,
	.lang-en #visual .mv_inner .mv_copy {
		font-size: 13.5px;
		letter-spacing: 0.03em;
	}
}


.lang-en #top_experience .vertical-heading,
.lang-en #top_faq .vertical-heading {
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
	min-height: 0;
	text-align: left;
	transform: none;
}
.lang-en #top_experience .vertical-heading {
	width: min(100%, calc(400 * var(--u)));
	margin-right: 0;
}

@media (min-width: 768px) and (max-width: 1023px) {
	.lang-en #top_experience .vertical-heading {
		width: calc(100% - 56px);
		padding-left: 16px;
	}
}

/* ログイン中も管理バーがメニューと言語切り替えを覆わないようにする */
body:has(#wpadminbar) #nav_toggle,
body:has(#wpadminbar) #header > .bogo-language-switcher-wrapper {
	margin-top: var(--wp-admin--admin-bar--height, 0px);
}

body #wpadminbar {
	position: fixed;
}

/* 管理バー表示時もオープニングとMVの表示領域を一致させる */
body:has(#wpadminbar) #top-opening,
body.admin-bar #top-opening {
	top: var(--wp-admin--admin-bar--height, 32px);
	height: calc(100vh - var(--wp-admin--admin-bar--height, 32px));
	height: calc(100svh - var(--wp-admin--admin-bar--height, 32px));
}
body:has(#wpadminbar) #visual,
body.admin-bar #visual {
	height: calc(100vh - var(--wp-admin--admin-bar--height, 32px));
	height: calc(100svh - var(--wp-admin--admin-bar--height, 32px));
}

@media screen and (max-width: 782px) {
	body:has(#wpadminbar) #top-opening,
	body.admin-bar #top-opening {
		top: var(--wp-admin--admin-bar--height, 46px);
		height: calc(100vh - var(--wp-admin--admin-bar--height, 46px));
		height: calc(100svh - var(--wp-admin--admin-bar--height, 46px));
	}
	body:has(#wpadminbar) #visual,
	body.admin-bar #visual {
		height: calc(100vh - var(--wp-admin--admin-bar--height, 46px));
		height: calc(100svh - var(--wp-admin--admin-bar--height, 46px));
	}
}

/* 滞在ページの英語見出しは横組みで本文の幅に収める */
.lang-en.stay_page .stay_vertical_label {
	flex-direction: column;
	max-width: 100%;
	gap: 12px;
}
.lang-en.stay_page .stay_vertical_label .ja,
.lang-en.stay_page .stay_vertical_label .en,
.lang-en.stay_page .stay_month_name {
	writing-mode: horizontal-tb;
	white-space: normal;
	letter-spacing: 0.04em;
}
.lang-en.stay_page .stay_arranged_intro {
	white-space: normal;
}
.lang-en.stay_page .stay_arranged_header > * {
	min-width: 0;
}
.lang-en.stay_page .stay_intro_title,
.lang-en.stay_page .stay_section_header h2,
.lang-en.stay_page .stay_model_copy h3,
.lang-en.stay_page .stay_arranged_row h3,
.lang-en.plans_page .plans_intro_title {
	letter-spacing: 0.04em;
}
.lang-en.stay_page .stay_anchor_nav a {
	min-width: 0;
	text-align: center;
	line-height: 1.5;
}
.lang-en.stay_page .stay_month_name {
	min-height: 0;
}
.lang-en.stay_page .stay_month_card dl div {
	grid-template-columns: calc(125 * var(--u)) minmax(0, 1fr);
}
@media (max-width: 991px) {
	.lang-en.stay_page .stay_month_card dl div {
		grid-template-columns: 104px minmax(0, 1fr);
	}
}
.lang-en.plans_page .plans_card_title .jp {
	display: none;
}
.lang-en.plans_page .plans_card_title .en {
	color: var(--default);
	letter-spacing: 0.04em;
}

@media (min-width: 1024px) {
	.lang-en.plans_page .plans_card .inner_txt {
		min-height: calc(380 * var(--u));
	}
	.lang-en.plans_page .plans_card_lead {
		min-height: 3.4em;
	}
	.lang-en.plans_page .plans_card .box_cate {
		min-height: calc(54 * var(--u));
		align-content: flex-start;
	}
}

@media (min-width: 768px) and (max-width: 1023px) {
	.lang-en.plans_page .plans_card .inner_txt {
		min-height: 360px;
	}
	.lang-en.plans_page .plans_card_lead {
		min-height: 3.4em;
	}
	.lang-en.plans_page .plans_card .box_cate {
		min-height: 49px;
		align-content: flex-start;
	}
}

/* 原画の構図を保ち、対象ページだけに写真を適用する。 */
.photo_pages #footer_reserve {
	background-image: url('../images/photos/garden/garden-night-2400.webp');
}
.photo_pages .l_nav_left {
	background-image: url('../images/photos/tea-house/tea-house-exterior-2400.webp');
}
.photo_page_top #visual {
	background-image: url('../images/top/slide01.webp');
}
.photo_page_top #top_parallax {
	background-image: url('../images/photos/garden/garden-evening-2400.webp');
}
.photo_page_about #kv {
	background-image: url('../images/photos/garden/garden-evening-2400.webp');
}
.photo_page_experience #kv {
	background-image: url('../images/photos/tea-house/garden-basin-2400.webp');
}
.photo_page_room #kv {
	background-image: url('../images/photos/garden/garden-evening-2400.webp');
}
.photo_page_stay #kv {
	background-image: url('../images/photos/ohara/ohara-shiso-2400.webp');
}
.photo_page_story #kv {
	background-image: url('../images/photos/exterior/thatched-roof-2400.webp');
}
.photo_page_contact #kv {
	background-image: url('../images/photos/garden/garden-path-2400.webp');
}

/* 写真は既存の枠を満たし、元の高さとグリッド配置を維持する。 */
.photo_pages img.photo_asset {
	object-fit: cover;
}
.photo_pages .stay_month_card figure {
	aspect-ratio: 4 / 3;
}
.photo_pages .stay_month_card figure img.photo_asset {
	height: 100%;
}
.photo_pages .exp_triptych figure:first-child img.photo_asset {
	object-position: 65% center;
}
.photo_pages .stay_arranged_row.stay_arranged_text {
	grid-template-columns: minmax(0, 1fr);
}
.photo_pages .stay_attraction_card figure.stay_attraction_text {
	height: auto;
	aspect-ratio: auto;
	padding: 30px 16px;
	background: #f4f2ee;
}
.photo_pages .stay_attraction_text::after {
	display: none;
}
.photo_pages .stay_attraction_text h3 {
	position: static;
	color: #222;
	text-shadow: none;
}
/* ホバー時も写真の端を切り落とさない。 */
.photo_pages :is(figure, a):hover img.photo_asset {
	transform: none;
}
@media (prefers-reduced-motion: reduce) {
	.photo_pages img.photo_asset {
		transition: none;
		transform: none;
	}
}

@media (max-width: 767px) {
	.photo_pages #footer_reserve {
		background-image: url('../images/photos/garden/garden-night-1280.webp');
	}
	.photo_pages .l_nav_left {
		background-image: url('../images/photos/tea-house/tea-stones-1280.webp');
	}
	.photo_page_top #visual {
		background-image: url('../images/top/slide01-1280.webp');
	}
	.photo_page_top #top_parallax {
		background-image: url('../images/photos/garden/garden-evening-1280.webp');
	}
	.photo_page_about #kv {
		background-image: url('../images/photos/tea-house/tea-stones-1280.webp');
	}
	.photo_page_experience #kv {
		background-image: url('../images/photos/tea/tea-preparation-1280.webp');
	}
	.photo_page_room #kv {
		background-image: url('../images/photos/annex-second/bedroom-window-1280.webp');
	}
	.photo_page_stay #kv {
		background-image: url('../images/photos/ohara/ohara-valley-1280.webp');
	}
	.photo_page_story #kv {
		background-image: url('../images/photos/tea-house/tea-garden-autumn-1280.webp');
	}
	.photo_page_contact #kv {
		background-image: url('../images/photos/exterior/entrance-sign-1280.webp');
	}
}

/* タブレットでは予約導線を下端へ移し、本文との重なりを避ける。 */
@media (min-width: 768px) and (max-width: 1023px) {
	.photo_pages .following_banner {
		left: 0;
		right: 0;
		bottom: 0;
		width: 100%;
	}
	.photo_pages .following_banner.is_hidden {
		right: 0;
		bottom: -100px;
	}
	.photo_pages .following_banner ul {
		display: flex;
		width: 100%;
	}
	.photo_pages .following_banner ul li {
		width: 50%;
	}
	.photo_pages .following_banner ul li a {
		width: 100%;
		height: 50px;
		writing-mode: horizontal-tb;
	}
}
