/* ==========================================================================
   GEI Academics 2.0 — front end
   Scoped to .gei-acad so Avada is untouched.
   ========================================================================== */

.gei-acad {
	--gei-ink: #0d2b4e;
	--gei-accent: #12a19a;
	--gei-btn: var(--gei-accent);
	--gei-btn-text: #fff;
	--gei-btn-size: 16px;
	--gei-banner-fit: cover;
	--gei-banner-pos: 50% 50%;
	--gei-banner-h: 380px;
	--gei-deep: #08203c;
	--gei-body: #37485f;
	--gei-soft: #f3f7fa;
	--gei-line: #dde6ee;

	--gei-display: "Fraunces", "Iowan Old Style", Georgia, serif;
	--gei-sans: "Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;

	--gei-wide: 1180px;
	--gei-read: 760px;

	font-family: var(--gei-sans);
	color: var(--gei-body);
	font-size: 17px;
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
	/* Never wider than the screen, even when the theme's container is fixed at a
	   desktop width. max-width:100% would resolve against that wide parent, so
	   the viewport is used as a second ceiling. */
	max-width: min(100%, 100vw);
	overflow-wrap: break-word;
}

/* Nothing inside the plugin may exceed the screen width. */
.gei-acad img,
.gei-acad table { max-width: 100%; }
.gei-acad img { height: auto; }

.gei-acad *, .gei-acad *::before, .gei-acad *::after { box-sizing: border-box; }

/* Avada styles headings and text with selectors stronger than one class, so the
   plugin's fonts are forced here. Scoped to .gei-acad — the theme is untouched
   everywhere else, and only font-family is overridden. */
.gei-acad,
.gei-acad p,
.gei-acad li,
.gei-acad a,
.gei-acad span,
.gei-acad div,
.gei-acad button,
.gei-acad dt,
.gei-acad dd { font-family: var(--gei-sans) !important; }

.gei-acad h1,
.gei-acad h2,
.gei-acad h3,
.gei-acad h4,
.gei-acad .gei-banner__title,
.gei-acad .gei-listing__title,
.gei-acad .gei-hero__title,
.gei-acad .gei-card__title,
.gei-acad .gei-sec__title { font-family: var(--gei-display) !important; }

.gei-acad :where(h1, h2, h3) {
	font-family: var(--gei-display);
	color: var(--gei-ink);
	font-weight: 500;
	letter-spacing: -0.015em;
	margin: 0;
	text-transform: none;
	line-height: 1.15;
}

.gei-acad :where(p) { margin: 0 0 1.15em; }
.gei-acad :where(p):last-child { margin-bottom: 0; }
.gei-acad :where(a) { text-decoration: none; }
.gei-acad :focus-visible { outline: 2px solid var(--gei-accent); outline-offset: 3px; }

.gei-ico { width: 1.5rem; height: 1.5rem; display: block; }

.gei-acad .gei-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.95rem 1.9rem;
	background: var(--gei-btn);
	color: var(--gei-btn-text);
	border: 0;
	border-radius: 100px;
	font-family: var(--gei-sans);
	font-size: var(--gei-btn-size);
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
	transition: background-color .2s ease, transform .2s ease;
}

