/*
 * THS design system: component styles that Elementor (free) and Astra cannot set from their own panels.
 * Colours always come from the Astra palette (Customizer > Global > Colors):
 *   0 Forest  1 Moss  2 Ink  3 Body  4 Mist  5 White  6 Fern (alt ground)  7 Gold  8 Night
 * Fonts and sizes come from Astra typography and Elementor Site Settings; this file only adds what those panels lack.
 * Each block names the CSS class an editor adds in Elementor > Advanced > CSS Classes.
 */

:root {
	--ths-line: #d5ddd2;
	--ths-line-dark: rgba(255, 255, 255, 0.16);
	--ths-radius: 4px;
}

/* ---------- Base ---------- */

body {
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, .elementor-heading-title {
	text-wrap: balance;
}

.entry-content p,
.elementor-widget-text-editor p {
	text-wrap: pretty;
}

/* Visible keyboard focus everywhere (WCAG 2.4.7 / 2.4.11). */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
.elementor-button:focus-visible,
[tabindex]:focus-visible {
	outline: 3px solid var(--ast-global-color-7);
	outline-offset: 3px;
	border-radius: 2px;
}

.skip-link.screen-reader-text:focus {
	z-index: 100000;
	background: var(--ast-global-color-8);
	color: #fff;
	padding: 12px 18px;
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---------- Header (Astra Header Builder) ----------
 * Top bar (above row, desktop only): Cambridge registration on the left, email/visit/social on the right.
 * Main bar: white, logo + name, menu, Apply. Sticky; a soft shadow appears once the page scrolls (assets/ths-header.js adds .ths-scrolled to <body>).
 */

/* Sticky without any height change (a height change while scrolling makes the header flicker):
 * on desktop the 40 px top bar simply scrolls away because the header sticks at -40px. */
#masthead {
	position: sticky;
	top: -40px;
	z-index: 999;
	background: #fff;
	transition: box-shadow .25s ease;
}

.admin-bar #masthead { top: -8px; }

@media (max-width: 921px) {
	#masthead { top: 0; }
	.admin-bar #masthead { top: 46px; }
}

@media (max-width: 600px) {
	.admin-bar #masthead { top: 0; }
}

body.ths-scrolled #masthead {
	box-shadow: 0 6px 24px rgba(18, 32, 25, .08);
}

/* top bar */
#masthead .ast-above-header-bar {
	background: var(--ast-global-color-8);
	border-bottom: 0;
	min-height: 40px;
}

#masthead .ast-above-header-bar .ast-builder-grid-row {
	min-height: 40px;
}

#masthead .ths-topbar {
	margin: 0;
	font-size: 13px;
	line-height: 1.3;
	letter-spacing: .02em;
	color: rgba(255, 255, 255, .78);
}

#masthead .ths-topbar strong {
	color: var(--ast-global-color-7);
	font-weight: 600;
}

#masthead .ths-topbar a {
	color: rgba(255, 255, 255, .86);
	text-decoration: none;
	margin-left: 22px;
}

#masthead .ths-topbar a:hover,
#masthead .ths-topbar a:focus-visible {
	color: #fff;
	text-decoration: underline;
	text-decoration-color: var(--ast-global-color-7);
	text-underline-offset: 4px;
}

#masthead .ast-above-header-bar .ast-header-social-1-wrap {
	margin-left: 18px;
}

#masthead .ast-above-header-bar .header-social-item {
	margin: 0 0 0 10px;
}

#masthead .ast-above-header-bar .header-social-item svg {
	width: 15px;
	height: 15px;
	fill: rgba(255, 255, 255, .8);
}

#masthead .ast-above-header-bar .header-social-item:hover svg {
	fill: var(--ast-global-color-7);
}

/* main bar */
#masthead .main-header-bar {
	background: #fff;
	border-bottom: 1px solid var(--ths-line);
}

#masthead .main-header-bar .site-primary-header-wrap,
#masthead .main-header-bar .ast-builder-grid-row {
	min-height: 84px;
}

#masthead .ast-site-identity {
	gap: 14px;
}

#masthead .site-title {
	font-family: 'Newsreader', serif;
	font-size: 23px;
	font-weight: 500;
	line-height: 1.1;
	letter-spacing: -0.01em;
	margin: 0;
}

#masthead .site-title a {
	color: var(--ast-global-color-2);
}

#masthead .site-description {
	margin: 3px 0 0;
	font-size: 11px;
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--ast-global-color-1);
}

#masthead .main-header-menu > .menu-item > .menu-link {
	font-weight: 500;
	font-size: 15.5px;
	color: var(--ast-global-color-2);
	padding-left: 0.8em;
	padding-right: 0.8em;
}

#masthead .main-header-menu > .menu-item:hover > .menu-link,
#masthead .main-header-menu > .menu-item > .menu-link:focus-visible {
	color: var(--ast-global-color-0);
}

#masthead .main-header-menu > .current-menu-item > .menu-link,
#masthead .main-header-menu > .current-menu-ancestor > .menu-link {
	color: var(--ast-global-color-0);
	text-decoration: underline;
	text-decoration-color: var(--ast-global-color-7);
	text-decoration-thickness: 2px;
	text-underline-offset: 8px;
}

