/* Content driven sizing prevents Elementor regions from colliding at narrow
   browser widths, high zoom levels and when editors change their columns. */
html { -webkit-text-size-adjust: 100%; }
body { max-width: 100%; }
.elementor, .elementor *, .kicob-archive-shell, .kicob-events-directory, .kicob-staff-directory { box-sizing: border-box; }
.elementor .e-con, .elementor .elementor-widget, .elementor .elementor-widget-container,
.elementor .e-con-inner, .elementor .elementor-element { min-width: 0; }
.elementor .e-con { max-width: 100%; }
.elementor img, .elementor video, .elementor iframe, .elementor embed { max-width: 100%; }
.elementor :is(h1, h2, h3, h4, h5, h6, p, a, button, li, td, th) { overflow-wrap: anywhere; }
.elementor .elementor-button { max-width: 100%; white-space: normal; text-align: center; }
.elementor .elementor-widget-text-editor,
.elementor .elementor-widget-heading,
.elementor .elementor-widget-button,
.elementor .elementor-widget-image { max-width: 100%; }
.elementor .elementor-widget-text-editor p { width: 100%; }

/* Section gutters must stay tied to the viewport. The old centered-content
   calculation used the section's parent width, which could exceed the
   section's own max-width and consume nearly all of its content area at zoom
   levels where Elementor's canvas becomes very wide. */
.elementor .kicob-section,
.elementor .kicob-news-section {
	padding-inline: clamp(20px, 4vw, 64px) !important;
}

/* Elementor reserves absolute pseudo-elements for its container backgrounds.
   The homepage feature rows use ::before for Font Awesome icons, so return
   those icons to normal flow and give each one a defined box above its title. */
.home .elementor .kicob-home-core-functions > .kicob-three-grid > .e-con,
.home .elementor .kicob-home-campus-life > .kicob-four-grid > .e-con {
	display: flex !important;
	flex-direction: column !important;
	align-items: flex-start !important;
	justify-content: flex-start !important;
}
.home .elementor .kicob-home-core-functions .elementor-heading-title {
	color: #003b75 !important;
}
.home .elementor .kicob-home-core-functions p {
	color: #40566b !important;
}
.home .elementor .kicob-home-core-functions > .kicob-three-grid > .e-con::before,
.home .elementor .kicob-home-campus-life > .kicob-four-grid > .e-con::before {
	position: static !important;
	inset: auto !important;
	display: grid !important;
	width: 1.65rem !important;
	height: 1.65rem !important;
	min-height: 1.65rem !important;
	flex: 0 0 1.65rem !important;
	place-items: center;
	margin: 0 0 16px !important;
	padding: 0 !important;
	background: none !important;
	line-height: 1 !important;
}

/* This section is capped to a wide editorial panel inside a wider Elementor
   canvas. Give it a capped gutter so its grid always has room to resolve. */
.home .elementor .kicob-home-featured-programme {
	padding-inline: clamp(24px, 4vw, 64px) !important;
}
.elementor .kicob-page-content :is(.kicob-grid-2, .kicob-grid-3, .kicob-life-grid, .kicob-gallery),
.kicob-staff-grid, .kicob-event-grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)) !important;
}
.elementor .kicob-page-content .kicob-quick-grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 156px), 1fr));
}
.kicob-staff-profile .kicob-profile-grid { grid-template-columns: minmax(0, min(360px, 36%)) minmax(0, 1fr); }
.kicob-page-content table, .entry-content table { display: block; width: 100%; overflow-x: auto; }
.thim-ekit__header img, .thim-ekit__footer img { max-width: 100%; height: auto; }
body .entry-content a:not(.elementor-button),
body .elementor-widget-text-editor a:not(.elementor-button) {
	text-decoration-color: rgba(0, 59, 117, .24) !important;
	text-decoration-thickness: 1px;
	text-underline-offset: .2em;
}
body .entry-content a:not(.elementor-button):hover,
body .elementor-widget-text-editor a:not(.elementor-button):hover {
	color: #003b75 !important;
	text-decoration-color: rgba(0, 59, 117, .58) !important;
}

/* Campus life is a photo led feature row. Keep each image as an Elementor
   widget, with the copy on a calm, square edged surface below it. */
