/* A Modern CSS Reset */
/* box-sizing: border-box;を設定 */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* フォントサイズの拡大を防ぐ */
html {
  -moz-text-size-adjust: none;
  -webkit-text-size-adjust: none;
  text-size-adjust: none;
}
html.starry {
    background-color: #1a1a1a;
}

/* デフォルトのマージンを削除、作成するCSSの制御を改善するため */
body, h1, h2, h3, h4, p, figure, blockquote, dl, dd {
  margin: 0;
}

/* リストのスタイルを削除、これはデフォルトのスタイルが削除されることを示唆します */
ul[role='list'],
ol[role='list'] {
  list-style: none;
}

/* bodyのデフォルトを設定 */
body {
  min-height: 100vh;
  line-height: 1.5;
}

/* 見出しやインタラクティブ要素のline-heightを設定 */
h1, h2, h3, h4, button, input, label {
  line-height: 1.3;
}

/* 見出しのテキスト折り返しをbalanceに設定 
h1, h2, h3, h4 {
  text-wrap: balance;
}
*/

/* classを持たないa要素はデフォルトのスタイルを継承 */
a:not([class]) {
  text-decoration-skip-ink: auto;
  color: currentColor;
}

/* 画像の扱いを簡単にする */
img {
  max-width: 100%;
  display: block;
}

/* inputやbuttonなどのfontは継承 */
input, button, textarea, select {
  font: inherit;
}

/* rows属性のないtextareasが小さくならないようにする */
textarea:not([rows]) {
  min-height: 10em;
}

/* アンカーされている要素には余分なスクロールマージンが必要 */
:target {
  scroll-margin-block: 5ex;
}

/* -- A Modern CSS Reset */



:root {
	--font-size-12: 12px;
	--font-size-14: 14px;
	--font-size-16: 16px;
	--font-size-18: 18px;
	--font-size-20: 20px;
	--font-size-24: 24px;
	--font-size-32: 32px;
	--font-size-48: 48px;
	--color-white: #ffffff;
	--color-light: #efefef;
	--color-gray-light: #ddd;
	--color-light-gray: #aaa;
	--color-gray: #656565;
	--color-dark-gray: #403d3c;
	--color-blue-gray: #6A7184;
	--color-middle: #232323;
	--color-dark: #1a1a1a;
	--color-yellow: #b7b886;
	--color-green: #94ab94;
}
html {
  scroll-behavior: smooth;
}
body {
	font-family: "Noto Sans JP", sans-serif;
	color: #f5f5f5;
	background: var(--color-dark);}
	letter-spacing: 1px;
}
@media (min-width: 990px) {
	body {
	font-size: var(--font-size-18);
	}
}
@media (max-width: 990px) {
	body {
	font-size: var(--font-size-16);
	}
}

.din{
font-family: "din-condensed", sans-serif;
font-weight: 400;
font-style: normal;
letter-spacing: 10px;
}
dfn { font-style: normal; }
span.dfn-subtitle{
	display: block;
	font-size: var(--font-size-20);
	padding-top: 15px;
}

/* ----- Mobile footer button ----- */
/* 990px以上では非表示 */
@media (min-width: 990px) {
	.contact-button {
		display: none;
  }
}

/* スマートフォンサイズ（990px以下）でのみ表示 */
@media (max-width: 990px) {
	.contact-button {
		display: none;
		position: fixed;
		bottom: 20px;
		right: 20px;
		background-color: var(--color-dark-gray);
		color: var(--color-light);
		padding: 10px 14px;
		border-radius: 50%;
		z-index: 9999;
		opacity: 0;
		transition: opacity 0.3s ease-in-out;
  }
	.contact-button.show {
	display: block;
	opacity: 1;
  }
	.contact-button a {
	color: #fff;
	font-size: 16px;
  }
}

/* ----- Space -----*/
.mt20{margin-top: 20px;}
.mt50{margin-top: 50px;}

/* ----- Font ----- */
a{text-decoration: none;}
p{line-height: 2;}
.lh16{line-height: 1.6;}
.en {
	font-family: "sofia-pro", sans-serif;
	font-weight: 900;
	font-style: normal;
	letter-spacing: 1px;
}
.en-menu {
	font-family: "sofia-pro", sans-serif;
	font-weight: 900;
	font-style: normal;
	letter-spacing: 3px;
}
.title14{font-size: var(--font-size-12);}
.title14{font-size: var(--font-size-14);}
.title16{font-size: var(--font-size-16);font-weight: normal;}
.title18{font-size: var(--font-size-18);}
.title20{font-size: var(--font-size-20);}
.title24{font-size: var(--font-size-24);}
.title32{font-size: var(--font-size-32);}
.title48{font-size: var(--font-size-48);}

.bold{font-weight: 700;}
strong{font-weight: bold;}
.en.title32{line-height:1.2;margin-top:10px;}
h4{line-height: 2;}
.small {
  font-size: 0.8em;
	font-weight:normal;
	margin:0 0.3em;
}
/* ----- Color ----- */
.white{color: var(--color-);}
.light{color: var(--color-light);}
.light-gray{color: var(--color-light-gray);}
.gray{color: var(--color-gray);}
.dark-gray{color: var(--color-dark-gray);}
.blue-gray{color: var(--color-blue-gray);}
.middle{color: var(--color-middle);}
.dark{color: var(--color-dark);}
.yellow{color: var(--color-yellow);}
.green{color: var(--color-green);}

/* ----- Background Color ----- */
.bg-white{background-color: var(--color-white);}
.bg-light{background-color: var(--color-light);}
.bg-light-gray{background-color: var(--color-light-gray);}
.bg-gray{background-color: var(--color-gray);}
.bg-dark-gray{background-color: var(--color-dark-gray);}
.bg-blue-gray{background-color: var(--color-blue-gray);}
.bg-middle{background-color: var(--color-middle);}
.bg-dark{background-color: var(--color-dark);}
.bg-yellow{background-color: var(--color-yellow);}
.bg-green{background-color: var(--color-green);}

/* ----- Float -----*/
.center{float: center;}
.left{float: left;}
.right{float: right;}
.clearfix{clear:both;}

/* ----- text etc -----*/
@media (max-width: 990px) {
	.hide-br br {
		display: none;
	}
}
/*
h1, h2, h3, h4, h5, h6 {
  word-break: auto-phrase;
  white-space: normal;
}
*/
/* ----- Fade animation ----- */
@keyframes fadeIn {
  from { opacity: 0;}
  to { opacity: 1;}
}
.fade {
  opacity: 0;
  animation: fadeIn 1.5s ease-in-out forwards;
}
.fade-05s {
  opacity: 0;
  animation: fadeIn 1.5s ease-in-out 0.5s forwards;
}

/* Link button */
.link-btn {
	display: inline-block;
	padding: 10px 20px;
	background: var(--color-gray);
	color: white;
	text-decoration: none;
	font-weight: 700;
	margin-left: auto; /* 右端に配置 */
	transition: .3s;
}
.link-btn:hover  {
	display: inline-block;
	padding: 10px 20px;
	background: var(--color-dark-gray);
	color: white;
	text-decoration: none;
	font-weight: 700;
	margin-left: auto; /* 右端に配置 */
	transition: .3s;
}

.link-btn:nth-child(n+2) {
	margin-left: 20px;
}

.menu .reservation-btn {
	display: inline-block;
	width:80%;
	max-width:450px;
	padding: 20px 20px;
	margin: 50px auto;
	background: var(--color-middle);
	color: white;
	text-decoration: none;
	font-weight: 700;
	text-align: center;
	transition: .3s;
}
.menu .reservation-btn:hover {background: var(--color-dark-gray);}



/* ----- Header ----- */
.header {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 70px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 40px 20px;
	background: rgba(0, 0, 0, 0.5);
	color: var(--color-white);
	z-index: 1000;
	box-sizing: border-box;
}
.logo {
	object-fit: contain;
/*
	height: 50px;
*/
	transition: height 0.3s ease-in-out;
    aspect-ratio: 1/1;
	width:100%;
}
.nav {
	display: flex;
	align-items: center;
}
.nav-links {
	display: flex;
	gap: 30px;
	position: absolute;
	left: 50%;
	transform: translateX(-50%);
white-space: nowrap; /* 折り返し防止 */
}
.nav-links a {
	text-decoration: none;
	font-size: var(--font-size-20);
	color: var(--color-white);
	transition: color 0.3s;
}
.nav-links a:hover {
	color: var(--color-light);
}

