/* Master of Science page — builds on the Bachelor of Science stylesheet
   (loaded first as a dependency) and adds only the components this page
   needs. Scoped to the WPBakery row carrying el_class "bsc msc".

   Same layout as the Bachelor page (both sit under the Knowledge of the Land
   curriculum), but its own palette: deeper forest with a warm orange accent
   taken from the page's previous design. The Bachelor rules read colours
   from the --bsc-* tokens, so remapping them here re-themes them. */

.msc {
	--bsc-forest: #14392b;
	--bsc-forest-2: #1d4a39;
	--bsc-teal: #a8520f;   /* accent text (kickers, numbers) */
	--bsc-leaf: #f29a4a;   /* accent fill (buttons, highlights) */
	--bsc-sun: #f4c35a;
	--bsc-cream: #f8f3ea;
	--bsc-paper: #fffcf6;
	--bsc-line: #e6dccb;
	--msc-accent-rgb: 242, 154, 74;
}

/* Hard-coded hover colours in the Bachelor sheet. */
.msc .bsc-btn--primary:hover,
.msc .bsc-subnav__cta:hover { background: #f6b276; color: var(--bsc-forest); }

/* Kickers carry a short accent rule. */
.msc .bsc-kicker { display: flex; align-items: center; gap: 12px; }
.msc .bsc-kicker::before {
	content: "";
	flex: 0 0 28px;
	height: 2px;
	border-radius: 2px;
	background: var(--bsc-leaf);
}

/* ---------- Hero ---------- */

.msc .bsc-hero {
	background:
		radial-gradient(900px 480px at 88% -10%, rgba(var(--msc-accent-rgb), .22), transparent 60%),
		radial-gradient(700px 520px at -10% 110%, rgba(29, 74, 57, .9), transparent 60%),
		var(--bsc-forest);
}
/* Dot grid (a nod to "integrated" science) in place of the Bachelor page's
   contour rings; it drifts by one cell per loop, so the loop is seamless. */
.msc .bsc-hero::before {
	opacity: .22;
	background-image: radial-gradient(circle, rgba(255, 255, 255, .8) 1.2px, transparent 1.8px);
	background-size: 28px 28px;
	mask-image: radial-gradient(70% 90% at 85% 30%, #000 20%, transparent 75%);
	-webkit-mask-image: radial-gradient(70% 90% at 85% 30%, #000 20%, transparent 75%);
	animation: msc-drift 6s linear infinite;
}
@keyframes msc-drift {
	from { background-position: 0 0; }
	to { background-position: 28px 28px; }
}

.msc .msc-hero__kicker { color: var(--bsc-leaf); margin-bottom: 20px; }
.msc .msc-hero__lead {
	max-width: 60ch;
	margin-top: 24px;
	font-size: 18px;
	color: rgba(255, 255, 255, .78);
}
.msc .bsc-fact__value { font-size: 40px; }

/* ---------- Why study with us: four cards in one row ---------- */

#wrapper .msc .msc-cards { grid-template-columns: repeat(4, minmax(0, 1fr)); }
#wrapper .msc .msc-cards .bsc-card,
#wrapper .msc .msc-cards .bsc-card:nth-child(n + 4) { grid-column: span 1; }
/* The theme forces h3 { font-size: 20px; margin-bottom: 10px } with !important. */
.msc .bsc-card__title { font-size: 21px !important; margin-bottom: 0 !important; }
#wrapper .msc .msc-cards .bsc-card p { color: var(--bsc-muted); font-size: 16px; }
#wrapper .msc .bsc-card::before { background: rgba(var(--msc-accent-rgb), .18); }
/* Accent bar along the top edge, grown on hover. */
#wrapper .msc .msc-cards .bsc-card { overflow: hidden; }
#wrapper .msc .msc-cards .bsc-card::after {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 4px;
	background: var(--bsc-leaf);
	transform: scaleX(.18);
	transform-origin: left;
	transition: transform .35s cubic-bezier(.2, .7, .2, 1);
}
#wrapper .msc .msc-cards .bsc-card:hover::after { transform: none; }

/* ---------- Program at a glance ---------- */

.msc-glance {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
}
.msc-glance__card {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: clamp(24px, 3vw, 36px);
	border-radius: var(--bsc-radius);
	background: var(--bsc-white);
	border: 1px solid var(--bsc-line);
}
.msc-glance__card--dark { background: var(--bsc-forest); border-color: var(--bsc-forest); color: var(--bsc-white); }
.msc .msc-glance__tag {
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--bsc-teal);
}
.msc .msc-glance__card--dark .msc-glance__tag { color: var(--bsc-leaf); }
.msc .msc-glance__title {
	font-family: var(--bsc-display);
	font-weight: 700 !important;
	font-size: clamp(20px, 1.9vw, 24px) !important;
	line-height: 1.25 !important;
	margin-bottom: 0 !important;
	color: var(--bsc-forest);
}
.msc .msc-glance__card--dark .msc-glance__title { color: var(--bsc-white); }
.msc .msc-glance__text { font-size: 16px; color: var(--bsc-muted); }
.msc .msc-glance__card--dark .msc-glance__text {
	margin-top: auto;
	padding-top: 20px;
	border-top: 1px solid rgba(255, 255, 255, .16);
	color: rgba(255, 255, 255, .72);
}

.msc-plans { display: grid; gap: 8px; margin-block: 4px !important; }
.msc-plan {
	display: flex;
	flex-direction: column;
	padding: 12px 16px;
	border-radius: 12px;
	background: var(--bsc-cream);
	border-left: 4px solid var(--bsc-leaf);
}
.msc-plan__name { font-family: var(--bsc-display); font-weight: 700; color: var(--bsc-forest); }
.msc-plan__desc { font-size: 15px; color: var(--bsc-muted); }

/* ---------- Admission & careers ---------- */

.msc-panels {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
	align-items: start;
}
.msc-panel {
	padding: clamp(24px, 3vw, 36px);
	border-radius: var(--bsc-radius);
	background: var(--bsc-white);
	border: 1px solid var(--bsc-line);
}
.msc-panel--careers { --msc-tick: #ecdcc2; }
.msc .msc-panel__title {
	font-family: var(--bsc-display);
	font-weight: 700 !important;
	font-size: 22px !important;
	line-height: 1.2 !important;
	margin-bottom: 20px !important;
	color: var(--bsc-forest);
}
.msc-ticks { display: grid; }
.msc-ticks li {
	position: relative;
	padding: 14px 0 14px 40px;
	border-top: 1px solid var(--bsc-line);
	color: var(--bsc-ink);
}
.msc-ticks li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 15px;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--msc-tick, var(--bsc-leaf));
}
/* Check mark drawn inside the dot. */
.msc-ticks li::after {
	content: "";
	position: absolute;
	left: 9px;
	top: 21px;
	width: 7px;
	height: 12px;
	border-right: 2px solid var(--bsc-forest);
	border-bottom: 2px solid var(--bsc-forest);
	transform: rotate(45deg);
}