#masthead .main-header-menu .sub-menu {
	border-top: 2px solid var(--ast-global-color-7);
	border-radius: 0 0 var(--ths-radius) var(--ths-radius);
	box-shadow: 0 16px 36px rgba(18, 32, 25, 0.10);
	padding: 8px 0;
	min-width: 260px;
}

#masthead .main-header-menu .sub-menu .menu-link {
	font-size: 15px;
	padding: 10px 20px;
	color: var(--ast-global-color-3);
}

#masthead .main-header-menu .sub-menu .menu-link:hover {
	color: var(--ast-global-color-0);
	background: var(--ast-global-color-4);
}

#masthead .ast-header-button-1 .ast-custom-button {
	border-radius: var(--ths-radius);
	font-weight: 600;
	padding: 12px 22px;
	letter-spacing: .02em;
}

#masthead .ast-header-button-1 {
	margin-left: 12px;
}

/* desktop only: larger menu text, always on one line */
@media (min-width: 922px) {
	#masthead .main-header-menu {
		flex-wrap: nowrap;
	}

	#masthead .main-header-menu > .menu-item > .menu-link {
		font-size: 17px;
		white-space: nowrap;
		padding-left: 0.6em;
		padding-right: 0.6em;
	}

	#masthead .ast-header-button-1 .ast-custom-button {
		white-space: nowrap;
	}

	#masthead .main-header-menu .sub-menu .menu-link {
		font-size: 16px;
	}

	#masthead .ast-header-button-1 .ast-custom-button {
		font-size: 16px;
	}
}

@media (min-width: 922px) and (max-width: 1240px) {
	#masthead .main-header-menu > .menu-item > .menu-link {
		font-size: 16px;
		padding-left: 0.45em;
		padding-right: 0.45em;
	}

	#masthead .site-description {
		display: none;
	}
}

/* ---------- Header interactions (desktop) ----------
 * Only colour, opacity and transform change; the header never changes size (that caused flicker before).
 */
@media (min-width: 922px) {
	/* growing gold underline on hover */
	#masthead .main-header-menu > .menu-item > .menu-link {
		position: relative;
	}

	#masthead .main-header-menu > .menu-item > .menu-link::after {
		content: "";
		position: absolute;
		left: 0.6em;
		right: 0.6em;
		bottom: calc(50% - 1.05em);
		height: 2px;
		background: var(--ast-global-color-7);
		transform: scaleX(0);
		transform-origin: left center;
		transition: transform .28s cubic-bezier(.2, .7, .2, 1);
	}

	#masthead .main-header-menu > .menu-item:hover > .menu-link::after,
	#masthead .main-header-menu > .menu-item > .menu-link:focus-visible::after,
	#masthead .main-header-menu > .current-menu-item > .menu-link::after,
	#masthead .main-header-menu > .current-menu-ancestor > .menu-link::after {
		transform: scaleX(1);
	}

	/* the underline replaces the text underline used for the current page */
	#masthead .main-header-menu > .current-menu-item > .menu-link,
	#masthead .main-header-menu > .current-menu-ancestor > .menu-link {
		text-decoration: none;
	}

	/* dropdown arrow turns when its menu opens */
	#masthead .main-header-menu > .menu-item .dropdown-menu-toggle,
	#masthead .main-header-menu > .menu-item .ast-header-navigation-arrow svg {
		transition: transform .25s ease;
	}

	#masthead .main-header-menu > .menu-item:hover .dropdown-menu-toggle,
	#masthead .main-header-menu > .menu-item:hover > .menu-link .ast-header-navigation-arrow svg {
		transform: rotate(180deg);
	}

	/* dropdowns fade and slide into place */
	#masthead .main-header-menu .menu-item-has-children > .sub-menu {
		display: block;
		visibility: hidden;
		opacity: 0;
		transform: translateY(10px);
		transition: opacity .22s ease, transform .22s ease, visibility 0s linear .22s;
		pointer-events: none;
	}

	#masthead .main-header-menu .menu-item-has-children:hover > .sub-menu,
	#masthead .main-header-menu .menu-item-has-children:focus-within > .sub-menu {
		visibility: visible;
		opacity: 1;
		transform: translateY(0);
		transition: opacity .22s ease, transform .22s ease, visibility 0s;
		pointer-events: auto;
	}

	/* dropdown links nudge right with a gold marker */
	#masthead .main-header-menu .sub-menu .menu-link {
		position: relative;
		transition: padding-left .2s ease, color .2s ease, background-color .2s ease;
	}

	#masthead .main-header-menu .sub-menu .menu-link::before {
		content: "";
		position: absolute;
		left: 14px;
		top: 50%;
		width: 0;
		height: 2px;
		background: var(--ast-global-color-7);
		transition: width .2s ease;
	}

	#masthead .main-header-menu .sub-menu .menu-link:hover,
	#masthead .main-header-menu .sub-menu .menu-link:focus-visible {
		padding-left: 34px;
	}

	#masthead .main-header-menu .sub-menu .menu-link:hover::before,
	#masthead .main-header-menu .sub-menu .menu-link:focus-visible::before {
		width: 12px;
	}

	/* Apply: light sweep and sliding arrow */
	#masthead .ast-header-button-1 .ast-custom-button {
		position: relative;
		overflow: hidden;
		isolation: isolate;
		transition: background-color .2s ease, transform .2s ease, padding .25s ease;
	}

	#masthead .ast-header-button-1 .ast-custom-button::before {
		content: "";
		position: absolute;
		top: 0;
		left: -60%;
		width: 45%;
		height: 100%;
		background: linear-gradient(100deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .28) 50%, rgba(255, 255, 255, 0) 100%);
		transform: skewX(-20deg);
		z-index: -1;
		transition: left .6s ease;
	}

	#masthead .ast-header-button-1 .ast-custom-button::after {
		content: "\2192";
		display: inline-block;
		width: 0;
		opacity: 0;
		overflow: hidden;
		vertical-align: bottom;
		transform: translateX(-6px);
		transition: width .25s ease, opacity .25s ease, transform .25s ease, margin .25s ease;
	}

	#masthead .ast-header-button-1 .ast-custom-button:hover::before,
	#masthead .ast-header-button-1 .ast-custom-button:focus-visible::before {
		left: 120%;
	}

	#masthead .ast-header-button-1 .ast-custom-button:hover::after,
	#masthead .ast-header-button-1 .ast-custom-button:focus-visible::after {
		width: 1em;
		opacity: 1;
		margin-left: 6px;
		transform: translateX(0);
	}

	/* logo lift */
	#masthead .site-logo-img img.custom-logo {
		transition: transform .3s cubic-bezier(.2, .7, .2, 1);
	}

	#masthead .site-logo-img a:hover img.custom-logo {
		transform: translateY(-2px) rotate(-4deg) scale(1.04);
	}
}

