@charset "utf-8";
/*共通*/
:root {
	--black: #333333;
	--bg: #f9f7ed;
	--blue: #006699;
	--blue_bg: #3f87e3;
	--yellow: #ffb92c;
	--skyblue_bg: #ebf4f7;
	--gray: #999999;
	--pink: #ff6666;
	--midline: #cccccc;
	--jp: "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
	--en: "Montserrat", sans-serif;
}
html {
	scroll-behavior: smooth;
}
body {
	font-family: var(--jp);
	color: var(--black);
	@media (min-width: 980px) {
		display: flex;
        flex-direction: column;
        min-height: 100vh;
	}
}
body.is-fixed {
	overflow: hidden;
}
.sp {
	display: block;
	@media (min-width: 980px) {
		display: none;
	}
}
.tablet {
	/* display: none; */
	@media (min-width: 768px) {
		display: block;
	}
}
.pc {
	display: none;
	@media (min-width: 980px) {
		display: block;
	}
}
.overlay {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(0, 0, 0, 0.3); 
	z-index: 99;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.3s ease;
	pointer-events: none;
}
.overlay.is-show {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	& + header {
		@media (max-width: 979px){
			border-radius: 10px 10px 0 0;
		}
	}
}
@media (min-width: 980px){
	main {
		margin-left: 0;
		width: 100%;
		flex-grow: 1;
	}
	section {
		padding: 100px 40px 100px 300px;
		width: 100%;
	}
	
}
img {
	width: 100%;
	height: auto;
}
a {
	display: inline;
	text-decoration: underline;
	transition: 0.4s;
}
a:hover {
	opacity: 0.6;
	text-decoration: none;
}

