/* ================================================================
   GIROVISUAL — sections.css
   Paleta: #000 negro · #F26522 naranja · #FFF blanco · #1A1A1A oscuro
   ================================================================ */

@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,600;0,700;0,800;0,900;1,400&family=Inter:wght@300;400;500;600&display=swap');


/* ================================================================
   SCROLL PROGRESS BAR
   ================================================================ */
#gv-scroll-progress {
	position: fixed;
	top: 0;
	left: 0;
	width: 0%;
	height: 3px;
	background: #F26522;
	z-index: 99999;
	transition: width 0.1s linear;
	pointer-events: none;
}

/* ================================================================
   CURSOR PERSONALIZADO
   ================================================================ */
body {
	cursor: none;
}

#gv-cursor {
	position: fixed;
	top: 0;
	left: 0;
	width: 20px;
	height: 20px;
	border: 2px solid #F26522;
	border-radius: 50%;
	pointer-events: none;
	z-index: 99998;
	transform: translate(-50%, -50%);
	transition: width 0.25s ease, height 0.25s ease, border-color 0.25s ease, background 0.25s ease;
	mix-blend-mode: normal;
}

#gv-cursor-dot {
	position: fixed;
	top: 0;
	left: 0;
	width: 4px;
	height: 4px;
	background: #FFFFFF;
	border-radius: 50%;
	pointer-events: none;
	z-index: 99999;
	transform: translate(-50%, -50%);
}

#gv-cursor.gv-cursor--hover {
	width: 40px;
	height: 40px;
	background: rgba(242, 101, 34, 0.15);
	border-color: #F26522;
}

@media (max-width: 768px) {
	body { cursor: auto; }
	#gv-cursor, #gv-cursor-dot { display: none; }
}


/* ── Variables ─────────────────────────────────────────────────── */
:root {
	--gv-black:  #000000;
	--gv-orange: #F26522;
	--gv-white:  #FFFFFF;
	--gv-dark:   #1A1A1A;
	--gv-gray:   #333333;
	--gv-gray-lt: rgba(255,255,255,.55);
	--gv-font-h: 'Montserrat', sans-serif;
	--gv-font-b: 'Inter', sans-serif;
	--gv-ease:   cubic-bezier(.22, 1, .36, 1);
}

/* ── Reset base ────────────────────────────────────────────────── */
.gv-hero, .gv-services, .gv-ia-highlight,
.gv-portfolio, .gv-stats, .gv-cta-final {
	box-sizing: border-box;
	font-family: var(--gv-font-b);
}

/* ================================================================
   ANIMATION UTILITIES
   ================================================================ */
.animate-on-scroll {
	opacity: 0;
	transition: opacity .7s var(--gv-ease), transform .7s var(--gv-ease);
}

.animate-on-scroll.fade-up    { transform: translateY(40px); }
.animate-on-scroll.fade-left  { transform: translateX(-40px); }
.animate-on-scroll.fade-right { transform: translateX(40px); }
.animate-on-scroll.scale-in   { transform: scale(.92); }

.animate-on-scroll.visible {
	opacity: 1;
	transform: none;
}

/* stagger helpers */
.delay-1 { transition-delay: .1s !important; }
.delay-2 { transition-delay: .2s !important; }
.delay-3 { transition-delay: .3s !important; }
.delay-4 { transition-delay: .4s !important; }
.delay-5 { transition-delay: .5s !important; }

/* ── Shared pieces ─────────────────────────────────────────────── */
/* ================================================================
   HEADER FIXED — fix recorte y scroll
   ================================================================ */
.gv-header,
#gv-site-header {
	position: fixed !important;
	top: 0 !important;
	left: 0 !important;
	width: 100% !important;
	z-index: 9999 !important;
	height: 90px;
	background: #000000;
	overflow: visible !important;
	transition: all 0.4s ease;
	display: flex;
	align-items: center;
}

.gv-header.scrolled,
#gv-site-header.scrolled {
	height: 65px;
	border-bottom: 2px solid #F26522;
	background: rgba(0, 0, 0, 0.95);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
}

body {
	padding-top: 90px;
}

.gv-section {
	padding: 100px 40px;
}

.gv-container {
	max-width: 1200px;
	margin: 0 auto;
}

.gv-eyebrow {
	display: inline-block;
	font-family: var(--gv-font-b);
	font-size: .7rem;
	font-weight: 700;
	color: var(--gv-orange);
	letter-spacing: 4px;
	text-transform: uppercase;
	margin-bottom: 14px;
}

