@charset "utf-8";
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP&family=Noto+Sans+JP&display=swap');

:root {
	/* color */
	--white: #fff;
	--lightGray: #f0f0f0;
	--gray: #555;
	--black: #000; 
	--blue: #0068b6;
	--red: #dd3333;
	--lightGreen: #66cacc;
	--gold: #bd9859;
	--lightGold: #e8e4c5;
	/* width */
	--maxWidth: 1000px;
	--contentsWidth: 940px;
	--spBreak: 520px;
	
	/* メディアクエリ用の変数（pxを付けない） */
	--maxWidthN: 1000;
	--contentsWidthN: 940;
	--spBreakN: 520;
	
}

/* ブレイクポイントメモ */
/*
@media (min-width: 768px) and (max-width:1112px) 
@media (max-width: 767px) 

デザインサイズ: 1000px;
左右パディング： 30px;
留学ページコンテンツ幅: 940px
コンテンツ幅最小幅: 820px

.c-inner {
	width: 100%;
    max-width: calc(1200px + 6%);
    margin: 0 auto;
    padding: 0 3%;
}
*/

/*-------------------------------------------
font-family
-------------------------------------------*/
/*
	font-family: "Noto Sans JP", serif;
	font-weight: 400;

	font-family: "Noto Serif JP", serif;
	font-weight: 600; SemiBold
	（font-weight: 700; Bold）
	font-weight: 900; ExtraBold
/*

/*-------------------------------------------
head
-------------------------------------------*/
html {
	scroll-behavior: smooth;
	scroll-padding-top: 200px;
	@media (max-width: 767px) {
		
	}
}
body {
	scroll-padding-top: 60px;
}
.p-page:has(.headImg) {
	padding-top: 20px;
	@media (max-width: 767px) {
		padding-top: 0;
	}
}

.headImg {
	display: block;
	width: 100%;
	//margin-top: 30px;
	margin-bottom: 60px;
	@media (max-width: 767px) {
		//margin-top: 3.75vw;
		margin-bottom: 30px;
	}
	img {
		width: 100%;
		height: auto;
	}
	&.maxWidth {
		padding-inline: 30px;
		max-width: calc(1200px + 6%);
		margin-inline: auto;
		margin-bottom: 80px;
		@media (max-width: 767px) {
			padding-inline: 3.75vw;
			margin-bottom: 40px;
			margin-top: 10px;
		}
	}
	&.top {
		display: flex;
		width: 100%;
		margin-top: 0;
		justify-content: space-between;
		background: url("/cms/wp-content/themes/j-circ/images//ryugaku/top_main_bg.webp") no-repeat 0 100% / 100% auto;
		max-width: calc(1200px + 6%);
		margin-inline: auto;
		@media (max-width: 1000px) {
			background-size: cover;
		}
		@media (max-width: 520px) {
			flex-direction: column;
			background-size: auto 72vw;
			background-size: auto 69vw;
            background-position: center 0;
            background-color: #c0ddef;
		}
		figure {
			width: 100%;
			text-align: center;
			padding-left: 3vw;
			display: flex;
			@media (max-width: 520px) {
				padding-left: 0;
			}
			img {
				width: 400px;
				margin-inline: auto;
				@media (max-width: 1000px) {
					width: 90%;
					margin-top: 20px;
				}
				@media (max-width: 520px) {
					width: 95%;
					margin-top: 0;
				}
			}
		}
		.top__mainList {
			margin-left: auto;
			width: 100%;
			display: flex;
			flex-direction: column;
			justify-content: flex-end;
			@media (max-width: 520px) {
				justify-content: center;
				gap: 0;
				padding-left: calc(3.75vw * 3);
			}
			> li {
				position: relative;
				&:first-child {
					img {
						width: 522px;
						@media (max-width: 1000px) {
							width: calc((522 / 1100) * 100vw);
						}
						@media (max-width: 520px) {
							width: calc(100% - calc(((26 * 2) / 1000) * 100vw));
						}
					}
					@media (max-width: 1000px) {
						&::before {
							position: absolute;
							content: "";
							top: 0;
							right: 0;
							width: calc(100% - 3.5vw);
							height: 0.2vw;
							background-color: var(--white);
							z-index: 1;
						}
					}
					@media (max-width: 520px) {
						&::before {
							width: calc(100% - 8.5vw);
							height: 0.3vw;
						}
					}
				}
				&:last-child {
					img {
						width: 541px;
						@media (max-width: 1000px) {
							width: calc((541 / 1100) * 100vw);
						}
						@media (max-width: 520px) {
							width: calc(100% - calc((22 / 1000) * 100vw));
						}
					}
				}
				a {
					display: block;
					text-align: right;
					@media (max-width: 520px) {
						text-align: right;
					}
					img {
						margin-left: auto;
					}
				}
			}
		}
	}
}
picture.headImg {
	margin-bottom: 20px;
}

