@charset "UTF-8";

/* ==========================================================
   CSS変数 (デザイン・カラートークン等)
========================================================== */
:root {
	--primary-blue: #0a44a0;
	--light-blue: #007acd;
	--orange: #ff8000;
	--yellow-bg: #fffee3;
	--white-bg: #f6f9fc;
	--bg-color: #f6f9fc;
	--text-main: #333;
	--border-color: #ccc;
	--font-main: 'Noto Sans JP', sans-serif;
	--header-height: 20px;
}

/* ==========================================================
   ベース・共通スタイル
========================================================== */


html {
	overflow-y: scroll;
	overflow-x: hidden;
	font-size: 62.5%;
	scroll-behavior: smooth;
	/*
	opacity: 0;
	transition: opacity .6s ease;	
*/
}

/* 読み込み完了後 */
html.is-loaded {
	opacity: 1;
}

html.is-open {
	overflow: hidden;
}

@media print {
	/*アニメーションOFF*/

	.fadeUpTrigger {
		opacity: 1.0 !important;
	}

	.fadeUp {
		opacity: 1.0 !important;
	}


	/*印刷用CSSで適用させる定義を記述*/
	html {
		transform: scale(0.8);
		transform-origin: left top;
		width: calc(100% / 0.8);
		height: calc(100% / 0.8);
		overflow-y: auto;
	}
}

body {
	font-family: var(--font-main);
	font-optical-sizing: auto;
	font-weight: 400;
	font-style: normal;
	font-size: min(1.08vw, 1.6rem);
	-webkit-text-size-adjust: 100%;
	line-height: 1.5;
	color: var(--text-main);
	background: #fff;
	scroll-behavior: smooth;
	overflow: hidden;
}

.noto-sans-jp {
	font-family: "Noto Sans JP", sans-serif;
	font-optical-sizing: auto;
	font-style: normal;
}

.weight-400 {
	font-weight: 400;
}

.weight-500 {
	font-weight: 500;
}

.weight-600 {
	font-weight: 600;
}

.weight-700 {
	font-weight: 700;
}

.biz-udgothic-bold {
	font-family: "BIZ UDGothic", sans-serif;
	font-weight: 700;
	font-style: normal;
}

.pc_hide {
	display: none !important;
}

.sp_hide {
	display: block;
}

a.tel-link {
	pointer-events: none;
}

ol,
ul {
	list-style: none;
	box-sizing: border-box;
}


* {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}


a {
	color: inherit;
	text-decoration: none;
	transition: all 0.5s;
}

a:hover,
a:focus {
	color: inherit;
	text-decoration: none;
	opacity: 0.6;
}

img {
	max-width: 100%;
	height: auto;
}

section,
h2,
h3,
h4 {
	scroll-margin-top: var(--header-height);
}

.container {
	max-width: 1000px;
	margin: 0 auto;
	padding: 0 20px;
}

.text-center {
	text-align: center;
}

.mb-4 {
	margin-bottom: 24px;
}

.bg-light {
	background: var(--bg-color);
}

.visually-hidden {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	border: 0;
}

button {
  appearance: none;
  -webkit-appearance: none;
  border: none;
  background: none;
  padding: 0;
  margin: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
}


/* ==========================================================
   グローバルヘッダー
========================================================== */

.header {
	width: 100%;
	position: absolute;
	top: 35px;
	z-index: 1;
}

.header-inner {
	width: 100%;
	max-width: 1200px;
	margin: 0 auto;
	display: flex;
	justify-content: flex-end;
	align-items: center;
}

.header-logo img {
	height: 35px;
	vertical-align: middle;
}

.hamburger {
	display: none;
	/* スマホ表示時のみ利用するためPCは非表示 */
}

.fixed-booking-btn {
	display: none;
	/* スマホ用のためPCでは非表示 */
}

.global-nav {
	width: 62.5%;
	/*750*/
}

.global-nav ul {
	list-style: none;
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 0 12.0%;
	/*90*/
	width: 100%;
	height: 80px;
	border-radius: 40px;
	background: var(--primary-blue);
}

.global-nav a {
	display: block;
	font-size: 1.38em;
	/*22*/
	font-weight: 500;
	line-height: 1.18;
	color: #fff;
	text-align: center;
}