.gv-section-title {
	font-family: var(--gv-font-h);
	font-size: clamp(2rem, 4.5vw, 3.5rem);
	font-weight: 900;
	color: var(--gv-white);
	margin: 0 0 12px;
	text-transform: uppercase;
	letter-spacing: -1px;
	line-height: 1.1;
}

.gv-section-title em, .gv-accent { font-style: normal; color: var(--gv-orange); }

.gv-section-sub {
	font-family: var(--gv-font-b);
	font-size: 1rem;
	color: var(--gv-gray-lt);
	margin: 0;
	line-height: 1.7;
}

.gv-section-header {
	margin-bottom: 64px;
}

.gv-section-header.centered { text-align: center; }

/* ── Botones ────────────────────────────────────────────────────── */
.gv-btn {
	display: inline-block;
	padding: 15px 38px;
	font-family: var(--gv-font-h);
	font-weight: 700;
	font-size: .8rem;
	text-decoration: none;
	text-transform: uppercase;
	letter-spacing: 2px;
	border: 2px solid var(--gv-orange);
	background: var(--gv-orange);
	color: var(--gv-white);
	transition: background .25s, color .25s, transform .25s, box-shadow .25s;
	position: relative;
	overflow: hidden;
	cursor: pointer;
}

.gv-btn::after {
	content: '';
	position: absolute;
	inset: 0;
	background: rgba(255,255,255,.08);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .3s;
}

.gv-btn:hover::after { transform: scaleX(1); }

.gv-btn:hover {
	background: transparent;
	color: var(--gv-orange);
	transform: translateY(-3px);
	box-shadow: 0 12px 32px rgba(242,101,34,.35);
}

.gv-btn--ghost {
	background: transparent;
	color: rgba(255,255,255,.8);
	border-color: rgba(255,255,255,.35);
}

.gv-btn--ghost::after { background: rgba(255,255,255,.05); }

.gv-btn--ghost:hover {
	border-color: var(--gv-white);
	color: var(--gv-white);
	box-shadow: 0 12px 32px rgba(255,255,255,.1);
}

.gv-btn--outline-orange {
	background: transparent;
	color: var(--gv-orange);
	border-color: var(--gv-orange);
}

.gv-btn--outline-orange:hover {
	background: var(--gv-orange);
	color: var(--gv-white);
}

/* ================================================================
   § 1  HERO
   ================================================================ */
.gv-hero {
	position: relative;
	min-height: 100vh;
	background: var(--gv-black);
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
	padding: 120px 40px 80px;
}

/* Líneas diagonales animadas */
.gv-hero::before {
	content: '';
	position: absolute;
	inset: -50%;
	width: 200%;
	height: 200%;
	background: repeating-linear-gradient(
		-55deg,
		transparent,
		transparent 60px,
		rgba(242,101,34,.028) 60px,
		rgba(242,101,34,.028) 61px
	);
	animation: gv-lines-move 18s linear infinite;
	pointer-events: none;
}

@keyframes gv-lines-move {
	from { transform: translateX(0) translateY(0); }
	to   { transform: translateX(122px) translateY(122px); }
}

/* Glow central */
.gv-hero::after {
	content: '';
	position: absolute;
	top: 50%; left: 50%;
	transform: translate(-50%, -50%);
	width: 800px; height: 600px;
	background: radial-gradient(ellipse, rgba(242,101,34,.07) 0%, transparent 65%);
	pointer-events: none;
}

.gv-hero__inner {
	position: relative;
	z-index: 1;
	text-align: center;
	max-width: 960px;
}

.gv-hero__logo {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 54px;
	padding: 0 32px;
	margin-bottom: 40px;
	background: var(--gv-orange);
	font-family: var(--gv-font-h);
	font-weight: 900;
	font-size: 1.35rem;
	color: var(--gv-white);
	letter-spacing: 4px;
	text-transform: uppercase;
	clip-path: polygon(0 0, 94% 0, 100% 50%, 94% 100%, 0 100%);
	animation: gv-hero-in .9s .1s var(--gv-ease) both;
}

.gv-hero__eyebrow {
	display: block;
	font-family: var(--gv-font-b);
	font-size: .68rem;
	font-weight: 700;
	color: var(--gv-orange);
	letter-spacing: 5px;
	text-transform: uppercase;
	margin-bottom: 24px;
	animation: gv-hero-in .9s .25s var(--gv-ease) both;
}

