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

　　円通院

=================================================*/

/*-------------------------------------------------
　リセット
-------------------------------------------------*/
*{
    box-sizing: border-box;
}
body{
    margin: 0;
}
a{
    color: inherit;
}

/* ==========================================
   定数
========================================== */
:root {
	--z-bk:        -100;   /* 背景 */
	--z-bk-deco:   -10;  /* 敷き布団　装飾 */
	--z-base:        1;   /* 通常のフロー内要素 */
	--z-decoration:  10;  /* 装飾・浮き要素 */
	--z-ui:          100; /* UI要素（常時見せたいボタン類） */
	--z-header:      500; /* ヘッダー・SPボトムナビなど、画面上の常設ナビゲーション */
	--z-fixed-btn:   600; /* pagetopボタンなど、画面固定の単体ボタン */
}
/* ==========================================
   スクロールバーの共通デザイン設定
========================================== */

/* Chrome, Edge, Safari 向け（-webkit-） */
::-webkit-scrollbar {
  width: 8px;              /* スクロールバーの幅（細めにする） */
  height: 8px;             /* 横スクロールバーの高さ */
}

/* スクロールバーの背景（トラック部分） */
::-webkit-scrollbar-track {
  background: none;
}
/* スクロールバーのつまみ部分 */
::-webkit-scrollbar-thumb {
  background: #000;
  border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
  background: rgba(102, 102, 102, 0.5);
}


/* Firefox 向け（標準CSS仕様） */
* {
  scrollbar-width: thin;	/* 細くする (auto | thin | none) */
  scrollbar-color: #000 rgba(102, 102, 102, 0.5);        /* [つまみの色] [背景の色] */
}


/* ==========================================
　　ヘッダー
========================================== */
.header{
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	min-height: 600px;
	height: 100vh !important;
	z-index: var(--z-header);
	pointer-events: none;	/* クリックを透過 */

	background-position: center;
}

/* headerの中で実際にクリック/タップさせたい要素だけ操作可能に戻す */
.header nav.primary-pc,
.sp-bottom-nav,
.header .hp_link_btn.pc,
.sp-submenu__list{
	pointer-events: auto;
}
.header .inner{
	position: relative;
	width: 100%;;
	margin: 0 auto;
}

/* PC */
@media screen and (min-width:1040px) {

	/* 実際にクリック/タップさせたい要素だけ操作可能に戻す */
	.header nav.primary-pc ul li a,
	.sp-bottom-nav__item a,
	.sp-bottom-nav__item .menu_btn,
	.header .hp_link_btn.pc a{
		pointer-events: auto;
	}
}


/* ==========================================
　　ナビ
========================================== */

/*PC用サイドメニュー　非表示*/
.header nav.primary-pc {
	display: none;
}
.ticket_map{
	display: none;
}
.header .catch{
	top: 30px;
	right: 70px;
	font-size: min(5vw,30px);
}
.header .inner{
	width: 100%;
}
.header .logo img{
	width: auto;
	/* max-width: 250px; */
	height: min(74vh,800px);
	min-height: 337px;
}

/* メニュー	*/
.sp-bottom-nav{
	position: fixed;
	bottom: 0px;
	left: 50%;
	transform: translateX(-50%);

	width: 100%;
	height: auto;

	margin: 0;
	z-index: var(--z-header);     /* ナビゲーション */

}
/* メニューが開いている間だけ、.sp-submenu（900）より確実に上へ */
.sp-bottom-nav.is-menu-open{
	z-index: 950;
}