.c-ttl--page.ryugaku-ttl {
	position: relative;
	border-bottom: none;
	padding-bottom: 35px;
	padding-inline: 15px;
	font-weight: 700;
	letter-spacing: 0.085em;
	margin-bottom: 60px;
	@media (max-width: 767px) {
		text-align: center;
		padding-bottom: 15px;
		margin-bottom: 30px;
	}
	i {
		font-size: 24px;
		font-style: normal;
		font-weight: 700;
		@media (max-width: 767px) {
			font-size: calc((20/ 400) * 100vw);
		}
	}
	&::after {
		position: absolute;
		content: "";
		bottom: 0;
		left: 0;
		right: 0;
		margin: auto;
		width: 100%;
		max-width: 280px;
		height: 1px;
		background-color: var(--gray);
	}	
}


.c-ttl--typeR__bg {
	font-weight: 700;
	font-size: 20px;
    font-size: 2.0rem;
	color: var(--white);
	background-color: var(--blue);
	padding: 7px 20px;
	margin-bottom: 26px;
	@media (max-width: 767px) {
        margin-bottom: calc((20 / 400) * 100vw);
        font-size: calc((16/ 400) * 100vw);
    }
}

.introImg {
	text-align: center;
	margin-bottom: 60px;
	img {
		margin-inline: auto;
	}
}

.c-list {
	display: inline-flex;
	flex-direction: column;
	gap: 10px;
	width: auto;
	li {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 20px;
		a {
			color: var(--blue);
			text-decoration: underline;
			&:hover {
				text-decoration: none;
				opacity: .7;
			}
			&.mail {
				color: var(--white);
				background-color: var(--blue);
				padding: 2px 10px;
				border-radius: 3px;
				text-decoration: none;
				white-space: nowrap;
				&:hover {
					opacity: .7;
				}
			}
		}
	}
}

.c-sections__item__content {
	position: relative;
	display: grid;
	grid-template-columns: 0.8fr 1fr;
	gap: 20px;
	@media (max-width: 767px) {
		grid-template-columns: 1fr;
		gap: 15px;
	}
	figure {
		text-align: center;
		img {
			@media (max-width: 767px) {
				width: 70%;
			}
		}
	}
	p {
		font-size: 20px;
		font-weight: 700;
		@media (max-width: 767px) {
			font-size: calc((16 / 400) * 100vw);
		}
		&.exRight {
			position: absolute;
			display: inline-block;
			font-size: 16px;
			top: 0;
			right: 0;
			font-weight: 400;
			@media (max-width: 767px) {
				font-size: calc((14 / 400) * 100vw);
			}
			& + * {
				margin-top: 2.5em;
				@media (max-width: 767px) {
					margin-top: 0;
				}
			}
		}
		&.small {
			font-size: 16px;
			font-weight: 400;
			@media (max-width: 767px) {
				font-size: calc((14 / 400) * 100vw);
			}
		}
	}
	
}

.bnr_list {
	display: flex;
	justify-content: flex-start;
	gap: 20px;
	margin-top: 100px;
	@media (max-width: 767px) {
		flex-direction: column;
		margin-top: 50px;
	}
	li {
		a {
			img {
				width: 100%;
				height: auto;
			}
		}
	}	
}

.contact__box {
	display: flex;
	justify-content: flex-start;
	align-items: center;
	gap: 20px;
	flex-wrap: wrap;
	margin-top: 60px;
	background-color: var(--lightGray);
	padding: 30px;
	max-width: var(--contentsWidth);
	margin-inline: auto;
	@media (max-width: 767px) {
		flex-direction: column;
		padding: 20px;
	}
	.c-ttl {
		width: 100%;
		font-size: 28px;
		font-weight: 700;
		color: var(--blue);
		border-bottom: 1px solid var(--blue);
		padding-bottom: 7px;
		margin-bottom: 10px;
		@media (max-width: 767px) {
			font-size: calc((24/ 400) * 100vw);
		}
	}
	figure {
		@media (max-width: 767px) {
			text-align: center;
		}
		img {
			@media (max-width: 767px) {
				margin-inline: auto;
				width: 50%;
			}
		}
	}
	dl {
		dt {
			font-weight: 700;
			margin-bottom: 10px;
		}
		dd {
			font-weight: 400;
		}
	}
	.c-btn--arrow {
		margin-top: 30px;
		margin-inline: auto;
	}
}