/* Contact button */
.contact-btn {
position: relative;
	right: 50px;
	padding: 10px 20px;
	background: var(--color-gray);
	color: white;
	text-decoration: none;
	border-radius: 50px;
	font-weight: 700;
	margin-left: auto;
	transition: .3s;
    min-width: 136px;
}
.contact-btn:hover {
	background: var(--color-dark);
}

/* ----- Humberger menu ----- */
#menu-toggle {
	display: none;
}
.menu-btn {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	cursor: pointer;
	position: fixed;
	gap: 8px;
	top: 20px;
	right: 15px;
	z-index: 1200;
}

.menu-btn span {
	width: 30px;
	height: 2px;
	background: var(--color-white);
	transition: transform 0.3s, opacity 0.3s;
}
.menu {
	flex-direction: column;
	background: #141414;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	max-height: 100vh;
	display: flex;
	justify-content: flex-start;
	transition: opacity 0.3s ease-in-out;
	overflow-y: auto;
	padding: 0;
	gap: 4%;
	opacity: 0;
	pointer-events: none;
}
@media (max-width: 480px) {
	.menu {
		padding: 5%;
	}
}

.menu a {
	color: var(--color-light);
	font-size: 28px;
	font-weight: bold;
	text-decoration: none;
	position: relative;
	transition: color 0.3s;	

}
.menu a.store-link {
	color: var(--color-light);
	font-size: 48px;
	font-weight: bold;
	text-decoration: none;
	position: relative;
	transition: color 0.3s;	
	margin-bottom:20px;
}
.menu .header-column ul li:first-child {
	margin-bottom: 20px;
}
.menu li a:hover,
.sub-menu li a:hover {
	color: var(--color-light-gray);
}

.sub-menu a {
	color: var(--color-light);
	font-size: var(--font-size-16);
	text-decoration: none;
	position: relative;
	transition: color 0.3s;	
}
.menu .header-column ul.sub-menu {
	display: flex;
	gap: 0;
	margin-top: 30px;
	padding-top: 20px;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	width: 100%;
	max-width: 80%;
}

.menu .header-column ul.sub-menu:nth-child(n+2){
	margin-top: 0;
}


.menu .header-column ul.sub-menu li {
	text-align: left;
	white-space: nowrap;
	margin-right:15px;
}

/* スマホで縦に戻したい場合はこちら（任意） */
@media (max-width: 480px) {
	.menu .header-column ul.sub-menu {
		/* スマホでも横並びを維持するならそのままでOK */
		/* もし縦に戻したい場合は grid-template-columns: 1fr; にしてください */
	}
}


.sprit-image{
	height: 100vh;
}


/* アンダーラインの設定 */
.menu li a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -2px; /* テキストの下に配置 */
	width: 0; /* 初期状態は非表示 */
	height: 2px;
	background: var(--color-light-gray); /* アンダーラインの色 */
	opacity: 0; /* 最初は透明 */
	transition: width 0.4s ease-in-out, opacity 0.4s ease-in-out; /* アニメーション */
}

/* ホバー時にアンダーラインを表示 */
.menu li a:hover::after {
	width: 100%; /* 左から右へ広がる */
	opacity: 1; /* ふわっと表示 */
}


/* フルスクリーンメニューのベース */
.menu {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100vh;
	background: #141414;
	z-index: 1100;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.4s ease;
}

/* 表示時 */
#menu-toggle:checked ~ .menu {
	opacity: 1;
	pointer-events: auto;
}

/* グリッドコンテナ（PC設定） */
.full-screen-sprit {
	display: grid;
	grid-template-columns: 1fr 1fr; /* 左右50%ずつ */
	width: 100%;
	height: 100vh; /* 画面いっぱいの高さに固定 */
	overflow: hidden; /* 親はスクロールさせない */
}

/* 左側：画像エリア */
.sprit-image {
	width: 100%;
	height: 100vh;
}

.sprit-image img {
	width: 100%;
	height: 100%;
	object-fit: cover; /* 歪まずにエリアを埋める */
	display: block;
}

/* 右側：スクロールメニューエリア */
.header-column {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: flex-star; /* 中央寄せ（項目が少なければ中央、多ければ上からスクロール） */
	width: 100%;
	height: 100vh; /* 高さを固定 */
	padding: 50px 0; /* 上下の余白 */
	overflow-y: auto; /* ここだけスクロールを許可 */
	-webkit-overflow-scrolling: touch; /* スマホでの慣性スクロール */
}

/* メニューリストの整形 */
.menu .header-column ul {
	display: grid;
	grid-template-columns: 1fr; /* 1列に統一 */
	gap: 10px;
	padding: 0;
	list-style: none;
	width: 80%; /* 幅を絞って中央寄せを強調 */
}

.menu .header-column ul li {
	text-align: left;
	padding: 8px 0;
}

@media screen and (max-width: 819px) {
	/* 縦並びにせず、横並び（columns）の比率を20% : 80% に変更 */
	.full-screen-sprit {
		display: grid;
		grid-template-columns: 18% 82%; /* ★ここを 20% 80% に固定 */
		width: 100%;
		height: 100vh;
		overflow: hidden;
	}

	/* 左側20%：画像エリア */
	.sprit-image {
		width: 100%;
		height: 100vh;
		background: rgba(255, 255, 255, 0.05); /* ほんの少し明るくして境界を出す */
		backdrop-filter: blur(5px);
		-webkit-backdrop-filter: blur(5px);
	}

	.sprit-image img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}

	/* 右側80%：テキストメニューエリア */
	.header-column {
		width: 100%;
		height: 100vh;
		justify-content: flex-start; /* 上から順に並べる */
		overflow-y: auto;
		box-sizing: border-box;
	}

	/* スマホの横幅に合わせてフォントサイズを最適化（はみ出し防止） */
	.menu a {
		font-size: 18px; /* 28pxから少し縮小 */
	}

	.menu a.store-link {
		font-size: 26px; /* 48pxから少し縮小（1行に収めるため） */
	}

	/* サブメニューも80%の枠内で収まるように調整 */
	.menu .header-column ul.sub-menu a{
		flex-wrap: wrap; /* 幅が足りない時は自動改行 */
		font-size: 12px;
		font-weight:normal;
	}
}





#menu-toggle:checked ~ .menu {
	opacity: 1;
	pointer-events: auto;
}


/* ☰ → × に変化 */
#menu-toggle:checked ~ .menu-btn span:nth-child(1) {
	transform: translateY(10px) rotate(45deg);
}
#menu-toggle:checked ~ .menu-btn span:nth-child(2) {
	opacity: 0;
}
#menu-toggle:checked ~ .menu-btn span:nth-child(3) {
	transform: translateY(-10px) rotate(-45deg);
}


@media (min-width: 819px) {
	.nav-links {
		display: flex;
		justify-content: center;
		align-items: center;
		gap: 30px;
		flex-grow: 1;
	}
	
}

@media (max-width: 819px) {
	.header .logo{
		height: 128px;
		max-width: fit-content;
	}
	
	.nav-links {
		display: none;
	}

	.contact-btn {
		display: none;
	}
	.menu {
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		display: flex;
		flex-direction: column;
		gap: 0;
		padding:0;
		opacity: 0;
		pointer-events: none;
		transition: opacity 0.3s ease-in-out;
	}

	/* メニュー表示時 */
	#menu-toggle:checked ~ .menu {
		opacity: 1;
		pointer-events: auto;
	}
	#menu-toggle:checked ~ .menu-btn {
		gap: 8px;
	}
}
	/* メニュー表示時 */
	#menu-toggle:checked ~ .menu {
		opacity: 1;
		pointer-events: auto;
	overflow-y: auto;
	}









/* ----- Hero ----- */
.hero {
	position: relative;
	width: 100vw;
	height: 100svh;
	overflow: hidden;
	margin-bottom:0;
}
.hero-image-wrapper {
	width: 100%;
	height: 100%;
}
.hero-image-wrapper::after {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(0, 0, 0, 0.35); /* ★ 0.35 = 35%の暗さ（お好みで調整） */
	z-index: 2; /* 画像(z-index: 1)より上に配置 */
	pointer-events: none; /* クリック操作を邪魔しない */
}

.hero-image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: 1;
}

/* ロゴの配置 */
.hero-overlay-logo {
	position: absolute;
	top: 40%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 50vw;
	max-width: 280px;
	height: auto;
	z-index: 10;
}

.hero-overlay-logo img {
	width: 100%;
	height: auto;
	z-index: 10;
}

.hero-copy{
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 98%;
	height: auto;
	text-align: center;
	color: #fff;
	font-size:18px;
	z-index: 10;
}