/* ==========================================================
   メインナビゲーション (ヒーロー下)
========================================================== */
.main-nav {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: 130px;
	background: var(--primary-blue);
	position: relative;
	z-index: 1;
}

.main-nav-list {
	width: 100%;
	max-width: 875px;
	margin: 0 auto;
	list-style: none;
	display: flex;
	justify-content: space-between;
	align-items: center;

}

.main-nav-list a {
	font-size: 1.38em;
	/*22*/
	font-weight: 500;
	line-height: 1;
	color: #fff;
}

.main-nav-list a:hover {
	opacity: 0.7;
}


/* ==========================================================
   各セクション共通
========================================================== */
section {
	padding: 80px 0;
}


/* ==========================================================
   ヒーローセクション (ファーストビュー)
========================================================== */

.main_container {
	width: 100%;
	height: 830px;
	background: url("../images/bg_sky.webp")no-repeat;
	background-size: cover;
	background-position: center top;
	padding: 0;
}

.main_container .main_inner {
	width: 100%;
	max-width: 1200px;
	margin: 0 auto;
	height: 100%;
	position: relative;
}

.main_container .main_inner .main_parts01 {
	width: 46.08%;
	/*553*/
	position: absolute;
	top: 17.71%;
	/*147*/
	left: 5.83%;
	/*70*/
	z-index: 2;
}

.main_container .main_inner .main_parts02 {
	width: 37.5%;
	/*450*/
	position: absolute;
	top: 18.19%;
	/*151*/
	right: 5.83%;
	/*70*/
	z-index: 1;
}

.main_container .main_inner .main_parts02 .kaijo_wrap {
	width: 100%;
}

.main_container .main_inner .main_parts02 .kaijo_wrap+.kaijo_wrap {
	margin-top: 13px;
}

.main_container .main_inner .main_parts03 {
	width: 56.25%;
	/*675*/
	position: absolute;
	bottom: -8.19%;
	/*-68*/
	left: -1.08%;
	/*-13*/
	z-index: 1;
}

.main_container .main_inner .main_parts04 {
	width: 43.42%;
	/*521*/
	position: absolute;
	bottom: 4.94%;
	/*41*/
	right: 0.33%;/*4*/
	z-index: 2;
}

.main_container .main_inner .main_parts04 p.main_txt {
	font-size: 1.44em;
	/*23*/
	line-height: 1;
	color: #00469b;
	box-sizing: border-box;
	position: relative;
}

.main_container .main_inner .main_parts04 p.main_txt::before {
	content: '';
	background: url("../images/main_parts05-new02.svg")no-repeat;
	background-size: contain;
	width: 73.60%;
	/*393*/
	height: auto;
	aspect-ratio: 300 / 65;
	position: absolute;
	top: -7px;
	transform: translateY(-100%);
	left: 0;
	z-index: 1;
}

.main_container .main_inner .main_parts04 .flex_area {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	margin-top: 15px;
}

.main_container .main_inner .main_parts04 .flex_area .bnr01 {
	width: 45.11%;
	/*235*/
}

.main_container .main_inner .main_parts04 .flex_area .bnr02 {
	width: 52.59%;
	/*274*/
	position: relative;
}

.main_container .main_inner .main_parts04 .flex_area .bnr01 img,
.main_container .main_inner .main_parts04 .flex_area .bnr02 img {
	width: 100%;
	height: auto;
}

/* ==========================================================
   イントロダクションセクション
========================================================== */

section.intro {
	padding: 102px 0 65px;
}

.intro .sec_inner {
	width: 100%;
	max-width: 1100px;
	margin: 0 auto;
	position: relative;
}

.intro .sec_inner::before {
	content: '';
	background: url("../images/body_parts01.webp")no-repeat;
	background-size: 100% auto;
	width: 21.18%;
	/*233*/
	height: auto;
	aspect-ratio: 233 / 326;
	position: absolute;
	top: 143px;
	transform: translateY(-100%);
	left: -25.27%;
	/*-278*/
	z-index: -1;
}

.intro .sec_inner::after {
	content: '';
	background: url("../images/body_parts02.webp")no-repeat;
	background-size: 100% auto;
	width: 21.45%;
	/*236*/
	height: auto;
	aspect-ratio: 236 / 241;
	position: absolute;
	top: 75px;
	transform: translateY(-100%);
	right: -21.73%;
	/*-239*/
	z-index: -1;
}