.home .elementor .kicob-home-campus-life > .kicob-four-grid {
	display: grid !important;
	grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
	align-items: stretch;
	gap: 24px !important;
}
.home .elementor .kicob-home-campus-life > .kicob-four-grid > .e-con {
	display: flex !important;
	flex-direction: column !important;
	align-items: stretch !important;
	gap: 0 !important;
	min-width: 0;
	padding: 0 0 22px !important;
	border: 1px solid rgba(0, 59, 117, .12) !important;
	background: #fff !important;
	overflow: hidden;
}
.home .elementor .kicob-home-campus-life > .kicob-four-grid > .e-con::before {
	display: none !important;
	content: none !important;
}
.home .elementor .kicob-home-campus-life .kicob-campus-photo-widget {
	width: 100%;
	max-width: none;
	margin: 0 0 18px;
	overflow: hidden;
}
.home .elementor .kicob-home-campus-life .kicob-campus-photo-widget .elementor-widget-container {
	width: 100%;
	line-height: 0;
}
.home .elementor .kicob-home-campus-life .kicob-campus-photo-widget img {
	display: block;
	width: 100%;
	height: clamp(170px, 18vw, 228px);
	max-width: none;
	border-radius: 0;
	object-fit: cover;
	object-position: center;
	transition: transform 280ms cubic-bezier(.2, .75, .25, 1);
}
.home .elementor .kicob-home-campus-life .kicob-campus-photo-widget:hover img {
	transform: scale(1.035);
}
.home .elementor .kicob-home-campus-life > .kicob-four-grid .elementor-heading-title,
.home .elementor .kicob-home-campus-life > .kicob-four-grid p {
	margin-inline: 20px;
}
.home .elementor .kicob-home-campus-life > .kicob-four-grid .elementor-heading-title {
	margin-top: 0;
	margin-bottom: 10px;
}
.home .elementor .kicob-home-campus-life > .kicob-four-grid p {
	width: auto !important;
	max-width: 38ch;
}

/* The call to action panel is centered as one composition, including its
   display heading and the paired actions. */
.home .elementor .kicob-home-cta {
	background-color: #002b55 !important;
}
.home .elementor .kicob-home-cta > .elementor-widget-heading,
.home .elementor .kicob-home-cta > .elementor-widget-text-editor {
	margin-inline: auto;
	text-align: center;
}
.home .elementor .kicob-home-cta > .elementor-widget-heading .elementor-heading-title {
	max-width: 13ch;
	margin-inline: auto;
	text-align: center;
}
.home .elementor .kicob-home-cta > .kicob-button-row {
	justify-content: center;
	margin-inline: auto;
}

@media (max-width: 980px) {
	.home .elementor .kicob-home-campus-life > .kicob-four-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
}
@media (max-width: 600px) {
	.home .elementor .kicob-home-campus-life > .kicob-four-grid {
		grid-template-columns: minmax(0, 1fr) !important;
		gap: 20px !important;
	}
	.home .elementor .kicob-home-campus-life .kicob-campus-photo-widget img {
		height: clamp(190px, 58vw, 270px);
	}
	.home .elementor .kicob-home-cta > .kicob-button-row {
		align-items: center !important;
	}
}

/* Wrap pagination controls instead of widening the document on small phones. */
@media (max-width: 480px) {
	.kicob-pagination {
		box-sizing: border-box;
		width: 100%;
		flex-wrap: wrap;
		gap: 8px;
		padding-inline: 0;
	}
	.kicob-pagination .page-numbers {
		box-sizing: border-box;
		min-width: 44px;
		flex: 0 1 auto;
		white-space: nowrap;
	}
}

/* Legacy event markup can contain wide fixed-width tables and media. Keep
   single-event content inside the viewport while allowing data tables to
   scroll within their own wrapper. */
