OQOOQO · Permanencia Biblioteca

Biblioteca · kit

Design system

Sistema de marca: estrategia, color, tipo, logo y voz

Permanencia — Design System (kit técnico)

Este sitio es el kit (Canon v2). Humanos y agentes leen lo mismo.
Tokens: app/assets/css/tokens.css · Specs operativas: /specs · Agentes: AGENTS.md · Logos: public/logo/
Paquete: permanencia-canon · Sitio de aplicación: oqo.cl (oqo-permanencia)

Todo lo necesario para implementar y comunicar OQO bajo Permanencia está dentro de este kit. No hace falta abrir un brandbook HTML ni rutas del disco de nadie.


1. Brand

CampoValor
Brand namePermanencia
OrganizaciónAgencia OQO
TaglineCálida. Sólida. Presente. / Lo que dura, se siente.
ScoresClaridad 5 · Longevidad 5 · Atrevimiento 3 · Presencia 5
PersonalidadCálida · Sólida · Cercana · Minimalista
PilaresPermanencia · Evidencia · Cercanía · Precisión · Criterio

Resumen. Permanencia es la base canónica de OQO: canvas Origen (~40%), ink Base (~28%), Roble generoso en acción (~16%), Resalte como señal tech (~4%), triángulo tipográfico + mono, y fotografía bajo Materia + máquina (estilo-fotografico.md). Treinta años depurados — no reinventa.

Referencia viva de UI: el homepage (/ · componentes Home*) es el sistema visual aceptado — ritmo de bandas, motion GSAP, UiButton, media a sangre, header morph. Al implementar o auditar, priorizar fidelidad al home sobre descripciones heredadas del brandbook.


1.1 Estrategia de marca (incluida aquí)

Esta sección concentra la base estratégica. Es autónoma: no depende de otros documentos fuera del kit.

Verdad central

OQO se mide por el crecimiento sostenido de sus clientes — no por campañas puntuales ni entregables aislados. No vende campañas: construye, con cada cliente, algo que sigue en pie después de la primera entrega.

Misión y visión

Declaración
MisiónEn OQO construimos el crecimiento de nuestros clientes con relaciones que duran, no campañas que pasan.
VisiónSer la agencia en la que las empresas chilenas con trayectoria piensan primero cuando buscan no una campaña, sino un socio para los próximos diez años.

Valores

ValorSignificaNo significa
Permanencia sobre lo puntualÉxito en años de relación, no en campañas cerradasNegarse a proyectos puntuales cuando el cliente los necesita
Base antes que tendenciaConstruir sobre lo que ya funciona; la IA se apoya en oficioEvitar innovación
Tecnología con almaLa IA amplifica el criterio humano; hay revisión humanaUsar menos tecnología que la competencia

Posicionamiento

Para empresas chilenas con trayectoria — inmobiliarias, marcas de ecommerce y compañías de servicios — que necesitan crecer sin perder solidez, OQO es la agencia de marketing y tecnología que construye crecimiento sostenido, integrando estrategia, creatividad, medios e inteligencia artificial bajo un mismo equipo desde hace más de 30 años.

Versión corta: OQO construye crecimiento sostenido — no campañas puntuales — con estrategia, creatividad, medios e IA bajo un mismo equipo hace 30+ años.

Personalidad y promesa

  • Personalidad: cálida · sólida · cercana · minimalista
  • Promesa: cada proyecto se construye para seguir dando resultado después de entregado
  • Verticales foco: inmobiliario · ecommerce · servicios profesionales
  • Claims «30+ años» / liderazgo en IA: solo con evidencia cercana; si no hay evidencia, no se afirma

Pilares comunicacionales (detalle)

PilarQué implica
PermanenciaSistemas, relaciones y crecimiento que duran — no moda de la semana
EvidenciaPrueba o silencio; nunca métricas inventadas
CercaníaLenguaje humano, sin postureo de agencia cool
PrecisiónUna promesa por bloque; CTAs con verbo + objeto
CriterioOficio antes que tendencia; la IA amplifica, no sustituye

2. Color tokens