/* Reading progress line along the bottom of the header (element added by ths-header.js) */
#masthead .ths-progress {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 3px;
	background: var(--ast-global-color-7);
	transform: scaleX(0);
	transform-origin: left center;
	pointer-events: none;
	z-index: 5;
}

@media (prefers-reduced-motion: reduce) {
	#masthead .ths-progress {
		display: none;
	}
}

/* mobile and tablet header */
@media (max-width: 921px) {
	#masthead .ast-mobile-header-wrap .main-header-bar,
	#masthead .ast-mobile-header-wrap .ast-primary-header-bar {
		background: #fff;
		border-bottom: 1px solid var(--ths-line);
	}

	#masthead .ast-mobile-header-wrap .ast-builder-grid-row {
		min-height: 76px;
	}

	#masthead .ast-mobile-header-wrap .ast-site-identity {
		gap: 12px;
	}

	#masthead .ast-mobile-header-wrap .site-title {
		font-size: 19px;
		white-space: nowrap;
	}

	#masthead .ast-mobile-header-wrap .site-logo-img {
		padding-right: 0;
	}

	#masthead .ast-mobile-header-wrap .site-logo-img img.custom-logo {
		max-width: 58px;
		width: 58px;
	}

	#masthead .ast-mobile-header-wrap .site-description {
		font-size: 9.5px;
		letter-spacing: .12em;
		white-space: nowrap;
	}

	#masthead .ast-mobile-header-wrap .ast-header-button-1 {
		margin: 0 4px 0 0;
	}

	#masthead .ast-mobile-header-wrap .ast-header-button-1 .ast-custom-button {
		padding: 9px 14px;
		font-size: 14px;
		white-space: nowrap;
		writing-mode: horizontal-tb;
	}

	#masthead .ast-mobile-header-wrap .site-header-primary-section-right {
		flex-shrink: 0;
		gap: 2px;
	}

	#masthead .ast-mobile-header-wrap .ast-header-button-1 {
		flex-shrink: 0;
	}

	#masthead .ast-mobile-header-wrap .site-header-primary-section-left,
	#masthead .ast-mobile-header-wrap .site-branding,
	#masthead .ast-mobile-header-wrap .ast-site-identity {
		min-width: 0;
		flex-shrink: 1;
	}

	#masthead .ast-mobile-header-wrap .menu-toggle.main-header-menu-toggle {
		background: transparent;
		padding: 8px;
		color: var(--ast-global-color-0);
	}

	#masthead .ast-mobile-header-wrap .menu-toggle .ast-mobile-svg {
		fill: var(--ast-global-color-0);
		width: 24px;
		height: 24px;
	}
}

@media (max-width: 374px) {
	#masthead .ast-mobile-header-wrap .site-logo-img img.custom-logo {
		max-width: 48px;
		width: 48px;
	}

	#masthead .ast-mobile-header-wrap .site-title {
		font-size: 16.5px;
	}

	#masthead .ast-mobile-header-wrap .ast-site-identity {
		gap: 10px;
	}

	#masthead .ast-mobile-header-wrap .site-description {
		display: none;
	}
}

/* mobile off-canvas menu */
#ast-mobile-popup .ast-mobile-popup-inner {
	background: var(--ast-global-color-8) !important;
	max-width: 420px;
}

#ast-mobile-popup .ast-mobile-popup-header {
	padding: 12px 16px;
	border-bottom: 1px solid rgba(255, 255, 255, .1);
}

#ast-mobile-popup .menu-toggle-close {
	background: transparent !important;
	border: 1px solid rgba(255, 255, 255, .25) !important;
	border-radius: var(--ths-radius);
	color: #fff !important;
	padding: 8px;
}

#ast-mobile-popup .menu-toggle-close svg,
#ast-mobile-popup .menu-toggle-close .ast-close-svg {
	fill: #fff !important;
	color: #fff !important;
}

