/**
 * GEOCIKLO Core — Internal Page Width Contract (Fase 2.5 + Fase 4A)
 *
 * Single source of truth for the horizontal page frame of internal (non-Home)
 * pages and Hubs. Home is NOT affected: this file is registered only and pulled
 * in as a dependency of internal stylesheets.
 *
 * Structural rule (HARD):
 *   - Horizontal gutter lives on .gc-page-section (padding-inline) — ONCE.
 *   - Max-width lives on .gc-page-container (max-width + margin-inline:auto) — ONCE.
 *   - NEVER combine width: calc(100% - Npx) with padding-inline on the same
 *     level, and NEVER re-apply a container inside a container. Use
 *     .gc-page-container--flush for descendant wrappers that must survive for
 *     structural / JS reasons.
 *
 * Resulting page frame:
 *   viewport >= 1428px -> 1380px
 *   viewport <  1428px -> viewport - (2 * gutter)
 */

:root {
	/* Universal Page Frame & Content Width Contract (Measured from Home Reference) */
	--gc-page-max: 1380px;
	--gc-site-content-max: var(--gc-page-max, 1380px);
	--gc-page-gutter: 24px;
	--gc-site-gutter-desktop: 24px;
	--gc-site-gutter-tablet: 24px;
	--gc-page-gutter-sm: 16px;
	--gc-site-gutter-mobile: 16px;

	/* Contextual scrollspy rail budget */
	--gc-scrollspy-width: clamp(160px, 12vw, 200px);
	--gc-scrollspy-gap: clamp(24px, 2vw, 32px);
}

@media (max-width: 600px) {
	:root {
		--gc-page-gutter: var(--gc-page-gutter-sm);
	}
}

/* ==========================================================================
   Level -1 — GEOCIKLO Universal Shell: Hello Elementor 1140px Override
   Neutraliza `body:not([class*=elementor-page-]) .site-main { max-width:1140px }`
   de Hello Elementor SIN modificar el tema.
   Home (Post ID 20) queda estrictamente excluido.
   ========================================================================== */
body.gc-internal-hub .site-main,
body.gc-non-home .site-main,
body:not(.home):not(.page-id-20) .site-main.gc-shell-site-main,
body:not(.home):not(.page-id-20) .site-main:has(.gc-iw),
body:not(.home):not(.page-id-20) .site-main:has(.gc-universal-container) {
	width: 100% !important;
	max-width: none !important;
	margin-inline: 0 !important;
	padding-inline: 0 !important;
}

/* ==========================================================================
   Level 0 — Full-bleed band. Owns the horizontal gutter. Nothing else may.
   ========================================================================== */
.gc-page-section,
.gc-solutions-section,
.gc-sectors-root section,
.gc-materials-root section,
.gc-platform-root section,
.gc-impact-root section,
.gc-resources-root section,
.gc-somos-root section,
.gc-contact-root section {
	padding-inline: var(--gc-page-gutter);
}

/* ==========================================================================
   Level 1 — The page frame. Applied EXACTLY once per band.
   ========================================================================== */
.gc-universal-container,
.gc-page-container,
.gc-solutions-container,
.gc-sec-container,
.gc-mat-container,
.gc-plt-container,
.gc-imp-container,
.gc-res-container,
.gc-somos-container,
.gc-cnt-container {
	width: min(calc(100% - (2 * var(--gc-page-gutter, 24px))), var(--gc-page-max, 1380px)) !important;
	max-width: var(--gc-page-max, 1380px) !important;
	margin-inline: auto !important;
	padding-inline: 0 !important;
	box-sizing: border-box !important;
}

/* ==========================================================================
   Level 2+ — Descendant wrappers kept for structure/JS hooks only.
   Must never reduce the frame a second time.
   ========================================================================== */
.gc-page-container--flush,
.gc-solutions-layout__content .gc-page-container,
.gc-solutions-layout__content .gc-wi-container,
.gc-solutions-layout__content .gc-so-container,
.gc-solutions-layout__content .gc-tl-container {
	width: 100% !important;
	max-width: none !important;
	margin-inline: 0 !important;
	padding-inline: 0 !important;
}

/* Defensive: a container nested inside another container is always flush. */
.gc-page-container .gc-page-container,
.gc-page-container .gc-solutions-container,
.gc-page-container .gc-sec-container,
.gc-page-container .gc-mat-container,
.gc-page-container .gc-plt-container,
.gc-page-container .gc-imp-container,
.gc-page-container .gc-res-container,
.gc-page-container .gc-somos-container,
.gc-page-container .gc-cnt-container {
	max-width: none !important;
	margin-inline: 0 !important;
	padding-inline: 0 !important;
}

/* ==========================================================================
   GEOCIKLO NON-HOME GLASS + HOME-REFERENCE HERO SYSTEM (PILOT)
   Home reference measured read-only on 2026-08-28: 765px at all audited widths.
   ========================================================================== */
