@charset "utf-8";

:root {
	--premium-course-color: 0, 164, 108;
	--highLevel-course-color: 59, 114, 227;
}

/* Common--------------------------------------------------- */
section {
	padding-block: clamp(4.4rem, var(--sp-44px), 6.4rem) clamp(5rem, var(--sp-50px), 7rem);
}
.inner {
	width: 100%;
	max-width: 100rem;
	margin: 0 auto;
}
h2 {
	margin-bottom: 0.5em;
}
.imgWrap {
	width: 100%;
	max-width: 90rem;
	margin: 0 auto;
}
img {
	height: auto;
}
@media screen and (max-width: 834px) {
	.inner {
		padding-inline: 2rem;
	}
}
.scrollHintWrap {
	overflow-x: scroll;
	display: flex;
	width: 100%;
	padding-bottom: 2rem;
	@media screen and (max-width: 834px) {
		scroll-snap-type: x mandatory;
	}
}
.scrollHintWrap::-webkit-scrollbar {
	height: 0.4rem;
}
.scrollHintWrap::-webkit-scrollbar-thumb {
	background-color: #a1b1c5;
	border-radius: 0.2rem;
}
.scrollHintWrap::-webkit-scrollbar-track {
	background-color: #fff;
}

/* FV------------------------------------------------------- */
.firstView {
	--FV-img: url(/assets/images/curriculum/IMG_FV.webp);
	padding: 0;
}
.firstView::before {
	content: 'Course';
}
#mainCatch {
	font-size: clamp(3.4rem, var(--sp-34px), 6rem);
}
@media screen and (max-width: 600px) {
	.firstView {
		--spFV-img: url(/assets/images/curriculum/IMG_FV_sp.webp);
	}
}

/* コース紹介-------------------------------------------------- */
#course p.lead {
	text-align: center;
	font-weight: 700;
	font-size: clamp(1.7rem, var(--sp-17px), 2rem);
}
#course .flexWrap {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 2rem;
}
#course .flexWrap :is(.premium, .highLevel) {
	width: 50%;
	padding: clamp(1.8rem, var(--sp-18px), 3rem);
	border: 2px solid var(--course-color);
	display: flex;
	flex-direction: column;
	align-items: center;
}
#course .flexWrap .premium {
	--course-color: rgb(var(--premium-course-color));
}
#course .flexWrap .highLevel {
	--course-color: rgb(var(--highLevel-course-color));
}
#course .flexWrap :is(.premium, .highLevel) h3 {
	font-family: var(--fontFamily-serif-noto);
	font-weight: 700;
	font-size: clamp(2.8rem, var(--sp-28px), 3.6rem);
	line-height: 1;
	color: #000;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: 0.3em;
}
#course .flexWrap :is(.premium, .highLevel) h3 span {
	font-size: clamp(1.7rem, var(--sp-17px), 2.2rem);
	line-height: 1;
	background-color: #fff;
	color: #fff;
	padding: 0.5em 1em;
	display: inline-flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	text-shadow: none;
	background-color: var(--course-color);
}
#course .flexWrap :is(.premium, .highLevel) p {
	margin-block: 1.2em 0.5em;
}
@media screen and (max-width: 834px) {
	#course .flexWrap {
		flex-direction: column;
	}
	#course .flexWrap :is(.premium, .highLevel) {
		width: 100%;
	}
}
@media screen and (max-width: 600px) {
	#course .flexWrap :is(.premium, .highLevel) h3 span {
		padding: 0.5em;
	}
}

/* カリキュラムの立て方--------------------------------------------------- */
#plan p {
	text-align: center;
}
@media screen and (max-width: 600px) {
	#plan {
		padding-inline: 1rem;
	}
	#plan p {
		text-align: justify;
	}
}
/* 学習の流れ--------------------------------------------------- */
#sample p.lead {
	text-align: center;
}
/* 切り替えボタン */
#sample #btnWrap {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 1.6rem;
	margin-block: -2rem 5rem;
	padding: 2rem 0 0;
}
#sample #btnWrap li {
	list-style: none;
}
#sample #btnWrap a {
	display: block;
	background-image: linear-gradient(rgba(var(--course-color), 0.7), rgb(var(--course-color)));
	color: #fff;
	border: 2px solid rgb(var(--course-color));
	border-radius: 50em;
	padding-block: 1em;
	padding-inline: 1.5em 2.5em;
	font-weight: 700;
	font-size: clamp(2rem, var(--sp-20px), 2.2rem);
	line-height: 1;
	box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
	transition: 0.2s;
	position: relative;
	text-align: center;
	&#premiumBtn {
		--course-color: var(--premium-course-color);
	}
	&#highLevelBtn {
		--course-color: var(--highLevel-course-color);
	}
	&:hover {
		transform: translateY(4px);
		box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
	}
	&::after {
		position: absolute;
		content: '';
		background-color: #fff;
		width: 0.75em;
		height: 0.5em;
		right: 1em;
		top: 50%;
		transform: translateY(-50%);
		clip-path: polygon(0 0, 100% 0, 50% 100%);
	}
}
@media screen and (max-width: 600px) {
	#sample #btnWrap {
		flex-direction: column;
	}
	#sample #btnWrap li {
		width: 93%;
	}
	#sample #btnWrap a {
		padding-inline: 1em 2em;
		line-height: 1.2;
	}
}