/*-------------------------
　sp用メニュー（常時bottom表示）
-------------------------*/
.sp-bottom-nav__header {
	display: flex;
	justify-content: space-around;
	align-items: flex-end;
	list-style: none;

	margin: 0;
	padding: 0;
	width: 100%;
	height: 70px;

	background: rgba(15, 15, 15, 0.75); /* 背景の黒透け感 */
	backdrop-filter: blur(8px); /* 背景ぼかし */
	border-top: 1px solid #fff;
	transition: border-color 0.2s ease;
	position: relative;

	/* iPhoneのSafe Area（下部バー）対策 */
	padding: 0 10px calc(10px + env(safe-area-inset-bottom));
	box-sizing: border-box;

}
.sp-bottom-nav.is-menu-open .sp-bottom-nav__header {
	border-top-color: #022464;
}
.sp-bottom-nav__item {
  flex: 1;
  text-align: center;
}

.sp-bottom-nav__item a {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-decoration: none;
  color: #ffffff;
}
.sp-bottom-nav__item--spacer{
	flex: 1;
}
/* アイコン画像 */
.sp-bottom-nav__item .nav-icon {
  width: 28px;
  height: 28px;
  object-fit: contain;
  margin-bottom: 2px;
}

/* 日本語テキスト（pタグ） */
.sp-bottom-nav__item p {
  margin: 0.5em 0 0;
  font-size: 11px;
  font-weight: bold;
  letter-spacing: 0.05em;
  color: #ffffff;
  white-space: nowrap;
}

/* 英語カプセルバッジ（span） */
.sp-bottom-nav__item .en-badge {
  display: inline-block;
  background-color: #ffffff;
  color: #0c1b33; /* カンプに合わせた濃紺 */
  font-size: 9px;
  font-weight: bold;
  padding: 1px 7px;
  border-radius: 9999px; /* 丸みのあるカプセル形状 */
  white-space: nowrap;
  line-height: 1.2;
}


/*-------------------------
   中央：メニュー開閉ボタン
-------------------------*/
.sp-bottom-nav__toggle-wrap{
	position: absolute;
	left: 50%;
	bottom: 1em;
	transform: translateX(-50%);
}
/* buttonタグリセット */
.menu_btn {
	width: 64px;
	height: 64px;

	display: flex;
	align-items: center;
	justify-content: center;

	background: #fff;
	border: 1.5px solid transparent; /* 透明のまま領域だけ確保しておく */
	border-radius: 50%;
	box-sizing: border-box;

	padding: 0;
	margin: 0;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;

	transition: border-color 0.2s ease;

}

/* 開いている時だけ、透明だった枠に色を付ける */
.sp-bottom-nav.is-menu-open .menu_btn {
	border-color: #022464;
}

.sp-bottom-nav__item a img{
	width: 27px;
	height: 25px;
	display: block;   /* imgの下に生まれる余白（altテキスト由来の行間）を消す */
	margin: 0 auto;    /* 画像自体を中央寄せ */
}

.sp-bottom-nav__item a img.icon_condition{
	width: 40px;
	height: 38px;
	
	position: relative;
	top: 0.3em;
}

/*-----------------------------------
　SPメニュー　サブメニュー一覧（トグルで開閉）
-------------------------------------*/

/* デフォルトは非表示 */
.sp-submenu {
	display: none;

	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: calc(70px + env(safe-area-inset-bottom));
	width: 100%;
	
	/* スクロール領域の設定 */
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;

	background: #fff;
	backdrop-filter: blur(8px);

	z-index: var(--z-overlay, 900);
}

.sp-submenu__list {
	list-style: none;
	margin: 0;
	padding: 1em 3em;
}


.sp-submenu__list li a {
	display: flex;
	align-items: center;
	gap: 1em;

	padding: 0.5em 1.5em 0.5em 0;
	color: #fff;
}

.sp-submenu__list li a::before{
	content: "";
	width: 20px;
	height: 30px;

	background-image: url("../../images/menu_line.svg");
	background-repeat: no-repeat;
	background-size: contain;
	background-position: center;
	filter: brightness(0) invert(12%) sepia(90%) saturate(6000%) hue-rotate(210deg) brightness(40%) contrast(140%);
}
.sp-submenu__list li a img {
	width: 28px;
	height: 28px;
	flex-shrink: 0;
	filter: brightness(0) invert(12%) sepia(90%) saturate(6000%) hue-rotate(210deg) brightness(40%) contrast(140%);
}