.gc-non-home {
	--gc-reference-hero-height-desktop: 765px;
	--gc-reference-hero-height-laptop: 765px;
	--gc-reference-hero-height-tablet: 765px;
	--gc-reference-hero-height-mobile: 765px;
	--gc-internal-hero-height: var(--gc-reference-hero-height-desktop);
	--gc-glass-bg: rgba(255, 255, 255, .68);
	--gc-glass-bg-soft: rgba(255, 255, 255, .48);
	--gc-glass-bg-strong: rgba(255, 255, 255, .82);
	--gc-glass-border: rgba(255, 255, 255, .72);
	--gc-glass-border-teal: rgba(6, 96, 92, .14);
	--gc-glass-blur: 20px;
	--gc-glass-saturation: 135%;
	--gc-glass-shadow: 0 18px 55px rgba(7, 63, 77, .10);
	--gc-glass-radius: 24px;
}

@media (max-width: 1199px) and (min-width: 1024px) {
	.gc-non-home { --gc-internal-hero-height: var(--gc-reference-hero-height-laptop); }
}

@media (max-width: 1023px) and (min-width: 768px) {
	.gc-non-home { --gc-internal-hero-height: var(--gc-reference-hero-height-tablet); }
}

@media (max-width: 767px) {
	.gc-non-home { --gc-internal-hero-height: var(--gc-reference-hero-height-mobile); }
}

.gc-non-home .gc-glass-surface {
	background: linear-gradient(135deg, rgba(255, 255, 255, .78), rgba(255, 255, 255, .48));
	backdrop-filter: blur(var(--gc-glass-blur)) saturate(var(--gc-glass-saturation));
	-webkit-backdrop-filter: blur(var(--gc-glass-blur)) saturate(var(--gc-glass-saturation));
	border: 1px solid var(--gc-glass-border);
	box-shadow: var(--gc-glass-shadow);
	border-radius: var(--gc-glass-radius);
}

.gc-non-home .gc-glass-dark {
	background: linear-gradient(135deg, rgba(7, 63, 77, .72), rgba(3, 88, 119, .56));
	backdrop-filter: blur(22px) saturate(135%);
	-webkit-backdrop-filter: blur(22px) saturate(135%);
	border: 1px solid rgba(255, 255, 255, .14);
	box-shadow: 0 22px 60px rgba(7, 63, 77, .18);
	border-radius: var(--gc-glass-radius);
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
	.gc-non-home .gc-glass-surface {
		background: rgba(255, 255, 255, .92);
	}

	.gc-non-home .gc-glass-dark {
		background: rgba(7, 63, 77, .92);
	}
}

@media (prefers-reduced-transparency: reduce) {
	.gc-non-home .gc-glass-surface {
		background: rgba(255, 255, 255, .94);
		backdrop-filter: none;
		-webkit-backdrop-filter: none;
	}

	.gc-non-home .gc-glass-dark {
		background: rgba(7, 63, 77, .94);
		backdrop-filter: none;
		-webkit-backdrop-filter: none;
	}
}

/* ==========================================================================
   Editorial Context Block (Centered by default across all surfaces)
   ========================================================================== */
.gc-context-block {
	max-width: var(--gc-prose-lead-max, 820px) !important;
	margin-left: auto !important;
	margin-right: auto !important;
	margin-bottom: clamp(28px, 4vw, 44px);
	text-align: center !important;
	display: flex !important;
	flex-direction: column !important;
	align-items: center !important;
}

.gc-context-block__eyebrow {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	margin-bottom: 14px;
	text-align: center !important;
}

.gc-context-block__title {
	margin-left: auto !important;
	margin-right: auto !important;
	margin-bottom: 14px;
	text-align: center !important;
	max-width: 100% !important;
}

.gc-context-block__desc {
	margin-left: auto !important;
	margin-right: auto !important;
	margin-bottom: 0;
	text-align: center !important;
	max-width: 760px !important;
}

.gc-context-block__micro {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 8px;
	margin-top: 16px;
	margin-bottom: 0;
	font-style: italic;
	text-align: center !important;
}

.gc-context-block__micro-mark {
	flex-shrink: 0;
	width: 14px;
	height: 1px;
	margin-top: 0;
	background: var(--gc-accent, #3fae6a);
}

.gc-context-block--left {
	margin-left: 0 !important;
	margin-right: auto !important;
	text-align: left !important;
	align-items: flex-start !important;
}

.gc-context-block--left .gc-context-block__eyebrow,
.gc-context-block--left .gc-context-block__title,
.gc-context-block--left .gc-context-block__desc {
	text-align: left !important;
	margin-left: 0 !important;
}

.gc-context-block--left .gc-context-block__micro {
	justify-content: flex-start !important;
	text-align: left !important;
}