#ast-mobile-popup .ast-mobile-popup-content,
#ast-mobile-popup .menu-item,
#ast-mobile-popup .menu-item > .menu-link,
#ast-mobile-popup .ast-builder-menu-mobile,
#ast-mobile-popup .main-header-menu,
#ast-mobile-popup .main-header-menu .sub-menu,
#ast-mobile-popup .ast-builder-menu-mobile .main-navigation {
	background: transparent !important;
}

#ast-mobile-popup .main-header-menu .menu-item > .menu-link {
	color: #fff !important;
	font-family: 'Newsreader', serif;
	font-size: 23px;
	font-weight: 400;
	line-height: 1.2;
	padding: 16px 24px;
	border-bottom: 1px solid rgba(255, 255, 255, .08) !important;
}

#ast-mobile-popup .main-header-menu .sub-menu .menu-link {
	font-family: 'Hanken Grotesk', sans-serif;
	font-size: 16px;
	color: rgba(255, 255, 255, .78) !important;
	padding: 11px 24px 11px 38px;
}

#ast-mobile-popup .main-header-menu .menu-item > .menu-link:hover,
#ast-mobile-popup .main-header-menu .current-menu-item > .menu-link,
#ast-mobile-popup .main-header-menu .current-menu-ancestor > .menu-link {
	color: var(--ast-global-color-7) !important;
	background: transparent !important;
}

#ast-mobile-popup .ast-menu-toggle {
	background: transparent !important;
	border: 0 !important;
	color: var(--ast-global-color-7) !important;
}

#ast-mobile-popup .ast-menu-toggle svg {
	fill: var(--ast-global-color-7) !important;
}

#ast-mobile-popup .ast-header-button-1 {
	padding: 28px 24px;
	width: 100%;
}

#ast-mobile-popup .ast-header-button-1 .ast-builder-button-wrap,
#ast-mobile-popup .ast-header-button-1 .ast-custom-button-link {
	display: block;
	width: 100%;
}

#ast-mobile-popup .ast-header-button-1 .ast-custom-button {
	background: var(--ast-global-color-7) !important;
	color: var(--ast-global-color-8) !important;
	display: block;
	width: 100%;
	text-align: center;
	padding: 15px 20px;
	border-radius: var(--ths-radius);
	font-weight: 600;
}

/* ---------- Text link (add class "ths-textlink" to a Button widget) ---------- */

.ths-textlink .elementor-button {
	background: transparent !important;
	padding: 0 !important;
	border-radius: 0;
	color: var(--ast-global-color-0);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-color: var(--ast-global-color-7);
	text-decoration-thickness: 2px;
	text-underline-offset: 6px;
}

.ths-textlink .elementor-button:hover {
	color: var(--ast-global-color-2);
	text-decoration-color: currentColor;
}

.ths-on-dark .ths-textlink .elementor-button,
.ths-textlink.ths-light .elementor-button {
	color: #fff;
}

/* ---------- Hero (class "ths-hero" on the hero container): keeps text legible over any part of the photo ---------- */

.ths-hero .elementor-heading-title,
.ths-hero .elementor-widget-text-editor p {
	text-shadow: 0 1px 14px rgba(18, 32, 25, 0.55);
}

/* ---------- Facts row (class "ths-facts" on the row container) ---------- */

.ths-facts > .e-con-inner > .e-con,
.ths-facts > .e-con {
	border-top: 1px solid var(--ths-line);
	padding-top: 22px;
}

/* ---------- Facts row, light with gold accents (classes "ths-facts ths-facts-gold" on the row) ---------- */

.ths-facts.ths-facts-gold > .e-con-inner > .e-con,
.ths-facts.ths-facts-gold > .e-con {
	border-top: 0;
	padding-top: 0;
	position: relative;
}

.ths-facts.ths-facts-gold > .e-con-inner > .e-con::before,
.ths-facts.ths-facts-gold > .e-con::before {
	content: "" !important;
	display: block;
	position: static !important;
	flex: none;
	width: 40px !important;
	height: 3px !important;
	background: var(--ast-global-color-7) !important;
	opacity: 1 !important;
	margin-bottom: 10px;
}

.ths-facts.ths-facts-gold .ths-fact-number .elementor-heading-title {
	white-space: nowrap;
}

@media (max-width: 767px) {
	.ths-facts.ths-facts-gold .ths-fact-number .elementor-heading-title {
		white-space: normal;
	}
}

.ths-facts.ths-facts-gold .ths-fact-caption p {
	max-width: 26ch;
	margin: 0;
	color: var(--ast-global-color-3);
}

/* ---------- Programme pathway (class "ths-pathway" on the two-stage row) ---------- */

.ths-pathway > .e-con-inner > .e-con,
.ths-pathway > .e-con {
	border-top: 3px solid var(--ast-global-color-7);
	position: relative;
}

@media (min-width: 1025px) {
	.ths-pathway > .e-con-inner > .e-con:first-child::after,
	.ths-pathway > .e-con:first-child::after {
		content: "";
		position: absolute;
		top: -9px;
		right: -36px;
		width: 15px;
		height: 15px;
		border-top: 3px solid var(--ast-global-color-7);
		border-right: 3px solid var(--ast-global-color-7);
		transform: rotate(45deg);
		background: transparent;
	}
}

