Info
Tips contextuales, nuevas features, "beta activa".
/galilei-brand Pills compactos que etiquetan un estado. No ejecutan acción, solo informan. Receta canónica de la molécula Figma (realineado 2026-07-01): fondo = dark de la familia al 50%, texto = light/vivid de la familia, sentence case, sin dot. Sin ícono va en micro (9); con ícono (.snc-chip-icon, Phosphor 12) el texto sube a 12 regular. Sobre superficie clara: .snc-chip-on-light se invierte a tinte light de la familia + texto dark (contraste AA sobre blanco). 7 tonos: success, warning, alert, error, info, accent, neutral.
Comunican estado: completado, pendiente, error, beta, nuevo. Van con ícono Phosphor porque el ícono se lee más rápido que un color solo. El fondo lleva un tint sutil del color y el texto va en el color del estado.
Casos: badges en tablas, indicadores beta/new en cards, prioridad de tareas, validación inline de forms. La anatomía del chip semántico admite además un ícono Phosphor líder como leading opcional (el texto sube a 12 regular) · reusa snc-chip + token semántico + snc-chip-icon, mismo color, sin gradiente ni glow.
Otra familia. A diferencia de los semantic (que solo etiquetan), los anchor chips son clickeables: llevan a un ancla de la misma página. Tienen estado hover y activo (scroll-spy). Se usan en el TOC interno de Superficies y como nav de sub-secciones largas. Badge de letra o número opcional al inicio.
Las familias: semantic usa ícono + tint del estado (no clickeable) · anchor usa badge de letra/número (clickeable + scroll-spy). Mismo pill 100px, mismo body 500 12-13px, sentence case.
A primera vista se parecen (ambos son pills). La diferencia es la función: un chip etiqueta, un button actúa. Eso cambia su escala, peso y comportamiento.
Máximo 2 palabras por chip. El chip vive en 1 línea, sin wrap. Si una palabra sola es larga (10+ chars), busca un sinónimo más corto. Si necesitas explicar más, ya no es chip · es una nota aparte. Válidos: Completado, Beta, En progreso. Inválidos: Falló por error de red, Pendiente de revisión.
| Propiedad | Valor |
|---|---|
| Font | Space Grotesk · --fs-micro 9 · weight 500 · sentence case |
| Con ícono | --fs-xs 12 · weight 400 · ícono Phosphor 12 líder |
| Padding | 0 8px · gap 4px |
| Border-radius | --radius-pill |
| Height | 20px · single line, sin wrap |
| Bg default | --familia-dark-a50 · sobre claro -a90 (on-light) |
| Color default | light o vivid de la familia (success usa light) |
| HTML | <span> con .snc-chip + token (.snc-chip-success, .snc-chip-neutral, etc.) |
| Estados | Estático · el chip nunca ejecuta acción |
neutral.Espejo de las moléculas del Galiverso. Tab primaria (underline): siempre el primer nivel de una vista, texto 12, activa en g-600 con subrayado de 1px, inactivas y baseline en neutral-04. Tab secundaria (pill): SOLO anidada bajo un primario visible, contenedor n03 radius 12, activa con fondo n01 y texto blanco. Nunca pill como primer nivel, nunca dos del mismo nivel anidadas.
Clases primaria: .tab-bar + .tab-btn (página completa: .pg-tabs) · secundaria: .tab-nav + .tab. Estado activo por aria-selected o .active; el JS es de cada página.
5 variantes semánticas + Achievement para gamification. Auto-dismiss con pausa en hover, slide-in desde la derecha, stacking vertical. API global · window.toast.{variant}(title, opts) disponible en cualquier página.
Toast vs Notificación el toast es la app RESPONDIENDO a tu acción de hace un segundo: efímero, sin timestamp, máximo una acción inline. La notificación es la app BUSCÁNDOTE con algo que pasó sin que lo pidieras (misión nueva, recompensa): lleva timestamp, persiste y puede pedir tap · son las 3 moléculas del juego (glow · icon-box · frosted). Los momentos grandes del juego no usan ninguno: usan la Celebration Screen (plantillas).
Tips contextuales, nuevas features, "beta activa".
Confirmaciones de acción, "guardado", sync ok.
"Revisa esto antes de seguir". Dura más (6s).
Validación rota, fallo de red. Soporta acción "Reintentar".
Sin emoción · sync, status sistémico.
Único de Galilei · gamification. Glow pulse + sparkle rotando para unlocks.
| Propiedad | Valor |
|---|---|
| Posición | fixed top: 24px · right: 24px · stack vertical, gap 8px |
| Min / Max width | 320px a 480px · full-width bajo 640px |
| Padding | 14px 16px 14px 14px |
| Border-radius | 12px |
| Background | Panel 2 + tint 6% del color semántico (color-mix oklab) |
| Shadow | 0 8px 24px rgba(0,0,0,0.40) · depth para flotar |
| Enter | translateX(110% → 0) + fade · 240ms ease-out-quart |
| Exit | fade + drift 20px · 180ms ease-in |
| Duración | info/success/neutral 4.5s · warning/error 6s · achievement 5s |
| Hover | pausa el timer · reanuda 2s al salir |
| ARIA | error/warning → role="alert" + assertive · resto status + polite |
toast.success('Misión guardada');
toast.info('Beta activa', { body: 'La vista de leaderboards está lista' });
toast.error('No pudimos guardar', {
body: 'Revisa tu conexión',
action: { label: 'Reintentar', onClick: () => save() }
});
toast.achievement('¡Nueva racha!', { body: 'Llevas 7 días seguidos' });
// opts: { body?, action?, duration? }
// duration: 0 = no auto-dismiss · null = default de la variante Achievement es exclusivo de Galilei. El glow pulse al entrar + sparkle icon rotando + tint lima son el sello visual de gamification. Úsalo SOLO para unlocks, rachas, logros conseguidos · nunca para feedback genérico. Las otras 5 variantes (info/success/warning/error/neutral) son el sistema base que cualquier app de Galilei usa.
Badge circular + glow icon + número + label. El patrón que usan las pantallas de cierre de misión, perfiles, leaderboards y dashboards. Reutiliza los íconos Glow del sistema; cada uno trae su tint canónico extraído del SVG.
var(--n01)), border-radius: 50%.dashed al 45% (el lenguaje de los decks). Un "aliento" sutil de opacidad respeta prefers-reduced-motion./assets/icons/glow/, ~72% del badge, drop-shadow propio del SVG.--fs-h3/h2/h1, en el color de la familia del stat (racha coral, precisión lima: el color carga significado) con glow suave.--text-tertiary.Triple inline en cierre de misión, leaderboards, perfil. 2 a 4 stats máximo por fila.
Lista vertical en detalle de misión, settings, resumen del día. Sin límite de stats.
Cada glow icon ya trae su color extraído del SVG. Solo pasa tint si quieres sobreescribirlo en un contexto especial.
Racha#FB7E7ETarget#F69554Clock#FFEA5ACheck#B3F131Crown#FFD23AGemvar(--info-vivid)import GlowStat from '~/components/GlowStat.astro';
<GlowStat icon="Racha" value="15+" label="Daily Streak" />
<GlowStat icon="Target" value="82%" label="Monthly Accuracy" />
<GlowStat icon="Clock" value="2:46 min" label="Play time" layout="row" />
<GlowStat icon="Check" value="27" label="Correct Ans." size="lg" />
// props:
// icon · glow icon basename (Racha, Target, Clock, Check, Crown...)
// value · string | number
// label · string
// tint? · override hex (default = canónico por icon)
// layout? · 'stack' (default) | 'row'
// size? · 'sm' | 'md' (default) | 'lg' Composición, no primitivo nuevo: la barra ES un .meter y esta capa solo aporta la fila etiqueta | barra | valor. Leaderboards = fila + .num-badge + delta en .snc-chip-mono. El KPI con glow es GlowStat (arriba). Las composiciones complejas (líneas de tiempo, funnels, donuts) viven en Datos con la skill galilei-datos.
Regla de color UNA barra lima por gráfico (el héroe o el dato que carga el mensaje); el resto en is-neutral. Los tonos feedback solo cuando la barra ES el estado (precisión baja = error). El lima es presupuesto también en data.
Flat para UI funcional, Glow para plataforma y 3D para hero. Una pieza, un tipo dominante.
Hero · onboarding emotivo, slides de marca, celebraciones.
Plataforma · badges, currency, racha, achievements.
UI funcional · navegación, botones, inputs, estados.
Regla de mezcla. Flat y Glow pueden convivir en una misma vista. 3D nunca se mezcla con Flat ni con Glow en la misma superficie: si entra un ícono 3D, manda 3D y los otros dos sistemas se van. Una pieza, un tipo dominante.
Los íconos flat cambian de color según la carpeta semántica. Lima solo en CTAs y acentos; las demás carpetas usan tonos del Neutralverse o del set de feedback. Si pones cinco íconos lima seguidos en una vista, el verde deja de significar nada.
Para evitar la saturación de verde: cuando tengas una grilla de capabilities, features o feature-cards con 4+ items, considera (a) usar 3D icons en su lugar, (b) variar los colores por carpeta semántica, o (c) usar Primary (#F0F2F5) y reservar lima solo para el ícono "estrella" del grupo.
Un mini-dashboard con todo el sistema en una pieza: Base, Paneles, Tinted, Mystery, Gradient, Outline, buttons, chips, code tags y notes. Si construyes algo, parte de este patrón.
Construye misiones, monitorea progreso y celebra cada logro con el equipo.
Gradient · Panel 2 → Panel 1Sin código. Drag and drop. Listo en minutos.
Framework para orquestar contenido programáticamente.
npm install @galilei/sdk Anatomía de la composición 1 hero con Panel 2 + Gradient diagonal · 2 cards en Panel 2 (una con input Outline, otra con code well Panel 3) · 4 misiones en Panel 2 con 1 Mystery y 1 Tinted Success. Todo sobre Base. Cero bordes decorativos.
Anatomía canónica (Figma, 2026-07-01): el input es un paso más oscuro que su superficie (--n00 sobre panel), borde 1px --n03, radius sm. Los estados hablan por el borde: focus --g-600, success --success-vivid, error --error-vivid, siempre con mensaje micro del mismo color debajo.
Un campo + botón en línea. Captura rápida, mínima fricción.
Cajitas por carácter. Para verificar o entrar con clave.
Pasos con barra de progreso. Onboarding gamificado.
Eliges en vez de escribir. Perfilar sin teclado. La opción elegida confirma en success.
Una pregunta a la vez. Se siente como diálogo.
Label izquierda, input derecha. Para muchos campos (admin).
Regla de validación el error se dice con texto bajo el campo (qué pasó y cómo resolverlo) más color en el borde del input. Nunca un borde grueso de acento ni solo color rojo sin texto.
Los dos componentes que la herramienta administrativa usa todo el día. Diseñados sobre el lenguaje del sistema (2026-07-01): superficies n, hairlines, estados por fondo. El dropdown es el único flotante con drop-shadow permitida.
Trigger = campo .frm-select (chevron gira al abrir, borde g-600). Panel: --n02 + borde --n03 + --shadow-overlay. Ítem hover = well --n03. Seleccionado = texto lima + check, sin fill. Grupos con label overline micro. Ítem disabled al 40%.
| Misión↓ | Equipo | Estado | Precisión | GaliTickets | |
|---|---|---|---|---|---|
| Onboarding cocina | Sede Norte | Activa | 92% | 1.240 | |
| Protocolo de servicio | Sede Centro | Pausada | 78% | 860 | |
| Seguridad alimentaria | Sede Sur | Vencida | 64% | 410 |
Reglas de tabla header en overline micro sobre --n00 · hairlines --white-a05 entre filas, nunca bordes de acento · números a la derecha con tabular-nums · estado con chips del sistema · fila hover = well · fila seleccionada = tint lima a05 · densidad compacta con .dt-compact.
Las tres pantallas que casi nunca se diseñan y siempre aparecen. Cada una con su tono: el vacío invita, el error orienta, la carga tranquiliza. Nunca en blanco ni con texto crudo.
Crea la primera y tu equipo empieza a jugar hoy mismo.
Invita a la acción: una ilustración, una frase y un CTA claro. Nunca un vacío literal.
Revisa tu conexión e inténtalo de nuevo. Si sigue, escríbenos.
Orienta, no culpa: qué pasó, cómo resolverlo y una salida. Tono humano, nunca un código crudo.
Tranquiliza: skeleton con la forma del contenido real, no un spinner solo. Da sensación de progreso.
La superficie base de contenido del portal. Se compone por clases: una superficie (.card o .card-deep), modificadores opcionales y un grid preset. Antes de escribir CSS de página, revisa si el sistema ya lo cubre · un patrón que se repite 2 veces pertenece a portal-marca.css.
Panel 2 · radius 12 · padding 24 · gap 8. La superficie por defecto para grids de contenido.
Padding horizontal 32 y ritmo interno 16. Para cards editoriales que respiran más.
Panel 1 · radius 16 · padding 32 · gap 16. Franja editorial que agrupa contenido propio.
8% de error mezclado en la superficie: comunica "esto no" sin borde de acento. Para pares completos siempre/nunca usa el componente VerdictPanel.
Sube 2px en hover. Para cards que enlazan o invitan a interactuar. Pasa el cursor por aquí.
Sube 2px y aclara la superficie a Panel 3. Refuerzo de hover para grids clickeables.
Dos presets responsive con gap 16. .grid-2 colapsa a 1 columna en 768 · .grid-3 baja a 2 en 980 y a 1 en 600. Si el grid necesita otro breakpoint o auto-fill, ahí sí es CSS de página.
Columna 1
Columna 2
Columna 3
El overline canónico de contenido: 12px semibold uppercase, tracking 0.14em, text-tertiary. Es el label de arriba de esta card.
Contenedor de ícono con tint. Tamaños snap sm 36 · md 40 · lg 48, más tonos neutral y error.
var(--n02)var(--radius-md)var(--space-5)| Clase | Spec | Cuándo usarla |
|---|---|---|
| .card | bg var(--n02) · radius 12px · padding 24px · flex column gap 8px | Superficie por defecto de contenido |
| .card-roomy | padding 24px 32px · gap 16px | Cards editoriales con más aire |
| .card-deep | bg var(--n01) · radius 16px · padding 32px · gap 16px | Franjas tipo panel que agrupan bloques |
| .card-tint-error | color-mix(in oklab, var(--n02) 92%, var(--error-vivid)) | Anti-patrones · "esto no" |
| .card-lift / .card-lift-tint | hover translateY(-2px) · tint suma bg var(--n03) | Cards clickeables o enlazadas |
| .grid-2 / .grid-3 | gap 16px · 2 a 1 en 768 · 3 a 2 en 980 y a 1 en 600 | Layout responsive de cards |
| .overline-lg | var(--fs-xs) semibold uppercase · ls 0.14em · var(--text-tertiary) | Overline de bloque o dt de ficha |
| .def-rows / .def-cols-3 | dl de pares label/valor · 3 columnas en desktop | Fichas técnicas dentro de cards |
| .icon-box (-sm / -lg / -neutral / -error) | 36/40/48px · tint brand, neutral o error | Ícono con contenedor en cards |
| .card-reveal | scroll-reveal · 360ms · respeta reduced motion | Entrada en scroll · requiere observer de página |