.intro .sec_inner .flex_area {
	width: 100%;
	display: flex;
	justify-content: space-between;
}

.intro .sec_inner .flex_area .left_area {
	width: 50%;
	/*550*/
	margin-left: 5px;
}

.intro .sec_inner .flex_area .left_area h2.section-title {
	font-size: 2.25em;
	/*36*/
	line-height: 1.19;
	letter-spacing: 0.05em;
	color: var(--primary-blue);
	-webkit-text-stroke: 0.75px var(--primary-blue);
	white-space: nowrap;
}

.intro .sec_inner .flex_area .left_area p.intro-lead {
	margin-top: 30px;
	font-size: 1.13em;
	/*18*/
	line-height: 1.39;
	color: #333333;
}

.intro-checks {
	width: 91.45%;
	/*503*/
	margin-top: 37px;
}

.intro-checks ul {
	list-style: none;
	width: 100%;
	padding: 43px 0 44px;
	background: var(--yellow-bg);
}

.intro-checks li {
	padding-left: 12.92%;
	/*65*/
	box-sizing: border-box;
	font-size: 1.38em;
	/*22*/
	line-height: 1;
	color: #ea2511;
	position: relative;
}

.intro-checks li::before {
	content: '';
	background: url("../images/check_ico.svg")no-repeat;
	background-size: 100% auto;
	width: 5.77%;
	/*29*/
	height: auto;
	aspect-ratio: 29 / 21;
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	left: 4.97%;
	/*25*/
	z-index: 1;
}

.intro-checks li+li {
	margin-top: 20px;
}

.target-text {
	font-size: 1.25em;
	/*20*/
	line-height: 1;
	color: var(--primary-blue);
	margin-top: 14px;
}

.intro .sec_inner .flex_area .right_area {
	width: 38.09%;
	/*419*/
	margin-top: 45px;
	position: relative;
}

.intro .sec_inner .flex_area .right_area::before {
	content: '';
	background: url("../images/body_parts03.webp")no-repeat;
	background-size: 100% auto;
	width: 47.49%;
	/*199*/
	height: auto;
	aspect-ratio: 199 / 234;
	position: absolute;
	bottom: 140px;
	transform: translateY(100%);
	right: -20.53%;
	/*-86*/
	z-index: -1;
}

.intro-gallery {
	margin-top: 125px;
	position: relative;
}

.intro-gallery::before {
	content: '';
	background: url("../images/body_parts02.webp")no-repeat;
	background-size: 100% auto;
	width: 21.45%;
	/*236*/
	height: auto;
	aspect-ratio: 236 / 241;
	position: absolute;
	bottom: 43px;
	transform: translateY(100%);
	right: -24.64%;
	/*-271*/
	z-index: -1;
}

.intro-gallery h3.gallery-title {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 39.09%;
	/*430*/
	height: 50px;
	border-radius: 25px;
	background: var(--orange);
	font-size: 1.56em;
	/*25*/
	line-height: 1;
	color: #fff;
	position: absolute;
	top: 10px;
	transform: translateY(-100%);
	right: 15.45%;
	/*170*/
	z-index: 1;
}

.intro-gallery h3.gallery-title::before {
	content: '';
	background: url("../images/fukidashi_ico.webp")no-repeat;
	background-size: 100% auto;
	width: 5.81%;
	/*25*/
	height: auto;
	aspect-ratio: 25 / 21;
	position: absolute;
	bottom: 1px;
	left: 50%;
	transform: translate(-50%, 100%);
}

.gallery-scroll-container {
	overflow: hidden;
	white-space: nowrap;
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}

.gallery-track {
	display: inline-flex;
	animation: scroll-left 80s linear infinite;
}

.gallery-track:hover {
	animation-play-state: paused;
}

.gallery-set {
	display: flex;
}

.gallery-set img {
	height: 300px;
	width: auto;
	max-width: none;
	flex-shrink: 0;
}

@keyframes scroll-left {
	0% {
		transform: translateX(0);
	}

	100% {
		transform: translateX(-50%);
	}
}

/* ==========================================================
   イベント詳細 (開催場所・日時)
========================================================== */

.event-details {
	padding: 65px 0 85px;
}

