{/* SPEC ROW */}
{/* FEATURED case — QTS */}
{/* SHOWCASE GALLERY — big image grid */}
{/* DIGITAL TWIN — interactive feature */}
{/* PROCESS strip */}
{/* CTA with image bg */}
onNavigate('contact')}
onSecondary={() => onNavigate('portfolio')}
image="assets/portfolio/bess-01.png"
/>
);
}
/* ─────────────────────── HERO with slider ───────────────────── */
function HomeHero({ onNavigate }) {
const { t, lang } = useLang();
// Each media item carries its own bilingual copy so images & copy never desync.
const slideMedia = [
{ type: 'video', src: 'assets/portfolio/hero-anim.mp4',
en: { eyebrow: 'Reel · UE5 cinematic build', title: ['Cinematic Infrastructure', 'Visualization'], accent: 'Visualization', sub: 'Hero films, real-time walkthroughs and AI-augmented concept work for data centers, energy storage, and renewable operators.', caption: 'QTS · Cinematic After Reel · UE5' },
es: { eyebrow: 'Reel · Unreal Engine 5', title: ['Visualización Cinemática', 'de Infraestructura Crítica'], accent: 'Visualización Cinemática', sub: 'Films, recorridos en tiempo real y trabajo conceptual con IA para data centers, almacenamiento de energía y renovables.', caption: 'QTS · After Reel Cinematográfico · UE5' } },
{ type: 'image', src: 'assets/portfolio/oilgas-3d.png',
en: { eyebrow: 'Oil & gas infrastructure', title: ['Oil & gas 3D visuals', 'that close deals'], accent: 'that close deals', sub: 'Process plants, administrative buildings and transmission corridors visualized specifically to make the financing case impossible to ignore.', caption: 'Pampa Energía · Process Plant · Sunset Hero' },
es: { eyebrow: 'Infraestructura oil & gas', title: ['Imágenes 3D de oil & gas', 'que cierran negocios'], accent: 'que cierran negocios', sub: 'Plantas de proceso, edificios administrativos y corredores de transmisión — renderizados en golden hour para volver irresistible el caso de financiamiento.', caption: 'Pampa Energía · Planta de Proceso · Hero Atardecer' } },
{ type: 'video', src: 'assets/portfolio/hero-kling2.mp4',
en: { eyebrow: 'Real-time camera', title: ['Camera moves', 'through finished sites'], accent: 'through finished sites', sub: 'A slow dolly across the campus — modeled to surveyed coordinates, lit to real spec, rendered live in Unreal Engine 5.', caption: 'Studio reel · Real-time camera · UE5' },
es: { eyebrow: 'Cámara en tiempo real', title: ['La cámara recorre', 'sitios terminados'], accent: 'sitios terminados', sub: 'Un travelling lento por el campus — modelado sobre coordenadas reales, iluminado al proyecto, renderizado en vivo en Unreal Engine 5.', caption: 'Reel del estudio · Cámara en tiempo real · UE5' } },
{ type: 'image', src: 'assets/portfolio/qts-interior-red.png',
en: { eyebrow: 'Inside the hall', title: ['Server halls,', 'rendered like film sets'], accent: 'rendered like film sets', sub: 'Branded data halls in cinematic light — the red glow, the endless aisle, the lit signage. The cathedrals of the compute era.', caption: 'QTS · Data Hall Interior · UE5' },
es: { eyebrow: 'Dentro del hall', title: ['Salas de servidores,', 'iluminadas como sets de cine'], accent: 'iluminadas como sets de cine', sub: 'Data halls de marca con luz cinematográfica — el glow rojo, el pasillo infinito, la señalética iluminada. Las catedrales de la era del cómputo.', caption: 'QTS · Interior de Data Hall · UE5' } },
{ type: 'video', src: 'assets/portfolio/aerial-flythrough.mp4',
en: { eyebrow: 'Aerial cinematography', title: ['Hyperscale campuses,', 'seen from above'], accent: 'seen from above', sub: 'A real-time aerial fly-through across a modern hyperscale campus — estuary, substation and the full site, all in one continuous shot.', caption: 'Hyperscale Campus · Aerial Fly-Through · UE5' },
es: { eyebrow: 'Cinematografía aérea', title: ['Campus hyperscale,', 'vistos desde arriba'], accent: 'vistos desde arriba', sub: 'Un fly-through aéreo en tiempo real sobre un campus hyperscale moderno — estuario, subestación y el sitio completo, todo en una toma continua.', caption: 'Campus Hyperscale · Fly-Through Aéreo · UE5' } },
{ type: 'image', src: 'assets/portfolio/datahall-modern.png',
en: { eyebrow: 'Architectural scale', title: ['Modern data halls,', '12.5 acres each'], accent: '12.5 acres each', sub: 'Glass-and-steel facades, raised plant decks, kilometre-long aisles — each hall a 12.5-acre building, rendered to convey the sheer scale on the ground.', caption: 'Modern Data Hall · Exterior · UE5 Path Traced' },
es: { eyebrow: 'Escala arquitectónica', title: ['Data halls modernos,', '12,5 acres cada uno'], accent: '12,5 acres cada uno', sub: 'Fachadas de vidrio y acero, decks de plantas elevadas, pasillos de un kilómetro — cada hall un edificio de 12,5 acres, renderizado para transmitir la escala real en el terreno.', caption: 'Data Hall Moderno · Exterior · UE5 Path Traced' } },
{ type: 'image', src: 'assets/portfolio/datacenter-river.jpg',
en: { eyebrow: 'Site in context', title: ['Campuses set', 'into their landscape'], accent: 'into their landscape', sub: 'A riverside data center campus at dawn — surrounding industry, transmission, water and green buffer. The full context in a single frame.', caption: 'Data Center Campus · Riverside · Aerial' },
es: { eyebrow: 'El sitio en contexto', title: ['Campus integrados', 'a su paisaje'], accent: 'a su paisaje', sub: 'Un campus de data center sobre el río al amanecer — industria, transmisión, agua y buffer verde. Todo el contexto en una sola imagen.', caption: 'Data Center Campus · Sobre el Río · Aérea' } },
{ type: 'image', src: 'assets/portfolio/datacore-interior.jfif',
en: { eyebrow: 'Architectural cinematography', title: ['Interiors that', 'sell the experience'], accent: 'sell the experience', sub: 'A technician walks the cold aisle as the sun sets behind the cooling towers — film-grade lighting, real materials, real scale.', caption: 'DataCore · Cold Aisle · UE5 Path Traced' },
es: { eyebrow: 'Cinematografía arquitectónica', title: ['Interiores que', 'venden la experiencia'], accent: 'venden la experiencia', sub: 'Un técnico recorre el cold aisle mientras el sol cae tras las torres de enfriamiento — luz de cine, materiales reales, escala real.', caption: 'DataCore · Cold Aisle · UE5' } },
{ type: 'image', src: 'assets/portfolio/btc-datacenter.jpg',
en: { eyebrow: 'Crypto & HPC', title: ['Compute campuses,', 'at neon dusk'], accent: 'at neon dusk', sub: 'BTC and HPC facilities lit with the brand\'s own signature addressable data halls, river frontage, the works.', caption: 'BTC Data Center · Dusk · Brand Lighting' },
es: { eyebrow: 'Crypto & HPC', title: ['Campus de cómputo,', 'al atardecer neón'], accent: 'al atardecer neón', sub: 'Instalaciones BTC y HPC iluminadas con la firma de la marca — data halls direccionables, frente al río, todo.', caption: 'BTC Data Center · Atardecer · Luz de Marca' } },
{ type: 'image', src: 'assets/portfolio/datacenter-iso-02.png',
en: { eyebrow: 'Clean isometric', title: ['3D models', 'that read at a glance'], accent: 'that read at a glance', sub: 'Isometric studies for board packs, permits and operations — the buildings, the halls, the connectivity bridges, all legible in one frame.', caption: 'Data Center Campus · Isometric · UE5' },
es: { eyebrow: 'Isométrico claro', title: ['Modelos 3D', 'que se leen de un vistazo'], accent: 'que se leen de un vistazo', sub: 'Vistas isométricas para directorios, permisos y operaciones — los edificios, los halls, los puentes de conexión, todo legible en una imagen.', caption: 'Data Center Campus · Isométrico · UE5' } },
{ type: 'image', src: 'assets/portfolio/bess-investor-overlay.png',
en: { eyebrow: 'Investor-ready', title: ['3D energy visuals', 'that win investors'], accent: 'that win investors', sub: 'Project-finance-grade visualization — a single hero frame, layered with typography, that anchors the entire pitch.', caption: 'BESS · Investor Hero · 16K' },
es: { eyebrow: 'Listo para inversores', title: ['Imágenes 3D de energía', 'que convencen inversores'], accent: 'que convencen inversores', sub: 'Visualización a la altura de una ronda de inversión — una sola imagen, con tipografía, que sostiene toda la presentación.', caption: 'BESS · Hero de Inversión · 16K' } },
{ type: 'image', src: 'assets/portfolio/bess-overcast.png',
en: { eyebrow: 'Aerial cinematography', title: ['Storm light,', 'permitted spec'], accent: 'permitted spec', sub: 'Wet pavement, overcast skies, transmission corridors on the horizon — every detail modeled to the operator\'s permit drawings.', caption: 'BESS · Aerial · Overcast Light' },
es: { eyebrow: 'Cinematografía aérea', title: ['Luz de tormenta,', 'spec de permiso'], accent: 'spec de permiso', sub: 'Pavimento húmedo, cielo cubierto, corredores de transmisión en el horizonte — cada detalle modelado según los planos de permiso del operador.', caption: 'BESS · Aérea · Luz Cubierta' } },
{ type: 'image', src: 'assets/portfolio/bess-plan-render-bw.png',
en: { eyebrow: 'Plan → reality', title: ['Complex layouts,', 'translated to cinema'], accent: 'translated to cinema', sub: 'We start where your architect leaves off. Technical plans become cinematic images — the same project, two languages.', caption: 'BESS · Plan & Render · Side-by-Side' },
es: { eyebrow: 'Del plano a la imagen', title: ['Layouts complejos,', 'traducidos a cine'], accent: 'traducidos a cine', sub: 'Empezamos donde termina tu arquitecto. Planos técnicos se vuelven imágenes cinematográficas — el mismo proyecto, dos lenguajes.', caption: 'BESS · Plano y Render · Lado a Lado' } },
{ type: 'image', src: 'assets/portfolio/bess-iso-white.png',
en: { eyebrow: 'Clarity', title: ['The substation,', 'the yard, one frame'], accent: 'the yard, one frame', sub: 'A clean isometric of the full BESS facility — substation, battery yard, admin building, all callable for board packs and permits.', caption: 'BESS · Iso Reference · White Background' },
es: { eyebrow: 'Claridad', title: ['La subestación,', 'el yard, una imagen'], accent: 'el yard, una imagen', sub: 'Un isométrico limpio de toda la instalación BESS — subestación, yard de baterías, edificio administrativo, todo accesible para directorios y permisos.', caption: 'BESS · Iso de Referencia · Fondo Blanco' } },
{ type: 'image', src: 'assets/portfolio/infarm-testfit.png',
en: { eyebrow: 'Test-fit & feasibility', title: ['BIM models,', 'turned into stories'], accent: 'turned into stories', sub: 'Test-fits, MEP schedules and density studies — we translate the technical case into a single annotated image stakeholders actually read.', caption: 'Infarm · Vertical Farming Hub · Test-Fit' },
es: { eyebrow: 'Test-fit y factibilidad', title: ['Modelos BIM,', 'convertidos en relatos'], accent: 'convertidos en relatos', sub: 'Test-fits, planillas MEP y estudios de densidad — traducimos el caso técnico en una sola imagen anotada que los stakeholders sí leen.', caption: 'Infarm · Hub de Agricultura Vertical · Test-Fit' } },
{ type: 'image', src: 'assets/portfolio/uae-storage-hub.png',
en: { eyebrow: 'Case studies', title: ['Logistics, energy,', 'and atmosphere'], accent: 'and atmosphere', sub: 'A UAE storage hub — solar array integration, weathered industrial materials, harsh desert light. A 1:1 preview of the future facility.', caption: 'UAE Storage Logistics Hub · 2025' },
es: { eyebrow: 'Casos', title: ['Logística, energía', 'y atmósfera'], accent: 'y atmósfera', sub: 'Un hub de almacenamiento en EAU — integración solar, materiales industriales curtidos, luz dura del desierto. Una vista previa 1:1 de la futura instalación.', caption: 'Hub Logístico de Almacenamiento · EAU · 2025' } },
{ type: 'image', src: 'assets/portfolio/bess-solar-canopy.png',
en: { eyebrow: 'Solar canopy', title: ['Energy infrastructure,', 'in detail'], accent: 'in detail', sub: 'Modular solar canopies over battery containers — modeled with the same discipline as a feature film set.', caption: 'BESS + Solar Canopy · Aerial Study' },
es: { eyebrow: 'Canopy solar', title: ['Infraestructura energética,', 'en detalle'], accent: 'en detalle', sub: 'Canopies solares modulares sobre contenedores de baterías — modeladas con la misma disciplina que un set de cine.', caption: 'BESS + Canopy Solar · Estudio Aéreo' } },
{ type: 'image', src: 'assets/portfolio/bess-plan-to-real.png',
en: { eyebrow: 'From the drawing', title: ['The plan and the render,', 'side by side'], accent: 'side by side', sub: 'A board pairing the Level 01 plan with the final aisle render — translating construction documents into something any board can approve.', caption: 'BESS · Plan → Render · Board Pairing' },
es: { eyebrow: 'Desde el plano', title: ['El plano y el render,', 'lado a lado'], accent: 'lado a lado', sub: 'Un pareado del plano Nivel 01 con el render final del aisle — traduce documentos de obra en algo que cualquier directorio puede aprobar.', caption: 'BESS · Plano → Render · Pareado' } },
{ type: 'image', src: 'assets/portfolio/level-01-plan.png',
en: { eyebrow: 'From the documents', title: ['We work from', 'your actual drawings'], accent: 'your actual drawings', sub: 'Level plans at 1:400, generator yards, fuel tanks, cooling plants — modeled to your real spec, not stock geometry.', caption: 'Level 01 Plan · Scale 1:400 · Source Document' },
es: { eyebrow: 'Desde tus documentos', title: ['Trabajamos sobre', 'tus planos reales'], accent: 'tus planos reales', sub: 'Plantas a escala, salas técnicas, generadores, sistemas de refrigeración — modelados según tu proyecto real, no geometría genérica.', caption: 'Planta Nivel 01 · Escala 1:400 · Documento Fuente' } },
{ type: 'image', src: 'assets/portfolio/datacenter-iso-red.png',
en: { eyebrow: 'Isometric clarity', title: ['3D models', 'that read at a glance'], accent: 'that read at a glance', sub: 'Isometric studies for board packs, public hearings and briefings — the building, the equipment, the circulation, legible in one frame.', caption: 'Data Center · Isometric View · UE5' },
es: { eyebrow: 'Claridad isométrica', title: ['Modelos 3D', 'que se leen de un vistazo'], accent: 'que se leen de un vistazo', sub: 'Vistas isométricas para directorios, audiencias públicas y presentaciones — el edificio, los equipos, la circulación, legible en una imagen.', caption: 'Data Center · Vista Isométrica · UE5' } },
{ type: 'image', src: 'assets/portfolio/pampa-3d.png',
en: { eyebrow: 'Industrial scale', title: ['Process plants,', 'energy, data centers'], accent: 'energy', sub: 'From process plants to GW-scale storage — the most consequential buildings of the moment, modeled with the same precision.', caption: 'Pampa Energía · Process Plant · Isometric' },
es: { eyebrow: 'Escala industrial', title: ['Plantas industriales,', 'energía, data centers'], accent: 'energía', sub: 'De plantas de proceso a almacenamiento GW-scale — las obras más relevantes del momento, modeladas con la misma precisión.', caption: 'Pampa Energía · Planta de Proceso · Isométrico' } },
{ type: 'video', src: 'assets/portfolio/hero-kling.mp4',
en: { eyebrow: 'Real-time camera', title: ['Cinematic moves.', 'Engineered detail.'], accent: 'Engineered detail', sub: 'A camera dolly through a finished site — modeled to surveyed coordinates, lit to real spec, rendered in Unreal Engine 5.', caption: 'Studio reel · Real-time camera · UE5' },
es: { eyebrow: 'Cámara en tiempo real', title: ['Movimientos de cine.', 'Precisión técnica.'], accent: 'Precisión técnica', sub: 'Un recorrido de cámara por un sitio terminado — modelado sobre coordenadas reales, iluminado al proyecto, renderizado en Unreal Engine 5.', caption: 'Reel del estudio · Cámara en tiempo real · UE5' } },
{ type: 'image', src: 'assets/portfolio/bess-03.png',
en: { eyebrow: 'Energy', title: ['Images that tell', 'the project\'s story'], accent: 'the project\'s story', sub: 'From the master plan to the final image — cinematic visualization for storage, solar and substations, delivered at 8K.', caption: 'Meridian BESS · Sunset · UE5' },
es: { eyebrow: 'Energía', title: ['Imágenes que cuentan', 'la historia del proyecto'], accent: 'la historia del proyecto', sub: 'Del plan maestro a la imagen final — visualización cinemática para almacenamiento, solar y subestaciones, entregada en 8K.', caption: 'Meridian BESS · Atardecer · UE5' } },
{ type: 'image', src: 'assets/portfolio/jmc-night.png',
en: { eyebrow: 'Brand image', title: ['The frame', 'that closes the deal'], accent: 'that closes the deal', sub: 'A single 16K hero still — the image that anchors the deck, the website, the lobby print, the board pack.', caption: 'JMC Realities · Night Facade · Brand Hero' },
es: { eyebrow: 'Imagen de marca', title: ['La imagen', 'que cierra el trato'], accent: 'que cierra el trato', sub: 'Un único still hero en 16K — la imagen que ancla la presentación, la web, el print de lobby, el board pack.', caption: 'JMC Realities · Fachada Nocturna · Imagen de Marca' } },
{ type: 'image', src: 'assets/portfolio/qts-mountains.png',
en: { eyebrow: 'Site in context', title: ['Designed to operate.', 'Rendered to convince.'], accent: 'Rendered to convince', sub: 'From exterior approach to interior detail — modeled to surveyed coordinates, lit to your real spec, delivered at 16K.', caption: 'QTS · Mountain Site · UE5' },
es: { eyebrow: 'El sitio en contexto', title: ['Pensado para operar.', 'Renderizado para convencer.'], accent: 'Renderizado para convencer', sub: 'De la aproximación exterior al detalle interior — modelado sobre coordenadas reales, iluminado al proyecto, entregado en 16K.', caption: 'QTS · Sitio en Montaña · UE5' } },
{ type: 'image', src: 'assets/portfolio/pampa-aerial.png',
en: { eyebrow: 'AI-augmented pipeline', title: ['Concepts in hours.', 'Flawless final images.'], accent: 'Flawless final images', sub: 'Our own AI models speed up the concept stage — every final image goes through the full render in Unreal Engine 5.', caption: 'Pampa Energía · Aerial · Final Image' },
es: { eyebrow: 'Flujo aumentado con IA', title: ['Conceptos en horas.', 'Imágenes finales impecables.'], accent: 'Imágenes finales impecables', sub: 'Nuestros modelos de IA propios aceleran la etapa conceptual — cada imagen final pasa por el render completo en Unreal Engine 5.', caption: 'Pampa Energía · Vista Aérea · Imagen Final' } },
];
const [idx, setIdx] = React.useState(0);
const [paused, setPaused] = React.useState(false);
const timerRef = React.useRef(null);
const count = slideMedia.length;
// auto-advance — videos get more time
React.useEffect(() => {
if (paused) return;
const duration = slideMedia[idx]?.type === 'video' ? 9000 : 6000;
timerRef.current = setTimeout(() => {
setIdx(i => (i + 1) % count);
}, duration);
return () => clearTimeout(timerRef.current);
}, [idx, paused, count]);
const goto = (i) => {
clearTimeout(timerRef.current);
setIdx(((i % count) + count) % count);
};
const slide = (slideMedia[idx] || slideMedia[0])[lang];
// Render the title with the accent word highlighted
const renderTitle = (titleLines, accentWord) => {
return titleLines.map((line, i) => {
if (line.includes(accentWord)) {
const parts = line.split(accentWord);
return (
{parts[0]}
{accentWord}
{parts[1]}
);
}
return {line};
});
};
return (
setPaused(true)}
onMouseLeave={() => setPaused(false)}>
{slideMedia.map((rawMedia, i) => {
// Standalone builds can't bundle the large videos — fall back to a still.
const fb = window.__videoFallback;
const media = (fb && rawMedia?.type === 'video')
? { type: 'image', src: fb[rawMedia.src] || rawMedia.src }
: rawMedia;
return (
);
}
/* ─────────────────────── Process strip ───────────────────── */
function HomeProcessStrip({ onNavigate }) {
const { t, lang } = useLang();
const { PROCESS } = window.JMC_DATA;
return (
{t.home.process.eyebrow}
{t.home.process.title}
onNavigate('about')}>{t.home.process.more}
{PROCESS.map(p => (
{p.n}
{p[lang].label}
{p[lang].body}
))}
);
}
/* ─────────────────────── Digital Twin section ───────────────────── */
function DigitalTwinSection({ onNavigate }) {
const { lang } = useLang();
const copy = {
en: {
eyebrow: 'Digital Twin',
title: 'A live, annotated, callable model of your campus.',
body: 'Beyond a hero film — we deliver a navigable digital twin: data halls, cooling towers, power plant, control center, security perimeter, and connectivity bridges, all addressable individually. Use it in stakeholder pitches, planning hearings, and operations briefings.',
bullets: [
['layers', 'Annotated components', 'Every IT module, transformer, and bridge — labeled and callable.'],
['cpu', 'Live spec swap', 'Cooling type, capacity, topology — change the model in real time.'],
['eye', 'Walk-and-talk', 'Camera flies, narration optional, runs on a laptop or LED wall.'],
['box', 'Hand-off ready', 'Packaged UE5 build delivered to your storage with a demo script.'],
],
cta: 'Discuss your project',
caption: 'Digital Twin · Axonometric Reference · UE5',
},
es: {
eyebrow: 'Digital Twin',
title: 'Un modelo vivo, anotado y navegable de tu campus.',
body: 'Más allá del hero film — entregamos un digital twin navegable: data halls, torres de enfriamiento, planta eléctrica, centro de control, perímetro de seguridad y bridges de conectividad, cada uno direccionable. Usalo en pitches, audiencias y briefings de operaciones.',
bullets: [
['layers', 'Componentes anotados', 'Cada módulo IT, transformador y bridge — etiquetado y direccionable.'],
['cpu', 'Swap de spec en vivo', 'Tipo de cooling, capacidad, topología — cambiá el modelo en tiempo real.'],
['eye', 'Walk-and-talk', 'Cámara vuela, narración opcional, corre en laptop o LED wall.'],
['box', 'Listo para entrega', 'Build UE5 packaged en tu storage, con guion de demo.'],
],
cta: 'Conversemos tu proyecto',
caption: 'Digital Twin · Referencia Axonométrica · UE5',
},
}[lang];
return (