/**
 * @file
 * Course Map Component Styles
 * Standalone styles for the course-map component
 */

/* ==========================
   VARIABLES & UTILITIES
   ========================== */
:root {
	--course-map-bg-primary: #002e5d;
	--course-map-bg-secondary: #013da5;
}

.overview-container-hidden {
	display: none !important;
}

/* ==========================
   PROGRAM LAYOUT
   ========================== */
.program-title {
	width: 100%;
	background-color: #0a5087;
	border-radius: 20px;
	padding: 20px 36px;
	margin-bottom: 25px;
}

.program-title h2 {
	color: var(--bs-white, #ffffff);
	margin: 0;
}

.program-overview {
	display: flex;
	gap: 35px;
}

.program-sidebar {
	min-width: 274px;
	display: flex;
	flex-direction: column;
	gap: 35px;
	height: 100%;
}

.program-menu {
	min-height: 474px;
	border-radius: 20px;
	border: 10px solid var(--bs-gray-500, #6c757d);
}

/* Tabs inside the program sidebar */
.program-overview-tab {
	display: flex;
	justify-content: start;
	align-items: center;
	white-space: unset;
	text-overflow: ellipsis;
	cursor: pointer;
	position: relative;
	height: 96px;
	padding: 29px 24px;
	margin: 0;
	padding-right: 3px;
	border-radius: 10px;
	width: 100%;
}

.program-overview-tab:not(.active):not(:last-child):not(:has(+ .active)):not(:hover):not(:has(+ :hover))::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 20%;
	width: 60%;
	height: 3px;
	background-color: var(--bs-gray-500, #6c757d);
}

.program-overview-tab > i {
	font-size: 26px;
	text-align: center;
}

.program-overview-tab > span {
	padding-left: 13px;
	display: inline-block;
	overflow: hidden;
	text-overflow: ellipsis;
	font-size: 24px;
}

.program-overview-tab:not(.first-tab.active):not(.active):hover {
	background-color: #e5f1ff;
}

.program-overview-tab.active {
	background-color: #0a5087;
	color: white;
}

@media screen and (max-width: 1010px) {
	.program-overview {
		flex-direction: column;
		max-height: unset;
	}

	.program-sidebar {
		width: 100%;
	}

	.program-overview-tab {
		justify-content: center;
		padding: 20px 10px 20px 10px;
		text-align: center;
		height: auto;
	}

	.program-overview-tab > span {
		flex-grow: 0;
	}

	.program-overview-tab::after {
		content: unset;
	}

	.course-map-box-header {
		display: none !important;
	}
}

/* ==========================
   CONTACT / SIDEBAR WIDGETS
   ========================== */
.program-contact {
	display: flex;
	flex-direction: column;
	flex-wrap: wrap;
	text-align: center;
	gap: 14px;
	min-height: 104px;
	background-color: var(--bs-gray-500, #6c757d);
	border-radius: 20px;
	padding: 17px 46px;
	width: 100%;
	flex-grow: 1;
	justify-content: space-between;
}

.program-contact > span {
	color: var(--course-map-bg-primary);
	font-size: 24px;
	font-weight: 700;
}

.program-contact-item {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 15px;
	word-wrap: break-word;
	font-size: 18px;
	color: var(--course-map-bg-primary);
}

.program-contact-item p {
	color: inherit;
}

.program-contact-item > span {
	word-wrap: break-word;
	overflow-wrap: break-word;
	width: 100%;
	text-align: start;
	word-break: break-word;
	line-height: 22px;
}

/* ==========================
   PROGRAM CONTENT AREA
   ========================== */
.program-content {
	min-height: 600px;
	border: 10px solid var(--bs-gray-500, #6c757d);
	border-radius: 20px;
	width: 100%;
	max-width: 100%;
	overflow: hidden;
	display: flex;
	flex-direction: column;
}

.program-content > [id^='container'] {
	flex: 1 1 auto;
	overflow: auto;
}

.container-with-padding {
	padding: 20px;
}

.program-content-footer {
	position: relative;
	z-index: 20;
	margin-left: 40px;
	margin-right: 40px;
	color: #002e5d;
	width: calc(100% - (40px * 2));
	bottom: 0;
	background-color: var(--bs-white, #ffffff);
	margin-top: auto;
	padding-top: 16px;
	padding-bottom: 16px;
}

.program-content-footer > div {
	display: flex;
	justify-content: space-between;
	align-items: center;
	width: 100%;
}

.program-content-footer::before {
	content: '';
	display: block;
	width: 100%;
	height: 3px;
	background-color: #79168b;
	position: absolute;
	top: -3px;
}

.program-content-footer:not(:has([class^='mse-new-button-'])) {
	padding-top: 15px;
	padding-bottom: 10px;
}

.program-content-footer > div > div > [class^='mse-new-button-'] {
	margin: 0 !important;
}

/* ==========================
   COURSE MAP / TIMELINE
   ========================== */
.course-map-section {
	width: 930px;
}

#course-map-course-map,
[id^="course-map-course-map-"] {
	position: relative;
	top: 0;
	left: -60px;
	min-width: 971px;
	overflow-x: visible;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 500px;
}

#container-timeline {
	position: relative;
	overflow-x: auto;
	overflow-y: hidden;
	display: flex;
	align-items: center;
	justify-content: flex-start;
	padding-bottom: 20px;
}

.course-map-course-boxes {
	position: absolute;
	width: auto;
	min-width: 230px;
	background-color: var(--bs-gray-500, #6c757d);
	border-radius: 20px;
	padding: 17px;
	padding-bottom: 10px;
	padding-top: 9px;
	z-index: 2;
	box-sizing: border-box;
}

.course-map-course-boxes.five-boxes {
	min-width: 195px;
}

.course-map-course-boxes.two-year-multi-semester {
	min-width: 252px;
	padding: 10px 12px;
}

.course-map-course-boxes.two-year-multi-semester .semesters-side-by-side {
	display: flex !important;
	flex-wrap: nowrap !important;
	gap: 15px;
	align-items: flex-start;
	margin: 0 !important;
}

.course-map-course-boxes.two-year-multi-semester .semesters-side-by-side .semester-column {
	flex: 1;
	min-width: 100px;
	width: auto !important;
	max-width: none !important;
	padding: 0 !important;
}

.course-map-course-boxes.two-year-multi-semester .semesters-side-by-side .semester-column h3 {
	margin-bottom: 8px;
}

.course-map-course-boxes.two-year-multi-semester .semesters-side-by-side .semester-column ul {
	margin: 0;
}

.course-map-two-column-layout {
	display: flex;
	align-items: flex-start;
}

.course-map-two-column-layout .col-6 {
	width: 50%;
	display: flex;
	flex-direction: column;
}

.course-map-box-header {
	position: absolute;
	top: 10px;
	left: 10px;
	padding: 8px 12px;
	display: flex;
	flex-direction: column;
	gap: 4px;
	align-items: flex-start;
	font-size: 18px;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	background-color: rgba(255, 255, 255, 0.95);
	z-index: 100;
	pointer-events: auto;
}

.course-map-detailed-link {
	font-size: 14px;
	display: block;
}

.course-map-box-header a {
	pointer-events: auto;
}

@media (max-width: 575px) {
	.course-map-box-header {
		padding: 15px 20px;
	}
}

.course-map-course-boxes ul {
	padding: 0;
	margin: 0;
}

.course-map-course-boxes h3 {
	text-align: left;
}

.course-map-course-boxes li {
	list-style-type: none;
	line-height: 1.5;
	font-size: 12px;
	padding: 0;
	margin: 0;
}

.course-map-line-container {
	width: 971px;
	margin: auto;
	overflow: hidden;
	position: relative;
}

.course-map-animated-line,
[id^="lottie-animation-"] {
	width: 971px;
	height: 350px;
	display: block;
	margin: 0 auto;
	pointer-events: none;
	z-index: 1;
}

#lottie-animation {
	pointer-events: none;
	z-index: 1;
}

.course-map-course-boxes a {
	z-index: 3;
	position: relative;
}

.course-map-year-circle {
	position: absolute;
	text-align: center;
	box-sizing: border-box;
}

.course-map-semester-title {
	font-size: 20px;
	margin-bottom: 2px;
}

.course-map-semester-title:not(:first-child) {
	margin-top: 4px;
}

.course-map-course-boxes.five-boxes .course-map-semester-title:first-child {
	margin-top: -4px;
}

.course-map-course-boxes.five-boxes .course-map-semester-title {
	margin-top: 0;
}

.course-map-course-list {
	padding-left: 0px;
	text-align: left;
}

.year-number {
	font-size: 2.5rem;
	font-weight: 400;
	line-height: 1;
	display: block;
}

.year-title {
	font-size: 1.2rem;
	text-transform: uppercase;
	display: block;
}

/* ==========================
   SEMESTERS / COURSES
   ========================== */
.semesters-stack {
	display: block;
}

.semester h3 {
	margin: 0 0 0.5rem;
	font-size: 1.3rem;
}

.semester-courses.three-columns {
	display: flex;
	gap: 1rem;
}

.semester-courses.three-columns .column {
	list-style: none;
	margin: 0;
	padding: 0;
	flex: 1;
}

.semester-courses.three-columns .column li {
	margin-bottom: 0.1rem;
}

.semester-courses.two-columns {
	display: flex;
	gap: 1rem;
}

.semester-courses.two-columns .column {
	list-style: none;
	margin: 0;
	padding: 0;
	flex: 1;
}

.semester-courses.two-columns .column li {
	margin-bottom: 0.1rem;
}

@media (max-width: 575px) {
	.semester-courses.three-columns {
		flex-direction: column;
	}
	.semester-courses.two-columns {
		flex-direction: column;
	}
}

/* Component wrapper */
.program-overview-wrapper {
	width: 100%;
}

.program-overview-wrapper .mse-new-white-section {
	margin-top: 0 !important;
	padding-top: 0 !important;
}