.event-details .sec_inner {
	width: 100%;
	max-width: 1200px;
	margin: 0 auto;
	position: relative;
}

.event-details .sec_inner::before {
	content: '';
	background: url("../images/body_parts04.webp")no-repeat;
	background-size: 100% auto;
	width: 24.25%;
	/*291*/
	height: auto;
	aspect-ratio: 291 / 364;
	position: absolute;
	top: 148px;
	left: -23.0%;
	/*-276*/
	z-index: -1;
}

.event-details .sec_inner .section-title {
	width: 91.67%;
	/*1100*/
	margin: 0 auto;
	padding-bottom: 22px;
	border-bottom: 3px solid #0a44a0;
	font-size: 2.25em;
	/*36*/
	line-height: 1.19;
	letter-spacing: 0.05em;
	color: var(--primary-blue);
	-webkit-text-stroke: 0.75px var(--primary-blue);
	white-space: nowrap;
}

.venue-info-wrap {
	width: 100%;
	margin-top: 47px;
	display: flex;
	justify-content: space-between;
}

.venue-info {
	width: 47.25%;
	/*567*/
}

.venue-info:nth-child(1) {
	margin-left: 4.17%;
	/*50*/
}

.venue-info .venue-header {
	width: 100%;
	display: flex;
	justify-content: space-between;
	align-items: center;
}

.venue-badge {
	width: 7.05%;
	/*40*/
	height: 150px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	border-radius: 20px;
	writing-mode: vertical-rl;
	font-size: 1.25em;
	/*20*/
	letter-spacing: 0.1em;
	color: #fff;

}

.imabari-color .venue-badge {
	background: var(--orange);
}

.matsuyama-color .venue-badge {
	background: var(--orange);
}

.venue-info .detail_area {
	width: 90.83%;
	/*515*/
}

.venue-info .detail_area .datetime {
	font-size: 1.56em;
	/*25*/
	line-height: 1;
	color: var(--primary-blue);
	display: flex;
	align-items: flex-end;
	gap: 0 0.4em;
	/*10*/
}

.venue-info .detail_area .datetime .date {
	font-size: 4em;
	position: relative;
	top: 7px;
}

.venue-info .detail_area .datetime .day {
	color: #00a1e9;
}

.venue-info .detail_area .datetime .time {
	color: #333333;
}

.venue-info .detail_area .place-name {
	font-size: 1.56em;
	/*25*/
	line-height: 1;
	color: #333333;
	margin: 15px 0 0 1.94%;
	/*10*/
}

.venue-info .detail_area .place-address {
	font-size: 1.25em;
	/*20*/
	line-height: 1;
	color: #333333;
	margin: 7px 0 0 1.94%;
	/*10*/
}

.map-placeholder {
	width: 79.37%;
	/*450*/
	margin: 47px auto 0;
}

.map-placeholder iframe {
	width: 100%;
	height: auto;
	aspect-ratio: 450 / 300;
}

.venue-notes {
	width: 83.33%;
	/*1000*/
	margin: 21px auto 0;
}

.venue-notes p {
	font-family: "Noto Sans JP", sans-serif;
	font-optical-sizing: auto;
	font-style: normal;
	font-weight: 500;
	font-size: 1em;
	line-height: 1.25;
	color: #333333;
}

/* ==========================================================
   特典情報
========================================================== */
.benefits {
	padding: 60px 0 39px;
}

.benefits .sec_inner {
	width: 100%;
	max-width: 1100px;
	margin: 0 auto;
	position: relative;
}

.benefits .sec_inner::before {
	content: '';
	background: url("../images/body_parts05.webp")no-repeat;
	background-size: 100% auto;
	width: 26.45%;
	/*291*/
	height: auto;
	aspect-ratio: 291 / 293;
	position: absolute;
	top: -48px;
	left: -27.82%;
	/*-306*/
	z-index: -1;
}

.benefits .sec_inner::after {
	content: '';
	background: url("../images/body_parts06.webp")no-repeat;
	background-size: 100% auto;
	width: 25.09%;
	/*276*/
	height: auto;
	aspect-ratio: 276 / 368;
	position: absolute;
	bottom: 220px;
	transform: translateY(100%);
	right: -28.18%;
	/*-310*/
	z-index: -1;
}