.gv-hero__title {
	font-family: var(--gv-font-h);
	font-size: clamp(2.6rem, 6.5vw, 5.5rem);
	font-weight: 900;
	color: var(--gv-white);
	line-height: 1.05;
	margin: 0 0 28px;
	text-transform: uppercase;
	letter-spacing: -1.5px;
	animation: gv-hero-in .9s .4s var(--gv-ease) both;
}

.gv-hero__title .gv-accent { color: var(--gv-orange); }

.gv-hero__sub {
	font-family: var(--gv-font-b);
	font-size: clamp(.85rem, 1.8vw, 1.1rem);
	color: rgba(255,255,255,.5);
	letter-spacing: 4px;
	text-transform: uppercase;
	margin: 0 0 52px;
	animation: gv-hero-in .9s .55s var(--gv-ease) both;
}

.gv-hero__actions {
	display: flex;
	gap: 16px;
	justify-content: center;
	flex-wrap: wrap;
	animation: gv-hero-in .9s .7s var(--gv-ease) both;
}

@keyframes gv-hero-in {
	from { opacity: 0; transform: translateY(32px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* Scroll arrow */
.gv-hero__scroll {
	position: absolute;
	bottom: 36px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 1;
	animation: gv-bounce 2.5s ease infinite;
}

.gv-hero__scroll span {
	display: block;
	width: 2px;
	height: 48px;
	background: linear-gradient(to bottom, var(--gv-orange), transparent);
	margin: 0 auto;
}

@keyframes gv-bounce {
	0%,100% { transform: translateX(-50%) translateY(0); }
	50%      { transform: translateX(-50%) translateY(10px); }
}

/* ================================================================
   § 2  SERVICIOS
   ================================================================ */
.gv-services {
	background: var(--gv-black);
}

.gv-services__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
	gap: 20px;
}

.gv-card {
	background: var(--gv-dark);
	padding: 36px 28px;
	border: 1px solid rgba(255,255,255,.05);
	position: relative;
	overflow: hidden;
	transition: transform .4s var(--gv-ease), box-shadow .4s, border-color .4s;
}

.gv-card::before {
	content: '';
	position: absolute;
	top: 0; left: 0; right: 0;
	height: 3px;
	background: var(--gv-orange);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .35s var(--gv-ease);
}

.gv-card:hover::before { transform: scaleX(1); }

.gv-card:hover {
	transform: translateY(-8px);
	border-color: rgba(242,101,34,.3);
	box-shadow: 0 20px 48px rgba(0,0,0,.5), 0 0 30px rgba(242,101,34,.09);
}

.gv-card__icon {
	width: 52px;
	height: 52px;
	color: var(--gv-orange);
	margin-bottom: 20px;
}

.gv-card__title {
	font-family: var(--gv-font-h);
	font-size: 1rem;
	font-weight: 800;
	color: var(--gv-white);
	text-transform: uppercase;
	letter-spacing: 1px;
	margin: 0 0 16px;
}

.gv-card__list {
	list-style: none;
	padding: 0;
	margin: 0;
}

.gv-card__list li {
	font-family: var(--gv-font-b);
	font-size: .8rem;
	color: rgba(255,255,255,.5);
	padding: 5px 0 5px 14px;
	border-bottom: 1px solid rgba(255,255,255,.04);
	position: relative;
	transition: color .2s;
	line-height: 1.4;
}

.gv-card__list li:last-child { border-bottom: none; }
.gv-card:hover .gv-card__list li { color: rgba(255,255,255,.7); }

.gv-card__list li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 5px;
	height: 5px;
	background: var(--gv-orange);
	border-radius: 50%;
}

/* ── Card CTA Link (Ver servicio completo →) ──────────────────── */
.gv-card__cta {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 20px;
	padding-top: 16px;
	border-top: 1px solid rgba(255,255,255,.07);
	font-family: var(--gv-font-h);
	font-size: .72rem;
	font-weight: 700;
	color: var(--gv-orange);
	text-decoration: none;
	text-transform: uppercase;
	letter-spacing: 1.5px;
	transition: gap .25s var(--gv-ease);
}

.gv-card__cta:hover { gap: 14px; color: var(--gv-orange); }

.gv-card__arrow {
	display: inline-block;
	transition: transform .25s var(--gv-ease);
}

.gv-card__cta:hover .gv-card__arrow {
	transform: translateX(5px);
}

/* ================================================================
   PÁGINAS INTERNAS — Componentes reutilizables
   ================================================================ */

/* ── Hero interno 60vh ───────────────────────────────────────── */
.page-hero-internal {
	height: 60vh;
	min-height: 420px;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	background: #000000;
	padding: 120px 40px 60px;
	position: relative;
	overflow: hidden;
	margin-top: 90px;
}

.page-hero-internal::before {
	content: '';
	position: absolute;
	inset: -50%;
	width: 200%;
	height: 200%;
	background: repeating-linear-gradient(
		-55deg,
		transparent,
		transparent 60px,
		rgba(242,101,34,.025) 60px,
		rgba(242,101,34,.025) 61px
	);
	animation: gv-lines-move 18s linear infinite;
	pointer-events: none;
}

.page-hero-internal::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 2px;
	background: var(--gv-orange);
}