.hero-copy h1{
font-size:20px;
letter-spacing:10px;
margin-bottom: 30px;
}
.hero-copy h1 span{
font-family: "din-condensed", sans-serif;
font-size:48px;
display: block;
margin-top:20px;
}
.hero-copy p{
font-family: "M PLUS Rounded 1c";
line-height:2.5
}


/* ----- パンくずリスト ----- */
.breadcrumb-container {
	padding: ;
	font-size: 0.8em;
}

.breadcrumb {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	gap: 5px;
}

.breadcrumb li {
	display: inline;
}

.breadcrumb li+li:before {
	content: ">";
	padding: 0 10px 0 5px;
	color: #999;
}

.breadcrumb a {
	color: ;
	text-decoration: none;
	position: relative; /* 擬似要素の基準 */
	transition: color 0.3s;
}

.bg-middle .breadcrumb a {
	color: var(--color-light);
}

.breadcrumb a:hover {
	color: var(--color-light-gray);
}

/* アンダーラインの設定 */
.breadcrumb a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -2px; /* テキストの下に配置 */
	width: 0; /* 初期状態は非表示 */
	height: 2px;
	background: var(--color-light-gray); /* アンダーラインの色 */
	opacity: 0; /* 最初は透明 */
	transition: width 0.4s ease-in-out, opacity 0.4s ease-in-out; /* アニメーション */
}

/* ホバー時にアンダーラインを表示 */
.breadcrumb a:hover::after {
	width: 100%; /* 左から右へ広がる */
	opacity: 1; /* ふわっと表示 */
}












/* ----- main catch copy ----- */
section{
	margin-bottom:100px;
}
section.page-title{
	margin-top:100px;
}
section.page-title .container{
	width:50%;
	max-width:640px;
	margin:0 auto;
}
.subtitle{margin-top: 50px;}
.page-title .container {text-align: center;}

@media (max-width: 990px) {
	section.page-title .container{
		width:90%;
		max-width:640px;
		margin:0 auto;
	}
	.page-title .container {
		text-align: left;
	}
}





@media (max-width: 990px) {
	.section {
		flex-direction: column;
	}
	.image-container,
	.text-container {
		width: 100%;
	}
	.text-container {
		width: 90%;
		max-width:640px;
		margin: 64px auto 150px auto;
		padding: 0;
	}
}





.about-top {
    background: var(--color-middle);
    padding-bottom: 80px;
}

.about-top img {
    width: 100%;
    display: block;
}

/* コンテナ：PC・タブレットでは横並び（中央寄せ） */
.about-top .container {
    width: min(90%, 1200px); /* 横並びにするため、最大幅を少し広げるとバランスが良いです */
    margin: 100px auto 50px;
    
    display: flex;
    flex-direction: row; /* 横並び */
    justify-content: center;
    align-items: flex-start; /* 上揃え */
    gap: 20px; /* パソコン時のゆとりある間隔 */
    text-align: left; /* 基本は左寄せ */
}

/* 各ボックスの幅調整 */
.about-title-box {
    flex: 2; /* 比率1 */
}

.about-content-box {
    flex: 3; /* 比率2（本文を広めに） */
}

/* テキスト装飾 */
.about-title-box h2 {
    font-size: 1rem;
    font-weight: normal;
    letter-spacing: 0.1em;
    margin-bottom: 10px;
    line-height: 1.4;
}
.about-title-box h2 span{
font-family: "din-condensed", sans-serif;
font-weight: 400;
font-style: normal;
font-size: 1.1rem;
}

.about-title-box p {
    font-size: 3.5rem;
	font-weight: 800;
	word-break: auto-phrase;
    line-height: normal;
}

.about-content-box p {
    line-height: 2;
    margin-bottom: 2em;
}

/* ----- Responsive ----- */

/* タブレット・スマホ（767px以下）の設定 */
@media (max-width: 767px) {
    .about-top .container {
        flex-direction: column; /* 縦並びに変更 */
        gap: 30px; /* スマホ時の間隔 */
        margin: 60px auto 40px;
    }

    .about-title-box,
    .about-content-box {
        max-width: 100%;
        width: 100%;
    }

    .about-h2 {
        font-size: 1.5rem;
    }
	.about-title-box p {
		font-size: 2.5rem;
	}

    .about-content-box p {
        text-align: justify; /* 文章の端を揃える（美しさ重視） */
    }
}




/* ----- HERO画像下 横並び画像 -----*/
.hero-bottom-images {
	display: flex;
	flex-wrap: wrap;
	flex-direction: row;
	justify-content: space-around;
	width: 100vw;
	margin: 0 auto;
}
.hero-bottom-images div {
	position: relative;
	width: 33.33333%;
	aspect-ratio: 3 / 2;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	color: white;
	text-align: center;
	padding: 20px;
	overflow: hidden;
}
.hero-bottom-images div img {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: -1;
}


/* ----- 横並びメニュー -----*/
.no-margin{margin-bottom:0;}
.planmenu {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	width: 100vw;
	margin: 0 auto;
}
.planmenu-item {
	position: relative;
	width: 100%;
	aspect-ratio: 3 / 2;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	color: white;
	text-align: center;
	padding: 20px;
	overflow: hidden;
}
.planmenu-item img {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: -1;
}
.plancard-subtitle {
	position: absolute;
	top: 7%;
	left: 50%;
	transform: translateX(-50%);
	white-space: nowrap;
	font-size:24px;
}
@media (min-width: 990px) {
	.plancard-subtitle {
		font-size:32px;
	}
}
.planmenu-content {
	position: absolute;
	width: 90%;
	padding: 15px 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	bottom: 7%;
}
@media (min-width: 990px) {
	.planmenu-content {
		width: 80%;
	}
}
.planmenu-content h3 {
	margin-bottom: 50px;
}
.planmenu-content p {
	margin-bottom: 30px;
}
.planmenu-content a.link-btn {
	display: inline-block;
	margin: 10px 0 0;
	text-decoration: none;
	font-weight: bold;
}
@media (min-width: 990px) {
	.planmenu {
		flex-direction: row;
		justify-content: space-around;
	}
	.planmenu-item {
		width: 33.33333%;
	}
}
@media (max-width: 990px) {
	.planmenu {
		flex-direction: row;
		justify-content: space-around;
	}
	.planmenu-item {
		width: 33.33333%;
	}
	.planmenu-content h3 {
		margin-bottom: 24px;
	}
	.planmenu-content p {
		margin-bottom: 24px;
	}
	.planmenu-content a.button {
		display: inline-block;
		margin-top: 10px;
		padding: 12px 24px;
		background: var(--color-dark-gray);
		color: var(--color-light);;
		text-decoration: none;
		border-radius: 24px;
		font-weight: bold;
	}
}

/* ----- プラン一覧 実績フォトギャラリー -----*/
.gallery-bg {
	width: 100vw;
	padding: 0;
overflow: hidden;
}
.gallery {
	width: 100%;
/*
	max-width: 1200px;
*/
	margin: 0 auto;
	text-align: center;
}




.lineup-title {
    width: 100%;
    margin-bottom: 40px;
    text-align: center;
}

.title-inner {
    display: flex;
    flex-direction: column; /* 縦並びを基本にする */
    align-items: center;    /* 中央揃え */
    gap: 10px;              /* 要素間の隙間 */
}

/* HTMLの記述順に関わらず、順番をコントロール */
.lineup-h2 {
    order: 2; /* 下に表示 */
    font-size: 3.5rem;
    letter-spacing: 0.1em;
    margin: 0;
}

.lineup-tagline {
    order: 1; /* 上に表示 */
    font-size: 1rem;
    color: var(--color-accent); /* アクセントカラーなど */
    font-weight: bold;
    margin: 0;
}

/* ----- Responsive ----- */
@media (max-width: 767px) {
    .lineup-h2 {
        font-size: 2.5rem;
    }
}





.swiper-container {
width: 100%;
    /* 左右の余白（4%）を確保しつつ、スライドがその中を通り抜けるようにする */
    padding: 0 4%; 
    margin-top: 60px;
    position: relative;
    
    /* 重要：Swiperの計算を狂わせないよう、元のoverflow設定を上書き */
    overflow: visible;
}
.swiper-wrapper {
	display: flex;
}
.swiper-slide {
	width: auto;
	max-width: 400px;
	margin-right: 15px;
}
.swiper-slide img {
	width: 100%;
	height: auto;
}
.swiper-slide a img {transition: .3s;}
.swiper-slide a:hover img {opacity: 0.8;}