.sp-submenu__list li a.condition_link{
	gap: 0.6em;
}
.sp-submenu__list li a img.icon_condition{
	width: 40px;
	height: 40px;
}

.sp-submenu__list .menu_title{
	font-family: var(--font-heading);
	letter-spacing: 0.15em;
	color: #022464;
}
.sp-submenu__list .menu_title .title_jp{
	font-size: 16px;
	margin: 0;
}
.sp-submenu__list .menu_title .title_en{
	font-size: 12px;
	opacity: 0.7;
	margin: 0;
}

/* ▼サブメニューが開いている間 */

/* サブメニュー本体を表示 */
.sp-submenu.is-menu-open {
	display: block;
}

/* トグル以外のボトムナビ項目を非表示 */
.sp-bottom-nav.is-menu-open .sp-bottom-nav__item:not(.sp-bottom-nav__item--toggle) {
	visibility: hidden;
	pointer-events: none;
}

/* トグルボタンのアイコンを開閉で切り替えたい場合 */
.sp-bottom-nav.is-menu-open .menu_btn img {
/*	transform: rotate(45deg);  例：+ を x に見せる簡易演出 */
	transition: transform 0.2s ease;
}

/* pc */
@media (min-width: 1035px) {
	/* sp用ナビ非表示	*/
	.sp-bottom-nav{
		display: none;
	}

	.header nav.primary{
	}
	.header nav.primary-pc{
		position: relative;
		top: 50vh;
		left: 0;
		transform: translateY(-50%);
		
		width: 400px;

		display: flex;
		align-items: center;
	}
	.header nav.primary-pc::before {
		content: "";
		position: absolute;
		top: calc(-50vh + 50%);
		left: 0;
		width: 362px;
		height: 100vh;

		background: linear-gradient(to right, rgba(0, 0, 0, 0.7) 0%, transparent 100%);

		z-index: var(--z-bk-deco);
		pointer-events: none; /* クリックを阻害しない */
	}

	.header nav.primary-pc ul {
		list-style: none;
		padding: 0;
		margin-left: 4em;
	}
	.header nav.primary-pc ul li{
		margin: 0 8px;
		color: #fff;
	}
	.header nav.primary-pc ul li a{
		display: flex;
		flex-direction: row;
		justify-content: flex-start;
		gap: 10px;

		padding: 0.5em 2em;
		text-shadow: 0 0 8px rgba(0, 0, 0, 0.8);
	}

	.header nav.primary-pc ul li a:hover{
		opacity: 0.8;
	}
	.header nav.primary-pc ul li a::before{
		content: "";
		width: 20px;
		height: 30px;

		background-image: url("../../images/menu_line.svg");
		background-repeat: no-repeat;
		background-size: contain;
		background-position: center;
	}
	.header nav.primary-pc ul li a img{
		width: 35px;
		height: 35px;
	}
	.header nav.primary-pc ul li a.condition_link{
		gap: 0.3em;
	}
	.header nav.primary-pc ul li a img.icon_condition{
		width: 45px;
		height: 45px;
	}

	.menu_title{
		font-family: var(--font-heading);
		letter-spacing: 0.25em;
		text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
	}
	.menu_title .title_jp{
		font-size: 1.2rem;
		margin: 0;
	}

	.menu_title .title_en{
		font-size: 0.8em;
		margin: 0;
		margin-bottom: 1em;
	}

	.header .catch{
		position: absolute;
		top: 40px;
		right: 40px;
		display: flex;
		flex-direction: row-reverse;
		color: #fff;
		font-size: 32px;
		font-family: 'Noto Serif JP', serif;
		font-weight: 500;
		text-shadow: 0 0 8px black;

	}.header .catch span{
		padding-bottom: 0.25em;
		font-size: clamp(18px, 5vh, 45px);
		opacity: 0;
	}
	.header .catch .row03 span{
		padding-bottom: 0.25em;
		font-size: clamp(14px, 2vh, 32px);
	}

	.header .catch div[class ^= "row"]{
	/*
		display: flex;
		flex-direction: column;
	*/
		-moz--writing-mode: vertical-rl;
		-ms-writing-mode: tb-rl;
		-webkit-writing-mode: vertical-rl;
		-o-writing-mode: vertical-rl;
		writing-mode: vertical-rl;
		/*    opacity: 0;*/
		white-space: nowrap;
		margin-left: min(1vw,20px);
	}

}

