Files
IDE-Demo-B/css/index.css
T
2026-10-08 17:23:44 -03:00

507 lines
12 KiB
CSS

/* =========================================================
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: 6px;
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%
);
}
}