.swiper-slide p {
	text-align: center;
	font-size: 1em;
	margin-top: 10px;
	white-space: nowrap;
	font-size:16px;
}
.swiper-slide a:hover {
	color: var(--color-blue-gray);
	transition: .3s;
}

@media (min-width: 990px) {
	.swiper-container {
		width: 100%;
		overflow: hidden;
	}
	.swiper-wrapper {
		padding-right: 0;
	}
	.swiper-slide:last-child {
		margin-right: 0;
	}
}
.swiper-button-next, .swiper-button-prev {
	color: var(--color-white)!important;
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 40px;
	height: 40px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
}
.swiper-button-next {right: 10px;
}
.swiper-button-prev {left: 10px;
}
.swiper-pagination-bullet {background: var(--color-dark-gray) !important;
}


/* ----- FAQ ----- */
.faq-section {
	padding: 150px 4%;
}
.faq-title {
	max-width: 1200px;
	width:100%;
	margin:0 auto 50px;
}
.faq-container {
	max-width: 1200px;
	margin: 0 auto;
	display: grid;
	gap: 20px;
	grid-auto-rows: auto;
	align-items: start;
}
@media (min-width: 990px) {
	.faq-container {
		grid-template-columns: repeat(2, 1fr);
		column-gap: 20px;
	}
	.contact-detail	.faq-container {
		grid-template-columns: repeat(2, 1fr);
		column-gap: 20px;
	}

	.faq-container details:nth-child(-n+2) {
		border-top: 1px solid var(--color-light);
	}
	.faq-section.bg-light .faq-container details:nth-child(-n+2) {
		border-top: 1px solid var(--color-dark-gray);
	}
	.faq-section.bg-light .faq-container details:nth-child(-n+2) {
		border-top: 1px solid var(--color-dark-gray);
	}
}

details {
	border-bottom: 1px solid var(--color-light);
	padding: 30px 0 50px;
}
.contact-detail details {
	border-bottom: 1px solid var(--color-dark-gray);
	padding: 30px 0 50px;
}
details:first-of-type {
	border-top: 1px solid var(--color-light);
}
.faq-section.bg-light details {
	border-bottom: 1px solid var(--color-dark-gray);
}
.faq-section.bg-light details:first-of-type {
	border-top: 1px solid var(--color-dark-gray);
}
summary {
	font-size: var(--font-size-16);
	font-weight: bold;
	cursor: pointer;
	list-style: none;
	display: flex;
	align-items: flex-start;
	transition: .3s;
}
@media (min-width: 768px) {
	summary {
		font-size: var(--font-size-18);
	}
}
/* デフォルトのアイコンを非表示にする */
summary::-webkit-details-marker {
  display: none;
}

summary::before {
	content: '\25B6\FE0E';
	margin-right: 10px;
display: inline-block;
    width: 1em;            /* 幅を1文字分に固定 */
    text-align: center;    /* 中央寄せ */
    font-size: 14px;       /* 必要に応じて数値を固定 */
    vertical-align: middle;
}
details[open] > summary::before {
	content: '\25BC\FE0E';
}
details p{padding-top:30px;}








/* フォーム全体 */
.contact-form {
	display: flex;
	flex-direction: column;
	gap: 40px;
	margin-bottom: 100px;
}

/* 1行レイアウト（PC） */
.form-row {
	display: grid;
	grid-template-columns: 2fr 5fr;
	gap: 20px;
	align-items: start;
}

/* ラベル */
.form-row label {
	font-weight: bold;
}

/* 入力欄 */
.form-row input,
.form-row textarea {
	width: 100%;
	background-color: var(--color-light);
	padding: 10px;
	border: none;
	border-radius: 10px;
	box-sizing: border-box;
}

/* textarea */
.form-row textarea {
	resize: vertical;
}

/* 補足テキスト */
.small {
	display: block;
	margin-top: 5px;
	font-size: 12px;
}

/* 必須ラベル */
.required {
	color: #fff;
	background: red;
	font-size: 10px;
	padding: 2px 6px;
	margin-right: 5px;
	border-radius: 3px;
}

/* チェックボックス */
.service-menu {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 15px;
}

.service-menu label {
	font-weight: normal;
}

/* ボタン */
.contact-form button { margin-top:30px; border: none; } .contact-form button.btn-contact{ margin-left:0; max-width:200px; }

/* スマホ対応 */
@media (max-width: 768px) {
	.form-row {
		grid-template-columns: 1fr;
	}
}

/* サービスメニュー */
.service-menu {
	margin-bottom: 5px;
}

span.required {
	position: relative;
	top: -2px;
	color: white;
	background-color: var(--color-blue-gray);
	padding: 5px;
	margin-right: 5px;
	font-size: 0.6em;
	vertical-align: middle;
	display: inline-block !important;
}

/* サービスメニューのタイトル（span） */
.service-menu span {
	display: block; /* spanタグはブロック要素にして改行 */
	margin-bottom: 10px; /* spanとチェックボックスの間に余白 */
	font-weight: bold;
}

/* チェックボックスとラベルを横並びにする */
.service-menu input[type="checkbox"],
.service-menu label {
	display: inline-block; /* チェックボックスとラベルを横並びにする */
	margin-right: 20px; /* チェックボックスとラベルの間隔 */
	font-size: 1em;
	cursor: pointer;
}

/* チェックボックスの余白を調整 */
.service-menu input[type="checkbox"] {
	margin-right: 10px;
	padding: 10px;
	width: 20px; /* 幅を20pxに設定 */
	height: 20px; /* 高さを20pxに設定 */
	vertical-align: text-top;
	appearance: none;
	border: 2px solid var(--color-dark-gray);
	border-radius: 4px;
	position: relative;
	cursor: pointer;
	background-color: transparent; /* 背景色は透明 */
	transition: background-color 0.3s ease-in-out, border-color 0.3s ease-in-out, transform 0.3s ease-in-out;
	top: -2px;
}

/* チェックされたときの背景色を維持 */
.service-menu input[type="checkbox"]:checked {
	transition: background-color 0.3s ease-in-out, border-color 0.3s ease-in-out;
}

/* チェックマーク（✓）を作成 */
.service-menu input[type="checkbox"]::after {
	content: "✓";
	font-size: 16px;
	color: white;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	opacity: 0;
	transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
	font-weight: bold;
}

/* チェックされたら✓をフェードイン */
.service-menu input[type="checkbox"]:checked::after {
	opacity: 1;
}

/* チェックボックスのアニメーション */
.service-menu input[type="checkbox"]:checked {
	background-color: var(--color-dark-gray);
	border-color: transparent;
	transition: background-color 0.3s ease-in-out;

}

.service-menu input[type="checkbox"]:active {
	background-color: var(--color-dark-gray) !important;
}

/* ラベル（テキスト）のスタイル */
.service-menu label {
	font-size: 1em;
	cursor: pointer;
	margin-left: 5px;
	margin-bottom: 5px;
	vertical-align: middle; /* チェックボックスとテキストを揃える */
}

@media (max-width: 990px) {
	.service-menu label {
		display: block;
	}
}

.contact-form textarea::placeholder {
	color: rgba(0, 0, 0, 0.5); /* 薄い色 */
}

input::placeholder {
	color: rgba(0, 0, 0, 0.5); /* 薄い色 */
	font-size: 0.8em;
}







/* ----- Company ----- */
@media (min-width: 990px) {
	.sticky{
		position: sticky;
		top: 100px;
	}
}
.right-main {
	padding: 150px 4%;
	margin-bottom:0;
}

.right-main .container{
	max-width: 1200px;
	margin: 0 auto;
	display: grid;
	gap: 20px;
	grid-auto-rows: auto;
	align-items: start;
}
.right-main .title{
	margin-bottom:50px;
}

@media (min-width: 990px) {
	.right-main .container{
		grid-template-columns: 35% 65%;
		column-gap: 20px;
	}
}
dl {
  display: flex;
  justify-content: space-between;
	text-align: left;
	line-height: 2;
}

dt {
  padding: 20px 30px;
  width: 200px;
  border-bottom: 1px solid var(--color-dark-gray);
	font-weight: bold;

}

dd {
  padding: 20px 30px;
  width: calc(100% - 200px);
  border-bottom: 1px solid var(--color-dark-gray);
}
dl.first dt,
dl.first dd {
  padding: 0 30px 20px;
}

dd.cancel ul{
margin-top: 20px;
}