.page-hero-internal__eyebrow {
	font-family: var(--gv-font-b);
	font-size: .68rem;
	font-weight: 700;
	color: var(--gv-orange);
	letter-spacing: 5px;
	text-transform: uppercase;
	margin-bottom: 20px;
	position: relative;
	z-index: 1;
}

.page-hero-internal__title {
	font-family: var(--gv-font-h);
	font-size: clamp(2.2rem, 5vw, 4.5rem);
	font-weight: 900;
	color: var(--gv-white);
	text-transform: uppercase;
	letter-spacing: -1px;
	line-height: 1.05;
	margin: 0 0 20px;
	position: relative;
	z-index: 1;
}

.page-hero-internal__sub {
	font-family: var(--gv-font-b);
	font-size: clamp(1rem, 2vw, 1.3rem);
	color: var(--gv-orange);
	letter-spacing: 1px;
	margin: 0;
	position: relative;
	z-index: 1;
}

/* ── Breadcrumb ──────────────────────────────────────────────── */
.gv-breadcrumb {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 14px 40px;
	background: rgba(242,101,34,.06);
	border-bottom: 1px solid rgba(242,101,34,.12);
	font-family: var(--gv-font-b);
	font-size: .75rem;
	color: rgba(255,255,255,.45);
	text-transform: uppercase;
	letter-spacing: 1px;
}

.gv-breadcrumb a {
	color: rgba(255,255,255,.45);
	text-decoration: none;
	transition: color .2s;
}

.gv-breadcrumb a:hover { color: var(--gv-orange); }

.gv-breadcrumb__sep {
	color: var(--gv-orange);
	font-size: .6rem;
}

.gv-breadcrumb__current { color: var(--gv-orange); }

/* ── Grid de servicios detallados ────────────────────────────── */
.service-detail-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 2rem;
	margin-bottom: 5rem;
}

.service-detail-card {
	background: #1A1A1A;
	padding: 2rem;
	border-left: 3px solid var(--gv-orange);
	border-radius: 0 8px 8px 0;
	transition: transform .3s var(--gv-ease), box-shadow .3s;
}

.service-detail-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 16px 40px rgba(0,0,0,.5), 0 0 0 1px rgba(242,101,34,.2);
}

.service-detail-card__icon {
	width: 44px;
	height: 44px;
	color: var(--gv-orange);
	margin-bottom: 1rem;
}

.service-detail-card__title {
	font-family: var(--gv-font-h);
	font-size: 1.1rem;
	font-weight: 800;
	color: var(--gv-white);
	text-transform: uppercase;
	letter-spacing: .5px;
	margin: 0 0 .75rem;
}

.service-detail-card__desc {
	font-family: var(--gv-font-b);
	font-size: .875rem;
	color: rgba(255,255,255,.55);
	line-height: 1.7;
	margin: 0 0 1rem;
}

/* ── Lista de entregables con checkmarks naranja ─────────────── */
.service-entregables {
	list-style: none;
	padding: 0;
	margin: 0;
}

.service-entregables li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	font-family: var(--gv-font-b);
	font-size: .8rem;
	color: rgba(255,255,255,.6);
	padding: 5px 0;
	line-height: 1.5;
}

.service-entregables li::before {
	content: '';
	display: inline-block;
	flex-shrink: 0;
	width: 16px;
	height: 16px;
	margin-top: 1px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M13.3 3.3L6 10.6 2.7 7.3 1.3 8.7l4.7 4.7 8.7-8.7z' fill='%23F26522'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-size: contain;
}

