/*
 * Elementor Modules collection.
 *
 * One widget owns the repeated card recipe, so every editor-created item
 * shares geometry and surface behavior without copying style controls into
 * each repeater row.
 */

.elementor-widget-sggw-modules {
	container-name: sggw-elementor-modules;
	container-type: inline-size;
	inline-size: 100%;
}

.sggw-elementor-modules {
	inline-size: 100%;
}

.sggw-elementor-faculty-overview__heading .elementor-heading-title {
	color: var(--sggw-text) !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: var(--wp--preset--font-size--x-large) !important;
	font-style: normal !important;
	font-weight: var(--wp--custom--typography--font-weight--semibold) !important;
	line-height: var(--wp--custom--typography--line-height--heading, 1.25) !important;
	margin: 0;
}

.sggw-elementor-modules__list {
	display: grid;
	gap: 16px;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

/* The auto-fit baseline remains useful below this threshold. Once a fifth
 * 320 px track could fit, hold the editorial recipe at its intended maximum
 * of four columns. */
@container sggw-elementor-modules (min-width: 1328px) {
	.sggw-elementor-modules__list {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.sggw-elementor-modules.is-layout-horizontal
	.sggw-elementor-modules__list {
	grid-template-columns: minmax(0, 1fr);
}

.sggw-elementor-modules__item {
	block-size: 100%;
	margin: 0;
	min-inline-size: 0;
	padding: 0;
}

.sggw-elementor-module {
	align-items: stretch;
	background-color: var(--sggw-surface-current);
	block-size: 100%;
	border-radius: var(--wp--custom--radius--medium, 8px);
	box-sizing: border-box;
	color: var(--sggw-text);
	display: flex;
	flex-direction: column;
	inline-size: 100%;
	min-block-size: var(--sggw-elementor-module-min-height, 200px);
	min-inline-size: 0;
	overflow: clip;
	padding: var(--wp--preset--spacing--40, 24px);
}

.sggw-elementor-module.is-unframed {
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	overflow: visible;
	padding: 0;
}

/* The automatic recipe advances one tonal step from the nearest parent
 * surface. Explicit semantic surfaces already establish these roles through
 * the theme's color contract and must not be overwritten here. */
.sggw-elementor-module:not(.has-sggw-module-surface) {
	--sggw-surface-current: var(--sggw-module-default-surface);
	--sggw-surface-alternating: var(--sggw-module-default-alternating);
	--sggw-link-foreground: var(--sggw-module-default-link-foreground);
	--sggw-inline-link-decoration-rest: var(--sggw-module-default-inline-link-decoration-rest);
}

.sggw-elementor-module.has-sggw-module-link {
	overflow: visible;
	position: relative;
}

.sggw-elementor-modules.is-layout-horizontal
	.sggw-elementor-module {
	align-items: flex-start;
	block-size: auto;
	column-gap: var(--wp--preset--spacing--40, 24px);
	flex-direction: row;
	flex-wrap: nowrap;
	min-block-size: var(--sggw-elementor-module-min-height, 0);
	overflow: visible;
}

.sggw-elementor-module__graphic {
	align-items: center;
	box-sizing: border-box;
	color: var(--sggw-text);
	display: inline-flex;
	flex: 0 0 auto;
	justify-content: center;
	line-height: 1;
	margin-block-end: var(--wp--preset--spacing--40, 24px);
}

.sggw-elementor-module__graphic.is-framed {
	background-color: var(--sggw-surface-alternating);
	block-size: 48px;
	border-radius: var(--wp--custom--radius--x-small, 2px);
	inline-size: 48px;
	padding: 12px;
}

.sggw-elementor-module__graphic.is-unframed {
	background: transparent;
	block-size: var(--sggw-icon-size-medium, 24px);
	inline-size: var(--sggw-icon-size-medium, 24px);
	padding: 0;
}

.sggw-elementor-modules.is-layout-horizontal
	.sggw-elementor-module__graphic {
	margin-block-end: 0;
}

.sggw-elementor-module__media {
	align-items: center;
	aspect-ratio: 16 / 9;
	background-color: var(--sggw-surface-alternating);
	border-radius: var(--wp--custom--radius--medium, 8px) var(--wp--custom--radius--medium, 8px) 0 0;
	display: flex;
	inline-size: calc(100% + (2 * var(--wp--preset--spacing--40, 24px)));
	justify-content: center;
	margin-block-end: var(--wp--preset--spacing--40, 24px);
	margin-block-start: calc(-1 * var(--wp--preset--spacing--40, 24px));
	margin-inline: calc(-1 * var(--wp--preset--spacing--40, 24px));
	overflow: hidden;
}

.sggw-elementor-module__image-element {
	block-size: 100%;
	display: block;
	inline-size: 100%;
	object-fit: cover;
}

.sggw-elementor-module__image-placeholder {
	background-color: var(--sggw-line-decorative);
	block-size: 48px;
	display: block;
	inline-size: 48px;
	-webkit-mask-image: var(--sggw-module-image-placeholder);
	mask-image: var(--sggw-module-image-placeholder);
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: contain;
	mask-size: contain;
}

.sggw-elementor-modules.is-layout-horizontal
	.sggw-elementor-module__media {
	aspect-ratio: 1;
	border-radius: var(--wp--custom--radius--x-small, 2px);
	flex: 0 0 80px;
	inline-size: 80px;
	margin: 0;
}

.sggw-elementor-module__icon,
.sggw-elementor-module__icon-placeholder {
	align-items: center;
	block-size: var(--sggw-icon-size-medium, 24px);
	color: inherit;
	display: inline-flex;
	flex: 0 0 var(--sggw-icon-size-medium, 24px);
	font-size: var(--sggw-icon-size-medium, 24px);
	inline-size: var(--sggw-icon-size-medium, 24px);
	justify-content: center;
	line-height: 1;
}

.sggw-elementor-module__icon :is(i, svg) {
	block-size: 1em;
	color: currentColor;
	display: block;
	fill: currentColor;
	font-size: inherit;
	inline-size: 1em;
}

.sggw-elementor-module__icon-placeholder::before {
	background-color: var(--sggw-line-decorative);
	block-size: 100%;
	content: "";
	display: block;
	inline-size: 100%;
	-webkit-mask-image: var(--sggw-module-icon-placeholder);
	mask-image: var(--sggw-module-icon-placeholder);
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: contain;
	mask-size: contain;
}

.sggw-elementor-module__content {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--20, 12px);
	min-inline-size: 0;
}

.sggw-elementor-modules.is-layout-horizontal
	.sggw-elementor-module__content {
	flex: 1 1 auto;
	inline-size: auto;
}

.sggw-elementor-module__title,
.sggw-elementor-module__description {
	color: var(--sggw-text);
	margin: 0;
	overflow-wrap: anywhere;
}

.sggw-elementor-module__title {
	font-family: var(--wp--preset--font-family--heading, inherit);
	font-size: var(--wp--preset--font-size--large, 24px);
	font-style: normal;
	font-weight: var(--wp--custom--typography--font-weight--semibold, 600);
	line-height: var(--wp--custom--typography--line-height--large, 1.25);
}

.sggw-elementor-module__description {
	font-family: var(--wp--preset--font-family--body, inherit);
	font-size: var(--wp--preset--font-size--medium, 16px);
	font-style: normal;
	font-weight: var(--wp--custom--typography--font-weight--regular, 400);
	line-height: var(--wp--custom--typography--line-height--supporting, 1.6);
}

.sggw-elementor-module__action {
	align-items: center;
	align-self: flex-start;
	color: var(--sggw-link-foreground);
	display: inline-flex;
	font-family: var(--wp--preset--font-family--body, inherit);
	font-size: var(--wp--preset--font-size--medium, 16px);
	font-style: normal;
	font-weight: var(--wp--custom--typography--font-weight--regular, 400);
	gap: var(--wp--preset--spacing--10, 8px);
	line-height: var(--wp--custom--typography--line-height--medium, 1.5);
	margin-block-start: auto;
	padding-block-start: var(--wp--preset--spacing--50, 32px);
	text-decoration: none;
}

.sggw-elementor-modules.is-layout-horizontal
	.sggw-elementor-module__action {
	align-self: flex-start;
	flex: 0 0 auto;
	margin-block-start: 0;
	margin-inline-start: auto;
	padding-block-start: 0;
}

.sggw-elementor-module__surface-link {
	border-radius: inherit;
	inset: 0;
	outline: var(--wp--custom--line--focus-ring-width, 3px) solid transparent;
	outline-offset: var(--wp--custom--line--focus-ring-offset-compact, 2px);
	position: absolute;
	text-decoration: none;
	z-index: 1;
}

.sggw-elementor-module__surface-link:focus:not(:focus-visible) {
	outline-color: transparent;
}

.sggw-elementor-module__surface-link:focus-visible {
	outline-color: var(--sggw-line-focus);
}

.sggw-elementor-module__action-label {
	text-decoration-color: currentColor;
	text-decoration-line: var(--sggw-inline-link-decoration-rest, none);
	text-decoration-skip-ink: auto;
	text-decoration-thickness: var(--sggw-link-decoration-thickness, .08em);
	text-underline-offset: var(--sggw-link-underline-offset, .18em);
}

.sggw-elementor-module__action-icon {
	align-items: center;
	block-size: var(--sggw-icon-size-medium, 24px);
	display: inline-flex;
	flex: 0 0 var(--sggw-icon-size-medium, 24px);
	font-size: var(--sggw-icon-size-medium, 24px);
	inline-size: var(--sggw-icon-size-medium, 24px);
	justify-content: center;
	line-height: 1;
}

.sggw-elementor-module__action-icon :is(i, svg) {
	block-size: 1em;
	color: currentColor;
	display: block;
	fill: currentColor;
	font-size: inherit;
	inline-size: 1em;
}

.sggw-elementor-module__action:focus:not(:focus-visible) {
	outline: none;
}

.sggw-elementor-module__action:focus-visible {
	border-radius: var(--wp--custom--radius--x-small, 2px);
	outline: var(--wp--custom--line--focus-ring-width, 3px) solid var(--sggw-line-focus);
	outline-offset: var(--wp--custom--line--focus-ring-offset-compact, 2px);
}

.sggw-elementor-module__action:is(:visited, :hover, :active, :focus-visible) {
	color: var(--sggw-link-foreground);
	text-decoration: none;
}

.sggw-elementor-module__action:is(:active, :focus-visible)
	.sggw-elementor-module__action-label {
	text-decoration-line: var(--sggw-link-decoration-interactive, underline);
}

@media (hover: hover) and (pointer: fine) {
	.sggw-elementor-module:not(.is-unframed):has(.sggw-elementor-module__action):hover {
		box-shadow: var(--wp--custom--shadow--small, 0 4px 12px 0 rgb(0 0 0 / 20%));
	}

	.sggw-elementor-module:not(.is-unframed):has(.sggw-elementor-module__surface-link):hover {
		box-shadow: var(--wp--custom--shadow--small, 0 4px 12px 0 rgb(0 0 0 / 20%));
	}

	.sggw-elementor-module__action:hover
		.sggw-elementor-module__action-label {
		text-decoration-line: var(--sggw-link-decoration-interactive, underline);
	}

}

.sggw-elementor-module:not(.is-unframed):has(.sggw-elementor-module__surface-link:focus-visible) {
	box-shadow: var(--wp--custom--shadow--small, 0 4px 12px 0 rgb(0 0 0 / 20%));
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
	.sggw-elementor-module {
		transition: box-shadow 150ms ease;
	}

	.sggw-elementor-module__surface-link {
		transition: outline-color 150ms ease;
	}
}

@media (prefers-reduced-motion: reduce) {
	.sggw-elementor-module {
		transition: none;
	}

	.sggw-elementor-module__surface-link {
		transition: none;
	}
}

@media (forced-colors: active) {
	.sggw-elementor-module {
		background: Canvas !important;
		border: 1px solid CanvasText;
		box-shadow: none !important;
		color: CanvasText;
		forced-color-adjust: none;
	}

	.sggw-elementor-module.is-unframed {
		background: transparent !important;
		border: 0;
	}

	.sggw-elementor-module__title,
	.sggw-elementor-module__description {
		color: CanvasText;
	}

	.sggw-elementor-module__graphic {
		color: CanvasText;
	}

	.sggw-elementor-module__graphic.is-framed {
		background: Canvas;
		outline: 1px solid CanvasText;
		outline-offset: -1px;
	}

	.sggw-elementor-module__icon-placeholder::before {
		background-color: CanvasText;
	}

	.sggw-elementor-module__media {
		background: Canvas;
		outline: 1px solid CanvasText;
		outline-offset: -1px;
	}

	.sggw-elementor-module__image-placeholder {
		background-color: CanvasText;
	}

	.sggw-elementor-module__action {
		color: LinkText;
		text-decoration: none;
	}

	.sggw-elementor-module__action-label {
		text-decoration-line: underline;
	}

	.sggw-elementor-module__action:focus-visible {
		outline-color: Highlight;
	}

	.sggw-elementor-module__surface-link:focus-visible {
		outline-color: Highlight;
	}
}