@media (max-width: 990px) {
	dl {
	display: flex;
	justify-content: space-between;
	flex-direction: column;
	}
	
	dt {
	padding: 20px 30px 0;
	width: 128px;
	border-bottom: none;
	width: 100%;
	}
	
	dd {
	padding: 10px 30px 20px;
	width: calc(100% - 128px);
	border-bottom: 1px solid var(--color-dark-gray);
	width: 100%;
	}
}
dd a {
  color: var(--color-blue-gray);
  text-decoration: none;
  position: relative; /* 疑似要素を配置するために必要 */
}

dd a::after {
  content: ""; 
  position: absolute;
  left: 0;
  bottom: -2px; /* 下線の位置 */
  width: 100%;
  height: 1px; /* 下線の太さ */
  background-color: var(--color-blue-gray);
  transition: transform 0.3s ease; /* アニメーションの適用 */
  transform-origin: left; /* 左端を基準に変化 */
}

dd a:hover {
  color: var(--color-light-gray); /* 文字色を変更 */
}

dd a:hover::after {
  transform: scaleX(0); /* 下線を左から右に縮小 */
}
dd ul{
    line-height: 2;
    margin: 0 0 20px;
    list-style: none;
    padding-left: 0;
}
dd ul:last-child {
	margin-bottom: 0;
}




/* ----- Access ----- */
.access-section {
	padding: 0 4% 100px;
	margin-bottom:0;
}
.access-title {
	max-width: 1200px;
	width:100%;
	margin:0 auto;
	text-align: left;
}



.access-container {
	max-width: 1200px;
	margin: 0 auto;
	display: grid;
	gap: 20px;
	grid-auto-rows: auto;
	align-items: start;
}
@media (min-width: 0px) {
	.access-container {
		grid-template-columns: repeat(1, 1fr);
		column-gap: 20px;
	}
}
@media (min-width: 768px) {
	.access-container {
		grid-template-columns: repeat(2, 1fr);
		column-gap: 20px;
	}
}
@media (min-width: 1024px) {
	.access-container {
		grid-template-columns: 37% 37% 26%;
		column-gap: 20px;
	}
}
.access-container .information h3{

}

.access-container .information ul {
	list-style: none;
	padding: 0;
	line-height: 2;
}

.access-container .information ul a {
	color: var(--color-blue-gray);
	font-size: var(--font-size-16);
	text-decoration: none;
	position: relative; /* 擬似要素の基準 */
	transition: color 0.3s;
}
.access-container .information ul li a:hover {
	color: var(--color-light-gray);
}

/* アンダーラインの設定 */
.access-container .information ul li a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -2px; /* テキストの下に配置 */
	width: 0; /* 初期状態は非表示 */
	height: 2px;
	background: var(--color-light-gray); /* アンダーラインの色 */
	opacity: 0; /* 最初は透明 */
	transition: width 0.4s ease-in-out, opacity 0.4s ease-in-out; /* アニメーション */
}

/* ホバー時にアンダーラインを表示 */
.access-container .information ul li a:hover::after {
	width: 100%; /* 左から右へ広がる */
	opacity: 1; /* ふわっと表示 */
}

.custom-map-container {
	display: inline-block;
	width: 100%;
	max-width: 1200px;
	margin: 50px auto 0;
	overflow: hidden;
}

.custom-map-container iframe {
	aspect-ratio: 16 / 9;
	margin-bottom:50px;
}





/* ----- FAQ details ----- */
.faq-detail-section {
  padding: 150px 4%;
}

.faq-detail-title {
  max-width: 1200px;
  width: 100%;
  margin: 0 auto 50px;
}

.faq-list {
  display: block;
  gap: 20px;
  max-width: 1200px;
  width: 100%;
  margin: 0 auto;
}

.faq-list h2 {
  font-size:1.3rem;
  line-height: 1.7;
  margin-bottom: 20px;
  text-wrap: auto;
}
.faq-item ul{
	line-height: 2;
	list-style: none;
	padding-left: 0;
	margin-bottom: 5px;
}
.faq-buttons-container,
.faq-detail-container {
  width: 100%;
}

.faq-detail-container {
  display: grid;
  gap: 30px;
  grid-auto-rows: auto;
  align-items: start;
}

.faq-buttons-container {
  margin-bottom: 50px;
  display: flex;
  flex-direction: column;
}


.faq-buttons input {
  display: none;
}

.faq-buttons label {
  padding: 10px 15px;
  border: 1px solid #ccc;
  background-color: #fff;
  cursor: pointer;
  transition: all 0.3s;
  display: block;
  text-align: center;
  width: 100%;
  box-sizing: border-box;
}

/* チェックボックスが選択されている時のデザイン */
.faq-buttons input:checked + label {
  background-color: #007bff;
  color: white;
}


/* active時のデザイン（クリックしたとき） */
.faq-buttons label.active {
  background-color: var(--color-gray);
  color: var(--color-light);
}


/* hover時のデザイン */
.faq-buttons label:hover {

}

/* キーワード（横2列） */
.faq-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}


@media only screen and (min-width: 768px) {
  .faq-list {
    display: flex;
    gap: 50px;
  }

  .faq-buttons-container { width: 30%;}
  .faq-detail-container { width: 70%;}
}

.faq-item {
  padding-bottom: 30px;
  border-bottom: 1px solid var(--color-gray);
}

.faq-item:last-child {
  padding-bottom: 0;
  margin-bottom: 0;
  border-bottom: none;
}

/* キーワードのボタンを横2列に並べる */
.faq-buttons.categories{
  display: grid;
  gap: 10px;
  align-items: start;
  grid-template-columns: repeat(2, 1fr);
  font-size:14px;
}
.faq-buttons.keywords{
  display: grid;
  gap: 10px;
  align-items: start;
  grid-template-columns: repeat(3, 1fr);
  margin-top: 20px;
  font-size:14px;
}
@media only screen and (min-width: 768px) {
	.faq-buttons.categories {
	grid-template-columns: repeat(1, 1fr);
	font-size:16px;
	}
	.faq-buttons.keywords {
	grid-template-columns: repeat(2, 1fr);
	}
}
@media only screen and (min-width: 1170px) {
	.faq-buttons.keywords {
	grid-template-columns: repeat(3, 1fr);
	}
}
.faq-buttons.keywords label {
  display: flex;
  flex-direction: column;
  align-items: left;
  gap: 10px;
  width: 100%;
}
.faq-item a {
  color: var(--color-blue-gray);
  text-decoration: none;
  position: relative; /* 疑似要素を配置するために必要 */
}

.faq-item a::after {
  content: ""; 
  position: absolute;
  left: 0;
  bottom: -2px; /* 下線の位置 */
  width: 100%;
  height: 1px; /* 下線の太さ */
  background-color: var(--color-blue-gray);
  transition: transform 0.3s ease; /* アニメーションの適用 */
  transform-origin: left; /* 左端を基準に変化 */
}

.faq-item a:hover {
  color: var(--color-light-gray); /* 文字色を変更 */
}

.faq-item a:hover::after {
  transform: scaleX(0); /* 下線を左から右に縮小 */
}



.title-container {
    margin: 0 auto 40px;
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 40px;
}

.title-main {
    display: flex;
    flex-direction: column;
    text-align: left;
}

.title-main h2 {
    font-size: 1rem;
    font-weight: normal;
    margin-bottom: 10px;
}

.title-main span {
    font-size: 5rem;
    font-weight: 800;
    word-break: break-word;
    line-height: .9;
    margin-left: -5px;
}


.title-description {
    flex: 1;
    max-width: 500px;
    margin: 0;
    text-align: right;
    font-size: 0.95rem;
    line-height: 1.8;
}

@media (max-width: 767px) {
    .title-container {
        flex-direction: column;
        align-items: flex-start;
        gap: 20px;
        margin-bottom: 30px;
    }
	.title-main span {
		font-size: 3.5rem;
	}
    .title-description {
        text-align: left;
        max-width: 100%;
        margin-top: 10px;
	    word-break: auto-phrase;
    }
}

/* ----- News Section ----- */
.news-section {
    width: min(90%, 1200px);
    margin: 100px auto; 
}



.news-container {
    display: grid;
    grid-template-columns: repeat(4, 1fr); 
    gap: 20px; 
    width: 100%;
}

.news-content {
    width: 100%;
    text-align: left;
}

.news-link {
    display: block;
    text-decoration: none;

    transition: opacity 0.3s;
}

.news-link:hover {
    opacity: 0.6;
}

.news-img {
    width: 100%;
    margin-bottom: 15px;
}

.news-img picture {
    display: block;
    position: relative;
    width: 100%;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    margin: 0;
}

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