/* 詳細枠 */
#sample .courseWrap {
	background-color: #eef3fe;
	padding: 4rem;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.3s ease;
	position: absolute;
	width: 100%;
	top: 0;
	left: 0;
	z-index: 0;
}
#sample .courseWrap.show {
	opacity: 1;
	visibility: visible;
	position: relative;
	z-index: 1;
}
@media screen and (max-width: 600px) {
	#sample .courseWrap {
		padding: 1.4rem;
	}
}

/* 見出しボックス */
#sample .h3box {
	background-color: #fff;
	margin-bottom: 2.5rem;
	color: rgb(var(--course-color));
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding-block: 1.2em;
	padding-inline: 6rem 3rem;
	border: 2px solid rgb(var(--course-color));
	position: relative;
	width: calc(100% - 5rem);
	margin-inline: auto 0;
	border-radius: 0 50em 50em 0;
}
#sample .h3box::before {
	position: absolute;
	content: '';
	left: -5rem;
	top: 50%;
	transform: translateY(-50%);
	width: clamp(7rem, var(--sp-70px), 10rem);
	aspect-ratio: 163/170;
	background-image: var(--h3Img);
	background-repeat: no-repeat;
	background-size: contain;
}
#sample .h3box h3 {
	display: flex;
	align-items: center;
	gap: 0.2em;
	margin-bottom: 0;
	font-size: clamp(2.4rem, var(--sp-24px), 3rem);
	line-height: 1;
}
#sample .h3box h3 span.subTtl {
	background-color: #ffebef;
	color: #d71d63;
	font-weight: 700;
	padding: 0.3em 0.5em;
	font-size: clamp(1.7rem, var(--sp-17px), 2rem);
	display: flex;
	justify-content: center;
	align-items: center;
	height: fit-content;
}
#sample .h3box .format {
	color: #000;
	font-size: clamp(1.6rem, var(--sp-16px), 1.8rem);
	line-height: 1;
	display: flex;
	justify-content: center;
	align-items: flex-end;
}
#sample .h3box .format strong {
	color: #000;
}
#sample .h3box .format span {
	font-size: 120%;
	font-weight: 900;
	&.red {
		color: #d71d63;
	}
	&.blue {
		color: #0a54ea;
	}
}
@media screen and (max-width: 834px) {
	#sample .h3box,
	#sample .h3box h3 {
		flex-direction: column;
	}
	#sample .h3box {
		border-radius: 1em;
		width: 100%;
		padding: 1em;
		align-items: flex-start;
	}
	#sample .h3box::before {
		left: unset;
		right: -1.5rem;
		top: -1.5rem;
		transform: unset;
	}
	#sample .h3box h3 {
		align-items: flex-start;
		margin-bottom: 0.5em;
	}
}

/* inner */
#sample article {
	background-color: #fff;
	padding: 3.5rem 4rem;
	box-shadow: 2px 2px 0 #d2d9e9;
	&:first-of-type {
		margin-bottom: 3rem;
	}
}
#sample article h4 {
	font-family: var(--fontFamily-sans-noto);
	font-weight: 700;
	font-size: clamp(2.1rem, var(--sp-21px), 2.6rem);
	line-height: 1;
	color: rgb(var(--course-color));
	margin-bottom: 0.5em;
	position: relative;
	padding-left: 0.8em;
	&::before {
		position: absolute;
		content: '';
		display: inline-block;
		background-color: #d71d63;
		width: 0.5em;
		height: 0.5em;
		border-radius: 50em;
		left: 0;
		top: 51%;
		transform: translateY(-50%);
	}
}
@media screen and (max-width: 600px) {
	#sample article {
		padding: 2rem;
	}
}