/*-------------------------------------------
base
-------------------------------------------*/
.spOnly {
	display: none;
	@media (max-width: 767px) {
		display: block;
	}
}
.pcOnly {
	display: block;
	@media (max-width: 767px) {
		display: none;
	}
}

section {
	.center {
		text-align: center;
	}
	.bold {
		font-weight: 700;
	}	
	p {
		text-align: justify;
		line-height: 1.8;
		* + & {
			margin-top: 20px;
			@media (max-width: 767px) {
				margin-top: 10px;
			}
		}
	}
	a {
		&:hover {
			opacity: .7;
		}
	}
}


/*-------------------------------------------
top
-------------------------------------------*/
.c-sections__item {
	&#topics,
	&#story,
	&#movie,
	&#achievement,
	&#grant,
	&#support {
		margin-bottom: 100px;
		@media (max-width: 767px) {
			margin-bottom: 60px;
		}
	}

	&#topics {
		max-width: var(--contentsWidth);
		margin-inline: auto;
		.c-ttl--type03 {
			color: var(--black);
			font-weight: 700;
		}
	}
	.ryugaku-ttl {
		text-align: center;
		line-height: 1.3;
		margin-bottom: 30px;
		@media (max-width: 767px) {
			margin-bottom: 15px;
		}
		i {
			letter-spacing: 0.05em;
		}
	}
	p {
		&.readText {
			text-align: center;
			font-size: 20px;
			font-weight: 700;
			@media (max-width: 767px) {
				font-size: calc((16/ 400) * 100vw);
			}
		}
	}
	&#story {
		.ryugaku-ttl {
			color: var(--gold);
		}
		.story__list {
			margin-top: 50px;
			display: flex;
			justify-content: center;
			gap: 40px;
			@media (max-width: 767px) {
				margin-top: 30px;
				gap: 20px;
			}
			> li {
				a {
					figure {
						img {
							max-width: 100%;
						}
					}
				}
			}
		}
	}
	&#movie {
		.ryugaku-ttl {
			color: var(--lightGreen);
		}
		.movie__list {
			margin-top: 50px;
			display: flex;
			flex-direction: row;
			flex-wrap: nowrap;
			justify-content: center;
			align-items: flex-start;
			gap: 20px;
			max-width: var(--contentsWidth);
			margin-inline: auto;
			@media (max-width: 767px) {
				flex-direction: column;
				margin-top: 30px;
				gap: 20px;
			}
			> li {
				border: none;
				gap: 0;
				padding-bottom: 0;
				a {
					display: flex;
					flex-direction: column;
					background-color: var(--black);
					color: var(--white);
					width: 100%;
					figure {
						
					}
					div {
						display: flex;
						flex-direction: column;
						flex: 1;
						height: 100%;
						padding: 20px;
						.movie__ttl {
							text-align: center;
							font-size: 18px;
							margin-bottom: 0px;
							margin-inline: -20px;
							@media (max-width: 767px) {
								font-size: calc((16/ 400) * 100vw);
							}
							i {
								font-size: 16px;
								@media (max-width: 767px) {
									font-size: calc((14/ 400) * 100vw);
								}
							}	
						}
					}	
				}
			}
		}
	}
	&#achievement {
		.readText {
			font-size: 24px;
			@media (max-width: 767px) {
				font-size: calc((20/ 400) * 100vw);
			}
		}
		.introImg {
			margin-top: 30px;
			@media (max-width: 767px) {
				margin-bottom: 30px;
			}
		}
	}
	&#grant {
		.introImg {
			margin-top: 40px;
			@media (max-width: 767px) {
				margin-bottom: 30px;
			}
		}
	}
	&#support {
		.support__list {
			margin-top: 40px;
			display: flex;
			justify-content: center;
			align-items: flex-start;
			gap: 60px;
			max-width: var(--contentsWidth);
			margin-inline: auto;
			@media (max-width: 767px) {
				margin-top: 20px;
				gap: 20px;
			}
			> li {
				@media (max-width: 767px) {
					width: calc((100% - 20px) / 2);
				}
			}
				a {
					figure {
						display: flex;
					align-items: center;
					justify-content: center;
					width: 330px;
					height: 180px;
					border: 1px solid var(--blue);
					margin-inline: auto;
					@media (max-width: 767px) {
						width: 100%;
						height: 100%;
						aspect-ratio: 5 / 3;
					}
					img {
						max-width: 95%;
					}
				}
				.support__ttl {
					font-weight: 700;
					margin-bottom: 10px;
					text-align: center;
					margin-top: 20px;
					@media (max-width: 767px) {
						margin-top: 15px;
					}
				}
				p {
					margin-top: 15px;
					max-width: 300px;
					margin-inline: auto;
					@media (max-width: 767px) {
						margin-top: 10px;
						font-size: calc((12/ 400) * 100vw);
						line-height: 1.6;
					}
				}
			}
		}
	}
}