/* ---------- Numbered list / daily timeline (class "ths-day" on a Text Editor) ---------- */

.elementor-widget-text-editor.ths-day ol,
.elementor-widget-text-editor.ths-day ul,
.elementor-widget-text-editor.ths-list ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ths-day li {
	display: grid;
	grid-template-columns: 5.5em 1fr;
	gap: 16px;
	padding: 12px 0;
	border-bottom: 1px solid var(--ths-line);
	margin: 0;
}

.ths-day li strong {
	font-weight: 600;
	color: var(--ast-global-color-0);
	font-variant-numeric: tabular-nums;
}

.ths-on-dark .ths-day li {
	border-color: var(--ths-line-dark);
}

/* Numbered steps variant (classes "ths-day ths-steps") */
.ths-steps li {
	grid-template-columns: 2.25em 1fr;
	padding: 18px 0;
}

.ths-steps li strong {
	font-family: 'Newsreader', serif;
	font-size: 1.5em;
	line-height: 1.1;
	color: var(--ast-global-color-0);
}

.ths-steps li b {
	display: block;
	color: var(--ast-global-color-2);
	margin-bottom: 4px;
}

/* ---------- Table (class "ths-table" on a <table> inside a Text Editor) ---------- */

.ths-table {
	width: 100%;
	border-collapse: collapse;
	margin: 0 0 20px;
	border: 0;
}

.ths-table th,
.ths-table td {
	border: 0;
	border-bottom: 1px solid var(--ths-line);
	padding: 14px 12px 14px 0;
	text-align: left;
	vertical-align: top;
}

.ths-table thead th {
	font-size: 13px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	font-weight: 600;
}

.ths-table tbody th span {
	font-weight: 400;
	font-size: 0.9em;
	opacity: 0.8;
}

.ths-table td {
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.ths-table td[colspan] {
	white-space: normal;
}

.ths-on-dark .ths-table th,
.ths-on-dark .ths-table td {
	border-color: var(--ths-line-dark);
	color: #fff;
}

.ths-on-dark .ths-table thead th {
	color: var(--ast-global-color-7);
}

@media (max-width: 544px) {
	.ths-table td { white-space: normal; }
	.ths-table th, .ths-table td { padding-right: 8px; font-size: 15px; }
}

/* ---------- FAQ (class "ths-faq" on an Accordion widget) ---------- */

.ths-faq .elementor-accordion-item {
	border: 0 !important;
	border-bottom: 1px solid var(--ths-line) !important;
}

.ths-faq .elementor-accordion-item:first-child {
	border-top: 1px solid var(--ths-line) !important;
}

.ths-faq .elementor-tab-title {
	display: flex;
	flex-direction: row-reverse;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
}

.ths-faq .elementor-tab-title a,
.ths-faq .elementor-accordion-title {
	color: inherit;
	text-decoration: none !important;
}

.ths-faq .elementor-accordion-icon {
	font-size: 14px;
}

/* ---------- Plain list with hairlines (class "ths-list") ---------- */

.ths-list ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ths-list li {
	padding: 10px 0 10px 22px;
	border-bottom: 1px solid var(--ths-line);
	position: relative;
	margin: 0;
}

.ths-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 1.15em;
	width: 8px;
	height: 8px;
	background: var(--ast-global-color-7);
}

.ths-on-dark .ths-list li {
	border-color: var(--ths-line-dark);
}

/* ---------- Dark band helper (class "ths-on-dark" on a Night/Forest container) ---------- */

.ths-on-dark a:not(.elementor-button) {
	color: #fff;
}

/* ---------- Fixed-ratio photos and portraits ----------
 * Classes on an Image widget: "ths-photo-43" (4:3), "ths-photo-34" (3:4), "ths-photo-wide" (16:9), "ths-portrait" (4:5).
 * The ratio is set on the widget box, not the <img>, so the space is reserved before the photo loads
 * (iOS Safari otherwise lays out lazy-loaded images at the wrong height and they overlap the text below).
 */

.elementor-widget-image.ths-photo-43,
.elementor-widget-image.ths-photo-34,
.elementor-widget-image.ths-photo-wide,
.elementor-widget-image.ths-portrait {
	position: relative;
	overflow: hidden;
	border-radius: var(--ths-radius);
	background: var(--ast-global-color-6);
	flex-shrink: 0;
	width: 100%;
	max-width: 100%;
	align-self: flex-start;
}

.elementor-widget-image.ths-photo-43 { aspect-ratio: 4 / 3; }
.elementor-widget-image.ths-photo-34 { aspect-ratio: 3 / 4; }
.elementor-widget-image.ths-photo-wide { aspect-ratio: 16 / 9; }
.elementor-widget-image.ths-portrait { aspect-ratio: 4 / 5; }

.elementor-widget-image.ths-photo-43 img,
.elementor-widget-image.ths-photo-34 img,
.elementor-widget-image.ths-photo-wide img,
.elementor-widget-image.ths-portrait img {
	position: absolute;
	inset: 0;
	width: 100% !important;
	height: 100% !important;
	max-width: none;
	object-fit: cover;
	border-radius: 0;
}

.elementor-widget-image.ths-portrait img {
	object-position: center 20%;
}