/* 年間スケジュール詳細 */
#sample article .schedule_details {
	height: fit-content;
	position: relative;
	display: flex;
	gap: 2rem;
	width: 100%;
	cursor: grab;
	&:active {
		cursor: grabbing;
	}
}
#sample article .schedule_details .item {
	flex: 0 0 calc((100% - 2rem * 2) / 3);
	scroll-snap-align: start;
	width: auto;
	&.ao {
		--item-color: #d71d63;
	}
	&.regular {
		--item-color: #2234da;
	}
	&.graduation {
		--item-color: #1dc283;
	}
}
#sample article .schedule_details .item img {
	width: 100%;
}
#sample article .schedule_details .item .contentsName {
	background-color: var(--item-color);
	color: #fff;
	font-family: var(--fontFamily-sans-noto);
	font-weight: 700;
	font-size: 1.8rem;
	line-height: 1;
	width: 100%;
	padding-block: 0.4em;
	display: block;
	text-align: center;
}
#sample article .schedule_details .item .contentsTtl {
	color: var(--item-color);
	font-family: var(--fontFamily-sans-noto);
	font-weight: 900;
	font-size: 2.1rem;
	line-height: 1;
	width: 100%;
	padding-block: 0.75em;
	display: block;
	text-align: center;
}
#sample article .schedule_details .item p {
	margin-bottom: 0;
}
@media screen and (max-width: 834px) {
	#sample article .schedule_details .item {
		flex: 0 0 calc((100% - 2rem) / 2);
	}
}
@media screen and (max-width: 600px) {
	#sample .courseWrap .imgWrap img {
		padding-right: 1.6rem;
		max-width: 60rem;
		height: auto;
	}
	#sample article .schedule_details .item {
		flex: 0 0 100%;
	}
	#sample article .schedule_details .item img {
		object-fit: cover;
		object-position: 50% 70%;
		height: 15rem;
	}
}

/* １日のスケジュール */
#sample .courseWrap article dl.day_schedule {
	display: grid;
	grid-template-columns: 3em 1fr;
	gap: 0 1.5em;
	position: relative;
	&::after {
		position: absolute;
		content: '';
		background-image: var(--day-scheduleImg);
		background-repeat: no-repeat;
		background-size: contain;
		width: 42rem;
		height: 35.8rem;
		right: 0;
		top: 50%;
		transform: translateY(-50%);
	}
}
#sample .courseWrap article dl.day_schedule :is(dt, dd) {
	display: flex;
	align-items: center;
	padding-block: 1.3em;
	margin-bottom: 0;
	line-height: 1;
}
#sample .courseWrap article dl.day_schedule :is(dt, dd):last-of-type {
	padding-bottom: 2em;
}
#sample .courseWrap article dl.day_schedule dt {
	background-image: linear-gradient(90deg, transparent 45%, rgba(var(--course-color), 0.3) 45% 55%, transparent 55%);
	text-align: center;
	position: relative;
	z-index: 1;
	justify-content: center;
	color: rgb(var(--course-color));
	& span {
		background-color: #fff;
		padding-block: 0.15em;
		line-height: 1;
	}
}
#sample .courseWrap article dl.day_schedule dt:last-of-type:after {
	position: absolute;
	content: '';
	background-color: rgba(var(--course-color), 0.3);
	width: 1.5em;
	height: 0.75em;
	left: 50%;
	bottom: -0.75em;
	transform: translateX(-50%);
	clip-path: polygon(0 0, 100% 0, 50% 100%);
}
#sample .courseWrap article dl.day_schedule dd {
	border-bottom: 1px solid #dcdcdc;
	line-height: 1.2;
	&:last-of-type {
		border: unset;
	}
	& span {
		font-weight: 700;
		margin-right: 1.5em;
		width: 6em;
		text-align-last: justify;
		line-height: 1;
	}
}
@media screen and (max-width: 834px) {
	#sample .courseWrap article dl.day_schedule {
		padding-top: 20vw;
	}
	#sample .courseWrap article dl.day_schedule::after {
		left: 50%;
		right: unset;
		top: 0;
		bottom: unset;
		transform: translateX(-50%);
		width: 100%;
		height: auto;
		aspect-ratio: 600/150;
	}
}
@media screen and (max-width: 600px) {
	#sample .courseWrap article dl.day_schedule :is(dt, dd) {
		padding-block: 0.8em;
	}
	#sample .courseWrap article dl.day_schedule dd {
		flex-direction: column;
		align-items: flex-start;
		gap: 0.3em;
		& span {
			margin: 0;
			text-align-last: left;
		}
	}
}