.header-wrap {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	z-index: 999;
	@media (min-width: 980px) {
		display: contents;
	}
	@media (max-width: 979px) {
		&::before {
			content: "";
			position: absolute;
			top: 0;
			left: 5%;
			width: 90%; 
			height: 35px;
			z-index: -1;
			pointer-events: none;
			opacity: 0;
			transition: opacity 0.4s ease;
			background: linear-gradient(
				to bottom,
				rgba(255, 255, 255, 0.05) 0%,
				rgba(255, 255, 255, 0.05) 20px,
				rgba(255, 255, 255, 0.05) 20px,
				rgba(255, 255, 255, 0.05) 100%
			);
			backdrop-filter: blur(3px);
			-webkit-backdrop-filter: blur(10px);
		}
		&.is-scrolled::before {
			background-color: rgba(255, 255, 255, 0.5);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
			opacity: 1;
		}
	}
}
header {
	background-color: var(--bg);
	border-radius: 10px;
	padding: 10px;
	position: fixed;
	z-index: 999;
	transition: background-color 0.4s ease;
	@media (max-width: 979px) {
		position: relative !important;
		margin: 20px 5% 0 !important;
		top: 0 !important;
		left: 0 !important;
		width: 90% !important;
		&.is-scrolled {
			background-color: rgba(255, 255, 255, 0.05);
			backdrop-filter: blur(3px);
			-webkit-backdrop-filter: blur(3px);
		}
		header.is-scrolled::before {
			content: "";
			position: absolute;
			top: -20px; 
			left: 50%;
			transform: translateX(-50%);
			width: 100vw;
			height: calc(100% + 40px); 
			backdrop-filter: blur(8px);
			-webkit-backdrop-filter: blur(8px);
			background-color: rgba(249, 247, 237, 0.7); 
			z-index: -1; 
			animation: fadeInBlur 0.4s ease forwards;
		}
	}
	@keyframes fadeInBlur {
		from { opacity: 0; }
		to { opacity: 1; }
	}

	@media (min-width: 980px) {
		width: 240px;
		position: fixed;
		top: 20px;
		left: 20px;
		margin: 0;
		max-height: calc(100vh - 40px);
		z-index: 100;
		padding: 40px 30px 0;
		overflow-y: auto; 
		scrollbar-width: thin;
		&::-webkit-scrollbar-thumb {
			background-color: rgba(0, 0, 0, 0.2);
			border-radius: 3px;
		}
	}
	& .logo a {
		width: 45%;
		max-width: 180px;
		display: block;
		text-align: center;
		text-decoration: none;
		@media (min-width: 980px){ width: 100%; }
		& span {
			color: #ffffff;
			background-color: var(--blue_bg);
			display: block;
			margin-top: 5px;
			font-size: 68.75%;
			padding: 5px 5px 2px;
			border-radius: 10px;
			@media (min-width: 980px){
				margin-top: 13px;
				padding: 7px 0 5px;
				border-radius: 15px;
				font-size: 81.25%;
			}
		}
	}
	& div {
		width: 40px;
		height: 40px;
		position: absolute;
		right: 15px;
		top: 26%;
		z-index: 1000;/
        cursor: pointer;
		&::after {
			content: "menu";
			display: block;
			position: absolute;
			bottom: -5px;
			font-size: 87.5%;
			width: 100%;
			text-align: center;
		}
		& span { 
			display: block;
			height: 1px;
			width: 40px;
			background-color: var(--black);
			position: relative;
			top: 25%;
			transition: 0.4s;
			&::before, &::after {
				content: "";
				display: block;
				height: 1px;
				width: 40px;
				background-color: var(--black);
				position: absolute;
				transition: 0.4s;
			}
			&::before { top: -13px; }
			&::after { bottom: -13px; }
		}
		@media (min-width: 980px){ display: none; }
	}
}
.btn_center {
	margin-top: 30px;
	width: 250px;
	margin-inline: auto;
	height: 40px;
	& a {
		font-size: 87.5%;
		padding-top: 10px !important;
		padding-bottom: 10px !important;
		display: block;
		text-align: center;
		text-decoration: none;
	}
}
header nav {
	display: none;
	@media (max-width: 979px) {
		position: fixed;
		top: 88px;
		left: 5%;
		width: 90%;
		background-color: var(--bg);
		max-height: calc(100vh - 100px);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
		border-radius: 0 0 10px 10px;
		z-index: -1;
	}
	@media (min-width: 980px){
		display: block;
	 }
	& ul.global {
		margin: 40px 0 20px;
		border-top: 1px solid #cccccc;
		& > li {
			border-bottom: 1px solid #cccccc;
			@media (min-width: 980px){
				&:has(.is-open) > a {
					opacity: 1;
					background-color: #ffffff;
					font-weight: bold;
					margin: 0 -30px;
					padding: 10px 35px;
					&::after {
						content: url(../img/common/ico_arrow-y.svg);
					}
				}
			}
			& > a {
				text-decoration: none;
				padding: 15px;
				display: flex;
				justify-content: space-between;
				font-size: 125%;
				align-items: center;
				cursor: pointer;
				-webkit-tap-highlight-color: transparent;
				@media (min-width: 980px){
					padding: 10px 5px;
					font-size: 93.75%;
					&.active-parent,
					&:hover {
						opacity: 1;
						background-color: #ffffff;
						font-weight: bold;
						margin: 0 -30px;
						padding: 10px 35px;
						&::after {
							content: url(../img/common/ico_arrow-y.svg);
						}
					}
				}
				&::after {
					content: url(../img/common/ico_arrow-b.svg);
					display: block;
					width: 1.5em;
					height: 1.5em;
				}
				&.current {
					@media (min-width: 980px){
						font-weight: bold;
					}
					&::after {
						content: url(../img/common/ico_arrow-y.svg);
					}
				}
			}
			& ul {
				margin: -10px 0 15px;
				display: none;
				@media (min-width: 980px) {
					display: block;
					position: fixed;
					z-index: -1;
					top: 30px;
					left: 250px;
					box-sizing: border-box;
					background: #ffffff;
					border-radius: 0 10px 10px 0;
					padding-top: 165px;
					padding-left: 15px;
					height: calc(100vh - 40px);
					width: 310px;
					opacity: 0;
					visibility: hidden;
					transition: opacity 0.3s, visibility 0.3s;
					&::before {
						content: "";
						display: block;
						height: 100%;
						width: 10px;
						background-color: var(--bg);
						position: absolute;
						left: 0;
						top: 0;
						border-radius: 0 10px 10px 0;
					}
					&.is-open {
						opacity: 1;
						visibility: visible;
						& li a:hover::after { content: url(../img/common/ico_arrow-y.svg); }
					}
				}
				& li a {
					text-decoration: none;
					display: flex;
					padding: 10px 30px ;
					&::after {
						content: url(../img/common/ico_arrow-b.svg);
						display: block;
						width: 1em;
						height: 1em;
						margin-left: 10px;
					}
				}
			}
		}
	}
	& ul li a {
		text-decoration: none;
		padding: 10px 30px ;
		display: flex;
		@media (min-width: 980px) {
			padding: 10px;
			justify-content: space-between;
		}
		&::after {
			content: url(../img/common/ico_arrow-b.svg);
			display: block;
			width: 1em;
			height: 1em;
			margin-left: 10px;
		}
		@media (min-width: 980px) {
			&:hover::after {
				content: url(../img/common/ico_arrow-y.svg);
			}
		}
		&.active-parent {
			font-weight: bold;
			&::after {
				content: url(../img/common/ico_arrow-y.svg);
			}
		}
	}
	search {
		& form {
			input {
				width: 9em;
				padding-left: 5px;
			}
		}
	}
}
search {
	margin: 30px 30px 40px;
	background-color: #ffffff;
	border: 1px solid #cccccc;
	border-radius: 25px;
	padding: 5px;
	@media (min-width: 980px) { margin: 30px 0 40px; }
	& form {
		display: grid;
		grid-template-columns: 1fr 1.5em;
		input {
			width: auto;
			padding-left: 5px;
		}
		button {
			width: 1.5em;
			height: 1.5em;
		}
	}
}
header nav p {
	@media (min-width: 980px) {
		margin: 0 -30px;
		font-size: 75%;
	}
	& a {
		background-color: var(--black);
		color: #ffffff;
		padding: 20px 30px;
		text-decoration: none;
		border-radius: 0 0 10px 10px;
		width: 100%;
		display: block;
		overflow: hidden;
		&::after {
			content: url(../img/common/ico_arrow-w.svg);
			width: 0.8em;
			height: 0.8em;
			margin-left: 10px;
			display: inline-block;
		}
	}
}
header.active {
	display: block;
	& div {
		&::after {content: "close";}
		& span {
			top: 30%;
			transform: rotate(-30deg);
			&::before, &::after {
				top: auto;
				bottom: auto;
				transform: rotate(60deg);
			}
		}
	}
	& nav {
		display: block;
	}
}
.sub_menu {
	text-align: center;
	& li {
		& a {
			text-decoration: none;
			display: block;
			background-color: var(--yellow);
			color: var(--black);
			font-size: 62.5%;
			border-radius: 8px;
			font-weight: bold;
			padding: 0.5em;
			@media (min-width: 980px){
				font-size: 112.5%;
				border-radius: 20px;
			}
		}
	}
	& li:nth-child(2) {
		& a {
			background-color: var(--blue_bg);
			color: #ffffff;
		}
	}
}

