Cómo se construyó
este sitio.

kohrco.com es un sitio estático, sin framework. Cada decisión — tipografía variable, paleta navy/mint/cream, animaciones escritas a mano sobre Canvas y SVG, performance verificada con Lighthouse — fue tomada con un objetivo: que el sitio se sienta hecho, no ensamblado.

Líneas de JS
~3,200 vanilla
Bundle total
< 220 KB gz
Lighthouse
Perf 97 · A11y 100 · BP 100 · SEO 100
Idiomas
ES + EN nativos
Año
2026
§ I Filosofía · No frameworks

React, Vue, Svelte y compañía son herramientas excelentes para aplicaciones complejas. Un sitio editorial de 10 secciones no es una aplicación compleja.

Trabajar en HTML/CSS/JS plano impone una disciplina útil: cada animación tiene que valer su peso en bytes, cada componente se diseña con accesibilidad como punto de partida (no como retrofit), y la página carga al instante porque no hay un runtime que hidratar.

La consecuencia visible es velocidad. La consecuencia invisible es que el sitio envejece bien — no depende de versiones de framework que cambian cada 18 meses.

§ II Stack
Tipografía

Fraunces variable + IBM Plex

Fraunces (Undercase Type) como display — con ejes opsz, wght, SOFT y WONK activos. Es lo que nos permite que un titular y un eyebrow microscópico se sientan parte del mismo organismo. IBM Plex Mono para metadatos tabulares.

Color

Navy + mint + cream

Tres colores dominantes, no más. #061c2d como tinta principal, #75dd84 como acento inteligente, #e6ebe7 como crema editorial. La escasez forza a usar el color como significado, no como decoración.

Motion

Lenis + Canvas + SVG + WAAPI

Lenis para scroll suave premium en desktop (touch usa scroll nativo). Canvas 2D + RAF para las partículas del hero que transitan del caos al grafo. La scrollytelling §II «Cómo se lee un territorio» es un stack isométrico 3D de 4 SVG capas (catastral, ambiental, económica, sanitaria) con CSS transform-style: preserve-3d. View Transitions API para crossfades entre páginas. WAAPI para coreografía del hero y para los reveals letra a letra.

Accesibilidad

WCAG AA · 100/100

Skip link, focus visible, aria-current, role/aria-modal en cmdk, aria-live para anuncios dinámicos en demos, inert en menús ocultos, contraste verificado, prefers-reduced-motion respetado en TODAS las animaciones — fallback estático para cada efecto.

Hospedaje

Cloudflare Pages

Build estático generado por un script Node simple. Las OG/Twitter cards se rasterizan con resvg-js cargando TTFs locales (Fraunces + IBM Plex) para que el render reproduzca lo que se ve en el sitio. Servido desde la red global de Cloudflare con HTTP/3 + Brotli + DNS en Cloudflare. _headers controla cache durante iteración.

SEO + IA

JSON-LD + llms.txt

Schema.org Organization, FAQPage, Article, Product. hreflang recíproco para ES/EN. llms.txt con mapa textual del sitio optimizado para LLMs. sitemap.xml generado automáticamente.

§ III Decisiones
01

El logo es un wordmark con marca, no un emblema.

La firma «Kohr» en paths (no fuente), con un slash diagonal mint embebido sobre la K — el slash funciona como la barra editorial y como acento de marca. El SVG vive con fondo transparente para sentarse limpio sobre el navy del sitio, y se rasteriza a PNG y favicon manteniendo proporciones. No hay isotipo aislado ni marca de agua: la identidad se construye en cómo se escribe el nombre — el slash es la firma.

02

Cero testimonios fabricados.

La mayoría de sitios consultores tienen una sección de «lo que dicen nuestros clientes» con frases vagas atribuidas a personas que podrían existir. Nosotros decidimos que es más honesto no incluir testimonios que inventar fricción social. Los casos son reales o son patrones documentados.

03

Bilingüe de verdad.

La versión en inglés no es Google Translate. Cada frase fue reescrita para una audiencia anglófona — los giros idiomáticos son distintos, los matices argumentales son distintos. Lo que permanece es la posición editorial, no la sintaxis.

04

Sereno demuestra, no ilustra.

En vez de mostrar un screenshot decorativo del producto, el sitio embebe un mockup interactivo en vivo — con datos simulados, filtros funcionales, hover ripple, y un view switcher Mapa/Timeline/Dashboard. El visitante interactúa con la tesis, no la lee.

05

El scrollytelling es el argumento.

§II «Cómo se lee un territorio» se construye capa por capa al scrollear — catastral, ambiental, económica, sanitaria. No es decoración: cada capa enuncia qué se lee y por qué importa. El visitante sale entendiendo qué hacemos, no qué decimos hacer.

§ IV Performance
100 Accesibilidad Lighthouse · ES + EN
100 Best Practices HTTPS · CSP · CORS
100/96 SEO desktop / mobile · Schema · hreflang
97/94 Performance desktop / mobile · LCP 1.2s / 2.8s · CLS 0

Métricas verificadas con Chrome Lighthouse v12 sobre la URL pública en producción. Scripts pesados se cargan post-window.load vía requestIdleCallback (TBT mobile pasó de 1.5s a 70ms), todos los assets JS se minifican con terser, y el logo LCP usa fetchpriority=high. Para auditar live: npx lighthouse https://kohrco.com --view.

§ V Créditos

Diseño + desarrollo

Aquiles Cohen

KOHR · Santa Marta, Colombia

Wordmark logo KOHR + paleta

Daniel Páez

Diseñador gráfico

Tipografía

Fraunces · IBM Plex

Undercase Type · IBM

Hospedaje

Cloudflare Pages

DNS + CDN global

§ VI Atajos de teclado

Presiona K en cualquier página para abrir la paleta de comandos. Navegación instantánea sin tocar el mouse — flechas para moverte, Enter para activar.

§ VII ¿Quieres que construyamos algo así?

Si te interesa contratar a KOHR para diseñar una pieza editorial digital con este nivel de cuidado — o si simplemente quieres hablar del oficio —, escríbenos.

Escribir a KOHR