.gei-acad .gei-btn:hover { background: var(--gei-ink); color: #fff; transform: translateY(-2px); }
.gei-acad .gei-btn--solid { background: var(--gei-btn); color: var(--gei-btn-text); }

/* ==========================================================================
   Listing
   ========================================================================== */

.gei-listing {
	max-width: var(--gei-wide);
	margin: 0 auto;
	padding: clamp(2.5rem, 6vw, 5rem) 1.25rem;
}

.gei-listing__head {
	text-align: center;
	max-width: 40rem;
	margin: 0 auto clamp(2.25rem, 5vw, 3.5rem);
}

.gei-listing__title {
	font-size: clamp(2.1rem, 5vw, 3.4rem);
	margin: 0 0 1rem;
}

.gei-listing__title::after {
	content: "";
	display: block;
	width: 62px;
	height: 3px;
	border-radius: 3px;
	background: var(--gei-accent);
	margin: 1.25rem auto 0;
}

.gei-listing__intro { font-size: 1.09rem; margin: 0; }

.gei-filter {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: .5rem;
	margin: 0 0 2.5rem;
}

.gei-acad .gei-filter__btn {
	appearance: none;
	background: #fff;
	border: 1px solid var(--gei-line);
	border-radius: 100px;
	padding: .55rem 1.35rem;
	font-family: var(--gei-sans);
	font-size: .93rem;
	font-weight: 500;
	color: var(--gei-body);
	cursor: pointer;
	transition: all .18s ease;
}

.gei-acad .gei-filter__btn:hover { border-color: var(--gei-accent); color: var(--gei-ink); }
.gei-acad .gei-filter__btn.is-active { background: var(--gei-ink); border-color: var(--gei-ink); color: #fff; }

/* --- Full-bleed banner --- */

.gei-banner {
	position: relative;
	display: flex;
	align-items: center;
	/* Break out of the theme's content column so the strip meets both edges.
	   100vw counts the vertical scrollbar, so its width is subtracted. */
	width: calc(100vw - var(--gei-sbw, 0px));
	max-width: calc(100vw - var(--gei-sbw, 0px));
	margin-left: calc(50% - 50vw + (var(--gei-sbw, 0px) / 2));
	margin-right: calc(50% - 50vw + (var(--gei-sbw, 0px) / 2));
	margin-top: calc(-1 * clamp(2.5rem, 6vw, 5rem));
	margin-bottom: clamp(2.25rem, 5vw, 3.5rem);
	overflow: hidden;
	background: var(--gei-ink);
}

.gei-banner--short { min-height: clamp(180px, 22vw, 260px); }
.gei-banner--medium { min-height: clamp(260px, 32vw, 400px); }
.gei-banner--tall { min-height: clamp(340px, 44vw, 540px); }

.gei-acad .gei-banner__img {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	/* Both set from Settings: cover crops, contain shows the whole picture. */
	object-fit: var(--gei-banner-fit);
	object-position: var(--gei-banner-pos);
	display: block;
}

.gei-banner--custom { min-height: var(--gei-banner-h); }

/* With the whole image showing there is nothing to darken behind the text, so
   the veil is confined to a band behind the words. */
.gei-banner--fit-contain .gei-banner__veil {
	background: linear-gradient(to bottom, rgba(8,32,60,.35) 0%, rgba(8,32,60,.72) 100%);
}

.gei-banner__veil {
	position: absolute; inset: 0;
	background: linear-gradient(to right, rgba(8,32,60,.88) 0%, rgba(8,32,60,.66) 55%, rgba(8,32,60,.4) 100%);
}

.gei-banner__inner {
	position: relative;
	width: 100%;
	max-width: var(--gei-wide);
	margin: 0 auto;
	padding: clamp(2rem, 5vw, 3.5rem) 1.25rem;
	text-align: center;
}

.gei-acad .gei-banner__title {
	color: #fff;
	font-size: clamp(2rem, 4.6vw, 3.4rem);
	margin: 0;
}

.gei-banner__intro {
	color: rgba(255,255,255,.88);
	font-size: clamp(1rem, 1.5vw, 1.15rem);
	max-width: 60ch;
	margin: 1rem auto 0;
}

.gei-banner .gei-btn { margin-top: 1.75rem; }

.gei-acad .gei-btn--light { background: #fff; color: var(--gei-ink); }
.gei-acad .gei-btn--light:hover { background: var(--gei-btn); color: var(--gei-btn-text); }

.gei-listing__cta { margin-top: 1.75rem; }

/* --- Cards --- */

.gei-cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
	gap: clamp(1.5rem, 3vw, 2.25rem);
}

.gei-cards[data-cols="2"] { grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); }
.gei-cards[data-cols="4"] { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }

.gei-card { opacity: 0; transform: translateY(16px); transition: opacity .55s ease, transform .55s ease; }
.gei-card.is-in { opacity: 1; transform: none; }
.gei-card[hidden] { display: none; }

.gei-acad .gei-card__link {
	display: flex;
	flex-direction: column;
	height: 100%;
	background: #fff;
	border-radius: 16px;
	overflow: hidden;
	color: inherit;
	box-shadow: 0 2px 4px rgba(13,43,78,.05), 0 12px 28px -18px rgba(13,43,78,.35);
	transition: box-shadow .3s ease, transform .3s ease;
}

.gei-acad .gei-card__link:hover {
	box-shadow: 0 4px 8px rgba(13,43,78,.07), 0 26px 50px -22px rgba(13,43,78,.45);
	transform: translateY(-5px);
}

.gei-card__media { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: var(--gei-soft); }

.gei-acad .gei-card__img {
	width: 100%; height: 100%; object-fit: cover; display: block;
	transition: transform .7s cubic-bezier(.2,.7,.3,1);
}

.gei-acad .gei-card__link:hover .gei-card__img { transform: scale(1.05); }

.gei-card__img--empty {
	display: grid;
	place-items: center;
	background: linear-gradient(150deg, var(--gei-ink), var(--gei-accent));
}

.gei-card__ghost { width: 34%; height: auto; color: rgba(255,255,255,.42); }

.gei-card__scrim {
	position: absolute; inset: 0;
	background: linear-gradient(to top, rgba(8,32,60,.55) 0%, rgba(8,32,60,.08) 45%, transparent 70%);
}

.gei-card__type {
	position: absolute; left: 1rem; bottom: 1rem;
	background: rgba(255,255,255,.94);
	color: var(--gei-ink);
	font-size: .74rem;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
	padding: .38rem .8rem;
	border-radius: 100px;
}

.gei-card__badge {
	position: absolute; right: 1rem; top: 1rem;
	width: 2.75rem; height: 2.75rem;
	display: grid; place-items: center;
	background: rgba(255,255,255,.92);
	color: var(--gei-ink);
	border-radius: 50%;
}

.gei-card__badge .gei-ico { width: 1.35rem; height: 1.35rem; }

.gei-card__body { padding: 1.6rem 1.6rem 1.5rem; display: flex; flex-direction: column; flex: 1; }

.gei-card__title { font-size: 1.42rem; line-height: 1.2; margin: 0 0 .7rem; }

.gei-card__text { font-size: .97rem; margin: 0 0 1.15rem; line-height: 1.6; }

.gei-card__meta {
	display: flex; flex-wrap: wrap; gap: .5rem;
	margin: auto 0 1.15rem;
	padding-top: .25rem;
}

.gei-card__meta span {
	background: var(--gei-soft);
	color: var(--gei-ink);
	font-size: .82rem;
	font-weight: 500;
	padding: .34rem .8rem;
	border-radius: 100px;
}

.gei-card__cta {
	display: inline-flex; align-items: center; gap: .45rem;
	color: var(--gei-accent);
	font-weight: 600;
	font-size: .96rem;
}

.gei-card__cta i { font-style: normal; transition: transform .25s ease; }
.gei-acad .gei-card__link:hover .gei-card__cta i { transform: translateX(5px); }

.gei-empty, .gei-cards__none { text-align: center; padding: 3rem 0; color: var(--gei-body); }

/* ==========================================================================
   Course page
   ========================================================================== */

.gei-hero {
	position: relative;
	min-height: clamp(340px, 46vw, 520px);
	display: flex;
	align-items: flex-end;
	background: var(--gei-ink);
	overflow: hidden;
}

.gei-acad .gei-hero__img {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	object-fit: cover;
	display: block;
}

.gei-hero__veil {
	position: absolute; inset: 0;
	background: linear-gradient(to top, rgba(8,32,60,.94) 8%, rgba(8,32,60,.72) 48%, rgba(8,32,60,.42) 100%);
}

.gei-hero:not(.has-image) .gei-hero__veil {
	background: linear-gradient(140deg, var(--gei-ink) 20%, var(--gei-accent) 190%);
}

.gei-hero__inner {
	position: relative;
	width: 100%;
	max-width: var(--gei-wide);
	margin: 0 auto;
	padding: clamp(2.5rem, 6vw, 4.5rem) 1.25rem clamp(2.25rem, 5vw, 3.5rem);
}

.gei-crumbs {
	display: flex; flex-wrap: wrap; gap: .5rem;
	font-size: .88rem;
	color: rgba(255,255,255,.62);
	margin-bottom: clamp(1.5rem, 4vw, 2.75rem);
}

.gei-acad .gei-crumbs a { color: rgba(255,255,255,.78); }
.gei-acad .gei-crumbs a:hover { color: #fff; }

.gei-hero__type {
	display: inline-block;
	background: var(--gei-accent);
	color: #fff;
	font-size: .76rem;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	padding: .4rem .95rem;
	border-radius: 100px;
	margin: 0 0 1.1rem;
}

.gei-acad .gei-hero__title {
	color: #fff;
	font-size: clamp(2.1rem, 5.4vw, 4rem);
	max-width: 20ch;
	margin: 0;
}

.gei-hero__summary {
	color: rgba(255,255,255,.86);
	font-size: clamp(1.03rem, 1.6vw, 1.22rem);
	max-width: 54ch;
	margin: 1.15rem 0 0;
}

/* --- Fact bar --- */

.gei-facts { background: var(--gei-ink); }

.gei-facts__inner {
	max-width: var(--gei-wide);
	margin: 0 auto;
	padding: 0 1.25rem;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.gei-fact {
	padding: 1.5rem 1.5rem 1.6rem 0;
	border-right: 1px solid rgba(255,255,255,.14);
}

.gei-fact:last-child { border-right: 0; }
.gei-facts__inner > .gei-fact + .gei-fact { padding-left: 1.5rem; }

.gei-fact__label {
	display: block;
	font-size: .76rem;
	font-weight: 600;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: rgba(255,255,255,.55);
	margin-bottom: .35rem;
}

.gei-fact__value { display: block; color: #fff; font-size: 1.06rem; font-weight: 500; line-height: 1.35; }

/* --- Sections --- */

.gei-sec { padding: clamp(2.5rem, 5vw, 4rem) 1.25rem; }
.gei-sec--tint { background: var(--gei-soft); }

.gei-sec__inner { max-width: var(--gei-read); margin: 0 auto; }

.gei-sec__title {
	font-size: clamp(1.6rem, 3vw, 2.1rem);
	margin: 0 0 1.2rem;
	position: relative;
	padding-top: 1.15rem;
}

.gei-sec__title::before {
	content: "";
	position: absolute; top: 0; left: 0;
	width: 44px; height: 3px;
	border-radius: 3px;
	background: var(--gei-accent);
}

.gei-acad .gei-list {
	list-style: none;
	margin: 1.25rem 0;
	padding: 0;
	display: grid;
	gap: .1rem;
}

.gei-acad .gei-list li {
	position: relative;
	margin: 0;
	padding: .55rem 0 .55rem 1.9rem;
	list-style: none;
	line-height: 1.6;
}

.gei-acad .gei-list li::before {
	content: "";
	position: absolute;
	left: .1rem; top: 1.14rem;
	width: .55rem; height: .55rem;
	border-radius: 50%;
	background: var(--gei-accent);
	opacity: .85;
}

/* --- Sub-headings, numbered lists, tables --- */

.gei-acad .gei-sub {
	font-family: var(--gei-sans) !important;
	font-size: 1.16rem;
	font-weight: 600;
	color: var(--gei-ink);
	letter-spacing: 0;
	margin: 2rem 0 .6rem;
	padding-left: .85rem;
	border-left: 3px solid var(--gei-accent);
	line-height: 1.35;
}

.gei-sec__inner > .gei-sub:first-child { margin-top: 0; }
.gei-acad .gei-sub + .gei-list,
.gei-acad .gei-sub + .gei-olist { margin-top: .35rem; }

.gei-acad .gei-olist {
	list-style: none;
	margin: 1.25rem 0;
	padding: 0;
}

.gei-acad .gei-olist > li {
	position: relative;
	margin: 0 0 .35rem;
	padding: .55rem 0 .55rem 2.5rem;
	list-style: none;
	line-height: 1.6;
	font-weight: 500;
	color: var(--gei-ink);
}

/* counter(list-item) follows each item's own value, so the number the author
   typed is the number shown, even when bullets interrupt the list. */
.gei-acad .gei-olist > li::before {
	content: counter(list-item);
	position: absolute;
	left: 0;
	top: .5rem;
	width: 1.7rem;
	height: 1.7rem;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: var(--gei-accent);
	color: #fff;
	font-size: .82rem;
	font-weight: 600;
	line-height: 1;
}

.gei-tablewrap {
	margin: 1.5rem 0;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.gei-acad .gei-table {
	width: 100%;
	border-collapse: collapse;
	background: #fff;
	font-size: .96rem;
	border: 1px solid var(--gei-line);
	border-radius: 10px;
	overflow: hidden;
}

.gei-acad .gei-table th {
	background: var(--gei-ink);
	color: #fff;
	font-weight: 600;
	text-align: left;
	padding: .85rem 1.1rem;
	font-size: .88rem;
	letter-spacing: .02em;
	border: 0;
}

.gei-acad .gei-table td {
	padding: .8rem 1.1rem;
	border-top: 1px solid var(--gei-line);
	vertical-align: top;
	color: var(--gei-body);
}

.gei-acad .gei-table tbody tr:nth-child(even) td { background: var(--gei-soft); }
.gei-sec--tint .gei-acad .gei-table td,
.gei-sec--tint .gei-table tbody tr:nth-child(even) td { background: #fff; }

/* Sub-points beneath a numbered item. */
.gei-acad .gei-sublist {
	list-style: none;
	margin: .5rem 0 .9rem;
	padding: 0;
	font-weight: 400;
	color: var(--gei-body);
}

.gei-acad .gei-sublist li {
	position: relative;
	margin: 0;
	padding: .3rem 0 .3rem 1.15rem;
	list-style: none;
	line-height: 1.6;
	font-size: .96rem;
}

.gei-acad .gei-sublist li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .95rem;
	width: .4rem;
	height: 1px;
	background: var(--gei-accent);
	opacity: .9;
}

/* --- Apply --- */

.gei-apply { padding: 0 1.25rem clamp(3rem, 6vw, 5rem); }

.gei-apply__inner {
	max-width: var(--gei-read);
	margin: 0 auto;
	background: var(--gei-ink);
	color: #fff;
	border-radius: 20px;
	padding: clamp(2rem, 4vw, 3rem);
	text-align: center;
}

.gei-acad .gei-apply h2 { color: #fff; font-size: clamp(1.6rem, 3vw, 2.1rem); margin: 0 0 .75rem; }
.gei-apply p { color: rgba(255,255,255,.8); max-width: 46ch; margin: 0 auto 1.75rem; }

/* --- Related --- */

.gei-related {
	background: var(--gei-soft);
	padding: clamp(2.5rem, 5vw, 4.5rem) 1.25rem;
}

.gei-related__head {
	max-width: var(--gei-wide);
	margin: 0 auto 2rem;
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1.5rem;
	flex-wrap: wrap;
}

.gei-related__head h2 { font-size: clamp(1.6rem, 3vw, 2.1rem); }
.gei-acad .gei-related__head a { color: var(--gei-accent); font-weight: 600; white-space: nowrap; }
.gei-related .gei-cards { max-width: var(--gei-wide); margin: 0 auto; }

.gei-related .gei-card__link { box-shadow: 0 2px 4px rgba(13,43,78,.04), 0 12px 26px -20px rgba(13,43,78,.4); }

.gei-pager { margin-top: 2.5rem; text-align: center; }

/* ==========================================================================
   Floating tab
   ========================================================================== */

.gei-tab {
	position: fixed;
	z-index: 9998;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: .6rem;
	padding: 1rem .75rem;
	background: var(--gei-tab-bg, var(--gei-ink, #0d2b4e));
	color: var(--gei-tab-text, #fff) !important;
	text-decoration: none !important;
	box-shadow: 0 10px 30px -14px rgba(8,32,60,.65);
	transition: background-color .25s ease, padding .25s ease;
}

.gei-tab--right { right: 0; border-radius: 8px 0 0 8px; }
.gei-tab--left { left: 0; border-radius: 0 8px 8px 0; }
.gei-tab:hover {
	background: var(--gei-tab-hover, var(--gei-accent, #12a19a));
	/* Hover has its own contrast colour, so a pale hover keeps dark text. */
	color: var(--gei-tab-text-hover, #fff) !important;
}
.gei-tab--right:hover { padding-right: 1.2rem; }
.gei-tab--left:hover { padding-left: 1.2rem; }

.gei-tab__label {
	writing-mode: vertical-rl;
	font-family: "Hanken Grotesk", system-ui, sans-serif;
	font-size: .8rem;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.gei-tab--left .gei-tab__label { writing-mode: vertical-lr; }
.gei-tab__icon { display: grid; place-items: center; }
.gei-tab__icon .gei-ico { width: 1.2rem; height: 1.2rem; }

.gei-inline-link { display: inline-flex; align-items: center; gap: .45rem; font-size: .95rem; }
.gei-inline-link .gei-ico { width: 1.1rem; height: 1.1rem; }

/* ==========================================================================
   Responsive and print
   ========================================================================== */

/* ==========================================================================
   Tablet
   ========================================================================== */

@media (max-width: 900px) {
	.gei-listing { padding-left: 1rem; padding-right: 1rem; }
	.gei-sec { padding-left: 1rem; padding-right: 1rem; }
	.gei-apply { padding-left: 1rem; padding-right: 1rem; }
	.gei-related { padding-left: 1rem; padding-right: 1rem; }
	.gei-hero__inner { padding-left: 1rem; padding-right: 1rem; }
	.gei-banner__inner { padding-left: 1rem; padding-right: 1rem; }
	.gei-facts__inner { padding-left: 1rem; padding-right: 1rem; }

	/* The fixed tab overlaps content at this width too. */
	.gei-hero__inner,
	.gei-banner__inner { padding-right: 3.5rem; }

	.gei-fact__label { font-size: .8125rem; }
	.gei-facts__inner { grid-template-columns: repeat(2, 1fr); }
}

/* ==========================================================================
   Phone
   ========================================================================== */

@media (max-width: 700px) {
	.gei-acad { font-size: 16px; line-height: 1.65; }

	/* The tab is fixed over the page, so text needs room to clear it. */
	.gei-hero__inner,
	.gei-banner__inner { padding-right: 3.25rem; }
	.gei-tab--left ~ * .gei-hero__inner,
	.gei-tab--left ~ * .gei-banner__inner { padding-right: 1rem; padding-left: 3.25rem; }

	.gei-hero { min-height: 0; }
	.gei-hero__inner { padding-top: 1.75rem; padding-bottom: 2rem; }
	.gei-hero__title { font-size: 1.85rem; max-width: none; }
	.gei-hero__summary { font-size: 1rem; margin-top: .875rem; }

	.gei-banner--short,
	.gei-banner--medium,
	.gei-banner--tall,
	.gei-banner--custom { min-height: 0; }

	.gei-banner__inner { padding-top: 2.25rem; padding-bottom: 2.25rem; }
	.gei-acad .gei-banner__title { font-size: 1.85rem; }
	.gei-banner__intro { font-size: 1rem; }

	.gei-crumbs { margin-bottom: 1.25rem; font-size: .85rem; }
	.gei-acad .gei-crumbs a { padding: .35rem 0; }  /* easier to tap */

	.gei-listing__title { font-size: 1.9rem; }
	.gei-listing__intro { font-size: 1rem; }

	.gei-cards { grid-template-columns: 1fr; gap: 1.25rem; }
	.gei-card__body { padding: 1.25rem 1.25rem 1.375rem; }
	.gei-card__title { font-size: 1.25rem; }
	.gei-card__media { aspect-ratio: 16 / 10; }

	.gei-filter { gap: .4rem; margin-bottom: 1.75rem; }
	.gei-acad .gei-filter__btn { padding: .5rem 1rem; font-size: .875rem; }

	/* Facts stack. auto-fit alone still produced two cramped columns
	   between roughly 414 and 700 pixels, so the count is set explicitly. */
	.gei-facts__inner { grid-template-columns: 1fr; }

	.gei-fact {
		border-right: 0;
		border-bottom: 1px solid rgba(255,255,255,.14);
		padding: .95rem 0;
	}

	.gei-facts__inner > .gei-fact + .gei-fact { padding-left: 0; }
	.gei-fact:last-child { border-bottom: 0; }
	.gei-fact__label { font-size: .8125rem; letter-spacing: .07em; }
	.gei-fact__value { font-size: 1rem; }

	.gei-sec { padding-top: 2rem; padding-bottom: 2rem; }
	.gei-sec__title { font-size: 1.45rem; }
	.gei-acad .gei-sub { font-size: 1.08rem; margin-top: 1.5rem; }
	.gei-acad .gei-olist > li { padding-left: 2.25rem; }
	.gei-acad .gei-sublist li { font-size: .94rem; }

	.gei-apply__inner { padding: 1.75rem 1.25rem; border-radius: 14px; }
	.gei-acad .gei-btn { padding: .875rem 1.5rem; width: 100%; max-width: 22rem; }

	.gei-related__head { margin-bottom: 1.5rem; }

	/* Tables stack into labelled rows rather than scrolling sideways. */
	.gei-acad .gei-table,
	.gei-acad .gei-table tbody,
	.gei-acad .gei-table tr,
	.gei-acad .gei-table td { display: block; width: 100%; }

	.gei-acad .gei-table thead { display: none; }

	.gei-acad .gei-table tr {
		border-top: 1px solid var(--gei-line);
		padding: .35rem 0;
	}

	.gei-acad .gei-table tr:first-child { border-top: 0; }
	.gei-acad .gei-table td { border: 0; padding: .45rem 1rem; }

	.gei-acad .gei-table td::before {
		content: attr(data-label);
		display: block;
		font-size: .78rem;
		font-weight: 600;
		letter-spacing: .05em;
		text-transform: uppercase;
		color: var(--gei-ink);
		opacity: .7;
		margin-bottom: .1rem;
	}

	.gei-acad .gei-table td[data-label=""]::before { display: none; }

	/* Compact tab: icon only, and small enough to sit beside other buttons. */
	.gei-tab { padding: .7rem .55rem; }
	.gei-tab__label { display: none; }
	.gei-tab__icon .gei-ico { width: 1.15rem; height: 1.15rem; }
}

/* Very small phones. */
@media (max-width: 380px) {
	.gei-hero__title, .gei-acad .gei-banner__title { font-size: 1.65rem; }
	.gei-card__title { font-size: 1.18rem; }
	.gei-acad .gei-filter__btn { font-size: .82rem; padding: .45rem .85rem; }
}

/* The tab can be turned off on phones from Settings. */
@media (max-width: 700px) {
	.gei-tab--hide-mobile { display: none !important; }
}

@media (prefers-reduced-motion: reduce) {
	.gei-acad *, .gei-tab { transition: none !important; animation: none !important; }
	.gei-card { opacity: 1; transform: none; }
}

@media print {
	.gei-tab, .gei-related, .gei-filter, .gei-apply { display: none !important; }
	.gei-banner__img, .gei-banner__veil { display: none !important; }
	.gei-banner { background: #fff !important; min-height: 0; }
	.gei-acad .gei-banner__title, .gei-banner__intro { color: #000 !important; }
	.gei-acad { color: #000; font-size: 11pt; }
	.gei-hero { min-height: 0; }
	.gei-hero__veil, .gei-hero__img { display: none !important; }
	.gei-hero, .gei-facts { background: #fff !important; }
	.gei-hero__title, .gei-hero__summary, .gei-fact__value { color: #000 !important; }
	.gei-fact__label { color: #444 !important; }
	.gei-sec--tint { background: #fff; }
	.gei-acad .gei-table th { background: #fff !important; color: #000 !important; border-bottom: 2px solid #000; }
	.gei-acad .gei-table, .gei-acad .gei-table td { border-color: #999; }
	.gei-tablewrap { overflow: visible; }
	.gei-sec { page-break-inside: avoid; }
	.gei-card { opacity: 1; transform: none; }
}
