Marino tinta, cero degradados
Una etiqueta es tinta sobre papel, no una pantalla. Dos zonas de --marino
sólido estructuran la lectura de lejos; el rojo queda reservado al punto del wordmark.
La etiqueta que el proveedor chino imprime y pega en cada caja hoy sale
en los azules del admin — #213e83 → #3765c0, que no son de la identidad —,
con la marca tecleada con una fuente y sin decir cuál caja es. La nueva versión:
marino #021B54 sólido, wordmark vectorial, QR con +45% de área,
numeración BOX 3 / 12 y variante para impresoras térmicas.
El QR sigue codificando el trackingId plano — cero migraciones.
Y al final del viaje, la misma tinta: la firma de entrega como documento (parte B).
Cita fiel de producción — mismo degradado, mismas tipografías del sistema, mismos campos. Funciona: es bilingüe, el QR codifica el identifier plano y el proveedor la entiende. Pero no es Mogos, y en el piso del almacén se queda corta.
La banda degrada de #213e83 a #3765c0 — la
rampa brand del admin, no el marino #021B54 de identidad. La caja llega con
los colores de un dashboard.
«MOGOS GROUP C.A.» compuesto con la fuente del sistema y un isotipo PNG dentro de un chip. El wordmark vectorial — con su punto rojo — no aparece.
146px dentro de un marco decorativo que le roba espacio al único elemento que la pistola necesita leer de lejos y en movimiento.
«12 boxes» en la esquina. Si llegan 11, nadie sabe cuál falta: las doce etiquetas son idénticas.
Degradado, grises suaves y hairlines gris-azuladas: en la térmica del proveedor o en una fotocopia, la estructura se disuelve.
Print-first: dos bandas de marino sólido — identidad arriba, la caja abajo —
y entre ellas el QR más grande que la tarjeta puede darle. Nada de degradados ni tonos que
una fotocopia disuelva. El QR de abajo es real y escaneable: codifica
MG-20260803-0042.
El #021B54 de identidad, plano — imprime
idéntico en láser, inyección o fotocopia. El wordmark es el vector real de
logo-source.mjs, con el punto rojo fijo.
Sin marco decorativo; la zona de silencio la da el blanco de la tarjeta. Tinta marino — contraste 17.6:1 — y corrección nivel H: tolera ~30% de daño (cinta, roces, tinta desvanecida) contra el 15% del actual.
El trackingId en 19px con cifras
tabulares: legible al teléfono cuando el QR viene dañado y hay que teclearlo.
Caps espaciadas bilingües EN/中文 — mismos campos de hoy, ninguna traducción se pierde. Valores en Neue Haas.
3 / 12 en 26px: cada etiqueta sabe cuál caja es. Llegan 11 y el almacén sabe al instante que falta la 7. Sin índice, la banda dice solo el total — compatible con hoy.
Las líneas internas van en marino, no en el gris-azulado de pantalla: un artefacto impreso no puede apostar a tonos suaves.
Una etiqueta es tinta sobre papel, no una pantalla. Dos zonas de --marino
sólido estructuran la lectura de lejos; el rojo queda reservado al punto del wordmark.
Geometría real de tools/logo-source.mjs — nunca tecleado con una fuente
(misuse ✗07). El punto #C9313C viaja intacto a cualquier superficie de color.
De 146 a 176px (+45% de área) y de nivel M a H: ~30% de tolerancia a daño para una etiqueta que vive bajo cinta de embalaje. Codifica el id plano — sin URL, sin token.
Oswald caps para labels, Neue Haas para valores, cifras tabulares
(tabular-nums) para el identifier y el 3/12: columnas de números que no bailan.
La mejora operativa de la versión: numeración por caja en banda propia. Detecta faltantes al recibir, y el chino la lee igual que el courier de Caracas.
Sólidos, hairlines marino y una variante 100% B/N para térmicas. La etiqueta se diseñó para la fotocopia de la fotocopia — que es donde vive.
El proveedor no siempre imprime en color: muchas veces es una térmica de un solo
pigmento. La variante B/N conserva la anatomía completa — bandas, QR, numeración — en negro
puro, sin tonos intermedios que la cabeza térmica ensucie. Excepción nombrada: en este
medio el punto del wordmark vive en la única tinta que existe; en color y en pantalla es
siempre #C9313C.
La térmica omite los campos de texto largos (nombre y dirección viajan en el documento de la orden): en el piso del almacén lo que se escanea es el QR y lo que se cuenta es la banda. Menos tinta, más velocidad de impresión por caja.
shipping-mark-label.tsx
Solo estilos: los azules brand-* salen, entran los tokens de
identidad (marino, Oswald para labels). El componente sigue siendo presentacional y
espejado 1:1 entre admin y client.boxIndex?
Opcional. Con índice, la banda dice 3 / 12; sin él, solo el total —
exactamente lo que muestra hoy. La numeración se genera al descargar: un PNG por caja.thermal?
Variante B/N: mismos nodos, tema de un solo pigmento, sin nombre ni
dirección. Pensada para imprimirse desde el share del proveedor.QRCodeSVG con el mismo trackingId plano — solo
sube de 146 a 176px, pierde el marco y pasa de level="M" a
level="H" (~30% de tolerancia a daño). Ninguna pistola ni flujo del
almacén se toca.El viaje que empieza con el QR en la caja termina con otro QR: el que el cliente escanea en su puerta para firmar la recepción. Es el momento de la verdad del servicio completo — las cajas llegaron — y hoy sale vestido de template: azules de Tailwind, cards genéricas y la firma escondida al fondo de un formulario. La arquitectura del flujo es correcta y no se toca (un QR de un solo uso, sin login, una sola pantalla); lo que cambia es qué se siente: firmar un documento, no llenar un formulario.
Cita del flujo actual del client: header plano, banner informativo azul, cards apiladas y el canvas punteado al final. Funciona — pero ni es Mogos, ni se siente como firmar una nota de entrega.
#eff6ff, #1e40af,
verdes y ámbar de Tailwind — ni un token de Mogos, ni el wordmark. El único contacto físico
del servicio, con la cara de un template.
Se llama «Nota de Entrega» pero se ve como una pantalla de settings: cards con iconos, jerarquía plana, la firma — el acto central — es la última caja.
«Monto (opcional)» sin mostrar cuánto debe el cliente. Quien entrega teclea de memoria — fuente clásica de errores de cobro.
La declaración legal del documento es una checkbox al fondo de «Observaciones», con default inconsistente entre el form y la base de datos.
El listener de resize resetea el canvas: girar el dispositivo a mitad de firma la pierde. Bug real de la implementación actual.
El estado de error no ofrece salida — ni pedir un nuevo enlace ni contactar. Y el countdown del admin corre por segundos en un token de 24h.
La misma pantalla, la misma UX de una pasada — pero vestida de lo que es: un documento con membrete. Las órdenes son líneas, el pago muestra el monto esperado, la conformidad es una decisión visible, y la firma es la protagonista: una línea de firma real, con tinta marino, y el nombre del que firma debajo.
Wordmark vectorial sobre marino, «NOTA DE ENTREGA» en Oswald y el código del flete con la fecha en cifras tabulares. La pantalla ES el documento que después llega en PDF.
Tracking completo + cajas, sin tabla, sin scroll horizontal, sin columnas vacías. El total cierra la cuenta como en un recibo.
$120.00 · saldo del flete — un dato que el admin ya conoce — y el método como pills. Quien entrega confirma, no adivina.
Dos opciones visibles: Conforme o Con observaciones (que despliega el campo de notas). La declaración legal deja de ser una checkbox escondida.
Línea de firma real con ✗, tinta marino — la marca firma en su color — y el nombre + cédula debajo, como en el papel. El trazo se re-dibuja desde el dataURL al rotar: girar el teléfono ya no borra la firma.
Banda marino fija: se habilita al firmar y dice a dónde va la copia. Un solo botón, un solo acto.
Al confirmar, el documento no desaparece en un modal genérico: cae el sello
— el monograma en un cuño marino con la fecha — con la easing de la casa
(--ease-spring, 420ms) y prefers-reduced-motion lo muestra ya
estampado. Y cada estado terminal deja de ser un círculo de colores: dice qué pasó y qué hacer.
Se estampa sobre la propia nota — el documento queda a la vista, sellado — y debajo aparecen las salidas: descargar la nota (el PDF ya existe en el modelo) y «se envió a tu correo».
Reabrir el enlace usado muestra el documento sellado con la fecha original. La pantalla cuenta lo que pasó, no lo que falló.
«Este enlace venció» + pedir uno nuevo por WhatsApp al número de la operación. Nadie se queda en la puerta con un callejón sin salida.
Esta nota se firmó el 03 · 08 · 2026. La copia está en tu correo.
Descargar nota de entregaLos enlaces de firma duran 24 horas. Pide uno nuevo y firma al momento.
Pedir nuevo enlaceLa firma se habilita cuando el flete llega a «listo para entrega».
Ver estado en mi cuentaEste QR casi siempre se escanea de pantalla a pantalla: el teléfono del que
entrega frente al teléfono del cliente, en una puerta, con reflejos. Y hoy carga una URL de
122 caracteres — dominio del admin + UUID del flete + token — que lo convierte en una
matriz de 61×61 módulos. El token ya es único en la base: la URL no necesita nada más.
mogosgroup.com/f/<token> baja el payload a 57 caracteres y la matriz a
41×41 — el módulo crece +49% al mismo tamaño físico.
/f/<token> resuelve el flete
del lado del servidor — el token ya es @unique. De versión 11 a versión 6 del
QR; a la primera, no al tercer intento.
Hoy el enlace se construye sobre la URL del admin — el cliente firmaría dentro del dominio interno. El enlace corto vive en el dominio público de Mogos, donde la marca da confianza.
Un tap y el QR toma todo el teléfono con brillo al máximo — el gesto real de la puerta: girar el teléfono hacia el cliente.
La realidad operativa: muchas veces el enlace se manda, no se escanea. Un botón con el mensaje pre-armado, en vez de copiar y pegar.
Un token de 24h no necesita cronómetro: «23 h 14 min» comunica lo mismo sin ansiedad. Y la letra pequeña — un solo uso, regenerar desactiva, todo auditado — dicha en el pie.
delivery-signature-page.tsx
Re-composición visual: membrete, secciones de documento y CTA en banda marino.
Mismos hooks (useDeliveryFreight, useCaptureDelivery), mismo schema
de captura, mismo flujo de token.signature-canvas.tsx
Tinta marino (penColor), línea de firma con nombre + cédula, y el
fix del bug real: al redimensionar, el trazo se re-dibuja desde el dataURL en vez
de perderse con el reset del canvas.orders-table.tsx → líneas
La tabla scrolleable se convierte en líneas de documento: tracking completo +
cajas + total. Desaparecen el índice y la columna de facturas vacías.deliveryNotePdfUrl ya existe) y
prefers-reduced-motion en la estampada.generate-qr-dialog.tsx
Tokens del admin en vez de grises hardcodeados, countdown en h/min, pantalla
completa y compartir por WhatsApp. La generación y auditoría no se tocan./f/<token>
Una página (o redirect) en el client que resuelve el flete por token — ya es
@unique en la base. El QR baja de 122 a 57 caracteres y deja de apuntar al
dominio del admin. Cero migraciones; el enlace largo puede seguir vivo.El primero se pega en Shenzhen y le da identidad a la caja. El segundo se escanea en Caracas y cierra el viaje con una firma. Hoy ninguno habla el idioma de la marca; con esta propuesta, los dos son Mogos — la misma tinta marino del primer contacto al último.