Fuente operativa: /specs. Cada color tiene --nombre (hex) y --nombre-rgb (canales 0–255, espacio). En código: var(--origen) o rgb(var(--origen-rgb) / .7). En Figma: hex + RGB con comas. Cero hex sueltos.

2.1 Dieta principal (suma 100%)

TokenHexRGBRol% uso
--origen#FAF6EE250 246 238Canvas / fondo principal40%
--base#1C181528 24 21Texto / ink / chrome oscuro / bandas ink28%
--roble#B07A3E176 122 62CTA / acento / kickers de relato / links16%
--veta#E4D4BC228 212 188Superficie madera suave / bandas8%
--resalte#5C93C992 147 201Señal tech · foco del dato · alias --tinta-sig4%
--piedra#C9C2B6201 194 182Bordes / meta / disabled4%

Gamas de Resalte (el 4% es el sólido; estas no suman extra):

TokenHexRGBRol
--resalte / --tinta-sig#5C93C992 147 201Señal sobre ink · columna destacada · foco del dato
--resalte-12#EEF4FA238 244 250Wash / zebra dentro del panel blanco
--resalte-24#DDECF7221 236 247Celda o nodo de apoyo
--resalte-shade-15#4E7FB078 127 176Hover sobre resalte (links ≥18px)

Blanco (fuera de la dieta % — no es canvas):

TokenHexRGBRol
--blanco#FFFFFF255 255 255Texto del CTA · superficie de diagrama / chart / matriz / captura
--info-paperaliasIgual que --blanco — el papel del gráfico

El blanco no es página. Es el papel del gráfico, anclado en Origen (borde ink-14, radio 16 px). Ver propuestas/design-v2.md.

Alias: --p = Roble · --d = Base · --l = Origen · --s = Veta · --a = Roble.

2.1.1 Resalte — cuándo y cómo

Un solo azul aprobado, y entra al %. No sustituye Roble en CTAs, nav activo ni links principales. Sobre bandas ink se nombra también --tinta-sig.

UsoEjemplo
Bullet / línea de estado activo en listas o timelineÍtem «Hoy» en trayectoria
Kicker o meta sobre banda ink«Lo que la máquina repite»
Columna o categoría destacada (línea superior + bullets)Etapa «Operar» en Alcance (HomeScope)
Señal tech / IA en nav de áreasÍtem IA en HomeServices (color-mix(resalte 88%, base))
Etiquetas técnicas puntuales (agente, IA)Label en snippet de conversación

Usos canónicos estables en el home: (1) etapa «Operar» en Alcance · (2) área «IA» en Áreas. Siempre señal tech; nunca CTA.

Rol extra (propuestas / módulos de dato): dentro de un panel --blanco, Resalte es el dedo que señala — nodo, serie, columna o hito. Fuera del módulo, el acento sigue siendo Roble. Un solo foco Resalte por página. Si ninguna serie es «la que importa», no uses Resalte: queda la dieta v1.

No usar resalte para: CTA primario, nav activo, kicker de relato, relleno de logo, fondos dominantes, purple genérico «AI look», ni más de un foco resalte por bloque visible.

Fuente CSS: app/assets/css/tokens.css (:root).

Lectura de la dieta (identidad): Origen es el canvas de marca. Base concentra masa tipográfica, chrome y bandas ink. Resalte es la señal técnica del sistema (home: Operar, IA, Hoy), no un extra. Los % (40/28/16/8/4/4) miden presencia de marca en el sistema, no un histogram por página.

Lectura en el homepage (superficie de scroll): el home invierte la proporción visual — ~65–70% superficie oscura (Hero velado + Alcance ink + Áreas fotográficas + Novedades ink) vs ~30–35% clara (Trayecto, Evidencia/veta, Equipo, CTA cierre). Hero y Áreas no son bandas ink puras: son media full-bleed velada con Base. Origen sigue dominando como color de texto sobre ink. Ver §4.1.

2.2 Gamas derivadas (solo estas)

