00 · Introducción

Design System
Inhabi

Sistema de diseño normalizado a partir del sitio original. Consolida colores, tipografía, botones, tarjetas, formularios y componentes reutilizables en tokens CSS y clases utilitarias. Todas las clases llevan el prefijo del sistema y funcionan tanto en superficies oscuras como claras.

CSS TokensVanilla CSSAccesible (AA)Motion reducido

01 · Fundación

Tokens de diseño

Variables globales que alimentan todos los componentes. Cámbialas y todo el sistema se adapta automáticamente.

Espaciado fluido

Se adaptan al viewport con clamp(), sin breakpoints duros.

/* Espaciado */
--gutter:    clamp(20px, 4vw, 56px);
--section-y: clamp(72px, 10vw, 140px);
--max-w:     1400px;

Radios

--r-pill: 999px;  /* Botones, badges */
--r-sm:   4px;    /* Chips, badges cuadrados */
--r-md:   8px;    /* Tarjetas */
--r-lg:   16px;

Movimiento

--ease:    cubic-bezier(.2, .7, .2, 1);
--ease-io: cubic-bezier(.76, 0, .24, 1);
--t-fast:  .2s;   --t-base: .3s;   --t-slow: .4s;

Sombras

--shadow-sm: 0 4px 12px rgba(0,0,0,.18);
--shadow-md: 0 10px 30px rgba(0,0,0,.28);
--shadow-lg: 0 20px 50px rgba(0,0,0,.35);

02 · Fundación

Paleta de colores

Dos superficies base (tinta y crema), un acento verde salvia y escalas de texto/borde derivadas.

Marca

Ink

#12110E

--ink

Ink Soft

#1B1A16

--ink-soft

Ink Hover

#2B2A24

--ink-hover

Cream

#F3F0E9

--cream

Cream Soft

#E6E1D6

--cream-soft

Sage

#CDD2C0

--sage

Texto sobre oscuro

FG

#F3F0E9

--fg

FG Muted

#D8D4C8

--fg-muted

FG Soft

#B9B5A8

--fg-soft

FG Dim

#A8A597

--fg-dim

FG Ghost

#8F8C80

--fg-ghost

Texto sobre claro

Ink FG

#12110E

--ink-fg

Ink Muted

#4D493F

--ink-muted

Ink Soft

#6B675C

--ink-soft-fg

Ink Accent

#6F7A5F

--ink-accent

Bordes

TokenValorUso
--border-dark-1rgba(243,240,233,.12)Divisores sutiles sobre oscuro
--border-dark-2rgba(243,240,233,.20)Bordes de tarjeta / meta
--border-dark-3rgba(243,240,233,.35)Botones tab, inputs
--border-dark-4rgba(243,240,233,.50)Botón outline, focus
--border-light-1rgba(18,17,14,.15)Divisores sobre claro
--border-light-2rgba(18,17,14,.25)Chips, inputs claro
--border-light-3#12110eBorde sólido principal

03 · Fundación

Tipografía

Tres familias con roles claros: Instrument Serif para titulares y cifras, Manrope para cuerpo, IBM Plex Mono para etiquetas y datos técnicos.

Escala

Display · 148px

Habitar

H1 · 120px

Espacios que se sienten.

H2 · 88px

Tres formas de habitar

H3 · 56px

Mismo espacio, otro carácter

H4 · 40px

Detalles que importan

Cuerpo + Lead + Italic

Diseñamos soluciones exclusivas, innovadoras y de alta calidad.

Cada proyecto se cotiza según metraje, alcance, ubicación y acabados. Completa los datos y te enviamos una propuesta a la medida.

Si te identificas con la luz, la calidez y los espacios que recargan el espíritu…

Eyebrow + Mono label

Arquitectura e interiorismo · Bogotá

WhatsApp · +57 322 727 6453

<p class="t-display">Habitar</p>
<p class="t-h1">Espacios que se <em>sienten</em>.</p>
<p class="t-h2">Tres formas de habitar</p>
<p class="t-lead">…</p>
<p class="t-eyebrow">Arquitectura e interiorismo</p>

04 · Componente

Botones

Variantes que se adaptan automáticamente a la superficie contenedora. Añade .surface--light al contenedor y los botones adoptan la paleta clara.

Sobre superficie oscura

Sobre superficie clara

Tamaños

Tabs y selector de idioma

<!-- Botones base -->
<button class="btn btn--primary">Diseña tu espacio</button>
<button class="btn btn--outline">Solicitar cotización</button>
<button class="btn btn--ghost">Ver más</button>
<button class="btn btn--sage">Agendar visita</button>

<!-- Tamaños -->
<button class="btn btn--sm btn--primary">Small</button>
<button class="btn btn--lg btn--primary">Large</button>

<!-- Tabs -->
<button class="btn-tab is-on">01 Natural</button>
<button class="btn-tab">02 Minimal</button>

<!-- Selector de idioma -->
<div class="lang-toggle">
  <button class="is-on">ES</button>
  <button>EN</button>
</div>

05 · Componente

Badges & etiquetas

Pequeñas cápsulas informativas: categorías, estados, numeración de pasos.

01 · CombosNuevoIntegral · NaturalEn obra01 —
<span class="badge">01 · Combos</span>
<span class="badge badge--sage">Nuevo</span>
<span class="badge badge--cream">Integral · Natural</span>
<span class="badge badge--ghost">En obra</span>

06 · Componente

Tarjetas

Tres familias: combo (paquete con imagen), proyecto (link visual) y opción de configurador.

