/* Shen Elementor widgets: shared sizing and customizable visual tokens. */
.e-con:has(> [class*="elementor-widget-shen-"]) {
	padding-right: 0;
	padding-left: 0;
}

[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child {
	--shen-widget-content-width: var(--shen-content-width, 100%);
	--shen-widget-gutter: var(--shen-content-gutter, 20px);
	box-sizing: border-box;
	max-width: 100%;
	overflow-wrap: anywhere;
}

[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child *,
[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child *::before,
[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child *::after {
	box-sizing: border-box;
}

[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child img,
[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child video,
[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child iframe,
[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child svg {
	max-width: 100%;
}

[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__inner"] > *,
[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__layout"] > *,
[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__grid"] > * {
	min-width: 0;
}

[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child:is([class$="__inner"], [class$="__container"]),
[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child > [class$="__inner"],
[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child > [class$="__container"] {
	width: 100%;
	max-width: var(--shen-widget-content-width);
	margin-right: auto;
	margin-left: auto;
	/*
	 * The unified gutter and the optional content padding are separate controls.
	 * Keep the gutter as the permanent outer safe area and add any user-defined
	 * inner padding to it instead of allowing Elementor's padding shorthand to
	 * overwrite the gutter.
	 */
	padding-top: var(--shen-widget-inner-padding-top);
	padding-right: calc(var(--shen-widget-gutter) + var(--shen-widget-inner-padding-right, 0px));
	padding-bottom: var(--shen-widget-inner-padding-bottom);
	padding-left: calc(var(--shen-widget-gutter) + var(--shen-widget-inner-padding-left, 0px));
	box-sizing: border-box;
}

/* Landing-page widget typography and section rhythm. */
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child:has(> [class$="__inner"]):not(.shen-site-header):not(.shen-category-hero):not(.shen-site-footer):not(.shen-newsletter):not(.shen-terms):not(.shen-resource-profile-breadcrumb) {
	padding-top: var(--shen-section-padding-y, 64px);
	padding-right: 0;
	padding-bottom: var(--shen-section-padding-y, 64px);
	padding-left: 0;
}

.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child:has(> [class$="__inner"]):not(.shen-site-header):not(.shen-site-footer) {
	font-size: 16px;
	line-height: 1.7;
}

.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child:has(> [class$="__inner"]):not(.shen-site-header):not(.shen-site-footer) p,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child:has(> [class$="__inner"]):not(.shen-site-header):not(.shen-site-footer) li {
	font-size: 16px;
	line-height: 1.7;
}

.elementor-widget[class*="elementor-widget-shen-"]:where(:not(.elementor-widget-shen-ai-hero):not(.elementor-widget-shen-resource-profile-hero):not(.elementor-widget-shen-category-hero):not(.elementor-widget-shen-cta):not(.elementor-widget-shen-explore-cta):not(.elementor-widget-shen-notification-cta):not(.elementor-widget-shen-member-notification):not(.elementor-widget-shen-site-footer)) h2:is([class*="__title"], [class*="__heading"]) {
	font-size: 32px;
	line-height: 1.3;
}

.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__card"] {
	font-size: 15px;
}

.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__card"] p,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__card"] li {
	font-size: 15px;
	line-height: 1.65;
}

:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__card"] h3) {
	font-size: 20px;
	line-height: 1.4;
}

/* Banner / Hero defaults. Elementor element-specific controls can override them. */
:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child[class*="hero"] [class*="__title"]),
:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child[class*="banner"] [class*="__title"]) {
	font-size: clamp(36px, 4vw, 48px);
	line-height: 1.2;
}

.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child[class*="hero"] [class*="__subtitle"],
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child[class*="banner"] [class*="__subtitle"] {
	font-size: 20px;
	line-height: 1.5;
}

.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child[class*="hero"] [class*="__description"],
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child[class*="banner"] [class*="__description"] {
	font-size: 16px;
	line-height: 1.75;
}

.elementor-widget[class*="elementor-widget-shen-"]:not(.elementor-widget-shen-cta) > .elementor-widget-container > :first-child a[class*="button"],
.elementor-widget[class*="elementor-widget-shen-"]:not(.elementor-widget-shen-cta) > .elementor-widget-container > :first-child button[class*="button"],
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__buttons"] a {
	font-size: 15px;
}

.elementor-widget[class*="elementor-widget-shen-"]:not(.elementor-widget-shen-cta) > .elementor-widget-container > :first-child a[class*="__button"],
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__buttons"] a,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__cta"] a,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child a[class*="__read"],
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child button:not(.shen-site-header__close):not(.shen-site-header__backdrop):not(.shen-article-header__action):not(.shen-ac__toc-heading) {
	min-height: 44px;
	font-size: 15px;
	line-height: 1.35;
	border-style: solid;
	border-width: 1px;
	box-sizing: border-box;
	align-items: center;
	justify-content: center;
}

/* 并排 CTA 使用相同盒模型，避免实色与描边按钮出现尺寸差。 */
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__buttons"] > a.is-primary,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__buttons"] > a.is-secondary {
	border-width: 1px;
	border-style: solid;
	box-sizing: border-box;
}

.elementor-widget[class*="elementor-widget-shen-"]:not(.elementor-widget-shen-cta) > .elementor-widget-container > :first-child a[class*="__button"]:not(.is-secondary),
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__buttons"] a.is-primary,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__cta"] a.is-primary {
	border-color: var(--shen-primary, #001f55);
	background-color: var(--shen-primary, #001f55);
	color: #fff;
}

/* The coming-tools notification card intentionally uses a light primary CTA. */
.elementor-widget.elementor-widget-shen-coming-tools > .elementor-widget-container > .shen-coming-tools .shen-coming-tools__cta > a.is-primary {
	border: 1px solid #fff;
	background-color: #fff;
	color: var(--shen-coming-primary, #001f55);
}

.elementor-widget.elementor-widget-shen-coming-tools > .elementor-widget-container > .shen-coming-tools .shen-coming-tools__cta > a.is-primary:hover,
.elementor-widget.elementor-widget-shen-coming-tools > .elementor-widget-container > .shen-coming-tools .shen-coming-tools__cta > a.is-primary:focus-visible {
	border-color: #fff;
	background-color: #f4f7ff;
	color: var(--shen-coming-primary, #001f55);
}

.elementor-widget.elementor-widget-shen-coming-tools > .elementor-widget-container > .shen-coming-tools .shen-coming-tools__cta > a.is-secondary {
	border: 1px solid rgba(255, 255, 255, .55);
	background-color: transparent;
	color: #fff;
}

/* Keep both Explore CTA buttons dimensionally identical and visibly bordered. */
.elementor-widget.elementor-widget-shen-explore-cta > .elementor-widget-container > .shen-explore-cta .shen-explore-cta__buttons > a,
.elementor-widget.elementor-widget-shen-explore-cta > .elementor-widget-container > .shen-explore-cta .shen-explore-cta__buttons > a.is-primary {
	min-height: 54px;
	border: 1px solid rgba(255, 255, 255, .55);
	box-shadow: none;
	box-sizing: border-box;
}

.elementor-widget.elementor-widget-shen-explore-cta > .elementor-widget-container > .shen-explore-cta .shen-explore-cta__buttons > a.is-primary {
	border-color: #fff;
	background-color: #fff;
	color: var(--shen-explore-primary, #001f55);
}

.elementor-widget.elementor-widget-shen-explore-cta > .elementor-widget-container > .shen-explore-cta .shen-explore-cta__buttons > a:hover,
.elementor-widget.elementor-widget-shen-explore-cta > .elementor-widget-container > .shen-explore-cta .shen-explore-cta__buttons > a.is-primary:hover {
	border-color: #fff;
	background-color: #f4f7ff;
	box-shadow: none;
	color: var(--shen-explore-primary, #001f55);
}

.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child button[class*="__submit"] {
	border-color: var(--shen-primary, #001f55);
	background-color: var(--shen-primary, #001f55);
	color: #fff;
}

.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child a[class*="__read"] {
	border-color: var(--shen-primary, #001f55);
	color: var(--shen-primary, #001f55);
}

.elementor-widget[class*="elementor-widget-shen-"]:not(.elementor-widget-shen-cta) > .elementor-widget-container > :first-child a[class*="__button"]:hover,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__buttons"] a:hover,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__cta"] a:hover,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child a[class*="__read"]:hover,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child button[class*="__submit"]:hover,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child button:not(.shen-site-header__close):not(.shen-site-header__backdrop):not(.shen-article-header__action):not(.shen-ac__toc-heading):hover {
	border-color: var(--shen-primary-hover, #0b376f);
	background-color: var(--shen-primary-hover, #0b376f);
	color: #fff;
}

/* Small auxiliary hierarchy: compact, but never use unreadable 7–10px text. */
:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__eyebrow"]),
:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__status"]),
:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__badge"]),
:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__label"]) {
	font-size: 13px;
	line-height: 1.4;
}

.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__note"],
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__meta"],
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child time {
	font-size: 14px;
	line-height: 1.55;
}

.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__english"],
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__category"],
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__legend"],
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__card-top"] > span,
.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child small {
	font-size: 13px;
	line-height: 1.45;
}

:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__features"]),
:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__features"] > span),
:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class*="__feature"] strong) {
	font-size: 14px;
	line-height: 1.6;
}

@media (max-width: 1024px) {
	.elementor-widget[class*="elementor-widget-shen-"]:where(:not(.elementor-widget-shen-ai-hero):not(.elementor-widget-shen-resource-profile-hero):not(.elementor-widget-shen-category-hero):not(.elementor-widget-shen-cta):not(.elementor-widget-shen-explore-cta):not(.elementor-widget-shen-notification-cta):not(.elementor-widget-shen-member-notification):not(.elementor-widget-shen-site-footer)) h2:is([class*="__title"], [class*="__heading"]) {
		font-size: 30px;
	}
}

@media (max-width: 767px) {
	[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child {
		--shen-widget-gutter: var(--shen-content-gutter-mobile, 20px);
	}

	.elementor-widget[class*="elementor-widget-shen-"]:where(:not(.elementor-widget-shen-ai-hero):not(.elementor-widget-shen-resource-profile-hero):not(.elementor-widget-shen-category-hero):not(.elementor-widget-shen-cta):not(.elementor-widget-shen-explore-cta):not(.elementor-widget-shen-notification-cta):not(.elementor-widget-shen-member-notification):not(.elementor-widget-shen-site-footer)) h2:is([class*="__title"], [class*="__heading"]) {
		font-size: 28px;
	}

	:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child[class*="hero"] [class*="__title"]),
	:where(.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child[class*="banner"] [class*="__title"]) {
		font-size: 34px;
	}

	.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child[class*="hero"] [class*="__subtitle"],
	.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child[class*="banner"] [class*="__subtitle"] {
		font-size: 18px;
	}

	.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__buttons"] {
		width: 100%;
		flex-wrap: wrap;
	}

	.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__buttons"] > a,
	.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__buttons"] > button {
		max-width: 100%;
	}

	/* Generic safety net: prevent fixed desktop dimensions from overflowing phones. */
	.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__inner"],
	.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child [class$="__container"] {
		max-width: 100%;
	}

	.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child table {
		min-width: 680px;
	}

	.elementor-widget[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child :has(> table) {
		max-width: 100%;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}
}

[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child,
[class*="elementor-widget-shen-"] [class*="__card"],
[class*="elementor-widget-shen-"] a,
[class*="elementor-widget-shen-"] button {
	transition-property: color, background-color, border-color, border-radius, box-shadow, opacity, transform, filter;
}

@media (prefers-reduced-motion: reduce) {
	[class*="elementor-widget-shen-"] > .elementor-widget-container > :first-child,
	[class*="elementor-widget-shen-"] [class*="__card"],
	[class*="elementor-widget-shen-"] a,
	[class*="elementor-widget-shen-"] button {
		transition-duration: 0.01ms !important;
	}
}