/* ---------- Cambridge registration certificate (class "ths-certificate" on an Image widget) ----------
 * Framed like a document: white mount, thin gold outer ring, soft shadow. */

.elementor-widget-image.ths-certificate {
	text-align: center;
	padding: 14px;
}

.ths-certificate img {
	width: 100%;
	max-width: 560px;
	height: auto;
	background: #fff;
	padding: 18px;
	border-radius: 2px;
	box-shadow:
		0 0 0 1px var(--ths-line),
		0 0 0 9px #fff,
		0 0 0 10px rgba(227, 179, 65, .75),
		0 28px 56px rgba(18, 32, 25, .16);
	transition: transform .2s ease;
}

.ths-certificate a {
	display: inline-block;
	cursor: zoom-in;
}

.ths-certificate a:hover img {
	transform: translateY(-3px);
}

@media (max-width: 767px) {
	.elementor-widget-image.ths-certificate {
		padding: 12px 10px;
	}

	.ths-certificate img {
		padding: 10px;
	}
}

/* Hero badge linking to the certificate (class "ths-hero-badge" on a Button widget) */
.ths-hero-badge .elementor-button {
	background: rgba(18, 32, 25, .55) !important;
	border: 1px solid rgba(227, 179, 65, .8) !important;
	color: #fff !important;
	border-radius: 999px !important;
	padding: 9px 16px !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	backdrop-filter: blur(4px);
}

@media (max-width: 767px) {
	.ths-hero-badge .elementor-button {
		font-size: 12px !important;
		padding: 7px 12px !important;
		white-space: nowrap;
	}
}

.ths-hero-badge .elementor-button:hover {
	background: rgba(18, 32, 25, .8) !important;
}

.ths-hero-badge .elementor-button-icon svg {
	fill: var(--ast-global-color-7);
	width: 14px;
	height: 14px;
}

.ths-hero-badge .elementor-button-icon i {
	color: var(--ast-global-color-7);
}

/* ---------- News (UAE Basic Posts widget, class "ths-news") ---------- */

.ths-news .hfe-post-card {
	border-top: 1px solid var(--ths-line);
	border-radius: 0;
	box-shadow: none;
}

.ths-news .hfe-post-image {
	position: relative;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	border-radius: var(--ths-radius);
	background: var(--ast-global-color-6);
}

.ths-news .hfe-post-image img {
	position: absolute;
	inset: 0;
	width: 100% !important;
	height: 100% !important;
	object-fit: cover;
}

.ths-news .hfe-post-title a {
	color: var(--ast-global-color-2);
	text-decoration: none;
}

.ths-news .hfe-post-title a:hover {
	color: var(--ast-global-color-0);
	text-decoration: underline;
	text-decoration-color: var(--ast-global-color-7);
}

.ths-news .hfe-read-more {
	color: var(--ast-global-color-0);
	font-weight: 600;
}

/* ---------- Upcoming events (TEC "Events List" widget, class "ths-events") ---------- */

.ths-events .tribe-events-widget {
	--tec-color-accent-primary: var(--ast-global-color-0);
	--tec-color-text-primary: var(--ast-global-color-2);
	--tec-font-family-sans-serif: 'Hanken Grotesk', sans-serif;
}

.ths-events .tribe-events-widget .tribe-events-widget-events-list__header {
	display: none;
}

.ths-events .tribe-events-widget-events-list__event-row {
	border-top: 1px solid var(--ths-line);
	padding-top: 16px;
	margin-bottom: 16px;
}

.ths-events .tribe-events-widget-events-list__event-date-tag-month {
	color: var(--ast-global-color-1);
	font-weight: 600;
	letter-spacing: 0.08em;
}

.ths-events .tribe-events-widget-events-list__event-date-tag-daynum {
	font-family: 'Newsreader', serif;
	color: var(--ast-global-color-0);
}

.ths-events .tribe-events-widget-events-list__event-title-link {
	color: var(--ast-global-color-2);
	font-weight: 600;
}

.ths-events .tribe-events-widget-events-list__view-more-link {
	color: var(--ast-global-color-0);
	font-weight: 600;
}

/* ---------- Contact Form 7 ---------- */

.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 select,
.wpcf7 textarea {
	width: 100%;
	border: 1px solid #b9c4b6;
	border-radius: var(--ths-radius);
	background: #fff;
	padding: 12px 14px;
	color: var(--ast-global-color-2);
	font-size: 17px;
}

.wpcf7 input:focus,
.wpcf7 select:focus,
.wpcf7 textarea:focus {
	border-color: var(--ast-global-color-0);
	box-shadow: 0 0 0 1px var(--ast-global-color-0);
}

.wpcf7 label {
	font-weight: 600;
	color: var(--ast-global-color-2);
}

.wpcf7 .wpcf7-not-valid-tip {
	color: #a8321e;
	font-size: 15px;
}

.wpcf7 form .wpcf7-response-output {
	border-radius: var(--ths-radius);
	padding: 12px 16px;
	margin: 20px 0 0;
}

/* ---------- Legacy helpers from the 2026-10-13 audit (pages not yet rebuilt) ---------- */

.elementor-widget-heading.ths-h1-as-h2 h1.elementor-heading-title { font-size: 38px; font-size: 2.375rem; line-height: 1.12em; }
.elementor-widget-divider.ths-h2-as-h1 h2.elementor-divider__text { font-size: 52px; font-size: 3.25rem; line-height: 1.08em; }