/* ── Timeline de proceso ─────────────────────────────────────── */
.process-timeline {
	position: relative;
	padding-left: 40px;
	margin-bottom: 5rem;
	max-width: 800px;
	margin-left: auto;
	margin-right: auto;
}

.process-timeline::before {
	content: '';
	position: absolute;
	left: 12px;
	top: 0;
	bottom: 0;
	width: 2px;
	background: linear-gradient(to bottom, var(--gv-orange), transparent);
}

.process-step {
	position: relative;
	padding: 0 0 40px 0;
}

.process-step::before {
	content: attr(data-step);
	position: absolute;
	left: -40px;
	top: 0;
	width: 26px;
	height: 26px;
	background: var(--gv-orange);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--gv-font-h);
	font-size: .7rem;
	font-weight: 900;
	color: var(--gv-white);
	z-index: 1;
}

.process-step__title {
	font-family: var(--gv-font-h);
	font-size: 1rem;
	font-weight: 800;
	color: var(--gv-orange);
	text-transform: uppercase;
	margin: 0 0 8px;
}

.process-step__desc {
	font-family: var(--gv-font-b);
	font-size: .875rem;
	color: rgba(255,255,255,.55);
	line-height: 1.6;
	margin: 0;
}

/* ── CTA Section interna ─────────────────────────────────────── */
.internal-cta {
	text-align: center;
	padding: 80px 40px;
	background: linear-gradient(135deg, #0a0a0a 0%, #111111 100%);
	border-top: 1px solid rgba(242,101,34,.15);
	border-bottom: 1px solid rgba(242,101,34,.15);
	margin-bottom: 0;
}

.internal-cta__title {
	font-family: var(--gv-font-h);
	font-size: clamp(1.8rem, 4vw, 3rem);
	font-weight: 900;
	color: var(--gv-white);
	text-transform: uppercase;
	margin: 0 0 20px;
}

.internal-cta__sub {
	font-family: var(--gv-font-b);
	font-size: 1rem;
	color: rgba(255,255,255,.5);
	margin: 0 0 40px;
}

/* ── Galería grid ────────────────────────────────────────────── */
.gallery-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 12px;
	margin-bottom: 5rem;
}

.gallery-item {
	aspect-ratio: 4/3;
	background: #1A1A1A;
	border-radius: 4px;
	position: relative;
	overflow: hidden;
	cursor: pointer;
}

.gallery-item__placeholder {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--gv-font-b);
	font-size: .65rem;
	color: rgba(255,255,255,.1);
	letter-spacing: 3px;
	text-transform: uppercase;
	background: linear-gradient(135deg, #1a1a1a, #252525);
	transition: transform .5s var(--gv-ease);
}

.gallery-item:hover .gallery-item__placeholder { transform: scale(1.06); }

.gallery-item__overlay {
	position: absolute;
	inset: 0;
	background: rgba(242,101,34,.85);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--gv-font-h);
	font-size: .85rem;
	font-weight: 700;
	color: var(--gv-white);
	text-transform: uppercase;
	letter-spacing: 2px;
	opacity: 0;
	transition: opacity .3s;
}

.gallery-item:hover .gallery-item__overlay { opacity: 1; }

/* ── WhatsApp Float ──────────────────────────────────────────── */
.gv-whatsapp-fab {
	position: fixed;
	bottom: 32px;
	right: 32px;
	width: 56px;
	height: 56px;
	background: #25D366;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	text-decoration: none;
	box-shadow: 0 4px 20px rgba(37,211,102,.4);
	z-index: 9000;
	transition: transform .3s var(--gv-ease), box-shadow .3s;
}

.gv-whatsapp-fab:hover {
	transform: scale(1.12);
	box-shadow: 0 8px 28px rgba(37,211,102,.55);
}

.gv-whatsapp-fab svg {
	width: 30px;
	height: 30px;
	fill: #ffffff;
}

/* ── Responsive páginas internas ─────────────────────────────── */
@media (max-width: 768px) {
	.service-detail-grid { grid-template-columns: 1fr; }
	.gallery-grid { grid-template-columns: repeat(2, 1fr); }
	.page-hero-internal { height: auto; min-height: 340px; padding: 100px 24px 50px; }
	.gv-breadcrumb { padding: 12px 24px; }
	.process-timeline { padding-left: 30px; }
}