/* ---------- How to apply ---------- */

.msc-apply {
	position: relative;
	background:
		radial-gradient(800px 420px at 100% 0%, rgba(var(--msc-accent-rgb), .16), transparent 60%),
		var(--bsc-forest);
	color: var(--bsc-white);
}
.msc-apply .bsc-kicker { color: var(--bsc-leaf); }
.msc .msc-apply .bsc-h2 { color: var(--bsc-white); }

/* "#wrapper .msc" beats the theme's "#wrapper ol li:before" counter badge. */
#wrapper .msc .msc-steps {
	counter-reset: msc-step;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 20px;
}
#wrapper .msc .msc-step {
	counter-increment: msc-step;
	position: relative;
	margin: 0;
	padding-top: 72px;
	font-size: 17px;
	color: rgba(255, 255, 255, .8);
}
#wrapper .msc .msc-step::before {
	content: counter(msc-step);
	counter-increment: none;
	position: absolute;
	top: 0;
	left: 0;
	z-index: 1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	margin: 0;
	border: 0;
	border-radius: 50%;
	background: var(--bsc-leaf);
	color: var(--bsc-forest);
	font-family: var(--bsc-display);
	font-weight: 700;
	font-size: 20px;
	line-height: 1;
}
/* Track joining each step to the next. */
#wrapper .msc .msc-step:not(:last-child)::after {
	content: "";
	position: absolute;
	top: 25px;
	left: 64px;
	right: -8px;
	height: 2px;
	background: linear-gradient(to right, rgba(var(--msc-accent-rgb), .7), rgba(255, 255, 255, .12));
	transform-origin: left;
	transition: transform .8s cubic-bezier(.2, .7, .2, 1) .3s;
}
.bsc-js .msc-step:not(.is-in)::after { transform: scaleX(0); }

.msc-apply__cta { margin-top: clamp(40px, 5vw, 64px); }

/* ---------- Responsive ---------- */

@media (max-width: 1024px) {
	#wrapper .msc .msc-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	#wrapper .msc .msc-cards .bsc-card:last-child { grid-column: span 1; }
	.msc-glance { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.msc-glance__card--dark { grid-column: 1 / -1; }
	#wrapper .msc .msc-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 40px; }
	#wrapper .msc .msc-step:nth-child(2n)::after { content: none; }
}

@media (max-width: 720px) {
	#wrapper .msc .msc-cards,
	.msc-glance,
	.msc-panels { grid-template-columns: 1fr; }
	.msc .msc-hero__lead { font-size: 16px; }

	/* Steps become a vertical timeline. */
	#wrapper .msc .msc-steps { grid-template-columns: 1fr; row-gap: 28px; }
	#wrapper .msc .msc-step { padding: 10px 0 0 72px; min-height: 52px; }
	#wrapper .msc .msc-step:nth-child(2n)::after { content: ""; }
	#wrapper .msc .msc-step:not(:last-child)::after {
		top: 60px;
		left: 25px;
		right: auto;
		bottom: -20px;
		width: 2px;
		height: auto;
		background: linear-gradient(to bottom, rgba(var(--msc-accent-rgb), .7), rgba(255, 255, 255, .12));
		transform-origin: top;
	}
	.bsc-js .msc-step:not(.is-in)::after { transform: scaleY(0); }
}