.benefits .sec_inner .section-title {
	width: 100%;
	text-align: center;
	padding-bottom: 22px;
	border-bottom: 3px solid #0a44a0;
	font-size: 2.25em;
	/*36*/
	line-height: 1.19;
	letter-spacing: 0.05em;
	color: var(--primary-blue);
	-webkit-text-stroke: 0.75px var(--primary-blue);
	white-space: nowrap;
}

.benefits .sec_inner p {
	margin-top: 42px;
	font-size: 1.13em;
	/*18*/
	font-weight: 500;
	line-height: 1.11;
	text-align: center;
	color: #333;

}

.benefits-banners {
	width: 90.91%;
	/*1000*/
	margin: 46px auto 0;
	position: relative;
}

.benefits-banners+.benefits-banners {
	margin-top: 30px;
}

.benefits-banners a {
	display: block;
}

.benefits-banners button{
	width: 100%;
}

.benefits-banners img {
	width: 100%;
	height: auto;
	transition: transform 0.3s;
}

.benefits-banners+.benefits-banners img {
	width: 102.4%;
	max-width: 102.4%;
	position: relative;
	right: 2.4%;
}

.benefits-banners a:hover img {
	transform: translateY(-5px);
}

/* ==========================================================
   事前予約
========================================================== */

.pre-registration {
	padding: 39px 0 78px;
}

.pre-registration .sec_inner {
	width: 100%;
	max-width: 1100px;
	margin: 0 auto;
	position: relative;
}

.pre-registration .sec_inner::before {
	content: '';
	background: url("../images/body_parts02.webp")no-repeat;
	background-size: 100% auto;
	width: 21.45%;
	/*236*/
	height: auto;
	aspect-ratio: 236 / 241;
	position: absolute;
	bottom: 124px;
	transform: translateY(100%);
	left: -17.73%;
	/*-195*/
	z-index: -1;
}

.pre-registration .sec_inner .section-title {
	width: 100%;
	text-align: center;
	padding-bottom: 22px;
	border-bottom: 3px solid #0a44a0;
	font-size: 2.25em;
	/*36*/
	line-height: 1.19;
	letter-spacing: 0.05em;
	color: var(--primary-blue);
	-webkit-text-stroke: 0.75px var(--primary-blue);
	white-space: nowrap;
}

.pre-registration .sec_inner p {
	margin: 42px 0 40px;
	font-size: 1.13em;
	/*18*/
	font-weight: 500;
	line-height: 1.11;
	text-align: center;
	color: #333;
}

.pre-registration .sec_inner .btn {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 10px 0;
	width: 50.0%;
	max-width: 550px;
	height: 130px;
	margin: 0 auto;
	background: var(--orange);
	border: 3px solid #fff;
	border-radius: 10px;
	box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
	font-family: "BIZ UDGothic", sans-serif;
	font-weight: 700;
	font-style: normal;
	font-size: 1.88em;
	/*30*/
	line-height: 1;
	letter-spacing: 0.1em;
	color: #fff;
}

.pre-registration .sec_inner .btn .small {
	font-size: 0.6em;
	/*18*/
}

/* ==========================================================
   参加企業一覧 (タブ切り替え・絞り込みフィルタ)
========================================================== */

.companies {
	padding: 85px 0 60px;
}

.companies .sec_inner {
	width: 100%;
	max-width: 1100px;
	margin: 0 auto;
	position: relative;
}

.companies .sec_inner::before {
	content: '';
	background: url("../images/body_parts07.webp")no-repeat;
	background-size: 100% auto;
	width: 27.0%;
	/*297*/
	height: auto;
	aspect-ratio: 297 / 258;
	position: absolute;
	top: 169px;
	transform: translateY(-100%);
	right: -24.45%;
	/*-269*/
	z-index: -1;
}

.companies .sec_inner::after {
	content: '';
	background: url("../images/body_parts08.webp")no-repeat;
	background-size: 100% auto;
	width: 21.82%;
	/*240*/
	height: auto;
	aspect-ratio: 240 / 300;
	position: absolute;
	bottom: 182px;
	right: -26.09%;
	/*-287*/
	z-index: -1;
}

