/**
 * GE2studio V1.10.23 — visual balance and consistency gate.
 * Loaded last on every route; GE2 Trace remains the canonical icon finish.
 */

/* Editorial pictograms: stable optical size; material lives in the V1.10.22 system. */
.ge2-icon .ge2-glyph {
	width: min(66%, 32px);
	height: min(66%, 32px);
}

/*
 * This file is the final cascade layer. Reassert the approved enamel material
 * with enough specificity to neutralise historical page-level icon finishes.
 */
body .premium-icon.ge2-icon[data-icon-system="ge2-trace-v1122"],
body .home-copilot-icon.ge2-icon[data-icon-system="ge2-trace-v1122"] {
	display: grid;
	place-items: center;
	border: 1px solid rgba(232, 97, 41, .56);
	border-radius: 31%;
	background:
		linear-gradient(145deg, rgba(255, 255, 255, .06), transparent 38%),
		linear-gradient(145deg, #252a2b 0%, #151819 48%, #0b0d0e 100%);
	color: var(--ge2-trace-copper);
	box-shadow:
		inset 0 1px 0 rgba(255, 255, 255, .1),
		inset 0 -1px 0 rgba(0, 0, 0, .38),
		0 12px 28px rgba(15, 18, 19, .14);
}

/* The two historical micro-scenes need their own legible optical master. */
.premium-page :is(.intro-scene-platform, .intro-scene-offer) .premium-icon.ge2-icon .ge2-glyph {
	width: 20px;
	height: 20px;
}

.premium-page .intro-scene-security li .premium-icon.ge2-icon .ge2-glyph {
	width: 18px;
	height: 18px;
}

.premium-page h2,
.premium-page h3,
.premium-page article > strong {
	text-wrap: balance;
}

.premium-page article p,
.premium-page article li {
	text-wrap: pretty;
}

/* The human decision gate stays deliberately open: never a completed check. */
.ge2-icon[data-icon="decision"] .ge2-glyph,
.ge2-icon[data-icon="gate"] .ge2-glyph {
	width: min(62%, 30px);
	height: min(62%, 30px);
}

/* Intelligence: remove the oversized hero, turn the rail into useful navigation. */
.intelligence-v1120 .intel20-hero {
	min-height: 0;
	padding: 96px 0 38px;
}

.intelligence-v1120 .intel20-hero-grid {
	padding-bottom: 44px;
}

.intelligence-v1120 .intel20-rail {
	border: 1px solid var(--intel20-line-dark);
	border-radius: 18px;
	background: rgba(255, 255, 255, .025);
	overflow: hidden;
}

.intelligence-v1120 .intel20-rail a {
	display: grid;
	grid-template-columns: auto 1fr;
	grid-template-rows: auto auto;
	column-gap: 13px;
	row-gap: 2px;
	min-height: 82px;
	padding: 15px 18px;
}

.intelligence-v1120 .intel20-rail a > span {
	grid-row: 1 / 3;
	align-self: center;
}

.intelligence-v1120 .intel20-rail a > strong {
	align-self: end;
	color: #f2ede5;
	font-size: 12px;
	font-weight: 690;
}

.intelligence-v1120 .intel20-rail a > small {
	align-self: start;
	color: var(--intel20-muted-dark);
	font-size: 9px;
	font-weight: 520;
	letter-spacing: .015em;
}

/* Intelligence method: one compact sequence instead of six empty tiles. */
.intelligence-v1120 .intel20-cycle {
	padding: 104px 0 112px;
}

.intelligence-v1120 .intel20-cycle-grid {
	position: relative;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	gap: 0;
	margin-top: 58px;
	border: 1px solid var(--intel20-line-light);
	border-radius: 24px;
	background: rgba(255, 255, 255, .34);
	overflow: hidden;
}

.intelligence-v1120 .intel20-cycle-grid li {
	display: flex;
	flex-direction: column;
	min-height: 246px;
	padding: 25px 20px 24px;
	border: 0;
	border-radius: 0;
	background: transparent;
	overflow: visible;
}

.intelligence-v1120 .intel20-cycle-grid li + li {
	border-left: 1px solid var(--intel20-line-light);
}

.intelligence-v1120 .intel20-cycle-grid li::after {
	display: none;
}

.intelligence-v1120 .intel20-cycle-grid li:not(:last-child)::before {
	content: "";
	position: absolute;
	top: 57px;
	left: 65px;
	width: calc(100% - 65px);
	height: 1px;
	background: linear-gradient(90deg, rgba(157, 63, 24, .36), rgba(157, 63, 24, .08));
	pointer-events: none;
}

.intelligence-v1120 .intel20-cycle-grid .premium-icon {
	position: relative;
	z-index: 1;
	width: 64px;
	height: 64px;
	margin: 0 0 40px;
	border-color: rgba(232, 97, 41, .56);
	border-radius: 19px;
	background:
		linear-gradient(145deg, rgba(255, 255, 255, .06), transparent 38%),
		linear-gradient(145deg, #252a2b 0%, #151819 48%, #0b0d0e 100%);
	box-shadow:
		inset 0 1px 0 rgba(255, 255, 255, .1),
		0 18px 36px rgba(17, 19, 21, .16);
}

.intelligence-v1120 .intel20-cycle-grid .ge2-glyph {
	width: 35px;
	height: 35px;
}

.intelligence-v1120 .intel20-cycle-grid li > span:not(.premium-icon) {
	top: 28px;
	right: 20px;
}

.intelligence-v1120 .intel20-cycle-copy {
	margin-top: auto;
}

.intelligence-v1120 .intel20-cycle-grid h3 {
	font-size: 23px;
	line-height: 1.05;
}

.intelligence-v1120 .intel20-cycle-grid p {
	font-size: 12px;
	line-height: 1.55;
}

/* The remaining Intelligence icons inherit the same stronger optical weight. */
.intelligence-v1120 .intel20-role-card .ge2-glyph,
.intelligence-v1120 .intel20-trust-grid .ge2-glyph {
	width: 28px;
	height: 28px;
}

@media (max-width: 1180px) {
	.intelligence-v1120 .intel20-cycle-grid {
		grid-template-columns: repeat(3, 1fr);
	}

	.intelligence-v1120 .intel20-cycle-grid li:nth-child(4) {
		border-left: 0;
	}

	.intelligence-v1120 .intel20-cycle-grid li:nth-child(n + 4) {
		border-top: 1px solid var(--intel20-line-light);
	}

	.intelligence-v1120 .intel20-cycle-grid li:nth-child(3)::before,
	.intelligence-v1120 .intel20-cycle-grid li:last-child::before {
		display: none;
	}
}

@media (max-width: 768px) {
	.intelligence-v1120 .intel20-hero {
		padding: 72px 0 28px;
	}

	.intelligence-v1120 .intel20-hero-grid {
		padding-bottom: 42px;
	}

	.intelligence-v1120 .intel20-rail a {
		min-height: 78px;
		padding-inline: 14px;
	}

	.intelligence-v1120 .intel20-cycle {
		padding: 84px 0 92px;
	}

	.intelligence-v1120 .intel20-cycle-grid {
		grid-template-columns: repeat(2, 1fr);
		margin-top: 46px;
	}

	.intelligence-v1120 .intel20-cycle-grid li {
		min-height: 220px;
	}

	.intelligence-v1120 .intel20-cycle-grid li:nth-child(odd) {
		border-left: 0;
	}

	.intelligence-v1120 .intel20-cycle-grid li:nth-child(n + 3) {
		border-top: 1px solid var(--intel20-line-light);
	}

	.intelligence-v1120 .intel20-cycle-grid li:nth-child(2n)::before {
		display: none;
	}
}

@media (max-width: 430px) {
	.intelligence-v1120 .intel20-hero {
		padding: 56px 0 24px;
	}

	.intelligence-v1120 .intel20-rail {
		grid-template-columns: 1fr;
	}

	.intelligence-v1120 .intel20-rail a,
	.intelligence-v1120 .intel20-rail a:nth-child(3) {
		min-height: 70px;
		border-left: 0;
	}

	.intelligence-v1120 .intel20-rail a + a {
		border-top: 1px solid var(--intel20-line-dark);
	}

	.intelligence-v1120 .intel20-cycle-grid {
		grid-template-columns: 1fr;
	}

	.intelligence-v1120 .intel20-cycle-grid li {
		display: grid;
		grid-template-columns: 64px 1fr;
		gap: 18px;
		align-items: center;
		min-height: 0;
		padding: 22px 20px;
		border-left: 0;
	}

	.intelligence-v1120 .intel20-cycle-grid li + li {
		border-top: 1px solid var(--intel20-line-light);
	}

	.intelligence-v1120 .intel20-cycle-grid li::before {
		display: none;
	}

	.intelligence-v1120 .intel20-cycle-grid .premium-icon {
		grid-row: 1;
		margin: 0;
	}

	.intelligence-v1120 .intel20-cycle-grid li > span:not(.premium-icon) {
		top: 18px;
		right: 18px;
	}

	.intelligence-v1120 .intel20-cycle-copy {
		grid-column: 2;
		margin: 0;
		padding-right: 22px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.premium-icon.ge2-icon,
	.home-copilot-icon.ge2-icon {
		transition: none;
	}
}

@media (forced-colors: active) {
	body .premium-icon.ge2-icon[data-icon-system="ge2-trace-v1122"],
	body .home-copilot-icon.ge2-icon[data-icon-system="ge2-trace-v1122"] {
		border-color: CanvasText;
		background: Canvas;
		color: CanvasText;
	}

	body .premium-icon.ge2-icon[data-icon-system="ge2-trace-v1122"]::after,
	body .home-copilot-icon.ge2-icon[data-icon-system="ge2-trace-v1122"]::after {
		display: none;
	}

	body .premium-icon.ge2-icon,
	body .home-copilot-icon.ge2-icon,
	.intelligence-v1120 .intel20-cycle-grid,
	.intelligence-v1120 .intel20-rail {
		box-shadow: none;
	}
}

/* --------------------------------------------------------------------------
   V1.10.23 — global composition balance

   The previous static gate could validate selectors without detecting empty
   grid rows. These final rules remove every confirmed row-span imbalance.
   -------------------------------------------------------------------------- */

@media (min-width: 901px) {
	.seo-challenge-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		grid-template-rows: auto;
		align-items: stretch;
		gap: 14px;
	}

	.seo-challenge-grid article,
	.seo-challenge-grid article:first-child {
		grid-row: auto;
		min-height: 272px;
		padding: 30px;
	}

	.seo-challenge-grid article h3,
	.seo-challenge-grid article:first-child h3,
	.seo-challenge-grid article:not(:first-child) h3 {
		margin: clamp(34px, 3.2vw, 48px) 0 10px;
	}

	.offer-page .offer-quote-lines {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		grid-template-rows: auto;
		align-items: stretch;
	}

	.offer-page .offer-quote-lines article,
	.offer-page .offer-quote-lines article:first-child {
		grid-row: auto;
		min-height: 268px;
		padding: 30px;
	}

	.offer-page .offer-quote-lines article small {
		margin-top: 26px;
	}

	.migration-page .migration-acts > article:nth-child(2) {
		transform: none;
	}
}

@media (min-width: 1181px) {
	.seo-capability-list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		align-items: stretch;
	}

	.seo-capability-list article:nth-child(n) {
		grid-column: auto;
		min-height: 184px;
	}

	.seo-capability-list--four {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1101px) {
	.experiences-page .split-section .content-list > li:last-child:nth-child(odd),
	.studios-page .split-section .content-list:not(.studio-principles) > li:last-child:nth-child(odd) {
		grid-column: 1 / -1;
	}
}

@media (min-width: 721px) and (max-width: 1120px) {
	.platform-page .operation-grid-section .principle-grid > article:last-child:nth-child(odd),
	.studios-page .studio-principles > li:last-child:nth-child(odd) {
		grid-column: 1 / -1;
	}
}

@media (min-width: 861px) and (max-width: 1000px) {
	.role-panels > :last-child:nth-child(odd) {
		grid-column: 1 / -1;
	}
}

/* On wide desktops the launchers use the otherwise empty right rail. This
   removes their collision with cards while keeping both controls available. */
@media (min-width: 1480px) {
	.ge2-contact-launchers {
		flex-direction: column;
	}
}

@media (min-width: 769px) and (max-width: 1479px) {
	:root {
		--shell: min(1320px, calc(100vw - 144px));
	}

	.ge2-contact-widget {
		right: max(8px, env(safe-area-inset-right));
	}

	.ge2-contact-launchers {
		flex-direction: column;
	}

	.ge2-contact-launchers .ge2-contact-launcher {
		width: 48px;
		height: 48px;
	}
}

@media (min-width: 769px) {
	.ge2-contact-launchers .ge2-contact-launcher::after {
		right: calc(100% + 11px);
		top: 50%;
		bottom: auto;
		transform: translate(5px, -50%);
	}

	.ge2-contact-launchers .ge2-contact-launcher:hover::after,
	.ge2-contact-launchers .ge2-contact-launcher:focus-visible::after {
		transform: translate(0, -50%);
	}
}

@media (min-width: 769px) and (max-width: 1799px) {
	.ge2-contact-launchers .ge2-contact-launcher::after {
		display: none;
	}
}

@media (max-width: 768px) {
	.ge2-contact-widget {
		right: max(72px, calc(env(safe-area-inset-right) + 72px));
		top: max(14px, env(safe-area-inset-top));
		bottom: auto;
	}

	.admin-bar .ge2-contact-widget {
		top: calc(60px + env(safe-area-inset-top));
	}

	.ge2-contact-launchers .ge2-voice-launcher {
		display: none;
	}

	.ge2-contact-launchers .ge2-contact-launcher {
		width: 48px;
		height: 48px;
	}
}

@media (max-width: 900px) {
	.seo-challenge-grid article,
	.seo-challenge-grid article:first-child,
	.offer-page .offer-quote-lines article,
	.offer-page .offer-quote-lines article:first-child {
		grid-row: auto;
		min-height: 0;
	}

	.offer-page .offer-quote-lines {
		grid-template-rows: auto;
	}

	.offer-page .offer-quote-lines article small {
		margin-top: 24px;
	}

	.migration-page .migration-acts > article:nth-child(2) {
		transform: none;
	}
}