@media (max-width: 480px) {
	.gallery-grid { grid-template-columns: 1fr; }
}


/* ================================================================
   SECTION DIVIDER — línea naranja animada
   ================================================================ */
.section-divider {
	position: relative;
}

.section-divider::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	height: 2px;
	width: 0;
	background: #F26522;
	transition: width 0.8s cubic-bezier(.22, 1, .36, 1);
}

.section-divider.gv-divider-visible::after {
	width: 100%;
}

/* ================================================================
   H2 GLOW EFECTO — al entrar en viewport
   ================================================================ */
.gv-section-title,
section h2,
.wp-block-group h2 {
	transition: text-shadow 0.6s ease;
}

.gv-section-title.gv-h2-glowing,
section h2.gv-h2-glowing,
.wp-block-group h2.gv-h2-glowing {
	text-shadow: 0 0 40px rgba(242, 101, 34, 0.3);
}

/* ================================================================
   FONDO ANIMADO — secciones oscuras (#1A1A1A)
   ================================================================ */
.gv-portfolio,
.gv-dark-section {
	background: linear-gradient(
		270deg,
		#1A1A1A 0%,
		#1f1f1f 25%,
		#1A1A1A 50%,
		#151515 75%,
		#1A1A1A 100%
	);
	background-size: 400% 400%;
	animation: gv-bg-shift 8s ease infinite;
}

@keyframes gv-bg-shift {
	0%   { background-position: 0% 50%; }
	50%  { background-position: 100% 50%; }
	100% { background-position: 0% 50%; }
}

/* ================================================================
   TEXT REVEAL — aparición palabra por palabra
   ================================================================ */
.text-reveal .gv-word {
	display: inline-block;
	opacity: 0;
	transform: translateY(20px);
	transition: opacity 0.4s ease, transform 0.4s ease;
}

.text-reveal.gv-revealed .gv-word {
	opacity: 1;
	transform: translateY(0);
}

/* ================================================================
   § 3  PROPUESTA IA
   ================================================================ */
.gv-ia-highlight {
	background: linear-gradient(180deg, var(--gv-black) 0%, #0D0D0D 100%);
	border-left: 4px solid var(--gv-orange);
	position: relative;
	overflow: hidden;
}

.gv-ia-highlight::before {
	content: '';
	position: absolute;
	top: -200px; right: -200px;
	width: 600px; height: 600px;
	background: radial-gradient(circle, rgba(242,101,34,.1) 0%, transparent 65%);
	pointer-events: none;
}

.gv-ia-highlight__inner {
	max-width: 1200px;
	margin: 0 auto;
}

.gv-ia-highlight__cols {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 40px;
	margin-top: 48px;
}

.gv-ia-col {
	text-align: center;
	padding: 32px 20px;
	background: rgba(255,255,255,.02);
	border: 1px solid rgba(242,101,34,.15);
	transition: border-color .3s, background .3s;
}

.gv-ia-col:hover {
	border-color: rgba(242,101,34,.5);
	background: rgba(242,101,34,.04);
}

.gv-ia-col__icon {
	font-size: 2.4rem;
	margin-bottom: 16px;
	display: block;
}

.gv-ia-col__title {
	font-family: var(--gv-font-h);
	font-size: .9rem;
	font-weight: 800;
	color: var(--gv-orange);
	text-transform: uppercase;
	letter-spacing: 1px;
	margin: 0 0 10px;
}

.gv-ia-col__desc {
	font-family: var(--gv-font-b);
	font-size: .85rem;
	color: rgba(255,255,255,.55);
	line-height: 1.7;
	margin: 0;
}

/* ================================================================
   § 4  PORTAFOLIO
   ================================================================ */
.gv-portfolio {
	background: var(--gv-dark);
}

.gv-portfolio__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	grid-template-rows: repeat(2, 220px);
	gap: 12px;
	margin-bottom: 48px;
}

.gv-pitem {
	position: relative;
	overflow: hidden;
	cursor: pointer;
}

.gv-pitem__bg {
	width: 100%;
	height: 100%;
	background: var(--gv-gray);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--gv-font-h);
	font-size: .6rem;
	color: rgba(255,255,255,.12);
	letter-spacing: 3px;
	text-transform: uppercase;
	transition: transform .55s var(--gv-ease);
}