/* ==========================================
  背景（高さ全開指定）
========================================== */
.main-bk {
	position: fixed;
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
	z-index: var(--z-bk);
	overflow: hidden;
	background-color: #000; /* 白フチ対策の背景色 */
}

.main-bk .slideshow,
.main-bk .slideshow li {
	margin: 0;
	padding: 0;
	list-style: none;
}

/* FOUC対策（初期化前の表示制御） */
.main-bk .slideshow {
	opacity: 0;
	transition: opacity 0.3s ease;
}
.main-bk .slideshow.slick-initialized {
	opacity: 1;
}
.main-bk .slideshow li {
	visibility: hidden;
}
.main-bk .slideshow li:first-child {
	visibility: visible;
}
.main-bk .slideshow.slick-initialized li {
	visibility: visible;
}

/* ul/リストコンテナ自体を絶対配置で画面いっぱいに固定 */
.main-bk .slideshow {
	position: absolute;
	top: 0; left: 0; right: 0; bottom: 0;
	width: 100%;
	height: 100%;
}

/* slick-list / slick-track も絶対配置で追従させる（%継承を使わない） */
.main-bk .slick-list,
.main-bk .slick-track {
	position: absolute !important;
	top: 0; left: 0;
	width: 100% !important;
	height: 100% !important;
}

/* 各スライド（li）も絶対配置で強制的に画面いっぱいに */
.main-bk .slideshow li,
.main-bk .slick-slide {
	position: absolute !important;
	top: 0 !important;
	left: 0 !important;
	width: 100% !important;
	height: 100% !important;
	margin: 0;
}

.main-bk .slick-slide > div {
	position: absolute !important;
	top: 0; left: 0;
	width: 100%;
	height: 100%;
}

.main-bk .slideshow img {
	position: absolute;
	top: 0; left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
}
/* picture要素にもposition:absoluteでの全画面表示を適用 */
.main-bk .slideshow picture {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	display: block;
}

.main-bk .slideshow img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
	/* position: absolute は picture 側に移したのでここでは不要 */
}

/* ==========================================
　　footer
========================================== */
.footer {
  padding-top: 50px;
  background: #131422;
  color: #fff;
  text-align: center;
  padding-bottom: 80px;
}

.footer_logo img {
  height: 100px;
  width: auto;
}

.footer .copyright {
  border-top: 1px solid gray;
  padding: 1em 0;
  font-size: 11.5px;
}


/* ==========================================
   PC Style (1039px以上)
   ========================================== */
@media screen and (min-width: 1039px) {
  .footer {
	  padding-bottom: 0px;
	}
  .footer .copyright {
    padding: 2em 0;
  }
}

/* ==========================================
　　ページTOPボタン
========================================== */

/* ページトップボタン  */
.pagetop {
	display: none;
}

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

	.pagetop {
		display: block;
		
		position: fixed;
		bottom: 40px;
		right: 40px;
		z-index: var(--z-fixed-btn);
	}

	.pagetop a {
		display: block;
		width: 100px;
		height: 100px;

		background: url("../img/pagetop.png") center/100px 100px;
		text-indent: 100%;
		white-space: nowrap;
		overflow: hidden;
	}

	.pagetop a:hover {
	  opacity: 0.8;
	}
}