body.single-tp_event article.tp_single_event :is(img,video,iframe,embed,object) { box-sizing:border-box; max-width:100%; height:auto; }
body.single-tp_event article.tp_single_event img.wp-post-image { display:block; width:100%; max-width:100%; height:auto; }
@media (max-width: 760px) {
	body.single-tp_event,
	body.single-tp_event #page,
	body.single-tp_event #content,
	body.single-tp_event #content article.tp_single_event,
	body.single-tp_event #content article.tp_single_event .entry-content,
	body.single-tp_event #content article.tp_single_event .entry-summary,
	body.single-tp_event .site-content,
	body.single-tp_event .content-area,
	body.single-tp_event .site-main {
		box-sizing:border-box;
		width:100%;
		max-width:100%;
		min-width:0;
	}
	body.single-tp_event #content article.tp_single_event :is(img,video,iframe,embed,object) { max-width:100%; height:auto; }
	body.single-tp_event #content article.tp_single_event :is(p,li,a,td,th,h1,h2,h3,h4) { overflow-wrap:anywhere; }
	body.single-tp_event #content article.tp_single_event table { display:block; width:100%; max-width:100%; overflow-x:auto; }
	body.single-tp_event #content article.tp_single_event pre,
	body.single-tp_event #content article.tp_single_event .wp-block-embed { max-width:100%; overflow-x:auto; }
}
@media (prefers-reduced-motion: reduce) {
	.home .elementor .kicob-home-campus-life .kicob-campus-photo-widget img {
		transition: none;
	}
}

/* Let the campus moments photographs form an editorial mosaic instead of
   four identical tiles. The original Elementor image widgets remain editable. */
.home .elementor .kicob-home-moments-grid {
	display: grid !important;
	grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
	grid-template-rows: repeat(2, clamp(210px, 23vw, 330px));
	align-items: stretch;
	gap: 14px !important;
	margin-top: clamp(34px, 4vw, 56px);
}
.home .elementor .kicob-home-moments-grid > .e-con {
	position: relative;
	min-width: 0;
	min-height: 0 !important;
	height: 100%;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	overflow: hidden;
}
.home .elementor .kicob-home-moments-grid > .e-con:nth-child(1) {
	grid-column: 1 / span 7;
	grid-row: 1;
}
.home .elementor .kicob-home-moments-grid > .e-con:nth-child(2) {
	grid-column: 8 / -1;
	grid-row: 1;
}
.home .elementor .kicob-home-moments-grid > .e-con:nth-child(3) {
	grid-column: 1 / span 5;
	grid-row: 2;
}
.home .elementor .kicob-home-moments-grid > .e-con:nth-child(4) {
	grid-column: 6 / -1;
	grid-row: 2;
}
.home .elementor .kicob-home-moments-grid > .e-con > .elementor-widget-image,
.home .elementor .kicob-home-moments-grid > .e-con > .elementor-widget-image > .elementor-widget-container,
.home .elementor .kicob-home-moments-grid > .e-con > .elementor-widget-image figure {
	width: 100%;
	height: 100%;
	margin: 0;
}
.home .elementor .kicob-home-moments-grid img {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 0 !important;
	border-radius: 0 !important;
	object-fit: cover;
	transition: transform 360ms cubic-bezier(.2, .75, .25, 1);
}
.home .elementor .kicob-home-moments-grid > .e-con:hover img {
	transform: scale(1.025);
}
@media (max-width: 900px) {
	.home .elementor .kicob-home-moments-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		grid-template-rows: repeat(2, clamp(210px, 32vw, 300px));
	}
	.home .elementor .kicob-home-moments-grid > .e-con:nth-child(n) {
		grid-column: auto;
		grid-row: auto;
	}
}
@media (max-width: 600px) {
	.home .elementor .kicob-home-moments-grid {
		grid-template-columns: minmax(0, 1fr) !important;
		grid-template-rows: repeat(4, clamp(220px, 62vw, 320px));
		gap: 12px !important;
	}
}
@media (prefers-reduced-motion: reduce) {
	.home .elementor .kicob-home-moments-grid img {
		transition: none;
	}
}

/* Keep the official yellow as a small identity accent. Large controls and
   link underlines use the calmer institutional blues for easier scanning. */