.gv-pitem:hover .gv-pitem__bg { transform: scale(1.07); }

.gv-pitem__overlay {
	position: absolute;
	inset: 0;
	background: rgba(242,101,34,.88);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--gv-font-h);
	font-size: .9rem;
	font-weight: 700;
	color: var(--gv-white);
	text-transform: uppercase;
	letter-spacing: 2px;
	opacity: 0;
	transition: opacity .3s;
}

.gv-pitem:hover .gv-pitem__overlay { opacity: 1; }

.gv-portfolio__cta { text-align: center; }

/* ================================================================
   § 5  STATS / POR QUÉ ELEGIRNOS
   ================================================================ */
.gv-stats {
	background: var(--gv-black);
}

.gv-stats__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 32px;
}

.gv-stat {
	text-align: center;
	padding: 40px 20px;
	border: 1px solid rgba(255,255,255,.05);
	position: relative;
	transition: border-color .3s;
}

.gv-stat::after {
	content: '';
	position: absolute;
	bottom: 0; left: 50%;
	transform: translateX(-50%) scaleX(0);
	width: 40px; height: 2px;
	background: var(--gv-orange);
	transition: transform .4s var(--gv-ease);
}

.gv-stat:hover { border-color: rgba(242,101,34,.25); }
.gv-stat:hover::after { transform: translateX(-50%) scaleX(1); }

.gv-stat__number {
	font-family: var(--gv-font-h);
	font-size: clamp(3rem, 5vw, 5rem);
	font-weight: 900;
	color: var(--gv-orange);
	line-height: 1;
	margin-bottom: 12px;
	display: block;
}

.gv-stat__label {
	font-family: var(--gv-font-b);
	font-size: .85rem;
	color: rgba(255,255,255,.55);
	line-height: 1.5;
}

/* ================================================================
   § 6  CTA FINAL
   ================================================================ */
.gv-cta-final {
	background: var(--gv-black);
	position: relative;
	overflow: hidden;
	text-align: center;
}

.gv-cta-final::before {
	content: '';
	position: absolute;
	inset: 0;
	background:
		radial-gradient(ellipse 90% 70% at 50% 120%, rgba(242,101,34,.22) 0%, transparent 60%),
		radial-gradient(ellipse 55% 40% at 50% 110%, rgba(242,101,34,.12) 0%, transparent 55%);
	pointer-events: none;
}

.gv-cta-final__inner {
	position: relative;
	z-index: 1;
	max-width: 740px;
	margin: 0 auto;
}

.gv-cta-final__line {
	width: 56px;
	height: 3px;
	background: var(--gv-orange);
	margin: 16px auto 44px;
}

.gv-cta-final__title {
	font-family: var(--gv-font-h);
	font-size: clamp(2rem, 5vw, 4rem);
	font-weight: 900;
	color: var(--gv-white);
	text-transform: uppercase;
	letter-spacing: -1px;
	line-height: 1.1;
	margin: 0 0 20px;
}

.gv-cta-final__title .gv-accent { color: var(--gv-orange); }

.gv-cta-final__sub {
	font-family: var(--gv-font-b);
	font-size: 1rem;
	color: rgba(255,255,255,.5);
	margin: 0 0 52px;
	letter-spacing: 1px;
}

.gv-cta-final__actions {
	display: flex;
	gap: 16px;
	justify-content: center;
	flex-wrap: wrap;
}

/* ================================================================
   RESPONSIVE
   ================================================================ */
@media (max-width: 1024px) {
	.gv-stats__grid { grid-template-columns: repeat(2, 1fr); }
	.gv-ia-highlight__cols { grid-template-columns: 1fr; gap: 20px; }
}

@media (max-width: 768px) {
	.gv-section { padding: 72px 24px; }
	.gv-services__grid { grid-template-columns: 1fr; }
	.gv-portfolio__grid { grid-template-columns: repeat(2, 1fr); grid-template-rows: auto; }
	.gv-stats__grid { grid-template-columns: repeat(2, 1fr); gap: 20px; }
}

@media (max-width: 480px) {
	.gv-hero { padding: 100px 24px 60px; }
	.gv-hero__actions { flex-direction: column; align-items: center; }
	.gv-portfolio__grid { grid-template-columns: 1fr; }
	.gv-stats__grid { grid-template-columns: 1fr 1fr; }
	.gv-cta-final__actions { flex-direction: column; align-items: center; }
}