header .sub_menu {
	position: absolute;
	right: 65px;
	top: 20%;
	display: flex;
	@media (min-width: 980px){
		display: none;
	}
	& li {
		& a {
			width: 50px;
		}
	}
	& li:nth-child(2) {
		margin-left: 5px;
		@media (min-width: 980px) {
			margin-left: 0;
		}

	}
}
body > .sub_menu {
	display: none;
	@media (min-width: 980px) {
		display: block;
		padding: 0;
		position: fixed;
		top: 20px;
		right: 0;
		width: 100%;
		z-index: 100;
		pointer-events: none;
	}
	@media (min-width: 1499px) {
		right: -166px;
	}
	& article {
		& .wrapper {
			@media (min-width: 980px){
				position: relative;
			}
			& ul {
				@media (min-width: 980px){
					position: absolute;
					top: 0;
					right: 0;
					pointer-events: auto;
				}
				& li {
					@media (min-width: 980px){
						line-height: 1.15;
					}
				}
				& li:nth-child(2) {
					@media (min-width: 980px){
						margin-top: 10px;
					}
				}
			}
		}
	}
}

& h2, h1 {
	font-size: 187.5%;
	margin-bottom: 20px;
	@media (min-width: 768px){
		font-size: 250%;
		margin-bottom: 1em;
	}
	& > span {
		font-size: ;
	}
}
& h3 {
	color: var(--blue_bg);
	font-weight: normal;
	font-size: 6.4vw;
	margin-top: 80px;
	margin-bottom: 18px;
		@media (min-width: 768px) {
		font-size: 187.5%;
		margin-bottom: 30px;
		margin-top: 100px;
	}
}
& h4 {
	font-weight: bold;
	font-size: 137.5%; /* 22px*/ 
	margin-top: 40px;
	margin-bottom: 20px;
		@media (min-width: 768px) {
		font-size: 150%;
	}
	& + p {
		font-size: 87.5%;
		margin-top: 20px;
		@media (min-width: 768px) {
			font-size: 100%;
		}	
	}
	&:nth-of-type(n+2) {
		margin-top: 20px;
		@media (min-width: 768px) {
			margin-top: 40px;
		}
	}
}
& h5 {
	font-weight: bold;
	font-size: 125%; /* 20px*/
	margin-top: 30px;
	margin-bottom: 15px;
}
& h6 {
	font-weight: bold;
	font-size: 112.5%; /* 18px*/
	margin-top: 25px;
	margin-bottom: 10px;
}
& ol {
	padding-left: 2em;
	& li {
		list-style: auto;
		line-height: 1.6;
			&:nth-child(n+2) {
			margin-top: 1em;
		}
	}
}
& .tel {
	margin-inline: auto;
	width: 300px;
	& a {
		color: #ffffff;
		text-decoration: none;
		font-size: 87.5%;
		padding: 12px 10px;
		background-color: var(--black);
		border-radius: 30px;
		display: block;
		text-align: center;
		line-height: 1;
		&::after {
			content: url(../img/common/ico_tel.svg);
			width: 1em;
			height: 1em;
			margin-left: 10px;
			display: inline-block;
		}
	}
}
section {
	padding: 80px 5%;
	scroll-margin-top: 80px;
	@media (min-width: 768px) {
		padding: 100px 5%;
		scroll-margin-top: 0;
	}
	@media (min-width: 980px) {
		/* padding: 100px 0; */
		padding: 80px 0;
	}
	> article {
		@media (min-width: 980px){
			padding-left: 300px;
			padding-right: 20px;
		}
		& > div {
			width: 100%;
			max-width: 1000px;
			& p, & ul li  {
				line-height: 1.5;
			}
			& .btn {
				& a {
					text-decoration: none;
					&::after {
						background: url("../img/common/ico_btn.svg") no-repeat;
						content: "";
						display: inline-block;
						width: 6px;
						height: 8px;
						margin-left: 5px;
						background-position: 1px 0;
					}
				}
			}
			& .btn_y {
				& a {
					font-size: 75%;
					padding: 2px 16px;
					background-color: var(--yellow);
					border-radius: 20px;
					@media (min-width: 768px){
						padding: 4px 18px;
						font-size: 87.5%;
					}
				}
			}
			& div:has(table) {
				& table {
					border-collapse: collapse;
					width: 100%;
					& tr {
						border-top: #cccccc solid 1px;
						& th, td {
							padding: 20px 15px;
							font-size: 87.5%;
						}
						& th {
							color: var(--blue_bg);
							font-weight: bold;
							background-color: var(--bg);
							white-space: nowrap;
							width: 1%;
						}
						& td {
							background-color: #ffffff;
							line-height: 1.5;
							& dl {
								& dt {
									line-height: 1.5;
								}
							}
						}
					}
					& tr:last-of-type {
						border-bottom: #cccccc solid 1px;
					}
				}
			}
			& .face-to-face {
				color: #ff6666;
				border: 1px solid #ff6666;
			}
			& .live {
				color: #42a789;
				border: 1px solid #42a789;
			}
			& .archives {
				color: #f7931e;
				border: 1px solid #f7931e;
			}
			& .closed {
				color: #ffffff;
				background-color: var(--gray) !important;
				border: 1px solid var(--gray);
				font-weight: normal;
			}
		}
		& .see_more,  div.form-footer {
			margin: 20px auto 0;
			width: 250px;
			@media (min-width: 768px){
				margin: 40px auto 0;
			}
			& a, button {
				color: #ffffff;
				text-decoration: none;
				font-size: 87.5%;
				padding: 12px 10px 8px;
				background-color: var(--blue_bg);
				border-radius: 20px;
				display: block;
				text-align: center;
				&::after {
					background: url("../img/common/ico_btn_w.svg") no-repeat;
					content: "";
					display: inline-block;
					width: 6px;
					height: 8px;
					margin-left: 5px;
				}
			}
		}
		& .list_2 {
			@media (min-width: 768px){
				display: block grid;
				grid-template-columns: repeat(2, 1fr);
				gap: 20px;
			}
		}
		& .list_4 {
			display: block grid;
			grid-template-columns: repeat(2, 1fr);
			gap: 15px;
			@media (min-width: 1165px){
			/* @media (min-width: 1245px){ */
				grid-template-columns: repeat(4, 1fr);
				gap: 20px;
			}
		}
		& .disc {
			& li {
				text-indent: -1em;
				padding-left: 1em;
				&::before {
					content: "";
					display: inline-block;
					width: 0.6em;
					height: 0.6em;
					background-color: var(--blue_bg);
					border-radius: 50%;
					margin-right: 0.5em;
				}
			}
		}
		& .pdf::after {
			content: "";
			display: inline-block;
			background: url(../img/common/ico_pdf.svg) no-repeat;
			background-size: contain;
			height: 1em;
			width: 1em;
			margin-left: 5px;
			margin-right: 5px;
		}	
		& .external_link::after {
			content: "";
			display: inline-block;
			background: url(../img/common/ico_external_link.svg) no-repeat;
			background-size: contain;
			height: 1em;
			width: 1em;
			margin-left: 5px;
			margin-right: 5px;
		}
		& .download::after {
			content: "";
			display: inline-block;
			background: url(../img/common/ico_download.svg) no-repeat;
			background-size: contain;
			height: 1em;
			width: 1em;
			margin-left: 5px;
			margin-right: 5px;
			background-position: bottom;
		}
		& .wp-block-lazyblock-accordion dl {
			cursor: pointer;
		}
		& .wp-block-lazyblock-accordion dd {
			cursor: auto;
		}
	}
}