.companies .sec_inner h2.section-title {
	width: 100%;
	padding-bottom: 22px;
	border-bottom: 3px solid #0a44a0;
	font-size: 2.25em;
	/*36*/
	line-height: 1.19;
	letter-spacing: 0.05em;
	color: var(--primary-blue);
	-webkit-text-stroke: 0.75px var(--primary-blue);
	white-space: nowrap;
}

.companies .sec_inner p {
	margin-top: 44px;
	font-size: 1.13em;
	/*18*/
	font-weight: 500;
	line-height: 1;
	color: #333;
}

.tabs {
	display: flex;
	justify-content: center;
	gap: 0 4.55%;
	/*50*/
	margin-top: 60px;
}

.tab-btn {
	display: flex;
	align-items: center;
	width: 45.45%;
	/*500*/
	height: 75px;
	border: 2px solid #d1d1d1;
	border-radius: 5px;
	background: #fff;
	padding-left: 7.82%;
	/*86*/
	box-sizing: border-box;
	font-family: "BIZ UDGothic", sans-serif;
	font-weight: 700;
	font-style: normal;
	font-size: 1.88em;
	/*30*/
	line-height: 1;
	letter-spacing: 0.05em;
	color: var(--primary-blue);
	-webkit-text-stroke: 0.75px var(--primary-blue);
	cursor: pointer;
	position: relative;
}

.tab-btn.active {
	background: #ffdbb2;
	border-color: #ffab4b;
}

/* checkbox 非表示 */
.tab-btn input[type="checkbox"] {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

/* □チェックボックス */
.tab-btn::before {
	content: '';
	background: #fff;
	width: 8.0%;
	/*40*/
	height: auto;
	aspect-ratio: 1 / 1;
	border: 2px solid #777777;
	border-radius: 5px;
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	left: 5.6%;
	/*28*/
	box-sizing: border-box;
}

/* チェック状態 */
.tab-btn.active {
	background: #ffdbb2;
	border-color: #ffab4b;
}

.tab-btn.active::before {
	background: #555;
	border-color: #333;
}

/* ☑チェックマーク */
.tab-btn.active::after {
	content: "✓";
	position: absolute;
	left: calc(5.6% + 1.0%);
	top: 50%;
	transform: translateY(-50%);
	font-size: 1em;
	-webkit-text-stroke: 0.75px #fff;
	color: #fff;
	font-weight: bold;
}

/* PCではアコーディオンボタン非表示 */
.filter-toggle {
	display: none;
}

.filter-wrap {
	width: 100%;
	margin-top: 35px;
}

.filter-list {
	list-style: none;
	display: flex;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 20px 0;
}

.filter-list::after {
	content: '';
	width: 22.73%;
}

.filter-list::before {
	content: '';
	width: 22.73%;
	order: 1;
}

.filter-list li {
	width: 22.73%;
	/*250*/
}

.filter-list label {
	display: flex;
	align-items: center;
	width: 100%;
	height: 65px;
	border: 2px solid #d1d1d1;
	border-radius: 5px;
	background: #fff;
	font-size: 1.13em;
	/*18*/
	font-weight: 500;
	line-height: 1;
	color: #333333;
	padding-left: 24.8%;
	/*62*/
	box-sizing: border-box;
	cursor: pointer;
	position: relative;
}

/* checkbox 非表示 */
.filter-list label input[type="checkbox"] {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

/* □チェックボックス */
.filter-list label::before {
	content: '';
	background: #fff;
	width: 12.0%;
	/*30*/
	height: auto;
	aspect-ratio: 1 / 1;
	border: 2px solid #777777;
	border-radius: 5px;
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	left: 8.0%;
	/*20*/
	box-sizing: border-box;
}

/* チェック状態 */
.filter-list label:has(input[type="checkbox"]:checked) {
	background: #ffdbb2;
	border-color: #ffab4b;
}

.filter-list label:has(input[type="checkbox"]:checked)::before {
	background: #555;
	border-color: #333;
}

/* ☑チェックマーク */
.filter-list label:has(input[type="checkbox"]:checked)::after {
	content: "✓";
	position: absolute;
	left: calc(8.0% + 1.5%);
	top: 50%;
	transform: translateY(-50%);
	font-family: "BIZ UDGothic", sans-serif;
	font-weight: 700;
	font-style: normal;
	font-size: 1em;
	-webkit-text-stroke: 0.75px #fff;
	color: #fff;
}

/* 該当企業0件の業種：グレーアウト */
.filter-list label.is-disabled {
	opacity: 0.4;
	cursor: not-allowed;
	pointer-events: none;
}


.tab-panel {
	display: none;
}

.tab-panel.active {
	display: block;
}

.company-grid {
	margin-top: 20px;
	width: 100%;
	padding: 45px 4.55% 56px;
	/*50*/
	border: 3px solid #ffab4b;
	background: #ffdbb2;
	border-radius: 10px;
	box-sizing: border-box;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 30px 3.64%;
	/*40*/
	position: relative;
}

.company-grid::before {
	content: '';
	background: url("../images/body_parts02.webp")no-repeat;
	background-size: 100% auto;
	width: 21.45%;
	/*236*/
	height: auto;
	aspect-ratio: 236 / 241;
	position: absolute;
	top: -20px;
	transform: translateY(-100%);
	left: -26.36%;
	/*-290*/
	z-index: -1;
}


.company-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	cursor: pointer;
	transition: 0.5s;
}

.company-card:hover {
	opacity: 0.75;
}

.card-logo {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: auto;
	aspect-ratio: 220 / 155;
	background: #fff;
	border-radius: 5px;
	overflow: hidden;
}

.card-logo img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
}