Tarjeta Combo

Vital02
Práctico · Estructurado

Mantiene el sello de diseño elevando la experiencia con mobiliario más amplio y mejor organización diaria.

Ver en el configurador →
Integral03
Sofisticación · Presencia

La experiencia más completa: mobiliario de gran escala, áreas sociales integradas y almacenamiento superior.

Ver en el configurador →

Opciones del configurador (sobre claro)

<!-- Tarjeta combo -->
<article class="card is-active">
  <div class="card__media" style="aspect-ratio:16/10">
    <img src="…" alt="">
  </div>
  <div class="card__body">
    <div class="card__head">
      <span class="card__title">Vital</span>
      <span class="card__kicker">02</span>
    </div>
    <span class="card__kw">Práctico · Estructurado</span>
    <p class="card__desc">Descripción…</p>
    <span class="card__cta">Ver en el configurador →</span>
  </div>
</article>

07 · Componente

Formularios

Inputs minimalistas con subrayado, chips de selección múltiple, rangos y botones de día/hora. Todos heredan el tema de su contenedor.

Campos (superficie clara)

Chips de selección múltiple

Range (área)

Área aproximada120 m²

Selector de día y hora

<!-- Campo -->
<label class="field">
  <span class="field__label">Nombre</span>
  <input class="input" type="text" placeholder="Tu nombre">
</label>

<!-- Chip -->
<button class="chip is-on">
  <span class="chip__mark">✓</span> Cocina
</button>

<!-- Día -->
<button class="day is-on">
  <span class="day__wd">Mar</span>
  <span class="day__num">29</span>
  <span class="day__mo">Sep</span>
</button>

09 · Layout

Secciones y contenedores

Cuatro combinaciones de fondo alternadas. El contenedor limita a 1400 px; el gutter es fluido.

Fondos

.section--dark

.section--dark2

.section--light

.section--light2

<section class="section section--dark">
  <div class="container">
    <header class="section-head">
      <div class="section-head__col">
        <p class="t-eyebrow">01 — Combos</p>
        <h2 class="t-h2">Tres tipos de remodelación</h2>
      </div>
      <p class="section-head__sub t-body">…</p>
    </header>
  </div>
</section>

10 · Componente

Componentes especiales

Patrones recurrentes del sitio: botón flotante de WhatsApp, panel sticky de resumen, callout de éxito y comparador antes/después.

Panel sticky de resumen

A la derecha verás el panel de resumen con imagen, lista de filas y botones de acción. Sustituye la imagen por el render del configurador.

Resumen de tu solicitud
InmuebleApartamento
Área120 m²
ComboVital
EstiloNatural
PlazoHasta 60 días

Callout de éxito

Recibimos tu solicitud. Te contactaremos en menos de 24 horas hábiles para agendar la visita técnica.

Comparador antes / después

‹ ›
IndustrialNatural
<div class="compare">
  <img src="antes.jpg">
  <img src="despues.jpg" style="clip-path:inset(0 50% 0 0)">
  <div class="compare__handle" style="left:50%">
    <div class="compare__knob">‹ ›</div>
  </div>
</div>

Botón flotante WhatsApp

En producción ocupa la esquina inferior derecha. Aquí lo mostramos inline.

11 · Movimiento

Animaciones

Curvas y duraciones consistentes. Se desactivan automáticamente con prefers-reduced-motion.

Clases utilitarias

.anim-in

.anim-up

.anim-up-slow

<div class="anim-up">…</div>

/* Keyframes disponibles */
@keyframes inFade  { from { opacity: 0 } to { opacity: 1 } }
@keyframes inUp    { from { opacity: 0; transform: translateY(24px) } to { opacity: 1; transform: none } }
@keyframes inLine  { from { transform: scaleX(0) } to { transform: scaleX(1) } }
@keyframes kb      { from { transform: scale(1.12) } to { transform: scale(1) } }

/* Respeta reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    transition-duration: .01ms !important;
  }
}

12 · Ayudas

Utilidades

Clases de una sola función para composición rápida.

ClaseEfecto
.flexdisplay: flex
.flex-colflex-direction: column
.gap-8 / .gap-12 / .gap-16 / .gap-24 / .gap-48Espaciado entre hijos
.wrapflex-wrap: wrap
.centeralign-items: center
.betweenjustify-content: space-between
.baselinealign-items: baseline
.mt-24 / .mb-24 / .mt-48Márgenes verticales
.hrDivisor oscuro
.hr--lightDivisor claro

Estructura recomendada de archivos

styles/
├── tokens.css        /* Variables :root — importar primero */
├── reset.css         /* Reset mínimo */
├── typography.css    /* .t-display, .t-h1, .t-body… */
├── buttons.css       /* .btn, .btn-tab, .lang-toggle */
├── cards.css         /* .card, .card-project, .opt, .opt-thumb */
├── forms.css         /* .field, .input, .chip, .day, .range */
├── navigation.css    /* .nav, .nav__links */
├── sections.css      /* .section, .container, .section-head */
├── components.css    /* .fab, .sticky-panel, .compare, .callout */
├── animations.css    /* @keyframes + .anim-* */
└── utilities.css     /* .flex, .gap-*, .mt-* */

main.css  /* importa todo en orden */

Adopción en HTML

<link rel="stylesheet" href="styles/main.css">

<!-- Sección clara: envuelve en .surface--light para que los componentes hereden -->
<section class="section section--light surface--light">
  <div class="container">
    <button class="btn btn--primary">Acción</button>
  </div>
</section>