body a {
	text-decoration-color: rgba(0, 59, 117, .2) !important;
	text-decoration-thickness: 1px;
}
body.home .elementor a:not(.elementor-button) {
	text-decoration-color: rgba(0, 59, 117, .2) !important;
	text-decoration-thickness: 1px;
}
body .elementor .elementor-button:not(.kicob-spotlight-cta):not(.kicob-home-featured-programme .elementor-button):not(.kicob-home-cta .elementor-button):not(.kicob-welcome-cta .elementor-button),
body .elementor .kicob-page-content .kicob-btn:not(.outline),
body .elementor .kicob-bba-page .cta-btn,
body.page-id-12248 .elementor .kicob-research-page .kicob-research-button,
body.page-id-1601 .kicob-admissions-hero .kicob-button,
body.page-id-12727 .elementor .kicob-page-content .kicob-btn:not(.outline),
body .kicob-apply-link,
body .kicob-button,
body .kicob-staff-filter-submit {
	border-color: #003b75 !important;
	background: #003b75 !important;
	color: #fff !important;
	box-shadow: none !important;
}
body .elementor .elementor-button:not(.kicob-spotlight-cta):not(.kicob-home-featured-programme .elementor-button):not(.kicob-home-cta .elementor-button):not(.kicob-welcome-cta .elementor-button):hover,
body .elementor .kicob-page-content .kicob-btn:not(.outline):hover,
body .elementor .kicob-bba-page .cta-btn:hover,
body.page-id-12248 .elementor .kicob-research-page .kicob-research-button:hover,
body.page-id-1601 .kicob-admissions-hero .kicob-button:hover,
body.page-id-12727 .elementor .kicob-page-content .kicob-btn:not(.outline):hover,
body .kicob-apply-link:hover,
body .kicob-button:hover,
body .kicob-staff-filter-submit:hover {
	border-color: #0056a8 !important;
	background: #0056a8 !important;
	color: #fff !important;
	box-shadow: none !important;
}
body a:hover,
body .entry-content a:not(.elementor-button):hover,
body .elementor-widget-text-editor a:not(.elementor-button):hover {
	text-decoration-color: rgba(0, 59, 117, .48) !important;
	text-decoration-thickness: 1px;
}
body :focus-visible,
body .elementor-button:focus-visible {
	outline: 3px solid #003b75 !important;
	outline-offset: 3px;
	box-shadow: 0 0 0 2px #fff !important;
}

@media (max-width: 760px) {
	.elementor .e-con.e-con-boxed > .e-con-inner { width: 100%; max-width: 100%; }
	.elementor .elementor-widget-text-editor p { max-width: 70ch; }
	.kicob-staff-profile .kicob-profile-grid { grid-template-columns: minmax(0,1fr); }
	.kicob-staff-profile .kicob-profile-photo { position: static; max-width: min(100%, 420px); }
	.thim-ekit__header .elementor-15920 > .elementor-element-7517b82,
	.thim-ekit__header .elementor-15920 > .elementor-element-7517b82 > .e-con-inner { height: auto; min-height: 80px; }
	.thim-ekit__header .elementor-15920 > .elementor-element-7517b82 img { height: auto !important; max-height: 76px !important; }
}

@media (max-width: 480px) {
	.kicob-event-card { grid-template-columns: minmax(0, 1fr); }
	.kicob-event-card-media { min-height: 190px; }
	.elementor .kicob-page-content .kicob-section { padding-inline: 20px; }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
}

/* Give the college banner equal breathing room above and below the image. */
.thim-ekit__header .elementor-15920 > .elementor-element-7517b82,
.thim-ekit__header .elementor-15920 > .elementor-element-7517b82 > .e-con-inner {
	height: 120px !important;
	min-height: 120px !important;
}

.thim-ekit__header .elementor-15920 > .elementor-element-7517b82 > .e-con-inner {
	box-sizing: border-box;
	padding-block: 4px !important;
}

@media (max-width: 760px) {
	.thim-ekit__header .elementor-15920 > .elementor-element-7517b82,
	.thim-ekit__header .elementor-15920 > .elementor-element-7517b82 > .e-con-inner {
		height: auto !important;
		min-height: 104px !important;
	}

	.thim-ekit__header .elementor-15920 > .elementor-element-7517b82 > .e-con-inner {
		display: flex;
		align-items: center;
		justify-content: center;
		padding-block: 12px !important;
	}

	.thim-ekit__header .elementor-15920 > .elementor-element-7517b82 .elementor-widget-container {
		padding-block: 0 !important;
		line-height: 0;
	}

	.thim-ekit__header .elementor-15920 > .elementor-element-7517b82 img {
		display: block;
		height: auto !important;
		max-height: 76px !important;
	}
}
