/** Teaching hero: native scrolling first, lightweight progressive carousel. */
.shhm-program-hero {
	--shhm-hero-width: min(70vw, 1200px);
	--shhm-hero-gap: 8px;
	--shhm-hero-ink: var(--awb-color8, #002f47);
	display: grid;
	grid-template-columns: 4rem minmax(0, 1fr) 4rem;
	grid-template-rows: auto auto;
	position: relative;
	width: 100%;
	max-width: 100%;
	color: var(--shhm-hero-ink);
	background: var(--awb-color2, #ffffff);
	container-type: inline-size;
}
.shhm-program-hero *,
.shhm-program-hero *::before,
.shhm-program-hero *::after { box-sizing: border-box; }
.shhm-program-hero[hidden],
.shhm-program-hero [data-shhm-hero-slide][hidden],
.shhm-program-hero [data-shhm-hero-viewport][hidden],
.shhm-program-hero [data-shhm-hero-dot][hidden] { display: none; }
.shhm-program-hero__viewport {
	grid-column: 1 / -1;
	grid-row: 1;
	min-width: 0;
	overflow-x: auto;
	overflow-y: hidden;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}
.shhm-program-hero__viewport::-webkit-scrollbar { display: none; }
.shhm-program-hero__track {
	display: flex;
	gap: var(--shhm-hero-gap);
	padding-inline: max(0px, calc((100% - var(--shhm-hero-width)) / 2));
}
.shhm-program-hero__slide {
	flex: 0 0 var(--shhm-hero-width);
	min-width: 0;
	position: relative;
	scroll-snap-align: center;
	scroll-snap-stop: always;
	border-radius: 5px;
	overflow: hidden;
	background: var(--shhm-calendar-event-accent, #145f8b);
}
.shhm-program-hero__link {
	display: block;
	position: relative;
	min-height: min(clamp(26rem, 40vw, 37.5rem), var(--shhm-hero-fit-height, 37.5rem));
	color: var(--shhm-hero-ink);
	text-decoration: none;
}
.shhm-program-hero a.shhm-program-hero__link:hover,
.shhm-program-hero a.shhm-program-hero__link:focus {
	color: var(--shhm-hero-ink);
	text-decoration: none;
}
.shhm-program-hero__media {
	position: absolute;
	inset: 0;
}
.shhm-program-hero__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}
.shhm-program-hero__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(0deg, rgb(0 25 45 / 28%), transparent 65%);
	pointer-events: none;
}
.shhm-program-hero__info {
	position: relative;
	width: min(75%, 40rem);
	margin: 0;
	padding: 1.5rem 5.75rem 1.5rem 1.75rem;
	border-inline-start: 5px solid var(--shhm-calendar-event-accent, #145f8b);
	background: var(--awb-color2, #ffffff);
	color: var(--shhm-hero-ink);
	border-radius: 5px;
	box-shadow: 0 4px 24px rgb(0 25 45 / 10%);
}
.shhm-program-hero__link {
	display: flex;
	align-items: flex-end;
	padding: 2rem;
}
.shhm-program-hero__badge {
	position: absolute;
	top: 1.5rem;
	right: 1.25rem;
	width: 3.5rem;
	height: 3.5rem;
	background-color: var(--shhm-calendar-event-accent, #145f8b);
	-webkit-mask: url("../images/shhm-logo-mask.webp") center / contain no-repeat;
	mask: url("../images/shhm-logo-mask.webp") center / contain no-repeat;
}
.shhm-program-hero .shhm-program-hero__eyebrow {
	margin: 0 0 .75rem;
	font-family: var(--awb-custom_typography_14-font-family, inherit);
	font-size: var(--awb-custom_typography_14-font-size, .75rem);
	font-weight: var(--awb-custom_typography_14-font-weight, 700);
	letter-spacing: var(--awb-custom_typography_14-letter-spacing, .1em);
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--awb-color4, #004e6e);
}
.shhm-program-hero .shhm-program-hero__title {
	margin: 0;
	font-family: var(--h2_typography-font-family, inherit);
	font-size: var(--h2_typography-font-size, 2rem);
	font-weight: var(--h2_typography-font-weight, inherit);
	line-height: var(--h2_typography-line-height, 1.2);
	letter-spacing: var(--h2_typography-letter-spacing, normal);
	color: var(--shhm-hero-ink);
	overflow-wrap: anywhere;
}
.shhm-program-hero .shhm-program-hero__subtitle {
	margin: .75rem 0 0;
	font: inherit;
	color: var(--awb-color4, #004e6e);
}
.shhm-program-hero__controls {
	display: contents;
}
.shhm-program-hero__controls[hidden] { display: none; }
.shhm-program-hero__pagination {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0;
	grid-column: 1 / -1;
	grid-row: 2;
	padding: .5rem 1rem;
}
.shhm-program-hero__arrow,
.shhm-program-hero__dot {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	font: inherit;
	color: var(--shhm-hero-ink);
	background: transparent;
	border: 1px solid var(--awb-color3, #dfe1e1);
	border-radius: 50%;
	cursor: pointer;
	flex: 0 0 auto;
}
.shhm-program-hero__arrow:hover { background: var(--awb-color1, #f7f7f7); border-color: currentColor; }
.shhm-program-hero__arrow {
	grid-column: 1 / -1;
	grid-row: 1;
	align-self: center;
	z-index: 2;
	background: rgb(255 255 255 / 94%);
	border-color: rgb(0 47 71 / 25%);
	box-shadow: 0 2px 12px rgb(0 25 45 / 12%);
}
.shhm-program-hero__arrow--previous {
	justify-self: start;
	margin-inline-start: max(8px, calc((100% - var(--shhm-hero-width)) / 2 - 44px - var(--shhm-hero-gap)));
}
.shhm-program-hero__arrow--next {
	justify-self: end;
	margin-inline-end: max(8px, calc((100% - var(--shhm-hero-width)) / 2 - 44px - var(--shhm-hero-gap)));
}
.shhm-program-hero__dot { width: 32px; border: 0; }
.shhm-program-hero__dot span { width: 6px; height: 6px; border-radius: 50%; background: currentColor; font-size: 0; opacity: .35; }
.shhm-program-hero__dot[aria-current="true"] span { width: 22px; border-radius: 4px; opacity: 1; }
.shhm-program-hero a:focus-visible,
.shhm-program-hero button:focus-visible,
.shhm-program-hero__viewport:focus-visible { outline: 3px solid var(--awb-color4, #004e6e); outline-offset: -3px; }
.shhm-program-hero__link:focus-visible .shhm-program-hero__info { outline: 3px solid var(--awb-color4, #004e6e); outline-offset: 3px; }
.shhm-program-hero__status {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}
.shhm-program-hero.is-enhanced .shhm-program-hero__slide.is-current .shhm-program-hero__info { animation: shhm-program-hero-info-arrive 140ms ease-out; }
@keyframes shhm-program-hero-info-arrive {
	from { opacity: .85; }
	to { opacity: 1; }
}
.shhm-program-hero.is-enhanced .shhm-program-hero__slide:not(.is-current)::after {
	content: "";
	position: absolute;
	inset: 0;
	background: rgb(0 25 45 / 46%);
	pointer-events: none;
}
.shhm-program-hero__slide--no-image .shhm-program-hero__media { opacity: .2; }
@supports (width: 1cqw) {
	.shhm-program-hero__viewport,
	.shhm-program-hero__arrow { --shhm-hero-width: min(70cqw, 1200px); }
}
@media (max-width: 1024px) {
	.shhm-program-hero { --shhm-hero-width: 82vw; }
	.shhm-program-hero__viewport,
	.shhm-program-hero__arrow { --shhm-hero-width: 82vw; }
	@supports (width: 1cqw) {
		.shhm-program-hero__viewport,
		.shhm-program-hero__arrow { --shhm-hero-width: 82cqw; }
	}
	.shhm-program-hero__link { min-height: min(30rem, var(--shhm-hero-fit-height, 30rem)); padding: 1.5rem; }
	.shhm-program-hero__info { width: 90%; }
}
@media (max-width: 600px) {
	.shhm-program-hero { --shhm-hero-width: 88vw; --shhm-hero-gap: 8px; grid-template-columns: 3rem minmax(0, 1fr) 3rem; }
	.shhm-program-hero__viewport,
	.shhm-program-hero__arrow { --shhm-hero-width: 88vw; }
	@supports (width: 1cqw) {
		.shhm-program-hero__viewport,
		.shhm-program-hero__arrow { --shhm-hero-width: 88cqw; }
	}
	.shhm-program-hero__link { display: flex; flex-direction: column; align-items: stretch; padding: 0; min-height: 0; height: 100%; }
	.shhm-program-hero__media { position: relative; width: 100%; aspect-ratio: 1.2; }
	.shhm-program-hero__info { flex: 1; width: 100%; padding: 1.25rem 4.75rem 1.5rem 1.25rem; box-shadow: none; border-radius: 0 0 5px 5px; }
	.shhm-program-hero__badge { top: 1.25rem; right: .75rem; width: 3rem; height: 3rem; }
	.shhm-program-hero__arrow { align-self: start; margin-top: max(8px, calc(88vw / 2.4 - 22px)); }
	@supports (width: 1cqw) {
		.shhm-program-hero__arrow { margin-top: max(8px, calc(88cqw / 2.4 - 22px)); }
	}
	.shhm-program-hero__pagination { padding: .5rem; }
	.shhm-program-hero__dot { width: 26px; }
	.shhm-program-hero__image { position: absolute; inset: 0; }
}
@media (prefers-reduced-motion: reduce) {
	.shhm-program-hero__viewport { scroll-behavior: auto; }
	.shhm-program-hero.is-enhanced .shhm-program-hero__slide.is-current .shhm-program-hero__info { animation: none; }
}

.shhm-program-hero__progression {
	grid-column: 1 / -1;
	grid-row: 3;
	position: relative;
	min-width: 0;
	max-width: 100%;
	padding: 0 0 1rem;
	color: var(--shhm-hero-ink);
	background: var(--awb-color2, #ffffff);
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scrollbar-width: none;
}
.shhm-program-hero__progression::before,
.shhm-program-hero__progression-list::before {
	content: "";
	position: absolute;
	top: calc(1.25rem + 19px);
	left: 0;
	right: 0;
	height: 6px;
	border-radius: 3px;
	pointer-events: none;
}
.shhm-program-hero__progression::before {
	background: linear-gradient(90deg, var(--shhm-progression-first, #002f47) 50%, var(--shhm-progression-last, #002f47) 50%);
}
.shhm-program-hero__progression::-webkit-scrollbar { display: none; }
.shhm-program-hero .shhm-program-hero__progression-list {
	display: flex;
	position: relative;
	gap: 0;
	width: 100%;
	min-width: calc(var(--shhm-progression-count, 1) * 9rem);
	margin: 0 auto;
	padding: 0;
	list-style: none;
}
.shhm-program-hero__progression-list::before { background: var(--shhm-progression-band, #002f47); }
.shhm-program-hero__progression-step { display: flex; position: relative; flex: 1 1 0; min-width: 0; }
.shhm-program-hero .shhm-program-hero__progression-label {
	display: flex;
	position: relative;
	flex-direction: column;
	align-items: center;
	justify-content: flex-start;
	flex: 1 1 0;
	min-height: 44px;
	min-width: 0;
	padding: 0 1rem .5rem;
	border: 0;
	border-radius: 0;
	color: var(--shhm-hero-ink);
	background: transparent;
	font: inherit;
	line-height: 1.3;
	text-align: center;
	text-decoration: none;
	overflow-wrap: anywhere;
}
.shhm-program-hero__progression-current { height: 1.25rem; font-size: .875em; line-height: 1.25rem; visibility: hidden; }
.shhm-program-hero__progression-label.is-current .shhm-program-hero__progression-current { visibility: visible; }
.shhm-program-hero__progression-stop {
	display: flex;
	position: relative;
	align-items: center;
	justify-content: center;
	flex: 0 0 44px;
	width: 44px;
	height: 44px;
}
.shhm-program-hero__progression-stop::before {
	content: "";
	width: 20px;
	height: 20px;
	border: 2px solid var(--shhm-progression-stop, #002f47);
	border-radius: 50%;
	background: var(--awb-color2, #ffffff);
	box-shadow: 0 0 0 1px var(--shhm-progression-ink, #002f47);
}
.shhm-program-hero__progression-label.is-current .shhm-program-hero__progression-stop::before { width: 38px; height: 38px; }
.shhm-program-hero__progression-label.is-current .shhm-program-hero__progression-stop::after {
	content: "";
	position: absolute;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--shhm-progression-stop, #002f47);
}
.shhm-program-hero__progression-title { margin-top: .5rem; }
.shhm-program-hero__progression-level { margin-top: .3rem; font-size: .875em; color: var(--awb-color4, #004e6e); }
.shhm-program-hero__progression-arrow {
	position: absolute;
	top: calc(1.25rem + 44px + .5rem);
	inset-inline-end: -.5rem;
	width: 1rem;
	color: var(--awb-color4, #004e6e);
	font: inherit;
	line-height: 1.3;
	text-align: center;
	pointer-events: none;
	user-select: none;
}
.shhm-program-hero a.shhm-program-hero__progression-label:hover,
.shhm-program-hero a.shhm-program-hero__progression-label:focus-visible {
	color: var(--shhm-hero-ink);
	text-decoration: none;
}
.shhm-program-hero a.shhm-program-hero__progression-label:hover .shhm-program-hero__progression-title,
.shhm-program-hero a.shhm-program-hero__progression-label:focus-visible .shhm-program-hero__progression-title {
	text-decoration: underline;
	text-underline-offset: .2em;
}
.shhm-program-hero a.shhm-program-hero__progression-label:focus-visible {
	outline-color: currentColor;
	outline-offset: -3px;
}
.shhm-program-hero[data-shhm-hero-empty="true"] {
	grid-template-rows: auto;
	min-height: 0;
}
.shhm-program-hero[data-shhm-hero-empty="true"] .shhm-program-hero__progression { grid-row: auto; }

/* Compact section-aware rail, outside Avada's hero containment. */
.shhm-program-hero--floating {
	position: fixed;
	inset: var(--shhm-sticky-top, 0px) 0 auto;
	z-index: 9990;
	display: block;
	container-type: normal;
	font-family: var(--body_typography-font-family, inherit);
	font-size: 15px;
	box-shadow: 0 3px 14px rgb(0 35 55 / 10%);
	border-bottom: 1px solid rgb(0 35 55 / 12%);
}
.shhm-program-hero--floating .shhm-program-hero__progression { padding: 8px 12px 7px; }
.shhm-program-hero--floating .shhm-program-hero__progression-list { min-width: 0; max-width: 1180px; }
.shhm-program-hero--floating .shhm-program-hero__progression-current,
.shhm-program-hero--floating .shhm-program-hero__progression-arrow { display: none; }
.shhm-program-hero--floating .shhm-program-hero__progression-label { padding: 0 .4rem .25rem; min-height: 60px; }
.shhm-program-hero--floating .shhm-program-hero__progression-stop { flex-basis: 24px; height: 24px; width: 24px; }
.shhm-program-hero--floating .shhm-program-hero__progression-stop::before { width: 12px; height: 12px; }
.shhm-program-hero--floating .is-current .shhm-program-hero__progression-stop::before { width: 24px; height: 24px; }
.shhm-program-hero--floating .is-current .shhm-program-hero__progression-stop::after { width: 12px; height: 12px; }
.shhm-program-hero--floating .shhm-program-hero__progression-list::before { top: 10px; height: 4px; }
.shhm-program-hero--floating .shhm-program-hero__progression::before { top: 18px; height: 4px; }
.shhm-program-hero--floating .shhm-program-hero__progression-title { margin-top: 4px; }
.shhm-program-hero--floating .shhm-program-hero__progression-level { margin-top: 2px; font-size: 12px; }
.shhm-program-hero--floating .is-current .shhm-program-hero__progression-title { font-weight: 600; }
@media (max-width: 767px) {
	/* Keep the original hero progression; reserve mobile height for content. */
	.shhm-program-hero--floating { display: none; }
}