/* 週間スケジュール */
#sample .courseWrap article .comment {
	width: calc(100% - 14rem);
	background-color: rgba(var(--course-color), 0.15);
	border-radius: 1rem;
	margin-inline: auto 0;
	padding: 1em 1.6em;
	position: relative;
	font-family: var(--fontFamily-sans-noto);
	font-weight: 700;
	color: #2234da;
	&::before {
		position: absolute;
		content: '';
		background-color: rgba(var(--course-color), 0.15);
		width: 2rem;
		aspect-ratio: 1/1;
		left: -1.95rem;
		top: 50%;
		transform: translateY(-50%);
		clip-path: polygon(0 50%, 100% 0, 100% 100%);
	}
	&::after {
		position: absolute;
		content: '';
		width: 12rem;
		aspect-ratio: 195/200;
		background-image: var(--weekly-schedule-img);
		background-repeat: no-repeat;
		background-size: cover;
		background-position: center bottom;
		left: -13.5rem;
		bottom: -5rem;
	}
}
#sample .courseWrap article .weekly_schedule {
	width: 100%;
	position: relative;
}
#sample .courseWrap article .weekly_schedule :is(th, td) {
	text-align: center;
	padding-block: 0.5em;
	line-height: 1;
}
#sample .courseWrap article .weekly_schedule thead th {
	width: 14.2rem;
	background-color: rgb(var(--course-color));
	color: #fff;
	border-left: 2px solid #fff;
	&:first-child {
		background-color: unset;
		border-left: none;
	}
}
#sample .courseWrap article .weekly_schedule tbody th {
	width: 8em;
	background-color: rgba(var(--course-color), 0.8);
	color: #fff;
	border-top: 2px solid #fff;
}
#sample .courseWrap article .weekly_schedule tbody td {
	background-color: #eef3fe;
	border: solid #fff;
	border-width: 0 0 2px 2px;
	&.base {
		background-color: rgba(var(--course-color), 0.15);
	}
	&.ao {
		background-color: rgba(215, 29, 100, 0.2);
	}
	&.teacher {
		background-color: #f4f4ed;
	}
	&.other {
		background-color: #fff;
	}
	&.free {
		background-color: #dcdcdc;
	}
}
#sample .courseWrap article .weekly_schedule tbody tr:last-of-type td {
	border-bottom: none;
}
#sample .courseWrap .scrollBack {
	display: block;
	text-align: center;
	margin: 2rem auto 0;
	background-image: linear-gradient(#fff, #e0e0e0);
	border-radius: 50em;
	font-family: var(--fontFamily-sans-noto);
	font-weight: 500;
	font-size: clamp(1.7rem, var(--sp-17px), 2rem);
	line-height: 1;
	color: #2b2b2b;
	border: 2px solid #999;
	width: fit-content;
	padding-block: 1em;
	padding-inline: 2.5em 3.25em;
	position: relative;
	&::after {
		position: absolute;
		content: '';
		background-color: #2b2b2b;
		width: 0.75em;
		height: 0.5em;
		right: 1em;
		top: 50%;
		transform: translateY(-50%);
		clip-path: polygon(50% 0, 100% 100%, 0% 100%);
	}
}
@media screen and (max-width: 600px) {
	#sample .courseWrap article .comment {
		width: calc(100% - 1em);
		margin-inline: 0 auto;
		padding-block: 1em;
		padding-inline: 1em 3em;
		&::before {
			display: none;
		}
		&::after {
			background-color: unset;
			background-image: var(--weekly-schedule-img);
			background-repeat: no-repeat;
			background-size: cover;
			background-position: center bottom;
			width: auto;
			height: 6em;
			aspect-ratio: 195/200;
			left: unset;
			right: -2em;
			bottom: 0;
		}
	}
	#sample .courseWrap article .weekly_schedule {
		white-space: nowrap;
		min-width: 600px;
		cursor: grab;
		&:active {
			cursor: grabbing;
		}
	}
	#sample .courseWrap article .weekly_schedule thead th {
		min-width: 12rem;
	}
}

/* コース別設定-------------------------------------------------- */
#sample .courseWrap.premium {
	--course-color: var(--premium-course-color);
	--h3Img: url(/assets/images/curriculum/IMG_premium_girl.svg);
	--day-scheduleImg: url(/assets/images/curriculum/IMG_premium_daySchedule.webp);
	--weekly-schedule-img: url(/assets/images/curriculum/IMG_premium_girl02.svg);
}
#sample .courseWrap.highLevel {
	--course-color: var(--highLevel-course-color);
	--h3Img: url(/assets/images/curriculum/IMG_highLevel_boy.svg);
	--day-scheduleImg: url(/assets/images/curriculum/IMG_highLevel_daySchedule.webp);
	--weekly-schedule-img: url(/assets/images/curriculum/IMG_highLevel_boy02.svg);
}
@media screen and (max-width: 834px) {
	#sample .courseWrap.premium {
		--day-scheduleImg: url(/assets/images/curriculum/IMG_premium_daySchedule_sp.webp);
	}
	#sample .courseWrap.highLevel {
		--day-scheduleImg: url(/assets/images/curriculum/IMG_highLevel_daySchedule_sp.webp);
	}
}