.btnRed {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 5px;
	background-color: var(--red);
	color: var(--white);
	min-height: 37px;
	max-width: 197px;
	width: 100%;
	font-size: 15px;
	font-weight: 300;
	margin-top: 20px;
	margin-inline: auto;
	padding-inline: 10px;
	letter-spacing: 0.05em;
	&::after {
		content: "▶";
		top: 0;
		left: 0;
		font-size: 10px;
	}
}
/*-------------------------------------------
story
-------------------------------------------*/
.tagList {
	display: flex;
	flex-wrap: wrap;
	gap: 15px;
	margin-bottom: 80px;
	padding-inline: 30px;
	max-width: calc(1200px + 6%);
	margin-inline: auto;
	@media (max-width: 767px) {
		margin-bottom: 40px;
		padding-inline: 3.75vw;
	}
	li {
		position: relative;
		display: inline-block;
		font-family: "Noto Serif JP", serif;
		font-weight: 400;
		font-size: 14px;
		color: var(--gray);
		padding-left: .75em;
		line-height: 1;
		@media (max-width: 767px) {
			font-size: calc((12/ 400) * 100vw);
		}
		&::before {
			position: absolute;
			content: "#";
			top: 0;
			left: 0;
			color: var(--gray);
			line-height: 1;
		}
	}
}

.c-sections__item.borderTop {
	border-top: 1px solid var(--gray);
	padding-top: 60px;
	@media (max-width: 767px) {
		padding-top: 30px;
	}
}

.c-ttl--typeR__story-head {
	text-align: center;
	font-size: 28px;
	font-weight: 400;
	color: var(--gold);
	letter-spacing: 0.05em;
	margin-bottom: 40px;
	@media (max-width: 767px) {
        margin-bottom: calc((20 / 400) * 100vw);
        font-size: calc((24/ 400) * 100vw);
    }
}
.c-ttl--typeR__story-subHead {
	font-size: 24px;
	font-weight: 700;
	color: var(--black);
	letter-spacing: 0.05em;
	margin-bottom: 20px;
	@media (max-width: 767px) {
		font-size: calc((20/ 400) * 100vw);
        margin-bottom: calc((10 / 400) * 100vw);
    }
	* + & {
		margin-top: 40px;
		@media (max-width: 767px) {
			margin-top: calc((20 / 400) * 100vw);
		}
	}
}

.story__column02 {
	display: flex;
	flex-direction: row-reverse;
	gap: 75px;
	@media (max-width: 767px) {
		flex-direction: column;
		gap: 20px;
	}
	figure {
		figcaption {
			margin-top: 10px;
			font-size: 14px;
			@media (max-width: 767px) {
				margin-top: 7px;
				font-size: calc((11 / 400) * 100vw);
			}
		}
	}
	+ .story__column02 {
		margin-top: 60px;
		@media (max-width: 767px) {
			margin-top: 30px;
		}
	}
}

.advice__box {
	padding: 40px 30px;
	background-color: var(--lightGold);
	@media (max-width: 767px) {
		padding: 20px;
	}
	.c-ttl--typeR__story-subHead {
		font-size: 28px;
		font-weight: 400;
		color: var(--black);
		letter-spacing: 0.05em;
		margin-bottom: 20px;
		@media (max-width: 767px) {
			text-align: center;
			margin-bottom: calc((20 / 400) * 100vw);
			font-size: calc((24/ 400) * 100vw);
		}
	}
	figure {
		position: relative;
		margin-top: -50px;
		@media (max-width: 767px) {
			width: 50%;
			margin-top: 0;
			margin-inline: auto;
		}
		figcaption {
			text-align: center;
			
		}
	}
}