.news-text {
    color: var(--color-white);
}

.news-date {
    display: block;
    font-size: 0.85rem;
    font-weight: bold;
    margin-bottom: 8px;
    color: var(--color-light-gray, #ccc);
}

.news-title {
    font-size: 1rem;
    line-height: 1.7;
    font-weight: bold;
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
@media (max-width: 1024px) {
    .news-container {
        grid-template-columns: repeat(2, 1fr);
    }
	.news-date {
		display: block;
		font-size: 0.65rem;
	}
	.news-title {
		font-size: 0.8rem;
	}
}







/* =============================================
   WP投稿一覧セクション（SPIRA FARM専用：縦積み3列グリッド）
   ============================================= */

/* セクション全体 */
.post-list-section {
    width: min(92%, 1200px);
    margin: 0 auto;
}

/* お知らせタイトルエリア */
.news-title {
}

.news-title h1 {
    font-weight: bold;
    margin-bottom: 5px;
}

/* グリッドコンテナ：投稿が1つでも「3分割された1つ分」の幅に収める */
.post-grid-container {
    display: grid;
    gap: 40px 30px;
    grid-auto-rows: auto;
    align-items: start;
    margin-bottom: 80px;
}

/* スマートフォン（1列） */
@media (max-width: 767px) {
    .post-grid-container {
        grid-template-columns: 1fr;
    }
}

/* タブレット・PC（3列） */
@media (min-width: 768px) {
    .post-grid-container {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* 投稿カード：画像とテキストを縦に並べるための設定 */
.post-card {
    display: block; /* 内部要素を縦に積む */
    text-decoration: none;
    color: inherit;
    width: 100%;
    transition: opacity 0.3s ease;
}

.post-card:hover {
    opacity: 0.8;
}

/* 画像エリア */
.post-card-img {
    display: block;
    width: 100%;
}

.post-card-img figure {
    width: 100%;
    aspect-ratio: 16 / 9; /* 高さを統一 */
    overflow: hidden;
    margin: 0;
    padding: 0;
    background-color: #f0f0f0;
}

.post-card-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block; /* 画像下の隙間を排除 */
}

/* テキストエリア：画像の下に配置 */
.post-card-text {
    display: block;
    padding: 15px 0;
    width: 100%;
}


.post-title {
    font-size: 1.5rem;
    line-height: 1.5;
    margin: 0 0 12px 0;
    font-weight: bold;
    display: block;
}

/* カテゴリーとタグ */
/* 親要素：ここで縦方向の整列をコントロールします */
.post-meta-info {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 5px;
    align-items: center; /* ★これで中の要素の「中心」がすべて揃います */
}

/* 日付も同じ高さの基準に合わせるため、必要なら調整 */
.post-date {
    display: inline-block; /* blockから変更 */
    margin: 0;             /* 上下のズレの原因になるマージンをリセット */
    padding: 0;
    font-size: 0.8rem;
    color: #888;
    line-height: 1;        /* 行の高さを最小限にして中央に寄せる */
}

/* カテゴリーアイテム */
.post-cat-item {
    background-color: #888;
    padding: 3px 8px; /* 左右に少し余白を作るとより綺麗です */
    color: #fff;
    font-size: 0.7rem;
    line-height: 1; /* 文字の上下の余分な隙間を消す */
    display: inline-flex; /* 内部でも中心を揃えやすくする */
    align-items: center;
    border-radius: 2px;
}

/* タグアイテムも同様に */
.post-tag-item {
    font-size: 0.7rem;
    line-height: 1;
    display: inline-flex;
    align-items: center;
}

/* ページネーション */
.pagination {
    text-align: center;
    margin-top: 40px;
}

.pagination .nav-links {
    display: flex;
    justify-content: center;
    gap: 8px;
}

.pagination a, 
.pagination span {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border: 1px solid #eee;
    text-decoration: none;
    color: #333;
}

.pagination .current {
    background-color: #333;
    color: #fff;
    border-color: #333;
}









/* ----- Blog ----- */
.blog-section {
  padding: 150px 4%;
}

.blog-title {
  max-width: 1200px;
  width: 100%;
  margin: 0 auto 50px;
}

.blog-container {
  display: grid;
  max-width: 1200px;
  margin: 0 auto;
  gap: 20px;
  width: 100%;
}

.blog-content {
  display: flex;
  gap: 20px;
  background-color: var(--color-middle);
  padding: 50px 30px;
  margin: 0;
  text-align: left;
  flex-wrap: wrap; /* デフォルトは wrap（スマホ向け） */
}
.blog-content span {
  font-size: 0.8rem;
  font-weight: bold;
}

.blog-content h2 {
  margin-bottom: 20px;
	line-height: 1.7;
}
h4.wp-block-heading {
    margin-top: 20px;
    margin-bottom: -20px;
}

.blog-content h3 {
  font-size: 1rem;
  margin-top: 20px;
  margin-bottom: 20px;
}

.blog-text {
  width: 100%;
}

.blog-img {
  width: 100%;
}

.blog-img figure {
  position: relative;
  width: 100%;
  padding-top: 66.666%; /* 3:2比率 */
  overflow: hidden;
}

.blog-img figure img {
/*
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  height: 100%;
  width: auto;
*/
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 100%;
	height: auto;
	object-fit: cover;
	object-position: center;
	max-width: none; /* 元画像に縛られない */
}

.blog-img figure img.landscape {
  width: 100%;
  height: auto;
  top: 0;
  left: 0;
  transform: none;
}
@media (max-width: 768px) {
  .blog-content {
    flex-direction: column-reverse; /* 画像が上、テキストが下 */
  }
}

@media (min-width: 768px) {
  .blog-content {
    flex-wrap: nowrap; /* PCでは nowrap にして崩れを防ぐ */
    flex-direction: row;
  }
  .blog-img {
    order: 1;  /* PC時は画像が左 */
    width: 30%;
  }
  .blog-text {
    order: 2;  /* PC時はテキストが右 */
    width: 70%;
  }
}
@media (max-width: 768px) {
  .blog-img.dummy-thumbnail {
    display: none;
  }
}

main.blog-details p{
    margin-top: 20px;
}

main.blog-details .sticky h1{
margin-top:0;
}
main.blog-details h1,
main.blog-details h2,
main.blog-details h3 {
    margin-top: 50px;
}
main.blog-details .container figure:not(:first-of-type) {
  margin-top: 50px;
}
.auto-thumbnail,
.default-thumbnail {
	width: 100%;
	height: auto;
	object-fit: cover;
}



/* ----- Banner Section ----- */
.banner-section {
	width: 100%;
    padding: 100px;
    background: var(--color-middle);
}
@media (max-width: 768px) {
	.banner-section {
		padding: 0;
	}
}

.banner-container {
    display: grid;
    /* PC・タブレット：4列 */
    margin: 0 auto;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    max-width: 1200px;
}

.banner-item {
    position: relative;
    display: block;
    width: 100%;
    /* 縦長 2:3 の比率を固定（横2:縦3） */
    aspect-ratio: 2 / 3;
    overflow: hidden;
    text-decoration: none;
}

.banner-img {
    width: 100%;
    height: 100%;
}

.banner-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
}

/* 中央の文字を配置するオーバーレイ */
.banner-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.3); /* 画像を少し暗くして文字を読みやすく */
    transition: background 0.3s ease;
}

.banner-text {
    color: var(--color-white);
    font-size: 1.2rem;
    font-weight: bold;
    letter-spacing: 0.1em;
    padding: 10px 20px;
}

.banner-item:hover .banner-img img {
}

.banner-item:hover .banner-overlay {
    background: rgba(0, 0, 0, 0.5); /* ホバー時に少し暗く */
}

@media (max-width: 640px) {
    .banner-container {
        grid-template-columns: repeat(2, 1fr);
        gap: 0;
    }
    .banner-text {
        font-size: 1rem;
        padding: 8px 15px;
    }
}


/* ----- footer ----- */
footer {
    position: relative;
    width: 100%;
    padding: 100px 4%;
    color: var(--color-white);
    z-index: 1;
    
    /* 背景画像の設定 */
    background-image: url('/images/footer/bg-sp.jpg'); 
    background-size: cover;      /* 100% auto ではなく cover が安全 */
    background-position: center;
    background-repeat: no-repeat;
    
    /* ★重要：iOS（iPhone）では fixed を使わない */
    background-attachment: scroll; 
}

@media (min-width: 767px) {
    footer {
        background-image: url('/images/footer/bg.jpg');
        /* ★PC（画面の大きいデバイス）だけでパララックスを有効にする */
        background-attachment: fixed;
        background-size: cover;
    }
}