Roble sobre Origen (tints) — wash, bandas, paneles de apoyo (CTA sólido sigue #B07A3E):

TokenHexRGBUso
--roble-08#F4ECE0244 236 224Hover / wash
--roble-16#EEE2D2238 226 210Bandas suaves
--roble-24#E8D8C4232 216 196Paneles apoyo
--roble-40#DCC4A8220 196 168Énfasis seco

Roble hacia Base (shades):

TokenHexRGBUso
--roble-shade-15#9A6B38154 107 56Hover CTA
--roble-shade-30#845D32132 93 50Pressed / texto contraste
--roble-shade-50#66492A102 73 42Ink cálido

Ink (Base sobre Origen):

TokenHexRGB
--ink-08#E8E4DD232 228 221
--ink-14#DBD7D0219 215 208
--ink-42#9D9993157 153 147
--ink-68#635F5A99 95 90
--ink-85#3D393661 57 54

Superficies Veta:

TokenHexRGB
--veta-35#F2EADD242 234 221
--veta-55#EEE3D3238 227 211
--veta-75#EADDC9234 221 201
--piedra-soft#E2DCD2226 220 210

2.3 Contraste (referencia)

ParRatioNota
Base / Origen16.36:1AAA cuerpo
Blanco / Roble3.68:1AA large — CTA primario ≥18px bold, blanco sobre Roble
Base / Roble4.79:1AA texto en botón denso
Roble / Origen (small)3.42:1No AA small — solo links ≥18px bold / subrayados
Piedra / Origen~1.6:1Solo bordes — nunca texto
Resalte / Base (ink)~5.2:1AA meta / kickers ≥11px uppercase
Resalte / Origen~2.8:1Solo bullets, líneas, iconos — no body small

2.4 Color prohibitions

  • No pasteles por pilar (coral, salvia scrape, neones, purple AI genérico).
  • No otros azules fuera de --resalte (#5C93C9).
  • No teñir el logo de Roble ni degradé.
  • No reducir Roble a chip <8%; Permanencia exige ~16% de presencia en acción.
  • Veta nunca como CTA ni fill del logo.
  • Piedra nunca como CTA.
  • Blanco nunca como canvas de página. Solo texto de CTA y módulo de información.
  • No sustituir Roble por Resalte «para que se vea moderno».

3. Tipografía

Triángulo + mono. Cada familia tiene una capa. Se mezclan en la misma página si cada una está en la suya — no si un titular de sección se escribe como interfaz.

RolFamiliasCapaRegla
StoryFraunces + ManropeLa marca le habla al lectorTitulares de sección en Fraunces, caja normal
ProductoPP Formula + PP RaderEl lector usa o eligePlataformas, chips, fichas, CTAs, forms
MetaPP Supply MonoLa máquina reportaRótulos, datos, grilla técnica

Regla operativa: si es una frase que la marca le dice al lector, va en Fraunces. Si es una cosa que el lector usa o elige, va en Formula. Si es un dato que la máquina reporta, va en Mono.

Mayúsculas solo en rótulos ≤3 palabras (chips, kickers, B2B, CHECKOUT). Toda frase va en caja normal. Techo: si tiene más de tres palabras, no va en mayúsculas. La autoridad no levanta la voz.

3.1 Familias y tokens CSS

Rol internoFamiliasCSS varsFallbacks web
Producto / UI displayPP Formula Narrow--font-ui'Arial Narrow', sans-serif
Producto / UI bodyPP Rader--font-ui-bGeorgia, serif
Story displayFraunces--font-storyGeorgia, serif
Story bodyManrope--font-story-bsystem-ui, sans-serif
MetaPP Supply Mono--font-mui-monospace, monospace

Medida (tokens): --fw-story 600 · --fw-story-body 400 · --fw-ui 600 · --fw-mono 500 · --track-story −0.015em · --track-ui −0.02em · --track-cta 0.06em · --track-mono 0.12em · --lh-body 1.55.

Self-host (kit y web): empaquetar en assets/fonts/ (kit) y servir en /fonts/ (oqo.cl, brandbook, Nuxt). Licencia Pangram Pangram: uso interno OQO; no redistribuir el kit a terceros sin acuerdo de licencia.

Google Fonts: Fraunces (opsz 9..144, 500–700) + Manrope (400–700).

3.2 Cuándo cuál

ContextoSistema
Titular de sección (home, servicio, agencia)Fraunces · caja normal
Nav, plataformas, chips, CTAs, fichas, formsFormula + Rader
About, casos climax, historia de marca, landing emocionalFraunces + Manrope
Rótulos, hex, scores, datos, grilla técnicaSupply Mono

Riesgo A: Fraunces en toda la UI → se pierde precisión de producto.
Riesgo B: Formula en todos los titulares de sección → la página no tiene voz; lee como interfaz. Es el error de la auditoría de servicios.

3.3 Escala de cuerpo (cuatro tokens + piso)

Nada de font-size en rem con decimales. 11px es el piso. Titulares en clamp() fluido aparte.

TokenTamañoRol
--fs-xs11pxRótulos y etiquetas en mono
--fs-sm13pxLetra chica: pie de tarjeta, meta
--fs-md15pxCuerpo secundario: listas, tarjetas, chips
--fs-lg17pxCuerpo y bajadas

3.4 Escalas de display

Producto / UI (cosas que se usan o eligen — no titulares de sección)

NivelFamiliaSizeWeight / tracking
Display UIFormulaclamp(48–96px)700 · −0.02em · UPPER solo si ≤3 palabras
Card / chipFormula15–18px600 · UPPER si rótulo corto
BodyRader--fs-lg 17px / 1.55400–500 · max ~60ch
CTAFormula≥18px600 · 0.06em · UPPER · blanco sobre Roble
MetaSupply Mono--fs-xs 11px500 · 0.12em · UPPER

Emoción / story (la marca le habla al lector)

NivelFamiliaSizeWeight / tracking
Display / H2 de secciónFraunces44–80px · clamp600–700 · −0.015em · caja normal
LeadManrope19–22px / 1.55500
BodyManrope--fs-lg 17px / 1.6400–500

4. Layout tokens

TokenValorUso
--space-18pxGaps densos, iconos, meta
--space-216pxPadding control / nav items
--space-324pxBloques internos
--space-440pxSecciones compactas
--space-564pxPadding vertical sección (mín)
--space-6120pxPadding vertical sección (máx)
--wrapmin(1180px, 100%)Contenedor
Guttersclamp(20px, 4vw, 64px)Padding horizontal sección
--nav-h56pxAltura nav
--radius16pxSuperficies / paneles
--btn-radius999pxBotones / chips (pill canónico)
--easecubic-bezier(0.32, 0.72, 0, 1)Motion default
--dur-ack110msAcuse de recibo (hover/press corto)
--dur-state220msCambio de estado
--dur-enter560msEntrada / reveal
--fs-xs--fs-lg11 / 13 / 15 / 17pxCuerpo. Piso --fs-floor 11px
--touch-min44pxObjetivo táctil mínimo

Grid sugerido: 12-col mental dentro de wrap; splits ~1.05fr / 0.95fr; breakpoints ~900px / 800px / 700px.

Sombra: Permanencia evita multi-layer shadows. Preferir bordes --line / ink-14, box-shadow: inset 0 0 0 1px (borde por inset) y contraste de bandas. Si hace falta elevación mínima: 0 1px 0 color-mix(in srgb, var(--d) 8%, transparent) — no glow.

Hero overlay (foto oscura):
linear-gradient(185deg, rgba(28,24,21,.14) 0%, rgba(28,24,21,.42) 48%, rgba(28,24,21,.93) 100%)
En home: velos con color-mix(in srgb, var(--base) …%) — nunca negro puro inventado.


4.1 Home — sistema visual aceptado

El homepage (app/pages/index.vue + app/components/home/Home*) fija el ritmo, los componentes y el motion del sitio. No «corregir» el home hacia % de dieta abstractos; alinear otras páginas story al home.

Ritmo de bandas (alternancia estricta)

Nunca dos bandas oscuras consecutivas. Oscuro ↔ claro en todo el scroll:

#SecciónComponenteCarácterBanda / superficie
01HeroHomeHerooscuraOrigen marco + video/velo Base (sticky ~250vh)
02TrayectoHomePathclara--origen (+ overhang del hero)
03AlcanceHomeScopeoscura--base (ink)
04EvidenciaHomeEvidenceclaraSectionShell band="veta"
05ÁreasHomeServicesoscurafoto a sangre + velo Base
06EquipoHomeTeamclara--origen (tren parallax — no forzar ink)
07NovedadesHomeBlogoscuraSectionShell band="ink"
08CTA cierreinlineclaraSectionShell band="paper"

Ocultas a propósito (no reactivar sin brief): HomeInsights, HomeInfo.

Tone tipográfico del home: story (Fraunces + Manrope) en toda la página; Formula/Rader solo en roles producto puntuales (hitos Path, tabs Scope, watermarks Evidence, CTAs UiButton). Los titulares de sección del home son el patrón correcto: Fraunces, caja normal.

Escala de texto / superficie sobre ink

RolToken
Título--origen 100%
Leadcolor-mix(origen 70%)
Meta / body suavecolor-mix(origen 68–72%)
Líneas / bordescolor-mix(origen 12–13%)
Superficies / badgescolor-mix(origen 6–10%)

Media a sangre

En paneles con foto/video, la media va a sangre del contenedor (sin padding ni radio propio que la deje flotando). Confirmado en Scope, Áreas, Novedades, Equipo (escena fuera del wrap + mask-image). Filtros estándar: brightness(0.82) contrast(1.05) (Scope) · grayscale(0.16) contrast(1.04) → color en hover (Equipo).

Wrap

--wrap / --section-wrap = min(1180px, 100%). Única excepción documentada: Áreas amplía a ~1240px en ≥1024px por sticky + cards.


4.2 Motion (lenguaje canónico)

Implementación: GSAP + ScrollTrigger, import dinámico en onMounted, cleanup con gsap.context() + ctx.revert(). Respetar prefers-reduced-motion (estado final sin scrub/loops).

PatrónEspecificación
Ease UI (CSS)--ease: cubic-bezier(0.32, 0.72, 0, 1) · --dur-ack 110ms · --dur-state 220ms
Ease entradapower2.out · --dur-enter 560ms (reveals) · power3.out (bloques grandes)
Ease morph largocubic-bezier(0.22, 1, 0.36, 1) (header, cards Áreas, hover Equipo)
Reveal estándaropacity 0→1 + y 18–22→0 · 0.55–0.7s · stagger 0.09–0.12 · trigger top 75–82% · once: truesin blur
Reveal lateralx 20→0 o translate3d(4rem,0,0) (entrada desde la derecha)
Scrubtrue (Hero 1:1) · 0.55 (Path) · 1.2–1.6 (header). Nunca scrub largo en lectura
Loopsease: 'none' · repeat: -1 · tracks duplicados xPercent ±50 · sentidos opuestos a distinta velocidad
Hover-slowtimeScale → 0.2 en ~0.5s al hover/focusin (marquee Evidencia, tren Equipo)
Dot / springback.out(1.6) solo en aparición de dots del riel
Elevación hovertranslateY(-2px) máx · scale solo en media (1.06–1.08) o :active 0.965–0.97

Header morph: barra full sobre --base + logo blanco.png → pill compacto a la derecha al scroll (--h-p 0→1, smoothstep, rango ~480px). Nav links se desvanecen; burger aparece; CTA «Hablemos!» permanece. Ver AppHeader.vue.

4.3 Bandas oscuras: ink y tech

Dos nombres, la misma trampa. .band-ink / .section--ink es espresso de relato. .band-tech / .section--tech es espresso de señal (plataformas, integraciones, dato). El texto sobre ambas usa la escala de Origen sobre Base (§4.1).

Regla: todo override de color para banda oscura se escribe para ink y tech a la vez. Si solo se cubre una, hay un agujero de contraste (bajadas a 2,4:1). Foco de teclado visible con variante por banda. Objetivo táctil ≥ --touch-min 44px.


5. Componentes

5.1 Botón — UiButton (canónico del sitio)

Implementación: app/components/ui/UiButton.vue. El kit .btn / .btn-ghost es fallback para brandbook/HTML; en Nuxt usar siempre UiButton.

VarianteFondoTextoTipoIcono circular
primary--roble#fffFormula ≥18px / 600 / UPPER / 0.06emsí · círculo cream · flecha Base
ghostcolor-mix(origen 10%) + blur · borde origen 28%--origenFormula ≥18px
secondarytransparente · borde color-mix(roble 55%)--baseSupply Mono --fs-xs 11pxsolo si hay slot
secondary-on-darktransparente · borde origen 72%--origenFormula ≥18px
  • Pill asimétrico con icono a la derecha (padding denso al lado del círculo).
  • Hover primary → --roble-shade-15.
  • Un CTA dominante por viewport. Copy cálido tipo Hablemos! (no genéricos fríos).
  • Label del CTA: Formula; nunca Fraunces en el botón.

5.2 Kicker con dot

Patrón canónico (Path, Scope, CTA cierre, etc.):

  • Supply Mono 11px · 500 · letter-spacing: 0.12em · UPPER · color --roble
  • Dot 0.45–0.5rem · border-radius: 999px · mismo color (o --resalte si el bloque es foco tech)
  • Variante sin dot: .section__kicker vía SectionHeader

5.3 Tags, pills y chips

FamiliaUsoSpec
Tag informativoCTA cierrepill borde --ink-14 · Manrope 14px · no interactivo
Pill con iconoScopeborde línea clara · icono lucide · acento resalte puntual
Chip toggleScope needs / Evidencia tabsmin-height: 44px · aria-pressed · activo = inversión fondo/texto
Pill categoríaNovedadesSupply Mono 10px · tonos roble / base invertido / shade
Badge cuadradoNovedades kickerexcepción al pill · radius 8px

5.4 Nav / header

  • Fondo siempre --base · logo blanco.png (~72px en full)
  • Links: Supply Mono · active = fondo Roble + texto blanco
  • CTA «Hablemos!» primary Roble
  • Morph a pill compacto a la derecha (ver §4.2) — no recrear nav cream/claro del brandbook legado
  • Color Roble; preferir underline o weight en body
  • Small text: no Roble plano sobre cream — usar Base / ink-85 / shade-30
  • Hover: shade-15 o underline más marcado

5.6 Formularios

  • Campos mínimos (nombre, email, mensaje / proyecto)
  • Input: fondo Origen o Veta-soft · borde ink-14 / Piedra · radius 12–16px (inputs) o pill en chat-like
  • Focus: borde Roble · outline suave Roble-24
  • Label: Supply Mono o Rader 14px · color ink-68
  • Submit: UiButton primary
  • Sin chat flotante ruidoso; expectativa de respuesta en meta

5.7 Cards

  • Default: no cards decorativas
  • Cards solo con interacción real (link, filtro, selección, aria-pressed)
  • Tipologías del home:
    • Glass sobre oscuro (Áreas): color-mix(base 42%) + backdrop-filter: blur(10px) · radius ~1.5rem · hover a ~55%
    • Contenido sobre ink (Novedades): borde origen 12% · fondo origen 6% · radius --radius · hover en media
    • Panel-card (Scope): borde por inset 0 0 0 1px (no border que mueva layout)
    • Flotantes hero: única excepción decorativa · aria-hidden · composición del sticky, no contenido
  • Elevación por borde/inset — nunca multi-shadow ni glow

5.8 Módulo de información (propuestas · v2)

Ajuste sobre la v1. No es otra marca. Si la página no trae diagrama ni dato denso, se diseña solo con v1 (Origen / Veta).

Spec
Superficie--blanco #fff
Bordeink-14 o inset 0 0 0 1px — sin sombra, sin glow
Radio--radius 16 px digital / 8–12 pt print
Padding16–24 px (A4) · 24–40 px (16:9)
AnclajeSobre Origen o banda Veta — el blanco dentro, no al revés
FocoUn nodo / serie / hito en Resalte. El resto Base · ink-68 · Veta
Label del datoSupply Mono Resalte o ink-68 — el azul etiqueta el dato, no la sección
Kicker de páginaSupply Mono Roble (sigue v1)
CTA / inversiónRoble + --blanco en el botón

Máximo un panel de información focal por página. Detalle: propuestas/design-v2.md.


VariantePath (relativo al kit)Uso
Negropublic/logo/negro.pngSobre Origen, Veta, Piedra, cream
Blancopublic/logo/blanco.pngSobre Base, Roble, foto oscura

Reglas

  • Monocromo únicamente (negro o blanco). Nunca teñir de Roble / filtros / degradé.
  • Clear space ≥ diámetro del punto de la Q.
  • No distorsionar, rotar, sesgar ni comprimir proporciones.
  • No fondos ajenos a la dieta Permanencia.

7. Photography / imagery

Concepto madre: Materia + máquina — oficio (roble, papel, grano) y tecnología (pantallas, datos, campañas) en el mismo plano editorial.

Estándar operativo (fuente de verdad): estilo-fotografico.md — dos modos:

ModoTesisTexto en UI
FísicoPedido/materia + dispositivo con catálogo limpio (sin ruido decorativo)Por defecto no
DigitalServicio en UI creíble sobre roble; tipografía nítida; locale Chile / CLP si hay montosSí cuando comunica

Dieta común: Origen / Roble / Base — luz cream, sombra suave, una idea por frame. Agencia de marketing: oficio y resultado, no madera abstracta ni open space stock.

Capas de mood (brandbook): Camino D · Materia Digital + A Materia / B Mesa / C Pieza — recetas en PHOTO.md. No sustituyen los modos Físico/Digital en páginas de servicio o campaña.

Permanencia Servicio (/servicios/*): frames Hero · Empaque · Compra · Operación acoplados al copy + modo Físico o Digital según vertical. Ver estilo-fotografico.md §7. Assets: public/images/servicios/<slug>/.

Proveedores: el estándar es agnóstico. Registrar jobs en la carpeta del asset. Exploración en calidad baja; cierre en media-alta / ≥2k cuando tipografía importe.


7.1 Render en light y dark

Toda pieza Permanencia debe leerse en canvas claro (Origen) y en bandas ink (Base), sin inventar hex.

ContextoFondoTextoCTALogo
Canvas claroOrigen / Veta / Roble-08Base / ink-85Roble + blanco ≥18pxnegro.png
Banda inkBaseOrigen (+ escala §4.1)Roble + blanco ≥18pxblanco.png
Foto / video hero o breakoverlay / velo Base (color-mix)OrigenRoble + blancoblanco.png
Header sitioBaseOrigenRoble + blancoblanco.png

Emails y PDF: asumir fondo claro; si el visor fuerza dark mode, preferir banda ink completa con Origen como texto — no grises inventados.


7.2 Gobernanza (validación)

  • Permanencia es la base del nuevo framework de identidad; el brandbook HTML es presentación.
  • Propuestas nuevas: propuestas/design.md. La cadena coral (brand-voice v1.2) sigue vigente solo en deals en curso hasta migrar.
  • Fuente de verdad técnica: este kit. No inventar clientes, métricas ni servicios.

8. Do / Don't

DoDon't
Un acento Roble generoso en acciónChip Roble “discreto” o Resalte como CTA
Titular de sección en Fraunces, caja normalH2 de servicio en Formula UPPER
Mayúsculas solo en rótulos ≤3 palabrasFrases completas en caja alta
Escala --fs-xs--fs-lg · piso 11pxfont-size en rem con decimales / texto a 9–10px
Override oscuro en ink y techColor de banda clara olvidado sobre espresso
#fff solo en CTA y módulo de datoPágina / PDF / slide con canvas blanco
Dual tipográfico etiquetadoFraunces en toda la UI de producto
Logo negro/blanco según fondoLogo teñido o con filtros
Una promesa + evidencia“IA mágica / next-level / 360” vacío
Hero full-bleed / sticky con un jobDashboard clutter / badges flotantes
Cards solo con interacciónCards decorativas (salvo composición hero aria-hidden)
Alternancia oscuro↔claro (ritmo home)Dos bandas ink consecutivas
Media a sangre del contenedorFoto inset con padding/radio flotante
Motion del vocabulario §4.2Blur-reveal genérico / glow / scrub en lectura
Tokens desde app/assets/css/tokens.cssHex inventados por campaña
Atmósfera madera / cream + ink fotográficoPurple AI / neon / gibberish
Fidelidad al homepage como sistema«Corregir» Equipo/CTA a oscuro por simetría

9. AI implementation notes

  • Este kit (content/canon/design.md + AGENTS.md + app/assets/css/tokens.css) es la fuente de verdad instalable.
  • Skill Cursor (si está instalada): oqo-permanencia-branding — buscar el kit en el workspace (oqo-permanencia, permanencia-kit o brand/).
  • Roles: Dev (Cursor) implementa UI/código; Comercial (Claude) escribe propuestas/copy.
  • No inventar servicios, clientes, métricas, años ni headcount.
  • Diseño web: un job por sección, brand-first hero, sin purple AI default.
  • UI canónica: homepage (Home*) + UiButton + header morph — ver §4.1–5.
  • Español latinoamericano neutro (tuteo o impersonal; sin voseo).

10. Sitemap sugerido (oqo.cl · Permanencia)

Home
├── Servicios (hub: Estrategia · Digital · Medios · Creatividad · IA)
│   └── Servicio detalle (hero · problema · enfoque · evidencia · CTA)
├── Casos (listado + ficha)
├── Agencia (sentido · trayectoria · criterio)
├── Novedades (listado + artículo)
└── Contacto (formulario único)

Home (sistema aceptado · ver §4.1):
Hero sticky (video + cards overhang) → Trayecto (Path) → Alcance ink → Evidencia veta → Áreas sticky/cards → Equipo tren → Novedades ink → CTA paper.
Tone story · UiButton · media a sangre · motion GSAP §4.2 · header morph.

Servicio detalle: Nav + hero full-bleed (1 CTA) → problema → enfoque → features si aplica → evidencia → CTA. Titulares de sección en Fraunces, caja normal. Formula/Rader en plataformas, chips, fichas y CTA. Mono en rótulos y dato. Referencia: /servicios/ecommerce. La mitad-máquina y la mitad-materia conviven; nunca solo pantalla.

Servicios de referencia: Ecommerce, Desarrollo Web, Marketing Digital, Branding, Audiovisual, Agentes Conversacionales, Estrategia, SEO, Social Media, SFCC, Automatización, Medios, Investigación, Contenido — alinear con oqo.cl vigente; no inventar nombres nuevos.


11. File map (este kit)

Rutas relativas a la raíz de permanencia-canon. No uses rutas absolutas del disco de nadie.

PathContenido
content/canon/design.mdEste documento (fuente de verdad)
content/canon/propuestas/design.mdDesign system de propuestas v1
content/canon/propuestas/design-v2.mdAjuste: panel blanco + Resalte
content/canon/AGENTS.mdMandatos Dev + Comercial
app/assets/css/tokens.css:root canónico: hex + --*-rgb, tipo, ritmo
data/specs-tokens.tsInventario operativo de /specs
app/pages/specs.vueSpecs: base para diseño y código
public/logo/negro.pngLogo sobre fondos claros
public/logo/blanco.pngLogo sobre fondos oscuros
public/fonts/PP Formula, Rader, Supply Mono
content/canon/cursor/SKILL.mdSkill Cursor de referencia
content/canon/estilo-fotografico.mdEstándar Físico/Digital
content/canon/PHOTO.mdMood Camino D (subordinado)
data/palette.ts · type-roles.ts · voice.tsUI de capítulos

El sitio oqo-permanencia sigue siendo la aplicación viva (oqo.cl). Este repo es el Canon: manual + verdad para agentes.


12. Arranque

cp .env.example .env
npm install
npm run dev

Skill operativa: oqo-permanencia-branding. No duplicar como permanencia-branding.