.card-category {
	margin-top: 12px;
	width: 100%;
}

.card-industry {
	width: 100%;
	height: 30px;
	border-radius: 5px;
	background: #fffae1;
	display: flex;
	justify-content: center;
	align-items: center;
	padding: 0 8px;
	font-size: 0.9em;
	font-weight: 500;
	color: #333333;
}

.card-venues {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 6px;
	margin-top: 8px;
}

.card-venue {
	height: 30px;
	border-radius: 3px;
	background: #00a0e9;
	/* 濃いめの水色 */
	display: flex;
	justify-content: center;
	align-items: center;
	padding: 0 16px;
	font-size: 0.9em;
	font-weight: 500;
	color: #fff;
}

.card-name {
	margin-top: 12px;
	font-size: 1.13em;
	/*18*/
	font-weight: 500;
	line-height: 1.11;
	color: #333333;
	text-align: center;
}

/* ==========================================================
   フッター
========================================================== */
.footer {
	background: #fff;
}

.footer .foot_inner {
	background: var(--primary-blue);
	padding: 40px 0;
}

.footer .foot_inner .foot_area {
	width: 100%;
	max-width: 1000px;
	margin: 0 auto;
}

.sponsors {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 0 3.4%;
}

.sponsor-label {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 7.0%;
	height: 30px;
	border: 1px solid #fff;
	font-size: 1.25em;
	/*20*/
	line-height: 1;
	color: #fff;
}

.sponsors ul {
	list-style: none;
	display: flex;
	align-items: center;
	gap: 0 1.13em;
	/*13*/
}

.sponsors ul li {
	font-size: 1.25em;
	/*20*/
	line-height: 1;
	color: #fff;
}

.contact-info {
	margin-top: 6px;
}

.contact-info p {
	font-size: 1.25em;
	/*20*/
	line-height: 1;
	color: #fff;
	text-align: center;
}

.copyright {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: 78px;
}

.copyright p {
	font-size: 1.13em;
	line-height: 1;
	color: #243e93;
}

/* ==========================================================
   モーダル (企業詳細画面)
========================================================== */
.modal-overlay {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(51, 51, 51, 0.5);
	display: flex;
	justify-content: center;
	align-items: center;
	z-index: 1000;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.3s;
}

.modal-overlay.show {
	opacity: 1;
	pointer-events: auto;
}

.modal-content {
	background: #fff;
	width: 90%;
	max-width: 600px;
	border-radius: 10px;
	position: relative;
	padding: 50px 0 40px;
	max-height: 90vh;
	overflow-y: auto;
	font-size: 16px;
}

.modal-close {
	width: 6.33%;
	/*38*/
	height: auto;
	aspect-ratio: 1 / 1;
	background: url("../images/close.webp");
	background-size: 100% auto;
	border: none;
	position: absolute;
	cursor: pointer;
	top: 29px;
	right: 4.67%;
	/*28*/
}

.modal-image {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 77.83%;
	/*467*/
	height: auto;
	aspect-ratio: 467 / 330;
	background: none;
	margin: 0 auto;
	overflow: hidden;
}