/* ★背景画像の上に重ねる黒い透過レイヤー */
footer::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(0, 0, 0, 0.5); /* ★ここで透過具合を調整 */
	z-index: -1; /* 背景画像と文字の間に配置 */
}

/* 中身のコンテンツは透過の影響を受けないようにする */
.footer-container,
.footer-bottom {
	position: relative;
	z-index: 2; /* 透過レイヤーより上に表示 */
}









.footer-logo {
    max-width: 1200px;
    margin: 0 auto 40px;
}
.footer-container {
	max-width: 1200px;
	margin: 0 auto 50px;
	display: flex; /* 横並びの土台 */
	flex-wrap: wrap; /* スマホで折り返し */
	justify-content: space-between;
	align-items: flex-end; /* ★ボタンを右下に配置するため下揃え */
}

/* 左側：リンクエリア（全体の約66.6%） */
.footer-links {
	display: grid;
	grid-template-columns: repeat(2, 1fr); /* 2列並び */
	gap: 20px;
	box-sizing: border-box;
}

.footer-links ul {
	padding: 0;
	margin: 0;
	list-style: none;
}

.footer-links ul li {
	margin-top: 15px;
}

.footer-links ul li a {
	color: var(--color-white);
	text-decoration: none;
	font-size: var(--font-size-16);
	transition: color 0.3s;
}

/* 右側：ストアリンクエリア（全体の約33.3%） */
.footer-store-link {
	width: 33.333%;
	text-align: right; /* ボタンを右寄せ */
	box-sizing: border-box;
	display: flex;
	align-items: end;
}

/* 下部：コピーライトエリア */
.footer-bottom {
    max-width: 1200px;
    margin: 0 auto;
	padding-top: 30px;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	text-align: left;
}

.footer-bottom p {
	line-height: 1.8;
	font-size: var(--font-size-14);
}

/* ----- レスポンシブ（990px以下） ----- */
@media (max-width: 990px) {
	.footer-container {
		flex-direction: column; /* 縦に並べる */
		align-items: flex-start; /* 左寄せ */
	}

	.footer-links {
		width: 100%; /* 全幅 */
		margin-bottom: 40px;
	}

	.footer-store-link {
		width: 100%;
		text-align: left; /* スマホではボタンも左寄せ */
	}
}
}
.footer.night .footer-bottom p {
	border-top: 1px solid var(--color-light);
}

.footer.night .link-btn-dark {
	background-color: var(--color-light);
	color: var(--color-gray);
	transition: color 0.3s;
}

.footer.night .link-btn-dark:hover {
	background-color: var(--color-light-gray);
}
.itemprop-date {
    max-width: 1200px;
    margin: 0 auto;
  display: flex;
  justify-content: left;
  align-items: left;
  gap: 10px;
  font-size: 14px;
}

.itemprop-date p {
  margin: 0;
  display: flex;
  align-items: center;
}



/* ----- Wordpress Blog ----- */
.blog-access-staff-detail{
	padding: 0;
	margin:50px auto;
	border-top:1px solid #ccc;
	line-height: 2;
}

.blog-access-staff-detail h3{
	line-height: 2;
	margin-top: 20px!important;
}

.blog-footer-list{
	padding: 0 0 50px;
	margin:50px auto;
	border-top:1px solid #ccc;
	border-bottom:1px solid #ccc;
	line-height: 2;
}
.blog-footer-list h2{
	margin:0;
}
.blog-footer-list h3{
	line-height: 2;
}
.blog-access-staff-detail ul,
.blog-access-staff-detail li,
.blog-footer-list ul,
.blog-footer-list li{
	list-style:none;
	padding:0;
	margin: 0;
}

.blog-details a {
  color: var(--color-blue-gray);
  text-decoration: none;
  background-image: linear-gradient(var(--color-blue-gray), var(--color-blue-gray));
  background-repeat: no-repeat;
  background-size: 100% 1px;
  background-position: left bottom; /* ←左端に固定 */
  transition: background-size 0.3s ease, color 0.3s ease;
}

.blog-details a:hover {
  color: var(--color-light-gray);
  background-size: 0% 1px; /* ←左から右に向けて縮小＝右から左に消える */
}

/* シェアボタン内のリンクは装飾しない */
.blog-details .sns-share-icons a,
.blog-details .sns-share-icons a::after{
  all: unset;
  cursor: pointer;
  font-size: 16px;
  color: inherit; 
}


.sns-share-icons {
  display: flex;
  gap: 16px;
  margin-top: 24px;
}

.sns-share-icons a {
  font-size: 16px;
  color: var(--color-blue-gray);
  transition: transform 0.2s, color 0.2s;
}
.sns-share-icons a:hover {
  transform: scale(1.2);
  color: var(--color-light-gray);
}





/* news-blog-media ページネーション */
.pagination {
	display: flex;
	justify-content: center; /* 中央揃え */
	gap: 20px; /* 要望の20px */
	margin-top: 60px; /* お好みで */
margin-bottom: 100px;
}

.page-numbers {
	display: inline-block;
	padding: 8px 12px;
	border: 1px solid #ccc;
	text-decoration: none;
}

.page-numbers.current {
	background: #var(--color-light-gray);
	color: #fff;
}

.page-numbers.disabled {
	color: #ccc;
	border-color: #333;
	pointer-events: none;
}
/* news-blog-media */
.news-blog-media {
width: min(90%, 1200px);
margin: 100px auto 0;
}

.news-blog-media-container {
display: grid;
gap: 20px;
grid-template-columns: repeat(2, 1fr); /* 携帯（デフォルト）は横2列 */
}

.news-blog-media-container h2 {
font-size: 1.2rem;
margin-bottom: 20px;
}

/* カード全体のリンク設定 */
.post-card {
display: flex;
flex-direction: column;
text-decoration: none;
color: inherit;
height: 100%;
}

.post-card-img figure {
margin: 0;
padding: 0;
aspect-ratio: 3 / 2; /* 画像比率を統一してガタつきを防止 */
overflow: hidden;
}

.post-card-img img {
width: 100%;
height: 100%;
object-fit: cover; /* 比率を保ちつつ枠を埋める */
}

/* タブレット・PC（768px以上）で横3列に切り替え */
@media (min-width: 768px) {
.news-blog-media-container {
grid-template-columns: repeat(3, 1fr);
}
}


/* recruit */
.recruit {
    width: min(90%, 1200px);
    margin: 100px auto 0;
}


.text-headline {
	margin: 150px auto 100px;
}
@media (max-width: 768px) {
	.text-headline {
		margin: 100px auto 100px;
	}
}

.text-headline h1{
	font-size: 1.5rem;

}
.text-headline span{
	font-size: 7rem;
	font-weight: bold;
    line-height: 1;
	margin-left: -7px;
}

.recruit-container{
	margin-bottom: 150px;
}
.recruit-container h2{
    font-size: 1.2rem;
	margin-bottom: 20px;
}

.recruit-table {
    width: 100%;
    border-collapse: collapse;
    line-height: 2;
	margin: 40px auto;
}

.recruit-table tr {
    border-bottom: 1px solid #333;
}

.recruit-table tr:first-child {
    border-top: 1px solid #333;
}

/* タブレット・PC以上の設定 */
.recruit-table th {
    width: 30%;
    padding: 2rem 1rem;
    text-align: center; /* センター寄せ */
    background-color: transparent;
    font-weight: 600;
    vertical-align: top;
    letter-spacing: 0.15em;
    font-size: 1.2rem;
}

.recruit-table td {
    width: 70%;
    padding: 2rem 1rem;
    text-align: left; /* 左寄せ */
    background-color: transparent;
    word-break: break-all;
}

/* 携帯（スマホ）表示の最適化 */
@media screen and (max-width: 768px) {
    .recruit {
        margin: 100px auto;
    }
	.text-headline span{
		font-size: 5rem;
	}
    .recruit-table th,
    .recruit-table td {
        display: block;
        width: 100% !important; /* 携帯だと100% */
        padding-left: 0;
        padding-right: 0;
    }
    
    .recruit-table th {
        text-align: left; /* 携帯だと左寄せ */
        padding-top: 1.5rem;
        padding-bottom: 0;
    }
    
    .recruit-table td {
        padding-top: 0.5rem;
        padding-bottom: 1.5rem;
    }
}




/* BLOG */