@media (max-width: 921px) {
	.elementor-widget-heading.ths-h1-as-h2 h1.elementor-heading-title { font-size: 28px; font-size: 1.75rem; }
	.elementor-widget-divider.ths-h2-as-h1 h2.elementor-divider__text { font-size: 36px; font-size: 2.25rem; }
}

/* ---------- Footer (Astra Footer Builder, redesigned 2026-10-13; now on Night ground) ---------- */

#colophon { border-top: 3px solid var(--ast-global-color-7); }
#colophon .site-primary-footer-wrap,
#colophon .site-below-footer-wrap { background: var(--ast-global-color-8); }
#colophon .ast-builder-grid-row-container-inner { padding-left: 20px; padding-right: 20px; box-sizing: border-box; }
#colophon .site-primary-footer-wrap { padding-top: 80px; padding-bottom: 56px; }
#colophon .site-primary-footer-inner-wrap { grid-template-columns: 1.45fr .9fr 1.15fr 1.25fr 1.45fr; gap: 40px; align-items: start; }
#colophon .site-primary-footer-wrap .footer-widget-area,
#colophon .site-primary-footer-wrap .ast-builder-html-element,
#colophon .site-primary-footer-wrap .ast-builder-layout-element { text-align: left; justify-content: flex-start; }
#colophon .ast-footer-social-1-wrap .footer-social-inner-wrap { justify-content: flex-start; }
#colophon p.ths-fcontact a[href^="mailto:"] { font-size: 14px; white-space: nowrap; }
#colophon .site-primary-footer-wrap .site-footer-section { display: block; text-align: left; }
#colophon .site-primary-footer-wrap,
#colophon .site-primary-footer-wrap p,
#colophon .site-primary-footer-wrap li { color: rgba(255, 255, 255, .78); }
#colophon .site-primary-footer-wrap a { color: rgba(255, 255, 255, .84); text-decoration: none; transition: color .15s ease; }
#colophon .site-primary-footer-wrap a:hover,
#colophon .site-primary-footer-wrap a:focus-visible { color: #fff; text-decoration: underline; text-decoration-color: var(--ast-global-color-7); text-underline-offset: 4px; }
#colophon .ths-fbrand p { margin: 0; }
#colophon .ths-fbrand__logo { display: inline-flex; width: 76px; height: 76px; border-radius: 50%; background: #fff; padding: 4px; box-shadow: 0 0 0 4px rgba(227, 179, 65, .35); }
#colophon .ths-fbrand__logo img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
#colophon .ths-fbrand p.ths-fbrand__name { margin: 22px 0 4px; color: #fff; font-family: 'Newsreader', serif; font-size: 25px; font-weight: 500; line-height: 1.15; }
#colophon .ths-fbrand p.ths-fbrand__motto { margin: 0 0 16px; color: var(--ast-global-color-7); font-family: 'Newsreader', serif; font-size: 16px; font-style: italic; line-height: 1.3; }
#colophon .ths-fbrand p.ths-fbrand__intro { max-width: 34ch; font-size: 15px; line-height: 1.65; }
#colophon .ast-footer-social-1-wrap { margin-top: 24px; }
#colophon .ast-footer-social-1-wrap .footer-social-inner-wrap { display: flex; gap: 10px; }
#colophon .ast-footer-social-1-wrap .footer-social-item { --color: #fff; --background-color: transparent; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; margin: 0; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .28); background: transparent; color: #fff; }
#colophon .ast-footer-social-1-wrap .footer-social-item svg { width: 17px; height: 17px; fill: currentColor; }
#colophon .ast-footer-social-1-wrap .footer-social-item:hover,
#colophon .ast-footer-social-1-wrap .footer-social-item:focus-visible { background: var(--ast-global-color-7); border-color: var(--ast-global-color-7); color: var(--ast-global-color-8); --color: var(--ast-global-color-8); text-decoration: none; }
#colophon .ast-footer-social-1-wrap .footer-social-item:hover svg { fill: var(--ast-global-color-8); }
#colophon .widget-title { margin: 6px 0 20px; color: var(--ast-global-color-7); font-size: 12.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; line-height: 1.2; }
#colophon .widget_nav_menu ul.menu { margin: 0; padding: 0; list-style: none; }
#colophon .widget_nav_menu ul.menu li { margin: 0 0 12px; padding: 0; font-size: 15px; line-height: 1.4; }
#colophon .widget_nav_menu ul.menu li.current-menu-item > a { color: #fff; }
#colophon p.ths-fcontact { margin: 0 0 12px; font-size: 15px; line-height: 1.55; }
#colophon p.ths-fcta { margin: 24px 0 0; }
#colophon p.ths-fcta a { display: inline-block; padding: 12px 22px; border-radius: var(--ths-radius); background: var(--ast-global-color-7); color: var(--ast-global-color-8); font-size: 15px; font-weight: 600; line-height: 1.2; text-decoration: none; }
#colophon p.ths-fcta a:hover,
#colophon p.ths-fcta a:focus-visible { background: #fff; color: var(--ast-global-color-8); text-decoration: none; }
#colophon .site-below-footer-wrap { border-top: 1px solid rgba(255, 255, 255, .14); padding-top: 22px; padding-bottom: 22px; }
#colophon .site-below-footer-inner-wrap { min-height: 0; align-items: center; }
#colophon .site-below-footer-wrap p { margin: 0; font-size: 14px; color: rgba(255, 255, 255, .7); }
#colophon .site-below-footer-wrap .site-footer-section.site-footer-section-1 { justify-content: flex-start; text-align: left; }
#colophon .site-below-footer-wrap .site-footer-section.site-footer-section-2 { justify-content: flex-end; text-align: right; }
#colophon .site-below-footer-wrap .ast-footer-copyright { width: 100%; text-align: left; }
#colophon .site-below-footer-wrap .ast-footer-html-2 { width: 100%; text-align: right; }
#colophon .site-below-footer-wrap a { color: rgba(255, 255, 255, .86); text-decoration: underline; text-decoration-color: rgba(227, 179, 65, .6); text-underline-offset: 3px; }