.modal-logo {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 28.33%;
	/*170*/
	height: auto;
	aspect-ratio: 170 / 120;
	border-radius: 5px;
	padding: 26px 0;
	box-sizing: border-box;
	margin: 0 auto;
	overflow: hidden;
}

.modal-image img,
.modal-logo img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
}

.modal-company-name {
	font-size: 1.25em;
	font-weight: 500;
	line-height: 1.36;
	color: #333333;
	text-align: center;
}

.modal-category-wrap {
	margin-top: 15px;
}

.modal-category {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: 12px;
	width: 83.33%;
	/*500*/
	margin: 0 auto;
	font-size: 0.875em;
	line-height: 1;
	color: #333333;
}

.modal-industry {
	width: 100%;
	height: 30px;
	border-radius: 5px;
	background: #fffae1;
	display: flex;
	justify-content: center;
	align-items: center;
	padding: 0 16px;
	font-weight: 500;
	color: #333333;
}

.modal-venues {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 6px;
}

.modal-venue {
	height: 30px;
	border-radius: 5px;
	background: #00a0e9;
	/* 濃いめの水色 */
	display: flex;
	justify-content: center;
	align-items: center;
	padding: 0 16px;
	font-weight: 500;
	color: #fff;
}

.modal-info-table {
	width: 77.83%;
	/*467*/
	margin: 18px auto 0;
	text-align: left;
}

.modal-info-table th,
.modal-info-table td {
	display: block;
	width: 100%;
	font-size: 0.875em;
	font-weight: 500;
	line-height: 1.5;
	color: #333333;
}

.modal-info-table th {
	font-weight: 700;
}

.modal-info-table tr {
	display: block;
}

.modal-info-table tr+tr {
	padding-top: 1em;
}

.modal-action {
	width: 63.33%;
	/*380*/
	margin: 24px auto 0;
}

.modal-action a {
	display: flex;
	justify-content: center;
	align-items: center;
	font-size: 1em;
	font-weight: 500;
	line-height: 1;
	color: #fff;
	width: 100%;
	height: 50px;
	border-radius: 10px;
	background: var(--primary-blue);
}

/* ==========================================================
   PC用「事前予約はこちら」ボタン（モーダルトリガー）
========================================================== */

.floating-btn{
	display: flex;
	flex-direction: column;
	width: 6.42%;
	/*95*/
	max-width: 95px;
	position: fixed;
	right: 0px;
	top: 50%;
	transform: translateY(-50%);
	z-index: 100;
}

.floating-btn-trigger {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: auto;
	aspect-ratio: 95 / 380;
	background: var(--orange);
	border: 3px solid #fff;
	color: #fff;
	writing-mode: vertical-rl;
	font-size: 1.88em;
	/*30*/
	line-height: 1;
	letter-spacing: 0.1em;
	border-radius: 10px 0 0 10px;
	box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.2);
	cursor: pointer;
	position: relative;
	right: -5px;
}

.floating-btn-trigger:hover {
	opacity: 0.7;
}

.floating-btn .sns_ico{
	width: 63.15%;/*60*/
	margin: 2.5em auto 0;
	position: relative;
	right: -7px;
}

.floating-btn .sns_ico img{
	width: 100%;
	height: auto;
}

.floating-btn .sns_ico + .sns_ico{
	margin-top: 1em;
}

/* ==========================================================
   予約選択モーダル
========================================================== */
.reservation-modal-content {
	max-width: 480px;
	padding: 50px 30px 40px;
}

.reservation-modal-body {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 30px;
}

.reservation-modal-title {
	font-size: 1.5em;
	font-weight: 700;
	color: var(--primary-blue);
	text-align: center;
	line-height: 1.4;
}

.reservation-btn-wrap {
	display: flex;
	flex-direction: column;
	gap: 16px;
	width: 100%;
}

.btn-reservation {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: 60px;
	border-radius: 10px;
	font-size: 1.13em;
	font-weight: 700;
	color: #fff;
	text-align: center;
	transition: opacity 0.3s;
}

.btn-reservation:hover {
	opacity: 0.75;
	color: #fff;
}

.btn-imabari {
	background: var(--orange);
}

.btn-matsuyama {
	background: var(--primary-blue);
}