/* ========================================================= ECOSISTEMA - CARRUSEL Variables nuevas + estilos del bloque refactorizado ========================================================= */ :root { /* Color inactivo de los botones (rojo del esquema) */ --eco-tab-inactive: var(--ide-grey); --eco-tab-inactive-text: #ffffff; /* Color de fondo inactivo de la tarjeta (naranja del esquema) */ --eco-card-bg: #e88a0a; /* Texto sobre la zona oscura de la tarjeta */ --eco-text-dark: #0a0a0a; --eco-text-muted-dark: #2a2a2a; /* Transiciones */ --eco-fade-duration: 600ms; --eco-tab-duration: 250ms; } /* ---------- TABS / BOTONES ---------- */ .ecosystem-tabs { display: flex; justify-content: center; gap: 0.75rem; flex-wrap: wrap; margin-bottom: 1rem; } .eco-tab { appearance: none; border: 2px solid var(--eco-tab-inactive); background: var(--eco-tab-inactive); color: var(--eco-tab-inactive-text); font-weight: 700; font-size: 0.95rem; padding: 0.4rem 1.4rem; border-radius: 999px; cursor: pointer; transition: background-color var(--eco-tab-duration) ease, color var(--eco-tab-duration) ease, border-color var(--eco-tab-duration) ease, transform var(--eco-tab-duration) ease; } .eco-tab:hover { transform: translateY(-2px); filter: brightness(1.08); } .eco-tab:focus-visible { outline: 3px solid rgba(255, 255, 255, 0.6); outline-offset: 2px; } /* Estado activo: el color lo inyecta el JS vía data-color */ .eco-tab.is-active { color: #ffffff; border-color: transparent; box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25); } /* ---------- CARRUSEL (contenedor) ---------- */ .ecosystem-carousel { position: relative; width: 100%; aspect-ratio: 16 / 9; max-height: 450px; min-height: 360px; border-radius: var(--radius-md, 12px); overflow: hidden; background: var(--eco-card-bg); box-shadow: var(--shadow-sm, 0 2px 8px rgba(0, 0, 0, 0.08)); } /* ---------- SLIDE ---------- */ .eco-slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity var(--eco-fade-duration) ease, visibility var(--eco-fade-duration) ease; } .eco-slide.is-active { opacity: 1; visibility: visible; } /* Imagen de fondo (placeholder) */ .eco-slide__bg { position: absolute; inset: 0; background-size: cover; background-position: center; background-repeat: no-repeat; } /* Degradado de derecha a izquierda: transparente a la izquierda → color sólido a la derecha para resaltar el contenido (logo + texto) */ .eco-slide__overlay { position: absolute; inset: 0; background: linear-gradient( to left, var(--eco-slide-color) 0%, var(--eco-slide-color) 45%, rgba(0, 0, 0, 0.15) 70%, transparent 100% ); } /* ---------- CONTENIDO (logo + texto) ---------- */ .eco-slide__content { position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: space-between; height: 100%; padding: 2.5rem 3rem; color: var(--eco-text-dark); } /* Logo (PNG) - controlado por clase específica */ .eco-slide__logo { align-self: flex-end; width: 210px; height: 90px; background-size: contain; background-repeat: no-repeat; background-position: right center; } /* Texto */ .eco-slide__text { max-width: 35%; margin-left: auto; /* empuja el bloque a la derecha */ text-align: right; } .eco-slide__text h3 { font-size: 1.6rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.02em; margin: 0 0 0.75rem 0; color: var(--eco-text-dark); line-height: 1.2; } .eco-slide__text p { font-size: 1.2rem; line-height: 1.55; color: var(--eco-text-muted-dark); margin: 0 0 1.25rem 0; } .eco-slide__link { display: inline-block; font-size: 0.95rem; font-weight: 700; color: var(--eco-text-dark); text-decoration: none; border-bottom: 2px solid currentColor; padding-bottom: 2px; transition: opacity 200ms ease; } .eco-slide__link:hover { opacity: 0.7; } /* ========================================================= BRÚJULA - MARCA DE AGUA ========================================================= */ .brujula-section { position: relative; overflow: hidden; } .brujula-watermark { position: absolute; right: -5%; top: 50%; transform: translateY(-50%) rotate(15deg); width: 600px; height: 600px; opacity: 0.7; pointer-events: none; z-index: 0; color: var(--ide-accent-soft); } .brujula-watermark svg { width: 100%; height: 100%; } /* ========================================================= BRÚJULA - BOTÓN VOLVER (reposicionado) ========================================================= */ .quiz-container { position: relative; z-index: 1; } .quiz-back-btn { position: absolute; top: 1.5rem; right: 1.5rem; z-index: 10; background: transparent; border: 1px solid var(--text-muted, #888); color: var(--text-muted, #888); font-size: 0.85rem; padding: 0.4rem 0.9rem; border-radius: 50px; cursor: pointer; transition: all 200ms ease; } .quiz-back-btn:hover { background: rgba(255, 255, 255, 0.05); color: #ffffff; border-color: #ffffff; } /* ========================================================= BRÚJULA - HEADER DE PASO (para alinear título y botón) ========================================================= */ .quiz-step-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 1.5rem; padding-right: 100px; /* Espacio para el botón volver */ } /* ========================================================= RESPONSIVE ========================================================= */ @media (max-width: 768px) { .brujula-watermark { width: 400px; height: 400px; right: -20%; opacity: 0.03; } .quiz-back-btn { top: 1rem; right: 1rem; font-size: 0.8rem; padding: 0.35rem 0.75rem; } .quiz-step-header { padding-right: 80px; } } /* ========================================================= COLORES ESPECÍFICOS POR CAPACIDAD ========================================================= */ .eco-slide--excellence { --eco-slide-color: var(--ide-excellence); } .eco-slide--project { --eco-slide-color: var(--ide-projects); } .eco-slide--digital { --eco-slide-color: var(--ide-digital); } .eco-slide--academy { --eco-slide-color: var(--ide-academy); } /* ========================================================= PLACEHOLDERS DE LOGOS Reemplaza las URLs por tus assets reales. Ajusta width/height aquí para controlar el tamaño. ========================================================= */ .logo-excellence { background-image: url('../assets/img/slide/ide1.png'); } .logo-project { background-image: url('../assets/img/slide/ide2.png'); } .logo-digital { background-image: url('../assets/img/slide/ide3.png'); } .logo-academy { background-image: url('../assets/img/slide/ide4.png'); } /* ========================================================= PLACEHOLDERS DE IMÁGENES DE FONDO ========================================================= */ .eco-slide--excellence .eco-slide__bg { background-image: url('../assets/img/slide/slide-excellence.png'); } .eco-slide--project .eco-slide__bg { background-image: url('../assets/img/slide/slide-projects.png'); } .eco-slide--digital .eco-slide__bg { background-image: url('../assets/img/slide/slide-digital.png'); } .eco-slide--academy .eco-slide__bg { background-image: url('../assets/img/slide/slide-academy.png'); } /* ========================================================= ÁMBITOS DE EXPERIENCIA - TARJETAS CON HOVER REVEAL ========================================================= */ /* --- TARJETA BASE --- */ .ambito-card { position: relative; min-height: 240px; border-radius: var(--radius-md, 12px); overflow: hidden; cursor: pointer; background-size: cover; background-position: center; background-repeat: no-repeat; box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.1)); transition: box-shadow 0.3s ease, transform 0.3s ease; } .ambito-card:hover { box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2); transform: translateY(-4px); } /* --- OVERLAY (Degradado para legibilidad) --- */ /* Un degradado de abajo hacia arriba asegura que el texto se lea sin tapar completamente la imagen de fondo */ .ambito-card .overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.2) 60%, transparent 100%); transition: background 0.4s ease; z-index: 1; } .ambito-card:hover .overlay { background: linear-gradient(to top, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0.4) 70%, rgba(0, 0, 0, 0.1) 100%); } /* --- CONTENIDO --- */ .ambito-card .content { position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: flex-end; /* Alinea el contenido abajo para mejor revelación */ height: 100%; padding: 1rem 1rem; text-align: left; } /* --- TÍTULO --- */ .ambito-card h4 { color: #ffffff; font-size: 1.1rem; font-weight: 700; margin: 0; line-height: 1.3; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94), font-size 0.4s ease; } /* --- TEXTO A REVELAR --- */ .ambito-card .reveal-text { color: rgba(255, 255, 255, 0.9); font-size: 0.85rem; font-weight: 400; line-height: 1.4; margin: 0; /* Estado inicial: oculto */ opacity: 0; max-height: 0; transform: translateY(10px); overflow: hidden; /* Transición suave */ transition: opacity 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94), max-height 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94), margin-top 0.4s ease; } /* ========================================================= ESTADOS HOVER (La magia) ========================================================= */ /* 1. El título sube un poco y se achica ligeramente para hacer espacio */ .ambito-card:hover h4 { transform: translateY(-8px); font-size: 1rem; } /* 2. El texto aparece, gana altura y se posiciona */ .ambito-card:hover .reveal-text { opacity: 1; max-height: 100px; /* Suficiente para 2-3 líneas de texto */ transform: translateY(0); margin-top: 0.5rem; } /* ========================================================= IMÁGENES DE FONDO POR TARJETA (Nota: Los espacios en los nombres de archivo se codifican como %20) ========================================================= */ .cardi-agro { background-image: url('../assets//img/cards/agro.png'); } .cardi-industria { background-image: url('../assets//img/cards/indu.png'); } .cardi-telecom { background-image: url('../assets/img/cards/teco.png'); } .cardi-salud { background-image: url('../assets/img/cards/salud.png'); } .cardi-educacion { background-image: url('../assets/img/cards/edu.png'); } /* ========================================================= RESPONSIVE ========================================================= */ @media (max-width: 768px) { .ambitos-grid { grid-template-columns: 1fr !important; /* Apila el encabezado y las tarjetas */ text-align: center; } .ambito-card { min-height: 200px; } .ambito-card h4 { font-size: 1rem; } } /* ========================================================= RESPONSIVE ========================================================= */ @media (max-width: 900px) { .ecosystem-carousel { aspect-ratio: 4 / 3; } .eco-slide__content { padding: 1.75rem 2rem; } .eco-slide__logo { width: 140px; height: 55px; } .eco-slide__text { max-width: 70%; } .eco-slide__text h3 { font-size: 1.3rem; } } @media (max-width: 600px) { .ecosystem-tabs { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.6rem; } .eco-tab { font-size: 0.85rem; padding: 0.55rem 1rem; } .ecosystem-carousel { aspect-ratio: 3 / 4; min-height: 420px; } .eco-slide__content { padding: 1.25rem 1.25rem 1.5rem; justify-content: flex-end; } .eco-slide__logo { align-self: flex-end; width: 120px; height: 50px; margin-bottom: 1rem; } .eco-slide__text { max-width: 100%; text-align: left; } .eco-slide__text h3 { font-size: 1.15rem; } .eco-slide__text p { font-size: 0.9rem; } /* En móvil el degradado cubre más para garantizar legibilidad */ .eco-slide__overlay { background: linear-gradient( to top, var(--eco-slide-color) 0%, var(--eco-slide-color) 55%, rgba(0, 0, 0, 0.1) 85%, transparent 100% ); } }