p.post-meta {
    font-size: 0.8rem;
}
.post-main-content h2,
.post-main-content h3,
.post-main-content h4 {
	margin-top: 60px;
	margin-bottom: 20px;
}
.post-main-content p{
	margin-bottom: 20px;
}
@media (max-width: 768px) {
	.post-main-content h2,
	.post-main-content h3,
	.post-main-content h4 {
		line-height: 1.7;
	}
}
.post-main-content p{
	margin-bottom: 20px;
}
.post-main-content span.post-cat-item {
	margin-top: 20px;
}

/* --- 共通の土台スタイル --- */
.content-detail {
    width: min(90%, 1200px);
    margin: 100px auto 0;
}

.content-detail .text-headline {
    margin: 80px auto 40px;
}

.content-detail .text-headline h1 {
    font-size: 3.5rem;
    font-weight: bold;
    line-height: 1.3;
    margin-left: -7px;
	margin-bottom:20px;
}

@media (max-width: 768px) {
	.content-detail .text-headline h1 {
		font-size: 2.5rem;
	}
}
article.entry-content {
    margin-bottom: 20px;
}
.content-detail .entry-content img{
	width: 100%;
	margin-bottom:20px;
}
/* 2カラムレイアウト（メイン vs サイド） */
.post-detail-layout {
    display: flex;
    flex-direction: column;
    gap: 40px; /* メインとサイドの間隔を少し広めに */
}

aside { margin-bottom: 40px; }


.post-sidebar .order {
  display: flex;
  flex-direction: column; /* 上から下に並べる */
    margin-bottom: 55px;
    border-bottom: 1px solid #333;
    padding-bottom: 30px;
}

.post-sidebar .order img {
  order: 1;
  width: 100%; /* サイドバー幅に合わせる */
  height: auto;
  margin-bottom: 20px;
}

.post-sidebar .order .sidebar-title:first-of-type {
  order: 2;
  margin-bottom: 10px;
}

.post-sidebar .order p {
  order: 3;
  margin-bottom: 20px;
}

/* 2つ目の見出し（LATEST...）を四番目（order: 4）にする */
.post-sidebar .order .sidebar-title:nth-of-type(2) {
  order: 4;
}





@media (min-width: 769px) {
    .post-detail-layout {
        flex-direction: row;
        align-items: flex-start;
    }
    .post-main-content {
        flex: 3;
        min-width: 0;
    }
    .post-sidebar {
        flex: 1;
        position: sticky;
        top: 40px;
    }
}
h2.sidebar-title {
    margin-bottom: 20px;
}
h2.sidebar-title.din{
    letter-spacing: 3px;
    font-size: 32px;
    line-height: 0.7;
}
}
/* --- 最新記事グリッド（全デバイス横2列） --- */
.side-post-grid {
    display: grid;
    grid-template-columns: 1fr; /* 常に2列 */
    gap: 20px;
}
@media (max-width: 768px) {
	.side-post-grid {
		grid-template-columns: 1fr 1fr; /* 常に2列 */
	}
}

.side-post-card {
    display: block;
    text-decoration: none;
    color: inherit;
	margin-bottom: 20px;
}
.side-post-card:last-child {
	margin-bottom:0;
}

.side-img img {
    width: 100%;
    height: auto;
    aspect-ratio: 3 / 2;
    object-fit: cover;
    border-radius: 2px;
}

.side-date {
    display: block;
    font-size: 0.8rem;
    color: #888;
    margin-top: 10px;
}

.side-title {
    font-size: 1rem; /* 2列に合わせて少しコンパクトに */
    line-height: 1.4;
    font-weight: bold;
    margin-top: 5px;
}


/* --- 下部ニュースセクション（上下線・幅指定） --- */
.bottom-news-section {
    width: min(90%, 1200px);
    margin: 40px auto;
    border-top: 1px solid #333;
    padding: 60px 0;
}

.bottom-news-section .section-title {
    font-size: 1.5rem;
    font-weight: bold;
    margin-bottom: 40px;
    letter-spacing: 0.1em;
}

/* ニュースグリッド：Gap 20px */
.news-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
}

@media (min-width: 769px) {
    .news-grid {
        grid-template-columns: 1fr 1fr 1fr;
    }
}

/* カードスタイル：情報を縦に並べるためのFlex */
.news-card {
    display: block;
    text-decoration: none;
    color: inherit;
    padding: 10px 0;
    transition: opacity 0.3s;
}

.news-card:hover {
    opacity: 0.6;
}

@media (max-width: 768px) {
	.news-card {
	border-bottom:1px solid #333;
			padding-bottom: 30px;
	}
	.news-card:last-child{
	border-bottom:none;
	padding-bottom:0;
	}
}

.news-info {
    display: flex;
    flex-direction: column;
}

/* --- 上段：日付とタイトルの横並び --- */
.news-header {
    display: flex;
    align-items: baseline; /* 日付とタイトルの下揃え */
    gap: 15px;
}

.news-date {
    font-size: 0.8rem;
    color: #888;
    white-space: nowrap;
}

.news-title {
    font-size: 1.1rem;
    line-height: 1.4;
    font-weight: bold;
    margin: 0;
}

/* --- 下段：カテゴリーとタグの横並び --- */
.news-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px; /* カテゴリーとタグの間隔 */
}

.news-category {
    font-size: 0.75rem;
    font-weight: bold;
    background: var(--color-middle);
    padding: 2px 8px;
    border-radius: 2px;
    line-height: 1.3rem;
    white-space: nowrap;
}

.news-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.news-tag-item {
    font-size: 0.75rem;
    color: #666;
    white-space: nowrap;
}

/* スマホ対応：非常に狭い画面ではヘッダーも縦並びに */
@media (max-width: 480px) {
    .news-header {
        align-items: flex-start;
        gap: 5px;
    }
}












/* =========================================================================
   お客様の声：全体・共通設計（ノイズレス・セマンティック）
   ========================================================================= */
.voice-title-box{

}

.voice-box {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

main section .voice-box article {
	display: grid;
	grid-template-columns: 100%;
	gap: 20px;
	margin-bottom: 40px;
	padding-bottom: 40px;
	border-bottom: 1px solid #888;
}

/* タイトルの下に余白を追加 */
main section .voice-box article h2 {
	font-size: 1.5rem;
	font-weight: 700;
	margin: 0 0 10px 0;
}

/* 投稿日の下に余白を追加 */
main section .voice-box article time {
	display: block;
	font-size: 0.9rem;
	color: #888888;
	margin: 0 0 15px 0;
}

/* 本文・カテゴリタグ */
main section .voice-box article div:first-of-type {
	font-size: 1rem;
	line-height: 1.8;
}
main section .voice-box article div:first-of-type div {
	margin-top: 20px;
}
main section .voice-box article div:first-of-type div span {
	display: inline-block;
	background-color: #f4f4f4;
	padding: 4px 12px;
	font-size: 0.85rem;
	border-radius: 4px;
	margin-right: 8px;
}

/* 画像の基本（角丸を削除しました） */
main section .voice-box article img {
	width: 100%;
	height: auto;
	object-fit: cover;
}

/* -------------------------------------------------------------------------
   【スマートフォン用（〜767px）】の順序制御（order）
   ------------------------------------------------------------------------- */
@media screen and (max-width: 767px) {
	main section .voice-box article {
		display: flex;
		flex-direction: column;
		gap: 20px;
	}
	main section .voice-box article h2 { order: 1; margin-bottom: 5px; }
	main section .voice-box article time { order: 2; margin-bottom: 10px; }
	main section .voice-box article img { order: 3; margin-bottom: 15px; }
	main section .voice-box article div:first-of-type { order: 4; }
}

/* -------------------------------------------------------------------------
   【タブレット・PC用（768px〜）】のレイアウト制御
   ------------------------------------------------------------------------- */
@media screen and (min-width: 768px) {
	main section .voice-box article {
		grid-template-columns: 7fr 3fr;
		column-gap: 40px;
		row-gap: 0;
	}
	
	main section .voice-box article h2 {
		grid-column: 1 / 3;
	}
	main section .voice-box article time {
		grid-column: 1 / 3;
	}
	main section .voice-box article div:first-of-type {
		grid-column: 1 / 2;
	}
	main section .voice-box article img {
		grid-column: 2 / 3;
	}
}

/* プルダウンページネーション周り */
.voice-pagination-select {
	margin-top: 40px;
	text-align: center;
}
.voice-pagination-select label {
	font-size: 0.9rem;
}
.voice-pagination-select select {
	padding: 8px 30px 8px 15px;
	font-size: 1rem;
	border: 1px solid #cccccc;
	border-radius: 4px;
	background-color: #ffffff;
	cursor: pointer;
}