/*-------------------------------------------
movie
-------------------------------------------*/
.movie__list {
	display: flex;
	flex-direction: column;
	gap: 30px;
	@media (min-width: 740px) {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 40px;
	}
	li {
		display: flex;
		align-items: center;
		gap: 30px;
		border-bottom: 1px solid var(--gray);
		padding-bottom: 60px;
		@media (max-width: 767px) {
			flex-direction: column;
			width: 100%;
			gap: 10px;
			padding-bottom: 30px;
		}
		a {
			position: relative;
			display: block;
			//aspect-ratio: 16 / 9;
			padding: 20px;
			@media (max-width: 767px) {
				padding: 10px;
			}
			/*
			&::before {
				position: absolute;
				content: "";
				top: 0;
				left: 0;
				right: 0;
				bottom: 0;
				margin: auto;
				background: var(--lightGreen);
				border-radius: 50%;
				width: 80px;
				height: 80px;
				display: grid;
				place-content: center;
				transition: .3s;
				z-index: 3;
			}
			@media (max-width: 767px) {
				&::before {
					width: 60px;
					height: 60px;
				}
			}
			&::after {
				position: absolute;
				content: "";
				top: 0;
				left: 4px;
				right: 0;
				bottom: 0;
				margin: auto;
				width: 0;
				height: 0;
				border-style: solid;
				border-width: 16px 0 16px 24px;
				border-color: transparent transparent transparent var(--white);
				z-index: 1;
				transition: .3s;
				z-index: 4;
			}
			@media (max-width: 767px) {
				&::after {
					border-width: 12px 0 12px 18px;
				}
			}
			*/
		}
		figure {
			position: relative;
			width: 100%;
			height: 100%;
			max-width: 414px;
			margin-inline: auto;
			/*
			&::after {
				content: "";
				position: absolute;
				top: 0;
				left: 0;
				right: 0;
				bottom: 0;
				background: rgba(0, 0, 0, .2);
				z-index: 2;
			}
			*/
			img {
				width: 100%;
				height: 100%;
				object-fit: cover;
			}
		}
		.movie__ttl {
			font-size: 26px;
			font-weight: 400;
			margin-bottom: 40px;
			@media (max-width: 767px) {
				font-size: calc((20/ 400) * 100vw);
				margin-bottom: 20px;
			}
			i {
				display: block;
				font-size: 18px;
				font-weight: 400;
				font-style: normal;
				@media (max-width: 767px) {
					font-size: calc((14/ 400) * 100vw);
				}
			}
		}
		p {
			font-size: 14px;
		}
	}
}

.modal {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(0, 0, 0, .7);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	z-index: 99998;
	transition: opacity 0.3s;

	&.is-open {
		opacity: 1;
		visibility: visible;
		pointer-events: auto;
	}

	.modal-wrapper {
		position: fixed;
		top: 50%;
		left: 50%;
		transform: translate(-50%, -50%);
		width: calc(100% - 40px);
		max-width: 800px;
		background-color: var(--black);
		z-index: 99999;
		transition: margin-top 0.3s;
	}
	.modal-background {
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		cursor: pointer;
	}
	.modal-content {
		.videoFrame {
			position: relative;
			width: 100%;
			aspect-ratio: 16 / 9;
			overflow: hidden;
			video {
				position: absolute;
				top: 0;
				left: 0;
				width: 100%;
				height: 100%;
				object-fit: contain;
				background-color: var(--black);
			}
		}
	}
	.modal-close {
		position: absolute;
		top: -40px;
		right: 0;
		width: 40px;
		height: 40px;
		border: none;
		background: none;
		color: var(--white);
		font-size: 32px;
		line-height: 1;
		cursor: pointer;
		z-index: 100000;
	}
}

/* .l-main__containerのスタイルを上書き */
.l-main__container:has(.modal.is-open) {
	overflow: visible;
}

/*-------------------------------------------
archivement
-------------------------------------------*/
.c-sections__item {
	&#number,
	&#purpose,
	&#research,
	&#facility {
		padding-top: 30px;
		@media (max-width: 767px) {
			padding-top: 15px;
		}
	}
	&#facility {
		.c-ttl--type03 {
			font-weight: 700;
			margin-top: 60px;
			@media (max-width: 767px) {
				margin-top: 40px;
			}
		}
	}
	.facility__list {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 20px;
		margin-bottom: 40px;
		@media (max-width: 767px) {
			grid-template-columns: 1fr;
			margin-bottom: 30px;
		}
		> li {
			h4 {
				font-size: 18px;
				font-weight: 700;
				color: var(--blue);
				margin-top: 10px;
				margin-bottom: 5px;
				@media (max-width: 767px) {
					font-size: calc((16 / 400) * 100vw);
				}
			}
			.facility__list__item {
				>li {
					font-size: 16px;
					font-weight: 400;
					@media (max-width: 767px) {
						font-size: calc((14 / 400) * 100vw);
					}
					+ li {
						margin-top: 5px;
					}
				}
			}
		}
	}
}