@media (max-width: 1024px) {
	#colophon .site-primary-footer-inner-wrap { grid-template-columns: 1fr 1fr; gap: 40px 32px; }
	#colophon .site-primary-footer-wrap .site-footer-section-1 { grid-column: 1 / -1; }
}

@media (max-width: 544px) {
	#colophon .site-primary-footer-wrap { padding-top: 56px; padding-bottom: 40px; }
	#colophon .site-primary-footer-inner-wrap { grid-template-columns: 1fr; gap: 36px; }
	#colophon .site-below-footer-inner-wrap { grid-template-columns: 1fr; gap: 6px; }
	#colophon .site-below-footer-wrap .site-footer-section.site-footer-section-2,
	#colophon .site-below-footer-wrap .ast-footer-html-2 { justify-content: flex-start; text-align: left; }
}

/* ---------- Vacancies list ([ths_vacancies] shortcode on the Careers page) ---------- */

.ths-vacancies {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ths-vacancies li {
	border-top: 1px solid var(--ths-line);
	padding: 18px 0;
	margin: 0;
}

.ths-vacancies li a {
	font-family: 'Newsreader', serif;
	font-size: 22px;
	color: var(--ast-global-color-2);
	text-decoration: underline;
	text-decoration-color: var(--ast-global-color-7);
	text-underline-offset: 5px;
}

.ths-vacancies li span {
	display: block;
	margin-top: 6px;
	font-size: 14px;
	color: var(--ast-global-color-1);
}

.ths-vacancies li p {
	margin: 8px 0 0;
}

/* ---------- Profile cards (class "ths-profile" on a container: portrait + name + role + bio) ---------- */

.ths-profile .elementor-widget-text-editor p {
	font-size: 16px;
	line-height: 1.6;
}

/* Gold top rule on a container (class "ths-rule") */
.ths-rule {
	border-top: 3px solid var(--ast-global-color-7);
}

/* Two-column list (classes "ths-list ths-list-2col") */
.ths-list-2col ul {
	columns: 2;
	column-gap: 32px;
}

.ths-list-2col li {
	break-inside: avoid;
}

/* ---------- Faculty spotlight (class "ths-spotlight" on the section, "ths-spotlight-card" on each card) ---------- */

.ths-spotlight-card {
	border-top: 3px solid var(--ast-global-color-7);
	border-radius: var(--ths-radius);
	overflow: hidden;
	box-shadow: 0 1px 0 rgba(18, 32, 25, .04), 0 12px 32px rgba(18, 32, 25, .06);
}

.ths-spotlight-card .elementor-widget-image.ths-portrait {
	border-radius: 0;
}

.ths-spotlight-card .ths-spotlight-role p {
	font-weight: 600;
	margin: 0 0 4px;
}

/* ---------- News list ([ths_news] shortcode; replaces the UAE Basic Posts widget) ---------- */

.ths-news-list {
	display: grid;
	grid-template-columns: repeat(var(--ths-news-cols, 2), minmax(0, 1fr));
	gap: 36px 28px;
}

@media (max-width: 767px) {
	.ths-news-list {
		grid-template-columns: 1fr;
	}
}

.ths-news-card {
	border-top: 1px solid var(--ths-line);
	padding-top: 16px;
}

.ths-news-card .ths-news-image {
	display: block;
	position: relative;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	border-radius: var(--ths-radius);
	background: var(--ast-global-color-6);
	margin-bottom: 14px;
}

.ths-news-card .ths-news-image img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ths-news-card .ths-news-date {
	margin: 0 0 6px;
	font-size: 14px;
	color: var(--ast-global-color-1);
}

.ths-news-card .ths-news-title {
	margin: 0 0 8px;
	font-size: 22px;
	line-height: 1.25;
}

.ths-news-card .ths-news-title a {
	color: var(--ast-global-color-2);
	text-decoration: none;
}

.ths-news-card .ths-news-title a:hover {
	color: var(--ast-global-color-0);
	text-decoration: underline;
	text-decoration-color: var(--ast-global-color-7);
}

.ths-news-card .ths-news-excerpt {
	margin: 0 0 10px;
	color: var(--ast-global-color-3);
}

.ths-news-card .ths-news-more {
	color: var(--ast-global-color-0);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-color: var(--ast-global-color-7);
	text-underline-offset: 5px;
}