section.smn_list {
	& article {
		& ul {
			& li {
				& a {
					text-decoration: none;
					display: flex;
                	flex-direction: column;
					height: 100%;
					& p {
						margin: 0;
						& img {
							border-radius: 10px 10px 0 0;
						}
					}
					& div {
						background-color: var(--bg);
						border-radius: 0 0 10px 10px;
						padding: 1em;
						flex-grow: 1;
							display: flex;
							flex-direction: column;
						@media (min-width: 768px) {
							padding: 0.5em;
						}
						@media (min-width: 1245px) {
							padding: 1em;
						}
						& > p.period {
							font-size:68.75%;
							@media (min-width: 768px) {
								margin-top: 0;
								margin-bottom: 0;
								font-size: 75%;
							}
							& .type_label {
								width: fit-content;
								display: inline-block;
								padding: 5px 7px 3px;
								border-radius: 2px;
								font-weight: bold;
								background-color: #ffffff;
								line-height: 1;
								text-align: center;
								font-size: 2.666vw;
								@media (min-width: 768px) {
									padding: 5px 0 3px;
									font-size: 91.66%;
									width:8em;
								}
								&:nth-of-type(2) {
									margin-left: 3px;
									@media (min-width: 768px){
										margin-top: 0;
										margin-left: 0;
									}
								}

							}
							& .type_date {
								display: block;
    							margin: 5px 0;
							}
							&:nth-of-type(2) {
								margin-top: 5px;
							}
						}
						& > p.program_title {
							font-weight: bold;
							font-size: 3.733vw;
							display: -webkit-box;
							-webkit-box-orient: vertical;
							-webkit-line-clamp: 3;
							overflow: hidden;
							@media (min-width: 768px) {
								display: none;
								font-size: 100%;
								margin-bottom: 10px;
							}
						}
						& p.btn {
							text-align: right;
							margin-top: auto;
							& a {
								display: inline;
							}
						}
					}
				}
			}
		}
		& .list_4 {
			& li {
				& a {
					@media (min-width: 768px) {
						padding-left: 0;
					}
				}
			}
		}
	}
}

footer {
	height: 30px;
	background-color: var(--black);
	padding: 10px 20px;
	color: #ffffff;
	@media (min-width: 768px){
		padding: 6px 20px;
		display: flex;
		justify-content: space-between;
	}
	& ul {
		display: none;
		@media (min-width: 768px){
			display: flex;
			& li {
				&:nth-child(n+2) {
					margin-left: 2em;
				}
				& a {
					text-decoration: none;
					font-size: 12px;
				}
			}
		}
	}
	& small {
		font-size: 10px;
		display: block;
		text-align: right;
		@media (min-width: 768px){
			font-size: 12px;
			padding-top: 6px;
		}
	}
}