Papel
Cada chat, con su vendedor
Entra asignado a Ana, Diego o Lucía.
↑↓ moverse↵ abrirEsc cerrar
Componentes
Cada pieza, viva y con su código para copiar. Los datos de los ejemplos son inventados.
Piloto · Clínica Dental Norte · Ejemplo
Día 9 de 14 · miércoles 14 de octubre
Botones
Pasa el mouse o usa Tab sobre el primero: los estados son de verdad.
Más reglas
Medidas
HTML
<button class="cl-btn" type="button">Pedir piloto gratis</button> <button class="cl-btn cl-btn-sec" type="button">Ver cómo funciona <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></button> <button class="cl-btn cl-btn-form" type="button">Volver</button>
CSS
.cl-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--s-8);
min-height: var(--boton-alto);
padding: 0 var(--s-24);
border: 0;
border-radius: var(--r-pill);
background: var(--acento);
color: var(--sobre-acento);
font: var(--bold) var(--t-19)/1 var(--fuente);
letter-spacing: var(--trk-19);
text-decoration: none;
white-space: nowrap;
cursor: pointer;
transition: filter var(--dur-micro) var(--mov-micro);
}
.cl-btn:hover,
.cl-btn.is-hover {
filter: brightness(.92);
}
.cl-btn:focus-visible,
.cl-btn.is-focus {
outline: var(--foco-ancho) solid var(--acento);
outline-offset: 2px;
}
.cl-btn:disabled,
.cl-btn[aria-disabled="true"] {
background: var(--borde);
color: var(--texto-3);
filter: none;
cursor: not-allowed;
}
/* secundario: sin caja, texto en tinta y una flecha SVG */
.cl-btn-sec {
background: none;
color: var(--texto);
padding: 0;
min-height: var(--tocable);
}
.cl-btn-sec:disabled {
background: none;
}
.cl-btn-sec svg {
width: var(--icono-tam);
height: var(--icono-tam);
flex: none;
fill: none;
stroke: currentColor;
stroke-width: var(--icono-trazo);
stroke-linecap: round;
stroke-linejoin: round;
transition: transform var(--dur-micro) var(--mov-micro);
}
.cl-btn-sec:hover svg {
transform: translateX(3px);
}
/* de formulario (volver, cancelar): píldora blanca con borde Apagado */
.cl-btn-form {
background: var(--elevado);
color: var(--texto);
border: var(--borde-ancho) solid var(--borde-control);
}
.cl-btn-form:disabled {
border-color: var(--borde);
}Campos
Escribe en los tres primeros: son campos de verdad.
Revisa tu número: en Perú son 9 dígitos y empieza en 9.
Más reglas
Medidas
HTML
<div class="cl-campo"> <label for="c-negocio">Nombre del negocio</label> <input id="c-negocio" type="text" value="Clínica Dental Norte" autocomplete="off"> </div> <div class="cl-campo is-error"> <label for="c-wa2">WhatsApp de contacto</label> <input id="c-wa2" type="tel" value="98765" aria-invalid="true" aria-describedby="c-err" autocomplete="off"> <p class="cl-campo-error" id="c-err">Revisa tu número: en Perú son 9 dígitos y empieza en 9.</p> </div>
CSS
.cl-campo {
display: flex;
flex-direction: column;
gap: var(--s-8);
min-width: 0;
}
.cl-campo label {
font-size: var(--t-15);
color: var(--texto);
}
.cl-campo input {
min-height: var(--boton-alto);
padding: 0 var(--s-16);
border: var(--borde-ancho) solid var(--borde-control);
border-radius: var(--r-campo);
background: var(--elevado);
color: var(--texto);
font: var(--regular) var(--t-17)/1.2 var(--fuente);
transition: border-color var(--dur-micro) var(--mov-micro);
}
.cl-campo input:focus,
.cl-campo input.is-focus {
outline: var(--borde-ancho) solid var(--acento);
border-color: var(--acento);
}
.cl-campo input::placeholder {
color: var(--texto-2);
}
.cl-campo input:disabled {
background: var(--borde);
border-color: var(--borde);
color: var(--texto-3);
}
.cl-campo.is-error input {
border-color: var(--error);
outline: var(--borde-ancho) solid var(--error);
}
.cl-campo-error {
margin: 0;
font-size: var(--t-15);
color: var(--error);
}Chips
Prueba: se enciende uno a la vez
HTML
<span class="cl-chip">WhatsApp</span> <span class="cl-chip on">Activo</span> <span class="cl-chip">Asignado a <b>Ana</b></span>
CSS
.cl-chip {
display: inline-flex;
align-items: center;
gap: 6px;
min-height: 28px;
padding: 0 var(--s-12);
border: var(--borde-ancho) solid var(--borde);
border-radius: var(--r-pill);
background: var(--elevado);
color: var(--texto-2);
font: var(--regular) var(--t-15)/1 var(--fuente);
white-space: nowrap;
}
.cl-chip b {
font-weight: var(--bold);
color: var(--texto);
}
/* lo encendido tiene una sola receta: fondo suave, borde azul de 1,5 px, texto en tinta */
.cl-chip.on,
.cl-chip[aria-pressed="true"] {
background: var(--acento-suave);
border: var(--borde-encendido) solid var(--acento);
color: var(--texto);
}
button.cl-chip {
cursor: pointer;
transition: background var(--dur-micro) var(--mov-micro),border-color var(--dur-micro) var(--mov-micro);
}
button.cl-chip:hover {
border-color: var(--texto-2);
}
button.cl-chip[aria-pressed="true"]:hover {
border-color: var(--acento);
}
button.cl-chip:focus-visible {
outline: var(--foco-ancho) solid var(--acento);
outline-offset: 2px;
}Tarjetas
Cambia a oscuro: la de tinta se invierte.
Papel
Entra asignado a Ana, Diego o Lucía.
Blanca con borde
Sale en horario de atención.
Encendida · una por pieza
Nada sale sin tu aprobación.
Persona que aprueba
La persona que decide.
Más reglas
Medidas
HTML
<article class="cl-card"> <p class="cl-eyebrow">Papel</p> <h3>Cada chat, con su vendedor</h3> <p>Entra asignado a Ana, Diego o Lucía.</p> </article> <article class="cl-card cl-card--ahora"> <p class="cl-eyebrow">Encendida · una por pieza</p> <h3>Tú apruebas</h3> <p>Nada sale sin tu aprobación.</p> </article>
CSS
.cl-card {
display: flex;
flex-direction: column;
gap: var(--s-8);
padding: var(--s-24);
border-radius: var(--r-tarjeta);
background: var(--superficie);
color: var(--texto);
}
.cl-card>h3 {
margin: 0;
font-size: var(--t-24);
letter-spacing: var(--trk-24);
line-height: var(--lh-titulo-24);
font-weight: var(--bold);
color: inherit;
}
.cl-card>p {
margin: 0;
font-size: var(--t-15);
line-height: var(--lh-cuerpo);
color: var(--texto-2);
}
p.cl-eyebrow,
.cl-eyebrow {
margin: 0 0 var(--s-4);
font-size: var(--t-12);
font-weight: var(--bold);
letter-spacing: var(--trk-eyebrow);
line-height: var(--lh-eyebrow);
text-transform: uppercase;
color: var(--texto-2);
}
.cl-card--linea {
background: var(--fondo);
border: var(--borde-ancho) solid var(--borde);
}
.cl-card--ahora {
background: var(--acento-suave);
border: var(--borde-encendido) solid var(--acento);
}
.cl-card--tu {
background: var(--control-hecho);
color: var(--fondo);
}
.cl-card--tu .cl-eyebrow,
.cl-card--tu>p {
color: inherit;
}
.cl-card--tu>p {
opacity: .8;
}Interruptor
Tócalos y míralos moverse: el botón sube primero y el color llega después.
Tócalos
Los cinco tamaños
Más reglas
Medidas
HTML
<span class="cl-sw" data-estado="apagado" role="img" aria-label="Apagado"></span> <span class="cl-sw" data-estado="hecho" role="img" aria-label="Hecho"></span> <span class="cl-sw" data-estado="ahora" role="img" aria-label="Ahora"></span>
CSS
.cl-sw {
--w: var(--sw-web);
position: relative;
display: inline-block;
flex: none;
width: var(--w);
height: calc(var(--w)*var(--sw-alto));
padding: 0;
border: 0;
border-radius: var(--r-pill);
background: var(--control-apagado);
transition: background var(--dur-micro) var(--mov-micro) var(--dur-micro);
}
.cl-sw::after {
content: "";
position: absolute;
left: calc(var(--w)*var(--sw-margen));
top: calc(var(--w)*var(--sw-margen));
width: calc(var(--w)*var(--sw-boton));
aspect-ratio: 1;
border-radius: 50%;
background: var(--hueco,var(--fondo));
transform: translateY(calc(var(--w)*var(--sw-recorrido)));
transition: transform var(--dur-micro) var(--mov-micro);
}
.cl-sw[data-estado="hecho"] {
background: var(--control-hecho);
}
.cl-sw[data-estado="ahora"] {
background: var(--acento);
}
.cl-sw[data-estado="hecho"]::after,
.cl-sw[data-estado="ahora"]::after {
transform: none;
}
.cl-sw[role="switch"] {
cursor: pointer;
}
.cl-sw[role="switch"]:focus-visible {
outline: var(--foco-ancho) solid var(--acento);
outline-offset: 3px;
}
/* el botón sube primero; el color llega cuando el botón ya está arriba */
.cl-sw-fila {
display: flex;
align-items: center;
gap: var(--s-16);
font-size: var(--t-17);
color: var(--texto);
}
.cl-punto {
display: inline-block;
flex: none;
width: var(--s-8);
height: var(--s-8);
border-radius: 50%;
background: var(--acento);
}
.cl-check {
width: var(--icono-tam);
height: var(--icono-tam);
flex: none;
fill: none;
stroke: var(--texto);
stroke-width: var(--icono-trazo);
stroke-linecap: round;
stroke-linejoin: round;
}Hilera de 14 días
Mueve el día y mira cómo los anteriores quedan hechos.
Día 9 de 14 · miércoles 14 de octubre
Otras dos configuraciones
Más reglas
Medidas
HTML
<ol class="cl-hilera" role="img" aria-label="Día 9 de 14">
<li>
<span class="cl-sw" data-estado="hecho"></span>
</li>
<li>
<span class="cl-sw" data-estado="hecho"></span>
</li>
<li>
<span class="cl-sw" data-estado="hecho"></span>
</li>
<li>
<span class="cl-sw" data-estado="hecho"></span>
</li>
<li>
<span class="cl-sw" data-estado="hecho"></span>
</li>
<li>
<span class="cl-sw" data-estado="hecho"></span>
</li>
<li>
<span class="cl-sw" data-estado="hecho"></span>
</li>
<li>
<span class="cl-sw" data-estado="hecho"></span>
</li>
<li>
<span class="cl-sw" data-estado="ahora"></span>
</li>
<li>
<span class="cl-sw" data-estado="apagado"></span>
</li>
<li>
<span class="cl-sw" data-estado="apagado"></span>
</li>
<li>
<span class="cl-sw" data-estado="apagado"></span>
</li>
<li>
<span class="cl-sw" data-estado="apagado"></span>
</li>
<li>
<span class="cl-sw" data-estado="apagado"></span>
</li>
</ol>CSS
.cl-hilera {
--wh: var(--sw-web-hilera);
display: grid;
grid-template-columns: repeat(7,var(--wh));
column-gap: calc(var(--wh)*var(--sw-separacion));
row-gap: calc(var(--wh)*var(--sw-filas));
width: max-content;
max-width: 100%;
margin: 0;
padding: 0;
list-style: none;
}
.cl-hilera .cl-sw {
--w: var(--wh);
display: block;
}
.cl-dia {
font-size: var(--t-15);
color: var(--texto-2);
}
.cl-dia b {
color: var(--texto);
}Teléfono
Claro · la hora firma: 7:05
Fuera de horario · 10:47; la pantalla sigue clara
Seguimiento automático · aprobado por ti
Aprobado por ti · el seguimiento se enciende
Cómo entra el chat aprobado
Más reglas
Medidas
HTML
<div class="cl-tel" role="img" aria-label="Teléfono con un chat de ejemplo">
<div class="cl-tel-pantalla" data-theme="light">
<div class="cl-tel-estado">
<span>7:05</span>
<i class="cl-tel-bateria"></i>
</div>
<div class="cl-tel-cab">
<span class="cl-tel-av">R</span>
<div>
<b>Rosa</b>
<span>Ejemplo</span>
</div>
</div>
<div class="cl-tel-cuerpo">
<span class="cl-tel-dia">Lunes 5 de octubre</span>
<div class="cl-burbuja"><b>Rosa</b>Hola, ¿atienden mañana?<small>6:58 p. m.</small></div>
<span class="cl-chip">Asignado a <b>Ana</b></span>
<div class="cl-burbuja cl-burbuja--yo"><b>Ana</b>Sí, mañana desde las 9:00 a. m.<small>7:01 p. m. <svg class="cl-check" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg></small></div>
</div>
</div>
</div>CSS
.cl-tel {
--W: 320px;
--rb: calc(var(--W)*.04);
width: var(--W);
height: calc(var(--W)*2);
flex: none;
padding: calc(var(--W)*.04);
border-radius: calc(var(--W)*.16);
background: var(--telefono-marco);
}
.cl-tel-pantalla {
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
border-radius: calc(var(--W)*.12);
background: var(--telefono-pantalla);
color: var(--texto);
font-size: var(--t-15);
}
.cl-tel-estado {
display: flex;
align-items: center;
justify-content: space-between;
flex: none;
padding: var(--s-8) var(--s-24) var(--s-4);
background: var(--fondo);
font-size: var(--t-15);
font-weight: var(--bold);
font-variant-numeric: tabular-nums;
}
.cl-tel-bateria {
position: relative;
display: block;
width: 20px;
height: 10px;
border: 1.5px solid var(--texto);
border-radius: 3px;
}
.cl-tel-bateria::after {
content: "";
position: absolute;
inset: 1.5px;
right: 5px;
border-radius: 1px;
background: var(--texto);
}
.cl-tel-cab {
display: flex;
align-items: center;
gap: var(--s-12);
flex: none;
padding: var(--s-8) var(--s-16) var(--s-12);
background: var(--fondo);
border-bottom: var(--borde-ancho) solid var(--borde);
line-height: 1.3;
}
.cl-tel-cab b {
display: block;
font-size: var(--t-15);
}
.cl-tel-cab span:not(.cl-tel-av) {
display: block;
font-size: var(--t-12);
color: var(--texto-2);
}
.cl-tel-av {
display: grid;
place-items: center;
flex: none;
width: 32px;
height: 32px;
border-radius: 50%;
background: var(--superficie);
font-size: var(--t-15);
font-weight: var(--bold);
color: var(--texto-2);
}
.cl-tel-cuerpo {
display: flex;
flex-direction: column;
gap: var(--s-8);
flex: 1;
min-height: 0;
padding: var(--s-12) var(--s-12) var(--s-16);
}
.cl-tel-dia {
align-self: center;
padding: 2px var(--s-12);
border: var(--borde-ancho) solid var(--borde);
border-radius: var(--r-pill);
background: var(--elevado);
font-size: var(--t-12);
color: var(--texto-2);
}
.cl-burbuja {
--rb: 12px;
align-self: flex-start;
max-width: 78%;
padding: var(--s-8) var(--s-12);
border: var(--borde-ancho) solid var(--borde);
border-radius: var(--rb) var(--rb) var(--rb) 4px;
background: var(--elevado);
font-size: var(--t-15);
line-height: 1.35;
color: var(--texto);
}
.cl-tel .cl-burbuja {
--rb: calc(var(--W)*.04);
}
.cl-burbuja b {
display: block;
font-size: var(--t-15);
}
.cl-burbuja small {
display: block;
margin-top: 2px;
text-align: right;
font-size: var(--t-12);
color: var(--texto-2);
font-variant-numeric: tabular-nums;
}
.cl-burbuja--yo {
align-self: flex-end;
border-radius: var(--rb) var(--rb) 4px var(--rb);
}
/* solo la burbuja del seguimiento automático se enciende */
.cl-burbuja--seg {
background: var(--acento-suave);
border: var(--borde-encendido) solid var(--acento);
}
.cl-burbuja-nota {
align-self: flex-end;
max-width: 78%;
margin: -4px 0 0;
font-size: var(--t-12);
line-height: 1.3;
color: var(--texto-2);
text-align: right;
}
.cl-burbuja small .cl-check {
display: inline-block;
width: 1.17em;
height: 1.17em;
vertical-align: -3px;
stroke: var(--texto-2);
}
.cl-tel .cl-chip {
align-self: flex-start;
min-height: 26px;
font-size: var(--t-12);
}
@media (max-width:767px) {
.cl-tel{--W:256px};
}Gráficos
Mira cómo entran: crecen una vez y el azul llega al final.
Chats de ayer
Chats nuevos del lunes 5 de octubre, al cierre de las 7:05 p. m.
EjemploClínica Dental Norte
Chats por día
Chats nuevos de lunes a domingo.
EjemploClínica Dental Norte
26
chats atendidos por Ana, de 64.
El reporte: una tabla dentro de un panel
Reporte de hoy · 7:05 p. m.
Lunes 5 de octubre
| Ana | 26 atendidos | 4 sin responder |
| Diego | 21 atendidos | 2 sin responder |
| Lucía | 17 atendidos | 1 sin responder |
Ejemplo
Más reglas
Medidas
HTML
<ul class="cl-barras">
<li>
<span class="cl-barra-et">Nuevos</span>
<span class="cl-barra " style="--v:1.0000;--i:0"><i></i><em>64</em></span>
</li>
<li>
<span class="cl-barra-et">Respondidos</span>
<span class="cl-barra hecho" style="--v:0.8906;--i:1"><i></i><em>57</em></span>
</li>
<li>
<span class="cl-barra-et">Sin responder</span>
<span class="cl-barra ahora" style="--v:0.1094;--i:2"><i></i><em>7</em></span>
</li>
</ul>CSS
.cl-panel {
padding: var(--s-24);
border: var(--borde-ancho) solid var(--borde);
border-radius: var(--r-captura);
background: var(--fondo);
color: var(--texto);
}
.cl-barras {
display: grid;
grid-template-columns: max-content minmax(0,1fr);
gap: var(--s-12) var(--s-12);
align-items: center;
margin: 0;
padding: 0;
list-style: none;
}
.cl-barras>li {
display: contents;
}
.cl-barra-et {
font-size: var(--t-15);
color: var(--texto-2);
text-align: right;
}
.cl-barra {
display: flex;
align-items: center;
gap: var(--s-12);
height: 20px;
border-left: var(--borde-ancho) solid var(--texto);
}
.cl-barra i {
display: block;
flex: none;
width: calc((100% - var(--s-48))*var(--v));
height: 20px;
background: var(--control-apagado);
transform-origin: left;
}
.cl-barra.hecho i {
background: var(--control-hecho);
}
.cl-barra.ahora i {
background: var(--acento);
}
.cl-barra em {
font-style: normal;
font-size: var(--t-17);
font-weight: var(--bold);
font-variant-numeric: tabular-nums;
color: var(--texto);
}
.cl-linea {
display: block;
width: 100%;
height: auto;
overflow: visible;
}
.cl-linea .base {
stroke: var(--texto);
stroke-width: 1;
}
.cl-linea .dato {
fill: none;
stroke: var(--control-apagado);
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
}
.cl-linea .punto {
fill: var(--acento);
}
.cl-linea text {
font: var(--regular) var(--t-15) var(--fuente);
fill: var(--texto-2);
}
.cl-linea .valor {
font-weight: var(--bold);
fill: var(--texto);
}
.cl-cifra {
margin: 0;
font-size: var(--cifra,var(--web-cifra));
letter-spacing: var(--cifra-trk,var(--web-cifra-trk));
line-height: var(--lh-cifra);
font-weight: var(--bold);
font-variant-numeric: proportional-nums;
color: var(--texto);
}
.cl-cifra--ahora {
color: var(--acento-texto);
}
.cl-cifra-pie {
margin: var(--s-12) 0 0;
font-size: var(--t-17);
color: var(--texto-2);
}
.cl-reporte h3 {
margin: 0;
font-size: var(--t-24);
letter-spacing: var(--trk-24);
line-height: var(--lh-titulo-24);
}
.cl-reporte-baj {
margin: var(--s-4) 0 var(--s-16);
font-size: var(--t-15);
color: var(--texto-2);
}
.cl-fuente {
margin: var(--s-16) 0 0;
display: flex;
align-items: center;
gap: var(--s-12);
font-size: var(--t-12);
color: var(--texto-2);
}Tablas
| Persona | Atendidos | Sin responder |
|---|---|---|
| Ana | 26 | 4 |
| Diego | 21 | 2 |
| Lucía | 17 | 1 |
Ejemplo · personas en orden alfabético. El punto azul, en una sola celda.
La columna de la hora: la hora a la izquierda, el contenido a la derecha.
Más reglas
Medidas
HTML
<table class="cl-tabla">
<thead>
<tr>
<th>Persona</th>
<th>Atendidos</th>
<th class="num">Sin responder</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ana</td>
<td>26</td>
<td class="num"><i class="cl-punto"></i>4</td>
</tr>
<tr>
<td>Diego</td>
<td>21</td>
<td class="num">2</td>
</tr>
<tr>
<td>Lucía</td>
<td>17</td>
<td class="num">1</td>
</tr>
</tbody>
</table>
<ul class="cl-hora-lista">
<li>
<time>10:47 p. m.</time>
<span>Entra el chat de Rosa, asignado a <b>Ana</b>.</span>
</li>
<li>
<time>9:05 a. m.</time>
<span><b>Ana</b> le responde a Rosa.</span>
</li>
<li>
<time>4:00 p. m.</time>
<span>Sale el seguimiento que aprobaste.</span>
</li>
</ul>CSS
.cl-tabla {
width: 100%;
border-collapse: collapse;
font-size: var(--t-15);
color: var(--texto-2);
font-variant-numeric: tabular-nums;
}
.cl-tabla th {
padding: var(--s-8) var(--s-12);
border-bottom: var(--borde-ancho) solid var(--texto);
font-size: var(--t-12);
font-weight: var(--bold);
letter-spacing: var(--trk-eyebrow);
text-align: left;
text-transform: uppercase;
color: var(--texto-2);
}
.cl-tabla td {
padding: var(--s-12);
border-bottom: var(--borde-ancho) solid var(--borde);
}
.cl-tabla td:first-child {
font-weight: var(--bold);
color: var(--texto);
}
.cl-tabla .num {
text-align: right;
}
.cl-tabla .cl-punto {
margin-right: var(--s-8);
vertical-align: 1px;
}
/* columna de la hora: la hora a la izquierda, el contenido a la derecha */
.cl-hora-lista {
margin: 0;
padding: 0;
list-style: none;
}
.cl-hora-lista li {
display: grid;
grid-template-columns: 7.5em minmax(0,1fr);
column-gap: var(--s-16);
padding: var(--s-12) 0;
border-bottom: var(--borde-ancho) solid var(--borde);
font-size: var(--t-15);
}
.cl-hora-lista li:first-child {
border-top: var(--borde-ancho) solid var(--borde);
}
.cl-hora-lista time {
color: var(--texto-2);
font-variant-numeric: tabular-nums;
}
.cl-hora-lista b {
color: var(--texto);
}Recetas
Pasos, valores y errores típicos de cada formato.
Receta 01 · 1080 × 1350
Post, anuncio de Meta o documento de LinkedIn. Se ve a 360 dp de ancho: los tamaños «grandes» son los justos.
Post, anuncio de Meta o documento de LinkedIn. Se ve a 360 dp de ancho: los tamaños «grandes» del lienzo son los justos.
SKILL.md.| Papel | Valor |
|---|---|
| Eyebrow | 30 B, Pizarra, +0,10 em, mayúsculas por CSS |
| Título | 80 B, tracking −0,015 em, interlineado 1,03 |
| Bajada | 58 R (hasta 2 líneas) |
| Cuerpo | 42 R · pie 30 R |
| Tarjeta | radio 40, relleno 48, borde 2 px Línea |
| Chip | alto 56 · Botón: 42 B, alto 96 |
Errores típicos: logo dos veces, titular más abajo o más arriba de y 408, azul en el titular y en el botón, cifras sin «Ejemplo».
Receta 02 · 1080 × 1920
El texto vive en la franja de en medio: arriba y abajo quedan libres para la interfaz de Instagram.
04-armar-una-lamina-de-video.md. Nada en bucle.calendar-check) en azul.Mismos del post (lienzo): eyebrow 30 B, título 80 B, bajada 58 R, cuerpo 42 R, botón 42 B con alto 96 y relleno lateral 48, radio 40.
Errores típicos: texto pegado al borde, teléfono de W 600 sin cortarlo por abajo, dos azules, fondo oscuro sin hora de noche.
Receta 03 · 1280 × 720
Dos tipos: el deck se lee en pantalla o PDF; la charla se proyecta y todo lo que la sala lee va desde 24 px.
Hay dos tipos: deck (se lee en pantalla o PDF) y charla (se proyecta: todo lo que la sala lee va desde 24 px).
.pptx a pedido usa Arial; nunca es la fuente de trabajo.Eyebrow 15 B · título 42 B (−0,028 em) · portada 58 B · bajada 19 R · cuerpo 15 R · pie 12 R · cifra 112 B (58 en fila). Charla: 19 B / 58 B / 80 B / 24 R / 160 B.
Errores típicos: contenido que pisa el pie, eyebrow que no es el capítulo, título en Mayúsculas Iniciales, teléfono de W 256 metido en la banda (va en lado(…, cols=3)).
Receta 04 · 30 fps
El video es la misma lámina o historia estática, con coreografía: primero lo quieto, después el contenido y al final lo encendido.
entrada. Titular palabra por palabra, 4 f entre palabras. Barras: 24 f con estado, escalonadas 3 f (más de 6, todas a la vez); el azul al final, 6 f micro.estado; un clic a −20 dB). En videos de Martín como autor, la perilla no se anima.prefers-reduced-motion: todo pasa a fundidos de 150-200 ms.| Duración | Video | Web |
|---|---|---|
| micro | 6 f | 150 ms |
| fundido | 9 f | 200 ms |
| salida | 8 f | 150 ms |
| entrada | 14 f | 300 ms |
| estado y gesto de marca | 15 f | 300 ms |
| dato (barras, conteos) | 24 f, como máximo 1 s | 800 ms, una vez |
Curvas: entrada (.05,.7,.1,1) · estado (.4,0,0,1) · salida (.3,0,.8,.15) · micro (.2,0,0,1). Sin rebote. En Remotion: spring({damping:20, stiffness:120, mass:1, overshootClamping:true}).
.entra{animation:entra var(--dur-entrada) var(--mov-entrada) both}
@keyframes entra{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}Errores típicos: rebote, loops, azul que aparece antes que el contenido, dos elementos animados a la vez que compiten.
Receta 05 · A4
Propuesta, carta o informe. La propuesta, el precio y el contrato son nivel 0: sin azul, sin interruptor y sin personaje.
7 · 9 · 10 · 12 · 14 · 20 · 28 · 36 · 48. Cuerpo 10 pt / 14,17; bajada 12 / 17; título 20 / 24; portada 36 / 38; cifra 48 (28 en tarjeta, 14 en tabla). Filete 0,5 pt; radio 4 mm; relleno 5 mm. Tracking = pt × 1,7 visibles.
Errores típicos: azul en la propuesta, interruptor en un precio, letra por debajo de 7 pt, el informe que culpa a alguien (el reporte no es un podio).
Receta 06 · 1440 · 390
Una idea por sección: eyebrow, título que es la conclusión, bajada, contenido y un solo pedido.
La web no sigue el modo oscuro del teléfono: declara <meta name="color-scheme" content="light">.
tokens.css y font-family: var(--fuente). Nada de hex.filter:brightness(.92) en 150 ms; foco con anillo de 2 px azul a 2 px. Mínimo tocable 44.#D70015 con una frase que dice qué corregir.prefers-reduced-motion ya está en tokens.css.| Papel | Escritorio | Celular |
|---|---|---|
| H1 | --web-h1 80 B | 42 B |
| H2 | --web-h2 58 B | 30 B |
| H3 / bajada | 24 | 19 |
| Cuerpo | 17 R | 17 R |
| Texto chico | 15 R | 15 R |
| Eyebrow / pie | 12 | 12 |
| Botón | 19 B, alto 52 | 19 B, alto 52 |
<section style="padding:var(--seccion) var(--margen-web)"> <div class="eyebrow">Cómo funciona</div> <h2 style="font-size:var(--web-h2);letter-spacing:var(--web-h2-trk)">Cada chat entra con su vendedor.</h2> <p style="font-size:var(--web-bajada)">Entra asignado a Ana, Diego o Lucía. Tú abres cualquiera.</p> <a class="boton">Pedir piloto gratis</a> </section>
Errores típicos: dos azules editoriales en la misma pantalla, personaje en el inicio o el precio, lucide-react con íconos fuera de los 28 (por ejemplo Sparkles).
Receta 07 · Lámina · post · A4 · web
Título-conclusión con verbo, número y punto; después, los datos en los tres estados y nada más.
| Lámina | Post e historia | A4 | Web | |
|---|---|---|---|---|
| Barra / aire | 24 / 16 | 56 / 32 | 3,5 / 1,5 mm | 20 / 12 |
| Línea · punto | 2 px · Ø 12 | 4 px · Ø 24 | 1,25 pt · Ø 2,5 mm | 2 px · Ø 10 |
| Línea base | 1 px tinta | 2 px tinta | 0,5 pt | 1 px |
| Máximo | 8 barras, 3 series | 6 barras (5 en historia), 2 series | 10 filas | 6 barras |
Errores típicos: barras ordenadas por valor (un podio), verde y rojo, eje que no parte de cero, datos sin «Ejemplo».
Las siete
Un ZIP en Markdown: se abre en cualquier editor y se lo pasas a tu IA.
recetas-de-patrones.zip (7 KB)Lo que no se hace
Cada «no» se muestra hecho, con su motivo. Desliza para ver los seis.
Plano y de un solo azul: se ve qué hay que tocar.
Sombra y degradado son de la marca anterior: recargan y quitan el foco.
Seguimiento
En horario de atención, con tu aprobación.
El título y el texto dicen todo; la tarjeta no necesita un dibujo.
Seguimiento
En horario de atención, con tu aprobación.
Un ícono grande arriba es la huella del diseño hecho en serie.
Papel
Entra asignado a Ana, Diego o Lucía.
Una tarjeta en Papel y un botón azul: una sola cosa encendida.
Encendida
Entra asignado a Ana, Diego o Lucía.
26
Tarjeta, chip, cifra y botón en azul: cuatro cosas encendidas y ninguna manda.
Vertical, de frente, sobre Blanco.
Sobre Papel el hueco casi no se ve; acostado es el interruptor de una app, y con sombra deja de ser plano.
Burbujas blancas con borde; solo el seguimiento se enciende.
Burbujas propias en azul: gastan el único acento y parecen iMessage. Tampoco la interfaz verde de WhatsApp.
Barras desde cero, una en azul, las personas en orden alfabético.
Dona, rojo y lista por valor: los ángulos se comparan mal, el rojo acusa y el reporte no es un podio.
Descargar







