{
  "schema": "axis.efeonce-insights-reference.v2",
  "title": "Efeonce Insights — sistema de diseño: marca, tokens de datos, tarjeta de cifra, informe PDF, informe live y superficies",
  "updated": "2026-10-03",
  "page": "/references/insights/",
  "json": "/references/insights.json",
  "guide": "docs/agent-composition/insights.md",
  "brandPackage": "@efeoncepro/axis-brand-assets",
  "brandPackageVersion": "0.4.0",
  "tokensPackage": "@efeoncepro/axis-tokens",
  "tokensExport": "efeonceInsights",
  "tokensPackageVersion": "0.3.42",
  "contractsPackage": "@efeoncepro/axis-ui-contracts",
  "contractsPackageVersion": "0.3.42",
  "contracts": [
    {
      "id": "efeonce.insights-stat-card",
      "version": "0.2.0",
      "lifecycle": "candidate"
    }
  ],
  "decision": "docs/architecture/INSIGHTS_STAT_CARD_DECISION_V1.md",
  "canon": {
    "architecture": "greenhouse-eo/docs/architecture/EFEONCE_INSIGHTS_ARCHITECTURE_V1.md",
    "decision": "greenhouse-eo/docs/architecture/EFEONCE_INSIGHTS_PLATFORM_DECISION_V1.md",
    "direction": "greenhouse-eo/docs/ui/visual-directions/TASK-1889-efeonce-insights-premium-catalogs-direction.md",
    "liveDossier": "greenhouse-eo/docs/ui/reviews/TASK-1875-efeonce-insights-shared-web-render-think/",
    "brandCriteria": "skill efeonce-graphic-line → references/criteria.md («Insights, marca de producto que acompaña»)"
  },
  "sampleData": "Todo lo que muestra esta página usa datos de muestra: la organización ficticia «Greenhouse Demo», el recuadro «Logo del cliente» y cifras ilustrativas. Ninguna cifra corresponde a un cliente.",
  "boundary": {
    "what": "Efeonce Insights es la biblioteca de informes de Efeonce: por cada organización y período produce una edición versionada e inmutable (evidencia de SEO, respuestas de IA y entrega creativa, un plan editorial y sus salidas) donde el informe PDF, el deck y la lectura web dicen lo mismo con las mismas cifras.",
    "owners": [
      {
        "part": "Dato, edición, permisos y enlace",
        "where": "Greenhouse (dominio Insights)",
        "note": "Crea, sella y emite la edición; decide quién la ve."
      },
      {
        "part": "Informe PDF A4 y deck 16:9",
        "where": "Greenhouse · Artifact Composer (catálogos insights-report e insights-deck)",
        "note": "El worker de render compone el plan congelado."
      },
      {
        "part": "Informe live",
        "where": "Think (think.efeoncepro.com/insights)",
        "note": "Render del modelo web que entrega Greenhouse; Think no guarda datos."
      },
      {
        "part": "Marca de producto",
        "where": "AXIS · @efeoncepro/axis-brand-assets 0.4.0",
        "note": "Logo, isotipo y lockup, sellados con SHA-256."
      },
      {
        "part": "Tokens de color de datos y de la tarjeta de cifra",
        "where": "AXIS · @efeoncepro/axis-tokens · efeonceInsights",
        "note": "Roles de dato, tonos de la variación y medidas de la tarjeta. Greenhouse y Think los leen; nadie guarda una copia a mano."
      },
      {
        "part": "Contratos",
        "where": "AXIS · @efeoncepro/axis-ui-contracts · efeonce.insights-stat-card",
        "note": "La tarjeta de cifra (candidate). Valida lo que el productor resolvió y entrega el manifiesto que cada consumidor dibuja."
      },
      {
        "part": "Esta página",
        "where": "AXIS Lab",
        "note": "La referencia del sistema de diseño de Insights, con datos de muestra."
      }
    ],
    "approvedVsLive": [
      {
        "label": "Aprobado en canvas",
        "text": "Las páginas de referencia del informe (canvas «Gráficos de Efeonce Insights», aprobado el 2026-09-25). Son la vara de fidelidad de las plantillas; algunas páginas (familias sin productor) no tienen plantilla."
      },
      {
        "label": "En producción hoy",
        "text": "Las 15 plantillas A4 y las 12 del deck renderizan en producción; la emisión a clientes sigue apagada. El informe live en Think sirve enlaces en producción desde el 2026-09-28. El correo está construido y apagado en producción; el portal existe sólo como diseño."
      },
      {
        "label": "Pruebas de la línea",
        "text": "Las láminas 7.1 y 7.2 de La órbita (capítulo 9) son pruebas de diseño de la línea sobre Insights: no son el diseño de Insights ni están adoptadas."
      }
    ]
  },
  "designSystem": {
    "home": "AXIS",
    "consumers": [
      "greenhouse-insights-report",
      "greenhouse-insights-deck",
      "think-insights-live"
    ],
    "brand": {
      "package": "@efeoncepro/axis-brand-assets",
      "ids": "insights-*"
    },
    "tokens": {
      "package": "@efeoncepro/axis-tokens",
      "export": "efeonceInsights",
      "version": "0.3.42"
    },
    "contracts": {
      "package": "@efeoncepro/axis-ui-contracts",
      "version": "0.3.42",
      "list": [
        {
          "id": "efeonce.insights-stat-card",
          "version": "0.2.0",
          "lifecycle": "candidate"
        }
      ]
    },
    "decision": "docs/architecture/INSIGHTS_STAT_CARD_DECISION_V1.md",
    "rule": "Los consumidores leen los colores y las medidas de efeonceInsights y validan con los contratos de AXIS; nunca guardan una copia a mano."
  },
  "statusLabels": {
    "produccion": "En producción",
    "canvas": "Aprobada en canvas",
    "diseno": "Sólo diseño",
    "apagado": "Construido, apagado",
    "falta": "Falta"
  },
  "brand": {
    "package": "@efeoncepro/axis-brand-assets",
    "version": "0.4.0",
    "tokenStatus": "Los colores salen de efeonceGraphicLine (@efeoncepro/axis-tokens); los archivos, de @efeoncepro/axis-brand-assets. Nunca copies un SVG ni rearmes el lockup.",
    "files": [
      {
        "id": "insights-lockup-positive",
        "surface": "paper",
        "use": "Lockup oficial Efeonce | Insights sobre papel. Es la forma por defecto junto a Efeonce.",
        "kind": "lockup",
        "variant": "positive",
        "sha256": "ef07d3b132fbb305e47878309062cbe04dd3f6ab1ef5509fcc500d000ccc256a",
        "aspectRatio": 0.1137,
        "note": "Efeonce logo + rule + Insights in gray (#6b6b6b, 5.0:1): Efeonce leads, only the sphere keeps the accent.",
        "packageFile": "assets/insights-lockup-positive.svg",
        "url": "https://axis.efeonce.org/branding/insights-lockup-positive.svg"
      },
      {
        "id": "insights-lockup-negative",
        "surface": "navy",
        "use": "Lockup oficial sobre navy (hero del informe live y portada del modo presentación).",
        "kind": "lockup",
        "variant": "negative",
        "sha256": "5a184e0a74a80986cd55f2ca93913912bbe8dd35f6bd23633342349ebbe3377e",
        "aspectRatio": 0.1137,
        "note": "Efeonce logo + rule + Insights in gray (#6f89a2, 4.83:1 on #001a33): Efeonce leads, only the sphere keeps the accent.",
        "packageFile": "assets/insights-lockup-negative.svg",
        "url": "https://axis.efeonce.org/branding/insights-lockup-negative.svg"
      },
      {
        "id": "insights-logo-positive",
        "surface": "paper",
        "use": "La marca sola, a tinta plena, sobre papel.",
        "kind": "logo",
        "variant": "positive",
        "sha256": "50d09e5263728095e5953d509b1c5c23d40b2b5d212e4883929b206c0b2d827e",
        "aspectRatio": 0.2906,
        "note": null,
        "packageFile": "assets/insights-logo-positive.svg",
        "url": "https://axis.efeonce.org/branding/insights-logo-positive.svg"
      },
      {
        "id": "insights-logo-negative",
        "surface": "navy",
        "use": "La marca sola, a tinta plena, sobre navy.",
        "kind": "logo",
        "variant": "negative",
        "sha256": "f0d0a2fada55fe455e57b45acc3bfd228f5f300f90ac3b669420da0e008c364b",
        "aspectRatio": 0.2906,
        "note": null,
        "packageFile": "assets/insights-logo-negative.svg",
        "url": "https://axis.efeonce.org/branding/insights-logo-negative.svg"
      },
      {
        "id": "insights-isotype-positive",
        "surface": "paper",
        "use": "La «i» con su órbita, sola, sobre papel.",
        "kind": "isotype",
        "variant": "positive",
        "sha256": "45cff2e58917973ec1c6cf722476d2c144bd422ef31f1583eb31d02eb7d63b36",
        "aspectRatio": 3.4231,
        "note": null,
        "packageFile": "assets/insights-isotype-positive.svg",
        "url": "https://axis.efeonce.org/branding/insights-isotype-positive.svg"
      },
      {
        "id": "insights-isotype-negative",
        "surface": "navy",
        "use": "La «i» con su órbita, sola, sobre navy.",
        "kind": "isotype",
        "variant": "negative",
        "sha256": "90c15308f1bdbb67cb2056c9582e801e79e5bde7f38d24a829307388a597b3ed",
        "aspectRatio": 3.4231,
        "note": null,
        "packageFile": "assets/insights-isotype-negative.svg",
        "url": "https://axis.efeonce.org/branding/insights-isotype-negative.svg"
      }
    ],
    "colors": [
      {
        "key": "inkPaper",
        "name": "Tinta sobre papel",
        "hex": "#023c70",
        "note": "Palabra y anillo del logo positivo."
      },
      {
        "key": "sphereDark",
        "name": "Esfera sobre navy",
        "hex": "#36c8bf",
        "note": "Acento de Growth en el logo y el lockup negativos."
      },
      {
        "key": "spherePaper",
        "name": "Esfera sobre papel",
        "hex": "#0e8c82",
        "note": "Acento de Growth en el logo y el lockup positivos."
      },
      {
        "key": "grayPaper",
        "name": "Gris del lockup en papel",
        "hex": "#6b6b6b",
        "note": "Insights junto a Efeonce: el gris de «Empower your» (5,0:1 sobre papel)."
      },
      {
        "key": "grayNavy",
        "name": "Gris del lockup en navy",
        "hex": "#6f89a2",
        "note": "El gris de marca fusionado sobre navy (4,83:1)."
      },
      {
        "key": "ground",
        "name": "Fondo navy",
        "hex": "#001a33",
        "note": "El fondo de las superficies negativas."
      }
    ],
    "construction": [
      {
        "name": "Palabra",
        "rule": "«ınsights» en Poppins Bold, minúscula, con la primera i sin punto (ı: el anillo se monta sobre su fuste), pasada a contornos (fontkit), con tracking de −18/1000."
      },
      {
        "name": "Punto-órbita",
        "rule": "El punto de la primera «i» se reemplaza por una órbita mínima: un anillo en la tinta de la palabra (trazo de 56/1000, un tercio del fuste; radio exterior 130; 72 de aire entre la altura de x y el anillo)."
      },
      {
        "name": "Esfera",
        "rule": "En el acento de Growth, radio 48, montada a las 1:30 (45° desde las 12) con un corte de 14 en el anillo alrededor, como el planeta del logo de Efeonce."
      },
      {
        "name": "Isotipo",
        "rule": "La «i» sola con su punto-órbita. Misma geometría que el logo."
      },
      {
        "name": "Lockup",
        "rule": "Logo de Efeonce a 30 px de alto, 20 de aire, filete de 1 × 26, 20 de aire e Insights a 31,5, centrados en vertical. Insights va en gris; sólo la esfera conserva el acento."
      },
      {
        "name": "Filete",
        "rule": "Navy al 25 % sobre papel; celeste claro al 30 % sobre navy. Viene dentro del archivo del lockup."
      },
      {
        "name": "Origen",
        "rule": "Generado por scripts/brand/build-insights-logo.mjs en greenhouse-eo y sellado en @efeoncepro/axis-brand-assets. Nunca se edita un SVG a mano: se regenera y se vuelve a sellar."
      }
    ],
    "lockup": {
      "efeonceHeightPx": 30,
      "gapPx": 20,
      "rule": {
        "widthPx": 1,
        "heightPx": 26
      },
      "insightsHeightPx": 31.5,
      "align": "center",
      "rebuild": "never"
    },
    "minimumSize": {
      "logoBodyPx": 18,
      "lockup": null,
      "note": "Mínimo sugerido del logo; el lockup no tiene mínimo escrito."
    },
    "rules": [
      {
        "rule": "Acompaña a Efeonce con un filete",
        "detail": "En sus propias superficies va junto al logo de Efeonce, separados por un filete fino, centrados en vertical con las medidas del canvas aprobado (las alturas de x quedan ópticamente alineadas, ±1 px)."
      },
      {
        "rule": "Sin «by efeonce»",
        "detail": "Efeonce ya está al lado: el lockup «by efeonce» no aplica a Insights."
      },
      {
        "rule": "Nunca firma",
        "detail": "La firma de cualquier pieza sigue siendo el logo de Efeonce. Insights es contexto de producto."
      },
      {
        "rule": "Baja su brillo junto a Efeonce",
        "detail": "En el lockup la palabra y el anillo van en gris de marca medido y sólo la esfera mantiene el acento, igual que el eslogan. El logo de Insights solo va a tinta plena."
      },
      {
        "rule": "El lockup nunca se rearma",
        "detail": "Se usa el archivo insights-lockup-*. Nunca se compone a mano con los dos logos sueltos."
      },
      {
        "rule": "Su esfera es parte del logo",
        "detail": "No es la esfera de la línea y no cuenta como la órbita de la pieza (como el planeta del logo de Efeonce). En el hero del informe live y en la imagen para compartir convive con una órbita de acento: revisado a ojo el 2026-09-28, pendiente de confirmación del operador."
      },
      {
        "rule": "Tamaño mínimo",
        "detail": "Mínimo sugerido del logo: 18 px de cuerpo (el anillo se diseñó legible desde 18 px). El lockup no tiene un mínimo escrito todavía."
      }
    ],
    "applications": [
      {
        "surface": "Informe live · hero",
        "carries": "Lockup negativo en pantalla (31,5 px; 24 px en celular, el menor en producción); positivo sólo al imprimir",
        "status": "produccion",
        "where": "Think · InsightReport.astro"
      },
      {
        "surface": "Informe live · barra fija",
        "carries": "Sin marca: sólo la órbita que marca el avance",
        "status": "produccion",
        "where": "Think · InsightReport.astro"
      },
      {
        "surface": "Informe live · cierre de la presentación y estados 404/410/429/502",
        "carries": "Logo de Efeonce (con el eslogan en el cierre): Insights nunca firma",
        "status": "produccion",
        "where": "Think · InsightReport.astro y StatusScreen"
      },
      {
        "surface": "Informe live · modo presentación",
        "carries": "Lockup negativo (40 px) en la lámina de portada",
        "status": "produccion",
        "where": "Think · InsightReport.astro"
      },
      {
        "surface": "Imagen para compartir (OG)",
        "carries": "og-insights.png, 1200 × 630: lockup negativo (520 px) y una órbita de acento, sin ningún dato del informe (el enlace es privado). Se regenera con scripts/build-insights-og.mjs cuando cambia el lockup",
        "status": "produccion",
        "where": "Think · /insights/r/[token] y /insights/muestra"
      },
      {
        "surface": "Archivos en Think",
        "carries": "Cinco de los seis SVG (falta el isotipo positivo) y el OG, copiados a mano (no vienen del paquete); el código sólo usa los dos lockups",
        "status": "produccion",
        "where": "Think · public/branding/insights/"
      },
      {
        "surface": "Portadas del PDF A4 (navy y blanca)",
        "carries": "Logo de Efeonce (32 px) + filete (1 × 24, 26 %) + «INSIGHTS» tipográfico en mayúsculas espaciadas (.brand-product, 12 px). En la portada navy «INSIGHTS» va en el acento, contra la regla del brillo y la del acento en texto menor a 24 px: decisión pendiente del operador. Falta usar el archivo oficial insights-lockup-*",
        "status": "falta",
        "where": "Greenhouse · insights-report · report-cover.html y report-cover-light.html"
      },
      {
        "surface": "Portada y apertura de capítulo del deck",
        "carries": "Logo de Efeonce + filete + «INSIGHTS» tipográfico en mayúsculas espaciadas (.product; en la portada, en el acento a 12 px: decisión pendiente). Falta usar el archivo oficial insights-lockup-*",
        "status": "falta",
        "where": "Greenhouse · insights-deck · insights-cover.html e insights-chapter.html"
      },
      {
        "surface": "Apertura de capítulo del PDF A4",
        "carries": "Pie con logo de Efeonce (12 px) + filete (1 × 10) + «INSIGHTS» tipográfico (8 px, gris navy); sin pie institucional, sólo folio",
        "status": "falta",
        "where": "Greenhouse · insights-report · report-chapter.html"
      },
      {
        "surface": "Pie de página y contraportada del PDF",
        "carries": "Logo de Efeonce: la firma es de Efeonce, como manda la regla (las aperturas de capítulo llevan el mini-lockup de arriba)",
        "status": "produccion",
        "where": "Greenhouse · catálogos insights-report e insights-deck"
      },
      {
        "surface": "Correo de entrega",
        "carries": "Marca Efeonce",
        "status": "falta",
        "where": "Greenhouse · InsightsEditionDeliveryEmail"
      },
      {
        "surface": "Favicon del informe live",
        "carries": "El favicon genérico de Think",
        "status": "falta",
        "where": "Think · BaseLayout.astro"
      },
      {
        "surface": "Recetas de deck con una ficha de Insights",
        "carries": "content-day-live-results usa el isotipo de Efeonce (efeonce-isotype-negative.svg); content-day-tools usa el ícono «probe» aunque su nota de receta dice isotipo de Efeonce (desalineado)",
        "status": "falta",
        "where": "Greenhouse · catálogo graphic-line-deck"
      },
      {
        "surface": "Portal (biblioteca de informes)",
        "carries": "Sin marca: el portal existe sólo como diseño",
        "status": "diseno",
        "where": "Greenhouse · TASK-1849"
      },
      {
        "surface": "Dependencia de Greenhouse",
        "carries": "Fija axis-brand-assets 0.3.5: no trae los archivos de Insights (llegan en 0.4.0)",
        "status": "falta",
        "where": "Greenhouse · package.json"
      }
    ]
  },
  "report": {
    "a4": {
      "canvas": {
        "w": 794,
        "h": 1123,
        "label": "A4 vertical · 794 × 1123 px (210 × 297 mm a 96 dpi)"
      },
      "catalog": "insights-report",
      "templates": [
        {
          "name": "ReportCoverPage",
          "contentType": "report-cover",
          "purpose": "Portada navy: órbita, título en tres líneas, «Preparado para» con el logo del cliente, eslogan y línea de confidencialidad. Sin pie ni folio.",
          "canvas": [
            "portada"
          ]
        },
        {
          "name": "ReportCoverLightPage",
          "contentType": "report-cover-light",
          "purpose": "Portada blanca: bloque navy arriba con «Qué mide este informe» y los canales como satélites (o sin canales, variante creativa); título en navy sobre papel.",
          "canvas": [
            "portada-clara",
            "portada-clara-creativo"
          ]
        },
        {
          "name": "ReportIndexPage",
          "contentType": "report-index",
          "purpose": "Índice con los folios reales de cada sección. El canvas no lo diseñó: hereda el molde en papel.",
          "canvas": null
        },
        {
          "name": "ReportSummaryPage",
          "contentType": "report-summary",
          "purpose": "Resumen ejecutivo: tesis, lo esencial del mes (hasta cinco cifras con su página) y la decisión para la reunión.",
          "canvas": [
            "resumen"
          ]
        },
        {
          "name": "ReportChapterPage",
          "contentType": "report-chapter",
          "purpose": "Apertura de capítulo: numeral, título, entrada, canales medidos (sólo si el capítulo mide canales) y contenidos.",
          "canvas": [
            "capitulo",
            "capitulo-02",
            "capitulo-03"
          ]
        },
        {
          "name": "ReportNarrativePage",
          "contentType": "report-narrative",
          "purpose": "Capítulo narrado: afirmación, párrafos, frase clave, evidencia y cierre navy opcional. Recibe el capítulo cuya evidencia no alcanzó para una figura: nunca se omite.",
          "canvas": null
        },
        {
          "name": "ReportReadingPage",
          "contentType": "report-reading",
          "purpose": "«Nuestra lectura»: tesis, apertura, bloques, frase clave y evidencia.",
          "canvas": [
            "lectura"
          ]
        },
        {
          "name": "ReportTablePage",
          "contentType": "report-table",
          "purpose": "Tabla de respaldo como tablero de barras: cifra protagonista, ranking, barra desde el dato, fuente y cobertura. Una tabla no se convierte en gráfico.",
          "canvas": null
        },
        {
          "name": "ReportPlanPage",
          "contentType": "report-plan",
          "purpose": "Plan de acción: cifra protagonista, columnas y acciones.",
          "canvas": [
            "plan"
          ]
        },
        {
          "name": "ReportLimitsPage",
          "contentType": "report-limits",
          "purpose": "Límites numerados (lo que la edición no puede afirmar, con su causa) y metodología en panel navy. Nunca se omite.",
          "canvas": null
        },
        {
          "name": "ReportBackCoverPage",
          "contentType": "report-back-cover",
          "purpose": "Contraportada institucional: órbita que cierra el recorrido, logo y eslogan, burbuja URL, redes, contacto, mercados y línea legal.",
          "canvas": [
            "contraportada"
          ]
        },
        {
          "name": "ReportFigureComparisonPage",
          "contentType": "report-figure-comparison",
          "purpose": "Comparación contra el período anterior cuando las dimensiones son MÉTRICAS distintas (clics, impresiones, CTR): cada una en su escala. Hasta 5 métricas.",
          "canvas": [
            "evidencia"
          ]
        },
        {
          "name": "ReportFigureColumnsPage",
          "contentType": "report-figure-columns",
          "purpose": "Columnas agrupadas sobre un eje compartido cuando las dimensiones son comparables (tramos, canales). Hasta 6 grupos.",
          "canvas": [
            "agrupadas"
          ]
        },
        {
          "name": "ReportFigureTargetsPage",
          "contentType": "report-figure-targets",
          "purpose": "Resultado contra la meta (bullet): cada indicador en su escala, la meta como marca. Hasta 6 filas.",
          "canvas": [
            "metas"
          ]
        },
        {
          "name": "ReportFigureTrendPage",
          "contentType": "report-figure-trend",
          "purpose": "Tendencia en el tiempo: hasta tres series distinguibles por rol, sin interpolar huecos.",
          "canvas": [
            "lineas"
          ]
        }
      ]
    },
    "deck": {
      "canvas": {
        "w": 1280,
        "h": 720,
        "label": "16:9 · 1280 × 720 px"
      },
      "catalog": "insights-deck",
      "templates": [
        {
          "name": "InsightsCoverSlide",
          "contentType": "insights-cover",
          "purpose": "Portada, siempre navy: el deck se proyecta. El logo del cliente sólo si tiene variante para fondo oscuro.",
          "canvas": null
        },
        {
          "name": "InsightsSummarySlide",
          "contentType": "insights-summary",
          "purpose": "Resumen ejecutivo: lo esencial y la decisión.",
          "canvas": [
            "resumen"
          ]
        },
        {
          "name": "InsightsChapterSlide",
          "contentType": "insights-chapter",
          "purpose": "Apertura de capítulo.",
          "canvas": null
        },
        {
          "name": "InsightsNarrativeSlide",
          "contentType": "insights-narrative",
          "purpose": "Capítulo narrado.",
          "canvas": null
        },
        {
          "name": "InsightsReadingSlide",
          "contentType": "insights-reading",
          "purpose": "«Nuestra lectura».",
          "canvas": [
            "lectura"
          ]
        },
        {
          "name": "InsightsPlanSlide",
          "contentType": "insights-plan",
          "purpose": "Plan de acción.",
          "canvas": [
            "plan"
          ]
        },
        {
          "name": "InsightsLimitsSlide",
          "contentType": "insights-limits",
          "purpose": "Límites y metodología.",
          "canvas": null
        },
        {
          "name": "InsightsBackCoverSlide",
          "contentType": "insights-back-cover",
          "purpose": "Cierre institucional.",
          "canvas": null
        },
        {
          "name": "InsightsFigureComparisonSlide",
          "contentType": "insights-figure-comparison",
          "purpose": "Comparación de períodos por métrica. Hasta 4 métricas.",
          "canvas": [
            "comparacion"
          ]
        },
        {
          "name": "InsightsFigureColumnsSlide",
          "contentType": "insights-figure-columns",
          "purpose": "Columnas sobre un eje compartido. Hasta 4 grupos.",
          "canvas": [
            "agrupadas"
          ]
        },
        {
          "name": "InsightsFigureTargetsSlide",
          "contentType": "insights-figure-targets",
          "purpose": "Resultado contra la meta. Hasta 5 filas.",
          "canvas": [
            "metas"
          ]
        },
        {
          "name": "InsightsFigureTrendSlide",
          "contentType": "insights-figure-trend",
          "purpose": "Tendencia en líneas por rol.",
          "canvas": [
            "lineas"
          ]
        }
      ],
      "missingVsA4": [
        "Portada clara: el deck siempre abre en navy (el mapper declara la variante clara como inexistente).",
        "Índice: una lámina que se proyecta no pagina como una hoja.",
        "Tabla de respaldo: la tabla auditable vive sólo en el A4.",
        "Portada, apertura, narrativa, límites y cierre del deck no tienen lámina en el canvas: se derivan del A4 con aprobación del operador.",
        "Capacidad menor por figura: 4 métricas, 4 grupos y 5 filas de meta (A4: 5, 6 y 6)."
      ]
    },
    "rules": [
      {
        "name": "Una página, una intención",
        "rule": "El autor clasifica el contenido de cada página en un content-type y el catálogo elige la plantilla. Nunca se elige la plantilla a mano ni se compone libre: si ningún content-type calza, es un vacío del catálogo."
      },
      {
        "name": "Portada por cliente o encargo",
        "rule": "Navy o blanca según la preferencia del encargo, luego la de la organización y, si no hay, automática: navy sólo si la organización tiene un logo apto para fondo oscuro; si no, blanca. El resultado se sella en el plan al generar: el render nunca decide la portada con datos vivos."
      },
      {
        "name": "Folio y pie son de la plantilla",
        "rule": "El pie institucional y el folio «NN / total» son slots; nunca se estampan sobre el PDF después."
      },
      {
        "name": "Nunca un hueco inventado",
        "rule": "Una figura sin hechos suficientes no se emite: el capítulo la narra y su ausencia queda en la tabla y en los límites. El mapper nunca recorta una figura para que quepa: rechaza con causa."
      },
      {
        "name": "Fidelidad",
        "rule": "Cada plantilla con página en el canvas, renderizada con sus datos, queda a ≤ 1 % de píxeles distintos (pixelmatch, umbral 0,1): 20 de 21; excepción aprobada Deck-Agrupadas (2,2 %, techo 2,5 %). Las plantillas derivadas (índice, tabla, narrativa, límites, portada, apertura y contraportada del deck) se protegen con el visual gate a 0 px."
      }
    ],
    "families": {
      "note": "El contrato de gráficos tiene 15 familias. El PDF tiene 4 páginas de figura; una familia sin página se rechaza con causa y nunca se dibuja en una plantilla ajena. El informe live dibuja las 15. Las páginas de las familias sin productor están aprobadas en el canvas como referencia, no como plantillas. Pendiente: evidencia más rica por familia (TASK-1901) y páginas de medidor y mapa de calor (TASK-1902).",
      "list": [
        {
          "id": "bar",
          "name": "Barras",
          "question": "Comparar",
          "pdfPage": "Columns (dimensiones comparables)",
          "producer": true,
          "evidence": "Hechos por unidad de cada módulo.",
          "canvas": "agrupadas"
        },
        {
          "id": "bar_grouped",
          "name": "Barras agrupadas",
          "question": "Contra el período anterior",
          "pdfPage": "Comparison (métricas distintas) o Columns (canales)",
          "producer": true,
          "evidence": "Hechos por unidad de cada módulo.",
          "canvas": "evidencia"
        },
        {
          "id": "line",
          "name": "Líneas",
          "question": "Tendencia",
          "pdfPage": "Trend",
          "producer": true,
          "evidence": "Al menos tres meses en la ventana.",
          "canvas": "lineas"
        },
        {
          "id": "bullet",
          "name": "Bullet",
          "question": "Resultado contra la meta",
          "pdfPage": "Targets",
          "producer": true,
          "evidence": "Indicadores de entrega contra su umbral óptimo.",
          "canvas": "metas"
        },
        {
          "id": "bar_stacked",
          "name": "Barras apiladas",
          "question": "Composición en el tiempo",
          "pdfPage": null,
          "producer": false,
          "evidence": "Ningún módulo entrega partes por período.",
          "canvas": "apiladas"
        },
        {
          "id": "pie",
          "name": "Torta",
          "question": "Parte de un total",
          "pdfPage": null,
          "producer": false,
          "evidence": "Ningún hecho trae sus partes medidas.",
          "canvas": null
        },
        {
          "id": "donut",
          "name": "Dona",
          "question": "Parte de un total",
          "pdfPage": null,
          "producer": false,
          "evidence": "Ningún hecho trae sus partes medidas.",
          "canvas": "donut"
        },
        {
          "id": "scatter",
          "name": "Dispersión",
          "question": "Relación entre dos métricas",
          "pdfPage": null,
          "producer": false,
          "evidence": "Sin observaciones pareadas.",
          "canvas": "dispersion"
        },
        {
          "id": "waterfall",
          "name": "Cascada",
          "question": "Descomposición de un cambio",
          "pdfPage": null,
          "producer": false,
          "evidence": "Requiere desgloses que ningún módulo expone.",
          "canvas": "cascada"
        },
        {
          "id": "funnel",
          "name": "Embudo",
          "question": "Conversión por etapas",
          "pdfPage": null,
          "producer": false,
          "evidence": "Requiere etapas de CRM.",
          "canvas": "embudo"
        },
        {
          "id": "gauge",
          "name": "Medidor",
          "question": "Nivel de 0 a 100",
          "pdfPage": null,
          "producer": false,
          "evidence": "La ventana anterior no tiene puntaje propio.",
          "canvas": "medidor"
        },
        {
          "id": "heatmap",
          "name": "Mapa de calor",
          "question": "Cambio por categoría y tiempo",
          "pdfPage": null,
          "producer": false,
          "evidence": "Sin matriz categoría × período.",
          "canvas": "heatmap"
        },
        {
          "id": "waffle",
          "name": "Waffle",
          "question": "Proporción en 100 celdas",
          "pdfPage": null,
          "producer": false,
          "evidence": "Sin partes medidas.",
          "canvas": "waffle"
        },
        {
          "id": "venn_two",
          "name": "Venn de dos",
          "question": "Solapamiento de dos conjuntos",
          "pdfPage": null,
          "producer": false,
          "evidence": "Sin conjuntos por consulta.",
          "canvas": "venn"
        },
        {
          "id": "upset",
          "name": "UpSet",
          "question": "Solapamiento de varios conjuntos",
          "pdfPage": null,
          "producer": false,
          "evidence": "Sin conjuntos por consulta.",
          "canvas": "upset"
        }
      ]
    },
    "variation": {
      "syntax": "<dirección>[:<tono>]",
      "values": [
        "up",
        "down",
        "flat",
        "up:better",
        "up:worse",
        "up:neutral",
        "down:better",
        "down:worse",
        "down:neutral",
        "flat:neutral"
      ],
      "rules": [
        "La dirección (up, down, flat) es la del valor y decide el triángulo: ▲ sube, ▼ baja.",
        "El tono (better, worse, neutral) dice si el cambio es bueno para esa métrica y decide el color: better en verde, worse en rojo y neutral en gris (tonos semánticos aprobados el 2026-10-03, en todas las figuras).",
        "El tono sigue a la dirección de la métrica: sin dirección declarada o sin cambio, neutral; «Menor es mejor» invierte el tono y se rotula.",
        "Así una métrica donde bajar es bueno muestra ▼ en verde, y una posición que empeora muestra ▲ en rojo.",
        "La cifra va sin signo: el triángulo dice la dirección. Sin cambio, un cuadrado redondeado en gris.",
        "El triángulo es siempre de puntas redondeadas, en la píldora y en las figuras: el mismo color en relleno y trazo, con unión redondeada (1,4 px en la píldora, 1,2 px en las figuras).",
        "El tratamiento depende del fondo (2026-10-03). Sobre papel (A4, informe live), variante A: píldora teñida con la cifra en el tono. Sobre navy (deck), variante C: sin píldora rellena; el tono va sólo en el triángulo y la cifra en tinta suave (navyLead). Así una grilla de cifras peores no se lee como alarma, la variación no compite con la cifra en teal y el rojo de «peor» no se confunde con el coral de «oportunidad».",
        "Una métrica que ya es porcentaje varía en puntos porcentuales («+0,54 pp»), nunca en porcentaje relativo."
      ]
    },
    "dataRoles": {
      "principle": "Un color de dato se pide por lo que la serie ES (actual, anterior, oportunidad, paso, ausencia) y por el fondo donde se lee. Teal y coral tienen la misma luminosidad: nunca son lo único que separa dos series (etiqueta directa, rayado, signo o forma).",
      "graphicMinContrast": 3,
      "grounds": {
        "paper": "#f7f8fa",
        "navy": "#001a33"
      },
      "roles": [
        {
          "key": "current",
          "name": "Actual",
          "onPaper": {
            "hex": "#023c70",
            "source": "--axis-ppt-blue-800",
            "role": "dataCurrentOnPaper",
            "measured": 10.5
          },
          "fillOnPaper": null,
          "onNavy": {
            "hex": "#36c8bf",
            "source": "--axis-deck-teal-500",
            "role": "dataCurrentOnNavy",
            "measured": 8.51
          },
          "use": "La serie del período del informe.",
          "pattern": null,
          "exception": null
        },
        {
          "key": "prior",
          "name": "Anterior o referencia",
          "onPaper": {
            "hex": "#1f9e94",
            "source": "--axis-deck-teal-650",
            "role": "dataPriorOnPaper",
            "measured": 3.1
          },
          "fillOnPaper": null,
          "onNavy": {
            "hex": "#8aa8d8",
            "source": "--axis-deck-blue-310",
            "role": "dataPriorOnNavy",
            "measured": 7.25
          },
          "use": "El período anterior o la referencia contra la que se compara.",
          "pattern": null,
          "exception": null
        },
        {
          "key": "opportunity",
          "name": "Oportunidad",
          "onPaper": {
            "hex": "#d97757",
            "source": "--axis-ppt-orange-500",
            "role": "dataOpportunityOnPaper",
            "measured": 2.94
          },
          "fillOnPaper": null,
          "onNavy": {
            "hex": "#ff7063",
            "source": "--axis-ppt-red-300",
            "role": "dataOpportunityOnNavy",
            "measured": 6.48
          },
          "use": "Lo que falta o la mayor brecha. Nunca texto.",
          "pattern": null,
          "exception": {
            "side": "onPaper",
            "measured": 2.94,
            "below": 3,
            "acceptedOn": "2026-10-03",
            "allowedAs": "non-text-mark-only",
            "compensatedBy": [
              "direct-label",
              "count",
              "sign"
            ]
          }
        },
        {
          "key": "step",
          "name": "Paso",
          "onPaper": {
            "hex": "#0375d9",
            "source": "--axis-ppt-blue-500",
            "role": "dataStepOnPaper",
            "measured": 4.34
          },
          "fillOnPaper": null,
          "onNavy": {
            "hex": "#007494",
            "source": "--axis-deck-cyan-700",
            "role": "dataStepOnNavy",
            "measured": 3.28
          },
          "use": "El paso «Sumó» de la cascada y la 4.ª parte de waffle y barras apiladas (TASK-1975).",
          "pattern": null,
          "exception": null
        },
        {
          "key": "absence",
          "name": "Ausencia",
          "onPaper": {
            "hex": "#b7c3d3",
            "source": "--axis-deck-slate-250",
            "role": "dataAbsenceOnPaper",
            "measured": 1.68
          },
          "fillOnPaper": {
            "hex": "#eef1f5",
            "source": "--axis-deck-slate-75",
            "role": "dataAbsenceFillOnPaper"
          },
          "onNavy": {
            "hex": "#b9c9e9",
            "source": "--axis-deck-ice-200",
            "role": "dataAbsenceOnNavy",
            "measured": 10.53
          },
          "use": "Lo que no se midió: se dibuja RAYADO, nunca como una serie más. El rayado es la codificación; el color no tiene que llegar a 3:1.",
          "pattern": "hatch",
          "exception": null
        },
        {
          "key": "highlight",
          "name": "Destacado",
          "onPaper": null,
          "fillOnPaper": null,
          "onNavy": {
            "hex": "#d0f3ff",
            "source": "--axis-deck-cyan-100",
            "role": "dataHighlightOnNavy",
            "measured": 15.01
          },
          "use": "El punto o la parte que la lectura señala, sólo sobre navy.",
          "pattern": null,
          "exception": null
        }
      ],
      "tones": [
        {
          "key": "better",
          "name": "Mejor",
          "onPaper": {
            "ink": "#0d6b3f",
            "ground": null,
            "tintOpacity": 0.12,
            "source": "--axis-ppt-green-900"
          },
          "onNavy": {
            "mark": "#28c76f",
            "figureInk": "#d0f3ff",
            "source": "--axis-ppt-green-400"
          }
        },
        {
          "key": "worse",
          "name": "Peor",
          "onPaper": {
            "ink": "#b91954",
            "ground": null,
            "tintOpacity": 0.1,
            "source": "--axis-ppt-red-800"
          },
          "onNavy": {
            "mark": "#ff7063",
            "figureInk": "#d0f3ff",
            "source": "--axis-ppt-red-300"
          }
        },
        {
          "key": "neutral",
          "name": "Neutro",
          "onPaper": {
            "ink": "#020061",
            "ground": "#e9edf3",
            "tintOpacity": null,
            "source": "--axis-ppt-indigo-950"
          },
          "onNavy": {
            "mark": "#b9c9e9",
            "figureInk": "#d0f3ff",
            "source": "--axis-deck-ice-200"
          }
        }
      ],
      "treatment": {
        "paper": {
          "kind": "pill-tinted",
          "variant": "A",
          "figureInk": "tone"
        },
        "navy": {
          "kind": "triangle-only",
          "variant": "C",
          "figureInk": "navyLead",
          "pill": false
        }
      },
      "triangle": {
        "kind": "rounded-triangle",
        "viewBox": "0 0 9 8",
        "path": {
          "up": "M4.5 0.5 L8.5 7.5 H0.5 Z",
          "down": "M4.5 7.5 L8.5 0.5 H0.5 Z"
        },
        "fillEqualsStroke": true,
        "strokeLinejoin": "round",
        "strokePx": {
          "pill": 1.4,
          "figure": 1.2
        },
        "flat": {
          "kind": "rounded-square",
          "viewBox": "0 0 9 9",
          "rect": {
            "x": 1,
            "y": 1,
            "width": 7,
            "height": 7,
            "rx": 1.8
          },
          "path": "M2.8 1 H6.2 A1.8 1.8 0 0 1 8 2.8 V6.2 A1.8 1.8 0 0 1 6.2 8 H2.8 A1.8 1.8 0 0 1 1 6.2 V2.8 A1.8 1.8 0 0 1 2.8 1 Z",
          "stroke": false
        }
      },
      "partsOrder": {
        "waffle": [
          "current",
          "opportunity",
          "prior",
          "step",
          "absence"
        ],
        "donut": [
          "current",
          "opportunity",
          "prior",
          "step",
          "absence"
        ],
        "stacked": [
          "current",
          "prior",
          "opportunity",
          "step"
        ],
        "waterfall": [
          "prior-total",
          "added",
          "removed",
          "current-total"
        ]
      },
      "token": "efeonceInsights.data · efeonceInsights.variation (@efeoncepro/axis-tokens 0.3.42)",
      "origin": "Nacieron en greenhouse-eo/src/lib/artifact-composer/brand-packs/axis/editorial-roles.json (TASK-1889, TASK-1975) y se verificaron contra report-tokens.css y deck-tokens.css el 2026-10-03."
    },
    "statCard": {
      "approved": "Aprobada por el operador el 2026-10-03: dirección 2, «retícula de cifras», en A4 y en deck.",
      "question": "¿Cuánto es y cómo cambió?",
      "contract": {
        "id": "efeonce.insights-stat-card",
        "version": "0.2.0",
        "lifecycle": "candidate"
      },
      "token": "efeonceInsights.statCard",
      "resolve": "pnpm insights:stat-card:resolve -- --input docs/examples/insights-stat-card/a4-six-intent.json",
      "manifest": "axis.insights-stat-card-composition.v1",
      "measures": {
        "question": "value_change",
        "direction": "grid",
        "capacity": {
          "a4": 6,
          "deck": 6
        },
        "surface": {
          "cardBorder": false,
          "cardFill": false,
          "dividers": "rule",
          "heroKeyFigure": false
        },
        "columns": {
          "a4": {
            "1": 1,
            "2": 2,
            "3": 3,
            "4": 2,
            "5": 3,
            "6": 3
          },
          "deck": {
            "1": 1,
            "2": 2,
            "3": 3,
            "4": 2,
            "5": 3,
            "6": 3
          }
        },
        "single": "horizontal",
        "overflow": "balanced-pages",
        "value": {
          "family": "Poppins",
          "weight": 700,
          "numerals": "tabular",
          "sizePx": {
            "a4": 44,
            "deck": 38
          },
          "webMinPx": 28,
          "colorOnPaper": "paperAccent",
          "colorOnNavy": "navyAccent",
          "unit": "small-prefix-or-suffix"
        },
        "label": {
          "maxWords": 3,
          "maxChars": 24,
          "overflow": "reject",
          "icon": "stroke"
        },
        "channel": {
          "approvedOn": "2026-10-03",
          "disc": {
            "px": {
              "a4": 30,
              "deck": 28,
              "web": 30
            },
            "isotypeRatio": 0.6,
            "fill": "#ffffff",
            "hairlineOnPaper": "rule",
            "hairlineOnNavy": false
          },
          "replacesMetricIcon": true,
          "placement": {
            "mixed": "each-cell",
            "singlePlatform": "title-once",
            "notAPlatform": "metric-icon"
          },
          "label": "channel-name",
          "metricLine": "context",
          "unknownPlatform": "name-only",
          "platforms": [
            "chatgpt",
            "gemini",
            "claude",
            "perplexity",
            "google_ai_overview",
            "google",
            "google_ads",
            "google_analytics",
            "google_search_console",
            "bing",
            "youtube",
            "reddit",
            "wikipedia",
            "linkedin",
            "instagram",
            "tiktok",
            "meta",
            "frameio",
            "greenhouse"
          ]
        },
        "estimatedChip": {
          "ground": "ruleSoft",
          "ink": "paperAccent"
        },
        "lowerIsBetter": {
          "ink": "labelMuted",
          "invertsTone": true
        },
        "noData": {
          "value": "—",
          "never": "zero"
        },
        "noComparable": {
          "pill": false,
          "versus": false
        },
        "motion": {
          "status": "approved",
          "approvedOn": "2026-10-03",
          "surfaces": [
            "web"
          ],
          "staticSurfaces": [
            "a4",
            "deck"
          ],
          "thesis": "count-the-change",
          "countFrom": "prior-value",
          "neverFrom": "zero",
          "ease": {
            "emphasized": "cubic-bezier(0.2, 0, 0, 1)",
            "standard": "cubic-bezier(0.4, 0, 0.2, 1)"
          },
          "timeline": {
            "label": {
              "startMs": 0,
              "endMs": 300,
              "risePx": 8,
              "ease": "emphasized",
              "parts": [
                "metric-icon",
                "metric-name",
                "estimated-chip"
              ]
            },
            "versus": {
              "startMs": 0,
              "visibleFromStart": true,
              "highlightValueWhileCounting": true
            },
            "value": {
              "startMs": 150,
              "endMs": 1250,
              "ease": "emphasized"
            },
            "variation": {
              "startMs": 1250,
              "endMs": 1600,
              "toneFrom": "neutral",
              "toneMs": 300,
              "toneEase": "standard",
              "triangleTravelPx": 8,
              "triangleFrom": {
                "up": "below",
                "down": "above"
              }
            },
            "lowerIsBetter": {
              "startMs": 1600,
              "endMs": 1900
            }
          },
          "staggerMs": 70,
          "staggerOrder": "reading",
          "trigger": "enter-viewport-once",
          "states": {
            "withPrior": "count-and-variation",
            "noChange": "no-travel-neutral-square",
            "noPrior": "rise-only",
            "noData": "rise-only"
          },
          "finalStateWhen": [
            "prefers-reduced-motion",
            "no-javascript",
            "print"
          ],
          "countingNumberAriaHidden": true,
          "tabularWidth": "final",
          "intermediateFormat": "same-as-final",
          "oneAnimationFramePerGrid": true,
          "never": [
            "count-from-zero",
            "pill-bounce-or-scale",
            "color-flicker",
            "hover-animation",
            "animate-in-pdf-or-deck",
            "animate-off-screen"
          ]
        },
        "web": {
          "element": "dl",
          "columnsAt390": 1,
          "truncate": false
        },
        "copy": {
          "eyebrow": "Cifras del período",
          "estimated": "Estimado",
          "lowerIsBetter": "Menor es mejor",
          "versus": "vs {valor} en {período}",
          "noData": "Sin dato en {período}"
        }
      },
      "anatomy": [
        {
          "name": "Ícono y nombre",
          "rule": "Ícono de trazo de la métrica y su nombre: 3 palabras y 24 caracteres como máximo. Nunca se trunca: el productor lo acorta o se rechaza con causa."
        },
        {
          "name": "«Estimado»",
          "rule": "Chip junto al nombre sólo si el hecho es estimado."
        },
        {
          "name": "Valor y unidad",
          "rule": "Cifra grande en Poppins 700 con numerales tabulares (44 px en A4, 38 px en deck, nunca menos de 28 px en web). La unidad va pequeña como prefijo o sufijo."
        },
        {
          "name": "Variación",
          "rule": "Triángulo de puntas redondeadas que sigue al valor + cifra sin signo + tono semántico (verde mejor, rojo peor, gris neutro). Sobre papel, en una píldora teñida; sobre navy, sin píldora: el tono sólo en el triángulo y la cifra en tinta suave. Nunca sólo color."
        },
        {
          "name": "«vs {valor} en {período}»",
          "rule": "Bajo la píldora, con el valor anterior destacado."
        },
        {
          "name": "«Menor es mejor»",
          "rule": "Rótulo pequeño cuando subir es malo (posición, rondas de revisión): invierte el tono."
        }
      ],
      "states": [
        {
          "name": "Mejor",
          "rule": "Sube y subir es mejor, o baja y menor es mejor: verde."
        },
        {
          "name": "Peor",
          "rule": "Baja y subir es mejor, o sube y menor es mejor: rojo."
        },
        {
          "name": "Neutro",
          "rule": "Sin dirección declarada o sin cambio: gris; sin cambio, con un cuadrado redondeado en vez del triángulo."
        },
        {
          "name": "Sin comparable",
          "rule": "Sin período anterior: la cifra sola, sin píldora ni «vs», con «Primer período medido» cuando el modelo lo trae."
        },
        {
          "name": "Sin dato",
          "rule": "«—» y «Sin dato en {período}». Nunca 0."
        },
        {
          "name": "Estimado",
          "rule": "Chip «Estimado» junto al nombre."
        },
        {
          "name": "Menor es mejor",
          "rule": "Rótulo y tono invertido."
        },
        {
          "name": "Una sola cifra",
          "rule": "Ocupa la retícula completa en horizontal: valor a la izquierda, variación a la derecha."
        },
        {
          "name": "Más cifras que la capacidad",
          "rule": "Hasta 6 por página A4 o lámina: más se reparten en páginas equilibradas seguidas (7 → 4 + 3), nunca separadas por gráficos."
        }
      ],
      "layout": [
        {
          "surface": "A4",
          "rule": "Antetítulo «Cifras del período», conclusión y lead a ancho completo, sin cifra principal en el héroe; retícula de 2 columnas (2 o 4 cifras) o 3 (3, 5 o 6), filetes finos, sin borde de tarjeta ni fondo gris."
        },
        {
          "surface": "Deck",
          "rule": "Columna izquierda de 372 px sin cifra principal; panel de 428 px con la misma regla de columnas que el A4 (2 o 4 cifras en dos columnas; 3, 5 o 6 en tres: las seis son 3 × 2) y la cifra en teal sobre navy."
        },
        {
          "surface": "Web (Think)",
          "rule": "Una lista de definiciones (<dl>): nombre en <dt>, valor y variación en <dd>, la variación leída en palabras. En escritorio, las mismas columnas que el A4 y el deck; una a 390 px. Es la única superficie que anima: la cifra cuenta su cambio."
        }
      ],
      "motion": {
        "approved": "Aprobado por el operador el 2026-10-03, sólo en el informe Live (web). El PDF A4 y el deck son estáticos.",
        "thesis": "La cifra cuenta su cambio: recorre del valor anterior (el mismo de «vs …») al actual. Nunca desde cero: ese recorrido no existe en el dato.",
        "timeline": [
          {
            "at": "0–300 ms",
            "what": "Nombre, ícono y «Estimado» suben 8 px y aparecen (curva enfatizada)."
          },
          {
            "at": "0 ms",
            "what": "«vs {valor} en {período}» ya está visible: es el punto de partida; su cifra se resalta mientras el número corre."
          },
          {
            "at": "150–1250 ms",
            "what": "La cifra recorre del valor anterior al actual con la curva enfatizada, con el formato y el ancho tabular finales."
          },
          {
            "at": "1250–1600 ms",
            "what": "La variación pasa de gris a su tono (300 ms, estándar) y el triángulo redondeado entra en su dirección (8 px: ▲ desde abajo, ▼ desde arriba)."
          },
          {
            "at": "1600–1900 ms",
            "what": "«Menor es mejor» aparece, si aplica. Después la tarjeta queda quieta."
          }
        ],
        "rules": [
          "Cada tarjeta empieza 70 ms después de la anterior, en orden de lectura; una sola vez por carga, al entrar en pantalla.",
          "Sin anterior, la cifra sólo sube y aparece; sin cambio, no se mueve y la variación entra en gris con el cuadrado redondeado; sin dato, «—» sin recorrido.",
          "Con prefers-reduced-motion, sin JavaScript o al imprimir: estado final desde el primer cuadro.",
          "El número que corre es aria-hidden: el lector de pantalla recibe siempre el valor final y la frase completa de la variación.",
          "Nunca: contar desde cero, rebote o escala de la píldora, parpadeo de color, animar al pasar el cursor, animar en el PDF o en el deck."
        ],
        "source": "greenhouse-eo/docs/ui/motion/TASK-1975-efeonce-insights-stat-card-motion.md"
      },
      "norm": [
        "La pregunta decide: «¿cuánto es y cómo cambió?» es una tarjeta; evolución, explicación, composición y comparación son gráficos.",
        "Un hecho, una figura: si una métrica tiene tarjeta, no vuelve en barras contra el mes anterior. Una métrica con meta va sólo en bullet, sin tarjeta.",
        "La tarjeta da el total y el gráfico el porqué. Si la métrica de una dona ya tiene tarjeta, el centro muestra la participación de la parte principal; sin tarjeta, el total.",
        "Excepción declarada: los totales de una cascada son anclas de la explicación y conviven con la tarjeta de la misma métrica.",
        "Orden del capítulo: cifras → metas → evolución → explicación → composición → comparación. La que no aplica se salta; el orden no se invierte.",
        "Una sola página de cifras por capítulo, al inicio.",
        "Dos barras no son un gráfico: una métrica contra su período anterior es una tarjeta.",
        "Dos sistemas de color: las series usan roles de dato y la variación tonos semánticos. Una serie nunca se pinta de rojo o verde porque bajó o subió.",
        "La misma píldora en la tarjeta, bajo las columnas y en las tablas."
      ],
      "evidence": [
        "greenhouse-eo/docs/ui/visual-directions/TASK-1975-efeonce-insights-stat-card-direction.md",
        "greenhouse-eo/docs/ui/visual-directions/TASK-1889-efeonce-insights-premium-catalogs/paginas/Premium-Cifras.png",
        "greenhouse-eo/docs/ui/visual-directions/TASK-1889-efeonce-insights-premium-catalogs/paginas/Deck-Cifras.png",
        "greenhouse-eo/docs/architecture/EFEONCE_INSIGHTS_CHART_SELECTION_CRITERIA_V1.md §5.1–5.2",
        "greenhouse-eo/docs/ui/wireframes/TASK-1975-efeonce-insights-new-figure-pages.md"
      ],
      "channel": {
        "approved": "Aprobadas por el operador el 2026-10-03 junto con su inventario: la tarjeta con isotipo cuando la cifra es de una plataforma.",
        "rules": [
          "El isotipo oficial (AXIS_PLATFORM_ASSETS, @efeoncepro/axis-brand-assets 0.4.15) en un disco blanco de 30 px (28 en el deck) al 60 %, con filete fino en papel y sin filete en navy. Nunca recoloreado, recortado ni dibujado a mano.",
          "Reemplaza al ícono Trazo de la métrica: nunca los dos en la misma celda.",
          "Va en cada celda cuando el tablero mezcla canales (un motor de IA, AI Overview, un buscador). Si todo el tablero es de una plataforma, el isotipo va una vez en el título y cada celda lleva su ícono Trazo.",
          "La celda se nombra por su canal (ChatGPT, AI Overview) y la métrica va en la línea de contexto («de las respuestas menciona la marca»). El nombre sigue con 3 palabras como máximo.",
          "Un canal sin isotipo conocido se queda con su nombre: nunca un isotipo aproximado.",
          "Las cifras que no son de una plataforma llevan su glifo Trazo de La órbita (competencia, keyword, enlace, velocidad y pausa nacieron para Insights, D30).",
          "Sale del channelId que el plan sella en cada hecho. Notion no es fuente: ICO lo mide Greenhouse, que lleva su propio isotipo."
        ],
        "inventory": [
          {
            "family": "Motores de respuesta · AI Visibility Grader",
            "isotypes": "ChatGPT, Gemini, Claude, Perplexity y AI Overview en cada cifra",
            "cards": "Mención, lugar en la respuesta, cita con enlace, tono positivo, Share of Voice, plataforma citada"
          },
          {
            "family": "Tráfico desde asistentes · GA4",
            "isotypes": "Los asistentes en cada cifra; Google Analytics en el título",
            "cards": "Visitas desde el asistente, visitas orgánicas con interacción (Search Console primero: es la fuente de verdad)"
          },
          {
            "family": "Búsqueda · Search Visibility 360",
            "isotypes": "Search Console en el título; Google, AI Overview, Google Ads y Bing donde la cifra es de esa superficie",
            "cards": "Clics, impresiones, CTR y posición; primera página; keywords con AI Overview; bloques del SERP; citado dentro del AI Overview; tráfico pagado estimado"
          },
          {
            "family": "Búsqueda · cifras sin plataforma",
            "isotypes": "Glifo Trazo: keyword, competencia, enlace, web, buscador",
            "cards": "Keywords nuevas, que suben, bajan o se pierden; competidores; enlaces y autoridad; salud técnica; visibilidad por URL"
          },
          {
            "family": "Plataformas citadas",
            "isotypes": "YouTube, Reddit, Wikipedia, LinkedIn",
            "cards": "Plataformas que citan los motores y que rankean en tus keywords"
          },
          {
            "family": "Producción creativa · ICO",
            "isotypes": "Greenhouse en el título; glifo Trazo por indicador (reloj, checklist, automatización, assets, calendario, medición, velocidad, pausa, objetivo); Frame.io en revisiones",
            "cards": "Entregas a tiempo, primera correcta, rondas, piezas; ciclo, throughput y velocidad; piezas trabadas, atrasos, SLO; versiones y comentarios"
          },
          {
            "family": "Redes y pauta",
            "isotypes": "Instagram, LinkedIn, TikTok, Meta en cada cifra",
            "cards": "Piezas por canal o formato; alcance, interacción e inversión (sin fuente todavía)"
          }
        ],
        "source": "Canvas «TASK-1975 · Tarjeta de cifra», tableros Premium-Cifras-Canal, Deck-Cifras-Canal, Cifras-Canal-Norma y Cifras-Canal-Inventario."
      },
      "evidenceNote": "Las hojas aprobadas llevan cifras reales de un cliente: viven en Greenhouse como evidencia y no se publican en este Lab público. Lo que se ve aquí es la referencia nativa, dibujada desde el manifiesto del contrato con cifras de muestra.",
      "samples": {
        "a4": {
          "intent": {
            "surface": "a4",
            "title": "Search Console y posiciones · mayo contra abril",
            "items": [
              {
                "itemId": "clicks",
                "label": "Clics",
                "display": "1.284",
                "direction": "higher_is_better",
                "change": {
                  "display": "16,5 %",
                  "direction": "up",
                  "tone": "better"
                },
                "versus": "vs 1.102 en abril 2026"
              },
              {
                "itemId": "impressions",
                "label": "Impresiones",
                "display": "48.210",
                "direction": "higher_is_better",
                "change": {
                  "display": "7,6 %",
                  "direction": "down",
                  "tone": "worse"
                },
                "versus": "vs 52.180 en abril 2026"
              },
              {
                "itemId": "ctr",
                "label": "CTR",
                "display": "2,7",
                "unit": {
                  "text": "%",
                  "position": "suffix"
                },
                "direction": "higher_is_better",
                "change": {
                  "display": "0,6 pp",
                  "direction": "up",
                  "tone": "better"
                },
                "versus": "vs 2,1 % en abril 2026"
              },
              {
                "itemId": "position",
                "label": "Posición media",
                "display": "8,4",
                "unit": {
                  "text": "#",
                  "position": "prefix"
                },
                "direction": "lower_is_better",
                "change": {
                  "display": "0,8 pos.",
                  "direction": "up",
                  "tone": "worse"
                },
                "versus": "vs #7,6 en abril 2026",
                "lowerIsBetter": "Menor es mejor"
              },
              {
                "itemId": "page-one",
                "label": "Primera página",
                "display": "12",
                "unit": {
                  "text": "de 40 keywords",
                  "position": "suffix"
                },
                "direction": "higher_is_better"
              },
              {
                "itemId": "etv",
                "label": "Tráfico estimado",
                "display": "—",
                "estimated": true,
                "direction": "higher_is_better",
                "noData": "Sin dato en mayo 2026"
              }
            ]
          },
          "manifest": {
            "schema": "axis.insights-stat-card-composition.v1",
            "contract": {
              "id": "efeonce.insights-stat-card",
              "version": "0.2.0",
              "lifecycle": "candidate"
            },
            "status": "resolved",
            "surface": "a4",
            "locale": "es",
            "ground": {
              "kind": "paper",
              "hex": "#f7f8fa"
            },
            "title": "Search Console y posiciones · mayo contra abril",
            "titleMark": null,
            "eyebrow": "Cifras del período",
            "count": 6,
            "surfaceRules": {
              "cardBorder": false,
              "cardFill": false,
              "dividers": "rule",
              "heroKeyFigure": false
            },
            "value": {
              "family": "Poppins",
              "weight": 700,
              "numerals": "tabular",
              "sizePx": 44,
              "minPx": null,
              "color": "#023c70"
            },
            "rule": "#dde3ec",
            "web": null,
            "pages": [
              {
                "index": 1,
                "count": 6,
                "columns": 3,
                "layout": "grid",
                "itemIds": [
                  "clicks",
                  "impressions",
                  "ctr",
                  "position",
                  "page-one",
                  "etv"
                ]
              }
            ],
            "items": [
              {
                "itemId": "clicks",
                "label": "Clics",
                "value": {
                  "display": "1.284",
                  "unit": null,
                  "parts": null,
                  "color": "#023c70",
                  "noData": false
                },
                "estimated": null,
                "direction": "higher_is_better",
                "change": {
                  "display": "16,5 %",
                  "direction": "up",
                  "triangle": "▲",
                  "mark": "rounded-triangle",
                  "tone": "better",
                  "colors": {
                    "treatment": "pill-tinted",
                    "mark": "#0d6b3f",
                    "ink": "#0d6b3f",
                    "ground": "rgba(13, 107, 63, 0.12)"
                  },
                  "spoken": "sube 16,5 %, mejor"
                },
                "versus": "vs 1.102 en abril 2026",
                "comparison": null,
                "firstPeriod": null,
                "count": null,
                "travel": "none",
                "motionDelayMs": null,
                "noData": null,
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Clics: 1.284. Sube 16,5 %, mejor, vs 1.102 en abril 2026"
              },
              {
                "itemId": "impressions",
                "label": "Impresiones",
                "value": {
                  "display": "48.210",
                  "unit": null,
                  "parts": null,
                  "color": "#023c70",
                  "noData": false
                },
                "estimated": null,
                "direction": "higher_is_better",
                "change": {
                  "display": "7,6 %",
                  "direction": "down",
                  "triangle": "▼",
                  "mark": "rounded-triangle",
                  "tone": "worse",
                  "colors": {
                    "treatment": "pill-tinted",
                    "mark": "#b91954",
                    "ink": "#b91954",
                    "ground": "rgba(185, 25, 84, 0.1)"
                  },
                  "spoken": "baja 7,6 %, peor"
                },
                "versus": "vs 52.180 en abril 2026",
                "comparison": null,
                "firstPeriod": null,
                "count": null,
                "travel": "none",
                "motionDelayMs": null,
                "noData": null,
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Impresiones: 48.210. Baja 7,6 %, peor, vs 52.180 en abril 2026"
              },
              {
                "itemId": "ctr",
                "label": "CTR",
                "value": {
                  "display": "2,7",
                  "unit": {
                    "text": "%",
                    "position": "suffix"
                  },
                  "parts": null,
                  "color": "#023c70",
                  "noData": false
                },
                "estimated": null,
                "direction": "higher_is_better",
                "change": {
                  "display": "0,6 pp",
                  "direction": "up",
                  "triangle": "▲",
                  "mark": "rounded-triangle",
                  "tone": "better",
                  "colors": {
                    "treatment": "pill-tinted",
                    "mark": "#0d6b3f",
                    "ink": "#0d6b3f",
                    "ground": "rgba(13, 107, 63, 0.12)"
                  },
                  "spoken": "sube 0,6 pp, mejor"
                },
                "versus": "vs 2,1 % en abril 2026",
                "comparison": null,
                "firstPeriod": null,
                "count": null,
                "travel": "none",
                "motionDelayMs": null,
                "noData": null,
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "CTR: 2,7 %. Sube 0,6 pp, mejor, vs 2,1 % en abril 2026"
              },
              {
                "itemId": "position",
                "label": "Posición media",
                "value": {
                  "display": "8,4",
                  "unit": {
                    "text": "#",
                    "position": "prefix"
                  },
                  "parts": null,
                  "color": "#023c70",
                  "noData": false
                },
                "estimated": null,
                "direction": "lower_is_better",
                "change": {
                  "display": "0,8 pos.",
                  "direction": "up",
                  "triangle": "▲",
                  "mark": "rounded-triangle",
                  "tone": "worse",
                  "colors": {
                    "treatment": "pill-tinted",
                    "mark": "#b91954",
                    "ink": "#b91954",
                    "ground": "rgba(185, 25, 84, 0.1)"
                  },
                  "spoken": "sube 0,8 pos., peor"
                },
                "versus": "vs #7,6 en abril 2026",
                "comparison": null,
                "firstPeriod": null,
                "count": null,
                "travel": "none",
                "motionDelayMs": null,
                "noData": null,
                "lowerIsBetter": {
                  "label": "Menor es mejor",
                  "ink": "#6b7f99"
                },
                "mark": null,
                "context": null,
                "accessibleText": "Posición media: #8,4. Sube 0,8 pos., peor, vs #7,6 en abril 2026"
              },
              {
                "itemId": "page-one",
                "label": "Primera página",
                "value": {
                  "display": "12",
                  "unit": {
                    "text": "de 40 keywords",
                    "position": "suffix"
                  },
                  "parts": null,
                  "color": "#023c70",
                  "noData": false
                },
                "estimated": null,
                "direction": "higher_is_better",
                "change": null,
                "versus": null,
                "comparison": null,
                "firstPeriod": null,
                "count": null,
                "travel": "none",
                "motionDelayMs": null,
                "noData": null,
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Primera página: 12 de 40 keywords"
              },
              {
                "itemId": "etv",
                "label": "Tráfico estimado",
                "value": {
                  "display": "—",
                  "unit": null,
                  "parts": null,
                  "color": "#023c70",
                  "noData": true
                },
                "estimated": {
                  "label": "Estimado",
                  "chip": {
                    "ground": "#e9edf3",
                    "ink": "#023c70"
                  }
                },
                "direction": "higher_is_better",
                "change": null,
                "versus": null,
                "comparison": null,
                "firstPeriod": null,
                "count": null,
                "travel": "none",
                "motionDelayMs": null,
                "noData": "Sin dato en mayo 2026",
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Tráfico estimado: Sin dato en mayo 2026"
              }
            ],
            "variation": {
              "treatment": {
                "kind": "pill-tinted",
                "variant": "A",
                "figureInk": "tone"
              },
              "triangle": {
                "kind": "rounded-triangle",
                "viewBox": "0 0 9 8",
                "path": {
                  "up": "M4.5 0.5 L8.5 7.5 H0.5 Z",
                  "down": "M4.5 7.5 L8.5 0.5 H0.5 Z"
                },
                "fillEqualsStroke": true,
                "strokeLinejoin": "round",
                "strokePx": 1.4
              },
              "flat": {
                "kind": "rounded-square",
                "viewBox": "0 0 9 9",
                "rect": {
                  "x": 1,
                  "y": 1,
                  "width": 7,
                  "height": 7,
                  "rx": 1.8
                },
                "path": "M2.8 1 H6.2 A1.8 1.8 0 0 1 8 2.8 V6.2 A1.8 1.8 0 0 1 6.2 8 H2.8 A1.8 1.8 0 0 1 1 6.2 V2.8 A1.8 1.8 0 0 1 2.8 1 Z",
                "stroke": false
              }
            },
            "motion": "none",
            "adapterChecks": [
              {
                "id": "label-never-truncated",
                "rule": "El nombre se imprime entero; si no cabe, el renderer rechaza con causa."
              },
              {
                "id": "value-never-truncated",
                "rule": "La cifra se imprime entera, Poppins 700 con cifras tabulares; en web nunca baja de 28 px."
              },
              {
                "id": "variation-triangle-figure-tone",
                "rule": "La variación lleva triángulo, cifra sin signo y tono: nunca sólo color."
              },
              {
                "id": "variation-rounded-triangle",
                "rule": "El triángulo es siempre de puntas redondeadas: el mismo color en relleno y trazo, stroke-linejoin round (1,4 px en la píldora, 1,2 px en las figuras)."
              },
              {
                "id": "variation-treatment-by-ground",
                "rule": "Sobre papel, píldora teñida con la cifra en el tono; sobre navy, sin píldora rellena: el tono sólo en el triángulo y la cifra en navyLead."
              },
              {
                "id": "versus-value-bold",
                "rule": "En «vs {valor} en {período}» el valor va destacado."
              },
              {
                "id": "no-card-chrome",
                "rule": "Celdas separadas por filetes; sin borde de tarjeta ni fondo gris."
              },
              {
                "id": "no-hero-key-figure",
                "rule": "La página de cifras no repite ninguna cifra en el héroe."
              },
              {
                "id": "one-stats-page-per-chapter",
                "rule": "Una página de cifras por capítulo, al inicio; más cifras van en páginas equilibradas seguidas, nunca separadas por gráficos."
              },
              {
                "id": "web-definition-list",
                "rule": "En web la retícula es un <dl>: nombre en <dt>, valor y variación en <dd>, la variación leída en palabras."
              },
              {
                "id": "live-count-from-prior",
                "rule": "Sólo en el Live: la cifra recorre del valor anterior al actual (150–1.250 ms, enfatizada) con el formato final y su ancho tabular; nunca desde cero. Sin comparable sólo sube y aparece; sin cambio no se mueve."
              },
              {
                "id": "variation-after-count",
                "rule": "Al llegar la cifra, la variación pasa de gris a su tono (300 ms, estándar) y el triángulo entra en su dirección 8 px (1.250–1.600 ms); «Menor es mejor» al final (1.600–1.900 ms)."
              },
              {
                "id": "motion-final-state",
                "rule": "Con prefers-reduced-motion, sin JavaScript o al imprimir: estado final desde el primer cuadro. Una vez por carga, al entrar en pantalla; 70 ms entre tarjetas en orden de lectura."
              },
              {
                "id": "counting-number-aria-hidden",
                "rule": "El número que corre es aria-hidden: el lector recibe siempre el valor final y la frase completa de la variación."
              },
              {
                "id": "static-pdf-and-deck",
                "rule": "El PDF A4 y el deck no animan."
              },
              {
                "id": "no-change-rounded-square",
                "rule": "Sin cambio, la variación lleva un cuadrado redondeado en el tono neutro, nunca un hueco."
              },
              {
                "id": "channel-isotype-disc",
                "rule": "Con canal, el isotipo oficial de AXIS_PLATFORM_ASSETS en un disco blanco (30 px en A4 y web, 28 en el deck) al 60 %, con filete fino en papel y sin filete en navy; nunca recoloreado, recortado ni dibujado a mano."
              },
              {
                "id": "channel-replaces-metric-icon",
                "rule": "El isotipo reemplaza al ícono Trazo de la métrica: nunca los dos en la misma celda."
              },
              {
                "id": "channel-once-in-title",
                "rule": "Si todo el tablero es de una plataforma, su isotipo va una vez en el título y cada celda lleva su ícono Trazo."
              },
              {
                "id": "channel-name-only-when-unknown",
                "rule": "Un canal sin isotipo conocido se queda con su nombre: nunca un isotipo aproximado."
              },
              {
                "id": "channel-isotype-decorative",
                "rule": "El isotipo es decorativo (aria-hidden): el nombre del canal ya está en el texto de la celda."
              }
            ]
          }
        },
        "deck": {
          "intent": {
            "surface": "deck",
            "title": "Entrega creativa · mayo",
            "items": [
              {
                "itemId": "pieces",
                "label": "Piezas entregadas",
                "display": "64",
                "direction": "higher_is_better",
                "change": {
                  "display": "12,3 %",
                  "direction": "up",
                  "tone": "better"
                },
                "versus": "vs 57 en abril 2026"
              },
              {
                "itemId": "rounds",
                "label": "Rondas de revisión",
                "display": "1,6",
                "direction": "lower_is_better",
                "change": {
                  "display": "0,2",
                  "direction": "down",
                  "tone": "better"
                },
                "versus": "vs 1,8 en abril 2026",
                "lowerIsBetter": "Menor es mejor"
              },
              {
                "itemId": "briefs",
                "label": "Briefs recibidos",
                "display": "22",
                "direction": null,
                "change": {
                  "display": "0",
                  "direction": "flat",
                  "tone": "neutral"
                },
                "versus": "vs 22 en abril 2026"
              }
            ]
          },
          "manifest": {
            "schema": "axis.insights-stat-card-composition.v1",
            "contract": {
              "id": "efeonce.insights-stat-card",
              "version": "0.2.0",
              "lifecycle": "candidate"
            },
            "status": "resolved",
            "surface": "deck",
            "locale": "es",
            "ground": {
              "kind": "navy",
              "hex": "#001a33"
            },
            "title": "Entrega creativa · mayo",
            "titleMark": null,
            "eyebrow": "Cifras del período",
            "count": 3,
            "surfaceRules": {
              "cardBorder": false,
              "cardFill": false,
              "dividers": "rule",
              "heroKeyFigure": false
            },
            "value": {
              "family": "Poppins",
              "weight": 700,
              "numerals": "tabular",
              "sizePx": 38,
              "minPx": null,
              "color": "#36c8bf"
            },
            "rule": "rgba(255, 255, 255, 0.14)",
            "web": null,
            "pages": [
              {
                "index": 1,
                "count": 3,
                "columns": 3,
                "layout": "grid",
                "itemIds": [
                  "pieces",
                  "rounds",
                  "briefs"
                ]
              }
            ],
            "items": [
              {
                "itemId": "pieces",
                "label": "Piezas entregadas",
                "value": {
                  "display": "64",
                  "unit": null,
                  "parts": null,
                  "color": "#36c8bf",
                  "noData": false
                },
                "estimated": null,
                "direction": "higher_is_better",
                "change": {
                  "display": "12,3 %",
                  "direction": "up",
                  "triangle": "▲",
                  "mark": "rounded-triangle",
                  "tone": "better",
                  "colors": {
                    "treatment": "triangle-only",
                    "mark": "#28c76f",
                    "ink": "#d0f3ff",
                    "ground": null
                  },
                  "spoken": "sube 12,3 %, mejor"
                },
                "versus": "vs 57 en abril 2026",
                "comparison": null,
                "firstPeriod": null,
                "count": null,
                "travel": "none",
                "motionDelayMs": null,
                "noData": null,
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Piezas entregadas: 64. Sube 12,3 %, mejor, vs 57 en abril 2026"
              },
              {
                "itemId": "rounds",
                "label": "Rondas de revisión",
                "value": {
                  "display": "1,6",
                  "unit": null,
                  "parts": null,
                  "color": "#36c8bf",
                  "noData": false
                },
                "estimated": null,
                "direction": "lower_is_better",
                "change": {
                  "display": "0,2",
                  "direction": "down",
                  "triangle": "▼",
                  "mark": "rounded-triangle",
                  "tone": "better",
                  "colors": {
                    "treatment": "triangle-only",
                    "mark": "#28c76f",
                    "ink": "#d0f3ff",
                    "ground": null
                  },
                  "spoken": "baja 0,2, mejor"
                },
                "versus": "vs 1,8 en abril 2026",
                "comparison": null,
                "firstPeriod": null,
                "count": null,
                "travel": "none",
                "motionDelayMs": null,
                "noData": null,
                "lowerIsBetter": {
                  "label": "Menor es mejor",
                  "ink": "#b9c9e9"
                },
                "mark": null,
                "context": null,
                "accessibleText": "Rondas de revisión: 1,6. Baja 0,2, mejor, vs 1,8 en abril 2026"
              },
              {
                "itemId": "briefs",
                "label": "Briefs recibidos",
                "value": {
                  "display": "22",
                  "unit": null,
                  "parts": null,
                  "color": "#36c8bf",
                  "noData": false
                },
                "estimated": null,
                "direction": null,
                "change": {
                  "display": "0",
                  "direction": "flat",
                  "triangle": "■",
                  "mark": "rounded-square",
                  "tone": "neutral",
                  "colors": {
                    "treatment": "triangle-only",
                    "mark": "#b9c9e9",
                    "ink": "#d0f3ff",
                    "ground": null
                  },
                  "spoken": "sin cambio"
                },
                "versus": "vs 22 en abril 2026",
                "comparison": null,
                "firstPeriod": null,
                "count": null,
                "travel": "none",
                "motionDelayMs": null,
                "noData": null,
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Briefs recibidos: 22. Sin cambio, vs 22 en abril 2026"
              }
            ],
            "variation": {
              "treatment": {
                "kind": "triangle-only",
                "variant": "C",
                "figureInk": "navyLead",
                "pill": false
              },
              "triangle": {
                "kind": "rounded-triangle",
                "viewBox": "0 0 9 8",
                "path": {
                  "up": "M4.5 0.5 L8.5 7.5 H0.5 Z",
                  "down": "M4.5 7.5 L8.5 0.5 H0.5 Z"
                },
                "fillEqualsStroke": true,
                "strokeLinejoin": "round",
                "strokePx": 1.4
              },
              "flat": {
                "kind": "rounded-square",
                "viewBox": "0 0 9 9",
                "rect": {
                  "x": 1,
                  "y": 1,
                  "width": 7,
                  "height": 7,
                  "rx": 1.8
                },
                "path": "M2.8 1 H6.2 A1.8 1.8 0 0 1 8 2.8 V6.2 A1.8 1.8 0 0 1 6.2 8 H2.8 A1.8 1.8 0 0 1 1 6.2 V2.8 A1.8 1.8 0 0 1 2.8 1 Z",
                "stroke": false
              }
            },
            "motion": "none",
            "adapterChecks": [
              {
                "id": "label-never-truncated",
                "rule": "El nombre se imprime entero; si no cabe, el renderer rechaza con causa."
              },
              {
                "id": "value-never-truncated",
                "rule": "La cifra se imprime entera, Poppins 700 con cifras tabulares; en web nunca baja de 28 px."
              },
              {
                "id": "variation-triangle-figure-tone",
                "rule": "La variación lleva triángulo, cifra sin signo y tono: nunca sólo color."
              },
              {
                "id": "variation-rounded-triangle",
                "rule": "El triángulo es siempre de puntas redondeadas: el mismo color en relleno y trazo, stroke-linejoin round (1,4 px en la píldora, 1,2 px en las figuras)."
              },
              {
                "id": "variation-treatment-by-ground",
                "rule": "Sobre papel, píldora teñida con la cifra en el tono; sobre navy, sin píldora rellena: el tono sólo en el triángulo y la cifra en navyLead."
              },
              {
                "id": "versus-value-bold",
                "rule": "En «vs {valor} en {período}» el valor va destacado."
              },
              {
                "id": "no-card-chrome",
                "rule": "Celdas separadas por filetes; sin borde de tarjeta ni fondo gris."
              },
              {
                "id": "no-hero-key-figure",
                "rule": "La página de cifras no repite ninguna cifra en el héroe."
              },
              {
                "id": "one-stats-page-per-chapter",
                "rule": "Una página de cifras por capítulo, al inicio; más cifras van en páginas equilibradas seguidas, nunca separadas por gráficos."
              },
              {
                "id": "web-definition-list",
                "rule": "En web la retícula es un <dl>: nombre en <dt>, valor y variación en <dd>, la variación leída en palabras."
              },
              {
                "id": "live-count-from-prior",
                "rule": "Sólo en el Live: la cifra recorre del valor anterior al actual (150–1.250 ms, enfatizada) con el formato final y su ancho tabular; nunca desde cero. Sin comparable sólo sube y aparece; sin cambio no se mueve."
              },
              {
                "id": "variation-after-count",
                "rule": "Al llegar la cifra, la variación pasa de gris a su tono (300 ms, estándar) y el triángulo entra en su dirección 8 px (1.250–1.600 ms); «Menor es mejor» al final (1.600–1.900 ms)."
              },
              {
                "id": "motion-final-state",
                "rule": "Con prefers-reduced-motion, sin JavaScript o al imprimir: estado final desde el primer cuadro. Una vez por carga, al entrar en pantalla; 70 ms entre tarjetas en orden de lectura."
              },
              {
                "id": "counting-number-aria-hidden",
                "rule": "El número que corre es aria-hidden: el lector recibe siempre el valor final y la frase completa de la variación."
              },
              {
                "id": "static-pdf-and-deck",
                "rule": "El PDF A4 y el deck no animan."
              },
              {
                "id": "no-change-rounded-square",
                "rule": "Sin cambio, la variación lleva un cuadrado redondeado en el tono neutro, nunca un hueco."
              },
              {
                "id": "channel-isotype-disc",
                "rule": "Con canal, el isotipo oficial de AXIS_PLATFORM_ASSETS en un disco blanco (30 px en A4 y web, 28 en el deck) al 60 %, con filete fino en papel y sin filete en navy; nunca recoloreado, recortado ni dibujado a mano."
              },
              {
                "id": "channel-replaces-metric-icon",
                "rule": "El isotipo reemplaza al ícono Trazo de la métrica: nunca los dos en la misma celda."
              },
              {
                "id": "channel-once-in-title",
                "rule": "Si todo el tablero es de una plataforma, su isotipo va una vez en el título y cada celda lleva su ícono Trazo."
              },
              {
                "id": "channel-name-only-when-unknown",
                "rule": "Un canal sin isotipo conocido se queda con su nombre: nunca un isotipo aproximado."
              },
              {
                "id": "channel-isotype-decorative",
                "rule": "El isotipo es decorativo (aria-hidden): el nombre del canal ya está en el texto de la celda."
              }
            ]
          }
        },
        "web": {
          "intent": {
            "surface": "web",
            "title": "Respuestas de IA · mayo contra abril",
            "items": [
              {
                "itemId": "ai-visits",
                "label": "Visitas desde IA",
                "display": "412",
                "parts": {
                  "value": "412"
                },
                "direction": "higher_is_better",
                "change": {
                  "display": "31,2 %",
                  "direction": "up",
                  "tone": "better"
                },
                "versus": "vs 314 en abril 2026",
                "comparison": {
                  "display": "314",
                  "period": "abril 2026"
                },
                "count": {
                  "from": 314,
                  "to": 412,
                  "decimals": 0
                }
              },
              {
                "itemId": "mention-rate",
                "label": "Tasa de mención",
                "display": "38,5 %",
                "parts": {
                  "value": "38,5",
                  "suffix": "%"
                },
                "direction": "higher_is_better",
                "change": {
                  "display": "4,2 pp",
                  "direction": "down",
                  "tone": "worse"
                },
                "versus": "vs 42,7 % en abril 2026",
                "comparison": {
                  "display": "42,7 %",
                  "period": "abril 2026"
                },
                "count": {
                  "from": 42.7,
                  "to": 38.5,
                  "decimals": 1
                }
              },
              {
                "itemId": "position",
                "label": "Posición media",
                "display": "#3,2",
                "parts": {
                  "prefix": "#",
                  "value": "3,2"
                },
                "direction": "lower_is_better",
                "change": {
                  "display": "0,6 pos.",
                  "direction": "down",
                  "tone": "better"
                },
                "versus": "vs #3,8 en abril 2026",
                "comparison": {
                  "display": "#3,8",
                  "period": "abril 2026"
                },
                "count": {
                  "from": 3.8,
                  "to": 3.2,
                  "decimals": 1
                },
                "lowerIsBetter": "Menor es mejor"
              },
              {
                "itemId": "answers",
                "label": "Respuestas medidas",
                "display": "24",
                "parts": {
                  "value": "24"
                },
                "direction": null,
                "change": {
                  "display": "0",
                  "direction": "flat",
                  "tone": "neutral"
                },
                "versus": "vs 24 en abril 2026",
                "comparison": {
                  "display": "24",
                  "period": "abril 2026"
                },
                "count": {
                  "from": 24,
                  "to": 24,
                  "decimals": 0
                }
              },
              {
                "itemId": "engines",
                "label": "Motores medidos",
                "display": "5",
                "parts": {
                  "value": "5",
                  "unitLabel": "motores"
                },
                "direction": null,
                "firstPeriod": "Primer período medido"
              },
              {
                "itemId": "citations",
                "label": "Citas al sitio",
                "display": "—",
                "direction": "higher_is_better",
                "noData": "Sin dato en mayo 2026"
              }
            ]
          },
          "manifest": {
            "schema": "axis.insights-stat-card-composition.v1",
            "contract": {
              "id": "efeonce.insights-stat-card",
              "version": "0.2.0",
              "lifecycle": "candidate"
            },
            "status": "resolved",
            "surface": "web",
            "locale": "es",
            "ground": {
              "kind": "paper",
              "hex": "#f7f8fa"
            },
            "title": "Respuestas de IA · mayo contra abril",
            "titleMark": null,
            "eyebrow": "Cifras del período",
            "count": 6,
            "surfaceRules": {
              "cardBorder": false,
              "cardFill": false,
              "dividers": "rule",
              "heroKeyFigure": false
            },
            "value": {
              "family": "Poppins",
              "weight": 700,
              "numerals": "tabular",
              "sizePx": null,
              "minPx": 28,
              "color": "#023c70"
            },
            "rule": "#dde3ec",
            "web": {
              "element": "dl",
              "columnsAt390": 1,
              "truncate": false
            },
            "pages": [
              {
                "index": 1,
                "count": 6,
                "columns": 3,
                "layout": "grid",
                "itemIds": [
                  "ai-visits",
                  "mention-rate",
                  "position",
                  "answers",
                  "engines",
                  "citations"
                ]
              }
            ],
            "items": [
              {
                "itemId": "ai-visits",
                "label": "Visitas desde IA",
                "value": {
                  "display": "412",
                  "unit": null,
                  "parts": {
                    "prefix": null,
                    "value": "412",
                    "suffix": null,
                    "unitLabel": null
                  },
                  "color": "#023c70",
                  "noData": false
                },
                "estimated": null,
                "direction": "higher_is_better",
                "change": {
                  "display": "31,2 %",
                  "direction": "up",
                  "triangle": "▲",
                  "mark": "rounded-triangle",
                  "tone": "better",
                  "colors": {
                    "treatment": "pill-tinted",
                    "mark": "#0d6b3f",
                    "ink": "#0d6b3f",
                    "ground": "rgba(13, 107, 63, 0.12)"
                  },
                  "spoken": "sube 31,2 %, mejor"
                },
                "versus": "vs 314 en abril 2026",
                "comparison": {
                  "display": "314",
                  "period": "abril 2026"
                },
                "firstPeriod": null,
                "count": {
                  "from": 314,
                  "to": 412,
                  "decimals": 0
                },
                "travel": "prior-to-current",
                "motionDelayMs": 0,
                "noData": null,
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Visitas desde IA: 412. Sube 31,2 %, mejor, vs 314 en abril 2026"
              },
              {
                "itemId": "mention-rate",
                "label": "Tasa de mención",
                "value": {
                  "display": "38,5 %",
                  "unit": null,
                  "parts": {
                    "prefix": null,
                    "value": "38,5",
                    "suffix": "%",
                    "unitLabel": null
                  },
                  "color": "#023c70",
                  "noData": false
                },
                "estimated": null,
                "direction": "higher_is_better",
                "change": {
                  "display": "4,2 pp",
                  "direction": "down",
                  "triangle": "▼",
                  "mark": "rounded-triangle",
                  "tone": "worse",
                  "colors": {
                    "treatment": "pill-tinted",
                    "mark": "#b91954",
                    "ink": "#b91954",
                    "ground": "rgba(185, 25, 84, 0.1)"
                  },
                  "spoken": "baja 4,2 pp, peor"
                },
                "versus": "vs 42,7 % en abril 2026",
                "comparison": {
                  "display": "42,7 %",
                  "period": "abril 2026"
                },
                "firstPeriod": null,
                "count": {
                  "from": 42.7,
                  "to": 38.5,
                  "decimals": 1
                },
                "travel": "prior-to-current",
                "motionDelayMs": 70,
                "noData": null,
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Tasa de mención: 38,5 %. Baja 4,2 pp, peor, vs 42,7 % en abril 2026"
              },
              {
                "itemId": "position",
                "label": "Posición media",
                "value": {
                  "display": "#3,2",
                  "unit": null,
                  "parts": {
                    "prefix": "#",
                    "value": "3,2",
                    "suffix": null,
                    "unitLabel": null
                  },
                  "color": "#023c70",
                  "noData": false
                },
                "estimated": null,
                "direction": "lower_is_better",
                "change": {
                  "display": "0,6 pos.",
                  "direction": "down",
                  "triangle": "▼",
                  "mark": "rounded-triangle",
                  "tone": "better",
                  "colors": {
                    "treatment": "pill-tinted",
                    "mark": "#0d6b3f",
                    "ink": "#0d6b3f",
                    "ground": "rgba(13, 107, 63, 0.12)"
                  },
                  "spoken": "baja 0,6 pos., mejor"
                },
                "versus": "vs #3,8 en abril 2026",
                "comparison": {
                  "display": "#3,8",
                  "period": "abril 2026"
                },
                "firstPeriod": null,
                "count": {
                  "from": 3.8,
                  "to": 3.2,
                  "decimals": 1
                },
                "travel": "prior-to-current",
                "motionDelayMs": 140,
                "noData": null,
                "lowerIsBetter": {
                  "label": "Menor es mejor",
                  "ink": "#6b7f99"
                },
                "mark": null,
                "context": null,
                "accessibleText": "Posición media: #3,2. Baja 0,6 pos., mejor, vs #3,8 en abril 2026"
              },
              {
                "itemId": "answers",
                "label": "Respuestas medidas",
                "value": {
                  "display": "24",
                  "unit": null,
                  "parts": {
                    "prefix": null,
                    "value": "24",
                    "suffix": null,
                    "unitLabel": null
                  },
                  "color": "#023c70",
                  "noData": false
                },
                "estimated": null,
                "direction": null,
                "change": {
                  "display": "0",
                  "direction": "flat",
                  "triangle": "■",
                  "mark": "rounded-square",
                  "tone": "neutral",
                  "colors": {
                    "treatment": "pill-tinted",
                    "mark": "#020061",
                    "ink": "#020061",
                    "ground": "#e9edf3"
                  },
                  "spoken": "sin cambio"
                },
                "versus": "vs 24 en abril 2026",
                "comparison": {
                  "display": "24",
                  "period": "abril 2026"
                },
                "firstPeriod": null,
                "count": {
                  "from": 24,
                  "to": 24,
                  "decimals": 0
                },
                "travel": "none",
                "motionDelayMs": 210,
                "noData": null,
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Respuestas medidas: 24. Sin cambio, vs 24 en abril 2026"
              },
              {
                "itemId": "engines",
                "label": "Motores medidos",
                "value": {
                  "display": "5",
                  "unit": null,
                  "parts": {
                    "prefix": null,
                    "value": "5",
                    "suffix": null,
                    "unitLabel": "motores"
                  },
                  "color": "#023c70",
                  "noData": false
                },
                "estimated": null,
                "direction": null,
                "change": null,
                "versus": null,
                "comparison": null,
                "firstPeriod": "Primer período medido",
                "count": null,
                "travel": "none",
                "motionDelayMs": 280,
                "noData": null,
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Motores medidos: 5 motores. Primer período medido"
              },
              {
                "itemId": "citations",
                "label": "Citas al sitio",
                "value": {
                  "display": "—",
                  "unit": null,
                  "parts": null,
                  "color": "#023c70",
                  "noData": true
                },
                "estimated": null,
                "direction": "higher_is_better",
                "change": null,
                "versus": null,
                "comparison": null,
                "firstPeriod": null,
                "count": null,
                "travel": "none",
                "motionDelayMs": 350,
                "noData": "Sin dato en mayo 2026",
                "lowerIsBetter": null,
                "mark": null,
                "context": null,
                "accessibleText": "Citas al sitio: Sin dato en mayo 2026"
              }
            ],
            "variation": {
              "treatment": {
                "kind": "pill-tinted",
                "variant": "A",
                "figureInk": "tone"
              },
              "triangle": {
                "kind": "rounded-triangle",
                "viewBox": "0 0 9 8",
                "path": {
                  "up": "M4.5 0.5 L8.5 7.5 H0.5 Z",
                  "down": "M4.5 7.5 L8.5 0.5 H0.5 Z"
                },
                "fillEqualsStroke": true,
                "strokeLinejoin": "round",
                "strokePx": 1.4
              },
              "flat": {
                "kind": "rounded-square",
                "viewBox": "0 0 9 9",
                "rect": {
                  "x": 1,
                  "y": 1,
                  "width": 7,
                  "height": 7,
                  "rx": 1.8
                },
                "path": "M2.8 1 H6.2 A1.8 1.8 0 0 1 8 2.8 V6.2 A1.8 1.8 0 0 1 6.2 8 H2.8 A1.8 1.8 0 0 1 1 6.2 V2.8 A1.8 1.8 0 0 1 2.8 1 Z",
                "stroke": false
              }
            },
            "motion": {
              "status": "approved",
              "approvedOn": "2026-10-03",
              "surfaces": [
                "web"
              ],
              "staticSurfaces": [
                "a4",
                "deck"
              ],
              "thesis": "count-the-change",
              "countFrom": "prior-value",
              "neverFrom": "zero",
              "ease": {
                "emphasized": "cubic-bezier(0.2, 0, 0, 1)",
                "standard": "cubic-bezier(0.4, 0, 0.2, 1)"
              },
              "timeline": {
                "label": {
                  "startMs": 0,
                  "endMs": 300,
                  "risePx": 8,
                  "ease": "emphasized",
                  "parts": [
                    "metric-icon",
                    "metric-name",
                    "estimated-chip"
                  ]
                },
                "versus": {
                  "startMs": 0,
                  "visibleFromStart": true,
                  "highlightValueWhileCounting": true
                },
                "value": {
                  "startMs": 150,
                  "endMs": 1250,
                  "ease": "emphasized"
                },
                "variation": {
                  "startMs": 1250,
                  "endMs": 1600,
                  "toneFrom": "neutral",
                  "toneMs": 300,
                  "toneEase": "standard",
                  "triangleTravelPx": 8,
                  "triangleFrom": {
                    "up": "below",
                    "down": "above"
                  }
                },
                "lowerIsBetter": {
                  "startMs": 1600,
                  "endMs": 1900
                }
              },
              "staggerMs": 70,
              "staggerOrder": "reading",
              "trigger": "enter-viewport-once",
              "states": {
                "withPrior": "count-and-variation",
                "noChange": "no-travel-neutral-square",
                "noPrior": "rise-only",
                "noData": "rise-only"
              },
              "finalStateWhen": [
                "prefers-reduced-motion",
                "no-javascript",
                "print"
              ],
              "countingNumberAriaHidden": true,
              "tabularWidth": "final",
              "intermediateFormat": "same-as-final",
              "oneAnimationFramePerGrid": true,
              "never": [
                "count-from-zero",
                "pill-bounce-or-scale",
                "color-flicker",
                "hover-animation",
                "animate-in-pdf-or-deck",
                "animate-off-screen"
              ]
            },
            "adapterChecks": [
              {
                "id": "label-never-truncated",
                "rule": "El nombre se imprime entero; si no cabe, el renderer rechaza con causa."
              },
              {
                "id": "value-never-truncated",
                "rule": "La cifra se imprime entera, Poppins 700 con cifras tabulares; en web nunca baja de 28 px."
              },
              {
                "id": "variation-triangle-figure-tone",
                "rule": "La variación lleva triángulo, cifra sin signo y tono: nunca sólo color."
              },
              {
                "id": "variation-rounded-triangle",
                "rule": "El triángulo es siempre de puntas redondeadas: el mismo color en relleno y trazo, stroke-linejoin round (1,4 px en la píldora, 1,2 px en las figuras)."
              },
              {
                "id": "variation-treatment-by-ground",
                "rule": "Sobre papel, píldora teñida con la cifra en el tono; sobre navy, sin píldora rellena: el tono sólo en el triángulo y la cifra en navyLead."
              },
              {
                "id": "versus-value-bold",
                "rule": "En «vs {valor} en {período}» el valor va destacado."
              },
              {
                "id": "no-card-chrome",
                "rule": "Celdas separadas por filetes; sin borde de tarjeta ni fondo gris."
              },
              {
                "id": "no-hero-key-figure",
                "rule": "La página de cifras no repite ninguna cifra en el héroe."
              },
              {
                "id": "one-stats-page-per-chapter",
                "rule": "Una página de cifras por capítulo, al inicio; más cifras van en páginas equilibradas seguidas, nunca separadas por gráficos."
              },
              {
                "id": "web-definition-list",
                "rule": "En web la retícula es un <dl>: nombre en <dt>, valor y variación en <dd>, la variación leída en palabras."
              },
              {
                "id": "live-count-from-prior",
                "rule": "Sólo en el Live: la cifra recorre del valor anterior al actual (150–1.250 ms, enfatizada) con el formato final y su ancho tabular; nunca desde cero. Sin comparable sólo sube y aparece; sin cambio no se mueve."
              },
              {
                "id": "variation-after-count",
                "rule": "Al llegar la cifra, la variación pasa de gris a su tono (300 ms, estándar) y el triángulo entra en su dirección 8 px (1.250–1.600 ms); «Menor es mejor» al final (1.600–1.900 ms)."
              },
              {
                "id": "motion-final-state",
                "rule": "Con prefers-reduced-motion, sin JavaScript o al imprimir: estado final desde el primer cuadro. Una vez por carga, al entrar en pantalla; 70 ms entre tarjetas en orden de lectura."
              },
              {
                "id": "counting-number-aria-hidden",
                "rule": "El número que corre es aria-hidden: el lector recibe siempre el valor final y la frase completa de la variación."
              },
              {
                "id": "static-pdf-and-deck",
                "rule": "El PDF A4 y el deck no animan."
              },
              {
                "id": "no-change-rounded-square",
                "rule": "Sin cambio, la variación lleva un cuadrado redondeado en el tono neutro, nunca un hueco."
              },
              {
                "id": "channel-isotype-disc",
                "rule": "Con canal, el isotipo oficial de AXIS_PLATFORM_ASSETS en un disco blanco (30 px en A4 y web, 28 en el deck) al 60 %, con filete fino en papel y sin filete en navy; nunca recoloreado, recortado ni dibujado a mano."
              },
              {
                "id": "channel-replaces-metric-icon",
                "rule": "El isotipo reemplaza al ícono Trazo de la métrica: nunca los dos en la misma celda."
              },
              {
                "id": "channel-once-in-title",
                "rule": "Si todo el tablero es de una plataforma, su isotipo va una vez en el título y cada celda lleva su ícono Trazo."
              },
              {
                "id": "channel-name-only-when-unknown",
                "rule": "Un canal sin isotipo conocido se queda con su nombre: nunca un isotipo aproximado."
              },
              {
                "id": "channel-isotype-decorative",
                "rule": "El isotipo es decorativo (aria-hidden): el nombre del canal ya está en el texto de la celda."
              }
            ]
          }
        }
      }
    },
    "gallery": {
      "label": "Referencia aprobada (canvas 2026-09-25), cifras ilustrativas",
      "a4": [
        {
          "slug": "portada",
          "name": "Portada navy",
          "caption": "Órbita arriba a la derecha, «Lectura de Efeonce», título, bajada y «Preparado para».",
          "template": "ReportCoverPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/portada.webp"
        },
        {
          "slug": "portada-clara",
          "name": "Portada blanca · visibilidad",
          "caption": "Bloque navy con los canales medidos como satélites y «Qué mide este informe».",
          "template": "ReportCoverLightPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/portada-clara.webp"
        },
        {
          "slug": "portada-clara-creativo",
          "name": "Portada blanca · creativa",
          "caption": "La misma portada, sin logos de canal.",
          "template": "ReportCoverLightPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/portada-clara-creativo.webp"
        },
        {
          "slug": "resumen",
          "name": "Resumen ejecutivo",
          "caption": "Tesis, lo esencial del mes con su página y la decisión para la reunión.",
          "template": "ReportSummaryPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/resumen.webp"
        },
        {
          "slug": "capitulo",
          "name": "Apertura de capítulo 01",
          "caption": "Numeral, entrada, canales medidos y contenidos.",
          "template": "ReportChapterPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/capitulo.webp"
        },
        {
          "slug": "capitulo-02",
          "name": "Apertura de capítulo 02",
          "caption": "La misma apertura con otro módulo.",
          "template": "ReportChapterPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/capitulo-02.webp"
        },
        {
          "slug": "capitulo-03",
          "name": "Apertura de capítulo 03",
          "caption": "La misma apertura con otro módulo.",
          "template": "ReportChapterPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/capitulo-03.webp"
        },
        {
          "slug": "lectura",
          "name": "«Nuestra lectura»",
          "caption": "Tesis, bloques, frase clave y evidencia.",
          "template": "ReportReadingPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/lectura.webp"
        },
        {
          "slug": "evidencia",
          "name": "Comparación de períodos",
          "caption": "Cada métrica en su escala, el período contra el anterior, y el panel «Lo que significa / Próximo paso».",
          "template": "ReportFigureComparisonPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/evidencia.webp"
        },
        {
          "slug": "agrupadas",
          "name": "Columnas agrupadas",
          "caption": "Dimensiones comparables sobre un eje compartido.",
          "template": "ReportFigureColumnsPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/agrupadas.webp"
        },
        {
          "slug": "metas",
          "name": "Resultado contra la meta",
          "caption": "Bullet: cada indicador en su escala, la meta como marca.",
          "template": "ReportFigureTargetsPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/metas.webp"
        },
        {
          "slug": "lineas",
          "name": "Tendencia",
          "caption": "Hasta tres series distinguibles por rol, sin interpolar huecos.",
          "template": "ReportFigureTrendPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/lineas.webp"
        },
        {
          "slug": "plan",
          "name": "Plan de acción",
          "caption": "Cifra protagonista, columnas y acciones.",
          "template": "ReportPlanPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/plan.webp"
        },
        {
          "slug": "contraportada",
          "name": "Contraportada",
          "caption": "La órbita cierra en el punto opuesto a la portada; logo, eslogan, URL, redes y contacto.",
          "template": "ReportBackCoverPage",
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/contraportada.webp"
        },
        {
          "slug": "apiladas",
          "name": "Barras apiladas",
          "caption": "Referencia del canvas. Sin plantilla: la familia se rechaza en el PDF.",
          "template": null,
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/apiladas.webp"
        },
        {
          "slug": "cascada",
          "name": "Cascada",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/cascada.webp"
        },
        {
          "slug": "dispersion",
          "name": "Dispersión",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/dispersion.webp"
        },
        {
          "slug": "donut",
          "name": "Dona",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/donut.webp"
        },
        {
          "slug": "embudo",
          "name": "Embudo",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/embudo.webp"
        },
        {
          "slug": "heatmap",
          "name": "Mapa de calor",
          "caption": "Referencia del canvas. Sin plantilla (TASK-1902).",
          "template": null,
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/heatmap.webp"
        },
        {
          "slug": "medidor",
          "name": "Medidor",
          "caption": "Referencia del canvas: 270° con remates redondos. Sin plantilla (TASK-1902).",
          "template": null,
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/medidor.webp"
        },
        {
          "slug": "upset",
          "name": "UpSet",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/upset.webp"
        },
        {
          "slug": "venn",
          "name": "Venn de dos",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/venn.webp"
        },
        {
          "slug": "waffle",
          "name": "Waffle",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 794,
          "h": 1123,
          "url": "https://axis.efeonce.org/media/insights/report/waffle.webp"
        }
      ],
      "deck": [
        {
          "slug": "resumen",
          "name": "Resumen",
          "caption": "Lo esencial y la decisión, sobre navy.",
          "template": "InsightsSummarySlide",
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/resumen.webp"
        },
        {
          "slug": "lectura",
          "name": "«Nuestra lectura»",
          "caption": "La lectura en una lámina.",
          "template": "InsightsReadingSlide",
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/lectura.webp"
        },
        {
          "slug": "comparacion",
          "name": "Comparación de períodos",
          "caption": "Columna izquierda con la cifra y el título; panel derecho con el gráfico y su fuente.",
          "template": "InsightsFigureComparisonSlide",
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/comparacion.webp"
        },
        {
          "slug": "agrupadas",
          "name": "Columnas agrupadas",
          "caption": "Eje compartido.",
          "template": "InsightsFigureColumnsSlide",
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/agrupadas.webp"
        },
        {
          "slug": "metas",
          "name": "Resultado contra la meta",
          "caption": "Bullet por indicador; la mayor brecha en coral.",
          "template": "InsightsFigureTargetsSlide",
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/metas.webp"
        },
        {
          "slug": "lineas",
          "name": "Tendencia",
          "caption": "Líneas por rol.",
          "template": "InsightsFigureTrendSlide",
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/lineas.webp"
        },
        {
          "slug": "plan",
          "name": "Plan de acción",
          "caption": "Las acciones en una lámina.",
          "template": "InsightsPlanSlide",
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/plan.webp"
        },
        {
          "slug": "apiladas",
          "name": "Barras apiladas",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/apiladas.webp"
        },
        {
          "slug": "cascada",
          "name": "Cascada",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/cascada.webp"
        },
        {
          "slug": "dispersion",
          "name": "Dispersión",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/dispersion.webp"
        },
        {
          "slug": "donut",
          "name": "Dona",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/donut.webp"
        },
        {
          "slug": "embudo",
          "name": "Embudo",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/embudo.webp"
        },
        {
          "slug": "heatmap",
          "name": "Mapa de calor",
          "caption": "Referencia del canvas. Sin plantilla (página pendiente: TASK-1902).",
          "template": null,
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/heatmap.webp"
        },
        {
          "slug": "medidor",
          "name": "Medidor",
          "caption": "Referencia del canvas. Sin plantilla (página pendiente: TASK-1902).",
          "template": null,
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/medidor.webp"
        },
        {
          "slug": "upset",
          "name": "UpSet",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/upset.webp"
        },
        {
          "slug": "venn",
          "name": "Venn de dos",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/venn.webp"
        },
        {
          "slug": "waffle",
          "name": "Waffle",
          "caption": "Referencia del canvas. Sin plantilla.",
          "template": null,
          "w": 1200,
          "h": 675,
          "url": "https://axis.efeonce.org/media/insights/deck/waffle.webp"
        }
      ]
    }
  },
  "live": {
    "status": "En producción en Think desde el 2026-09-28 (TASK-1875). Dirección «tablero de respuestas»: abre con la respuesta del mes; no es el PDF animado. Un único render (InsightReport.astro) sirve el enlace del cliente y la muestra pública, para que la muestra nunca se desalinee del producto.",
    "model": "Render del modelo web InsightWebModelV1 que entrega Greenhouse. Producción sirve la versión 1.0; la 1.1 (aditiva: campos editoriales y logo del cliente) está en staging. La única puerta de aceptación es acceptSharedEdition: acepta la familia 1.x y un major distinto responde 502 sin datos. Con el modelo 1.0 que sirve hoy producción, un enlace real no trae la decisión, la apertura ni la lectura paso a paso de cada capítulo, el alcance, «Cómo lo mediremos / Qué necesitamos», el logo del cliente ni las tasas del embudo: llegan con la 1.1. La muestra ya los enseña.",
    "sections": [
      {
        "n": 1,
        "name": "Portada oscura",
        "what": "Órbita animada, lockup de Insights, chips de estado (enlace vigente y vencimiento, o «muestra»), antetítulo con informe y período, titular en dos pesos (la respuesta y su consecuencia: se corta en los dos puntos o en la primera oración, con el texto íntegro), logo del cliente, meta (organización, edición, datos al) y una flecha hacia los hallazgos."
      },
      {
        "n": 2,
        "name": "Aviso de datos parciales",
        "what": "Una nota justo bajo la portada cuando los datos no llegan al último día del período (la fecha de corte es anterior al cierre)."
      },
      {
        "n": 3,
        "name": "Barra fija",
        "what": "Filtros por módulo (Todo, SEO, Respuestas de IA, Entrega creativa), enlace al plan si hay acciones, presentar, copiar enlace y, si hay un archivo disponible, descargar. La órbita reaparece chica y marca el avance de la lectura. Bajo 720 px sólo quedan los filtros."
      },
      {
        "n": 4,
        "name": "Lo esencial (#hallazgos)",
        "what": "Tarjetas con cifra protagonista que se expanden en su lugar: evidencia con su gráfico, lectura (lo que significa y próximo paso), hecho, fuente y fecha, y el enlace directo al hallazgo."
      },
      {
        "n": 5,
        "name": "Para decidir en la reunión",
        "what": "Bloque navy dentro de los hallazgos (modelo 1.1): lo que se pide a lo grande y su lectura debajo, con el enlace «Plan de acción»."
      },
      {
        "n": 6,
        "name": "Un capítulo por módulo",
        "what": "El gráfico principal queda fijo y avanza por pasos (cifra, conclusión, lo que significa, próximo paso); debajo, las demás figuras, hechos y límites, compactos."
      },
      {
        "n": 7,
        "name": "Plan (#plan)",
        "what": "Contador que cuenta hasta el número de acciones y cada acción con el chip de su módulo."
      },
      {
        "n": 8,
        "name": "Cómo se midió (#metodologia)",
        "what": "Plegable cerrado: «Qué mide este informe» (modelo 1.1), la metodología, los límites de la edición y las referencias."
      },
      {
        "n": 9,
        "name": "Invitación a conversar (#conversemos)",
        "what": "Sólo en la muestra pública, en lugar de las descargas: «Conversemos», con un correo a ventas."
      },
      {
        "n": 10,
        "name": "Descargas (#descargas)",
        "what": "Sólo en el enlace: PDF A4 y deck que el enlace permite; lo que no existe dice «no disponible», nunca un botón muerto."
      },
      {
        "n": 11,
        "name": "Pie",
        "what": "Firma de Efeonce con el eslogan, contacto, aviso del enlace (personal, revocable, con vencimiento) y línea de confidencialidad."
      },
      {
        "n": 12,
        "name": "Dock, presentación y aviso",
        "what": "Dock móvil con «Copiar enlace» y, si hay un archivo disponible, «Descargar»; modo presentación en diálogo; un aviso «Enlace copiado»."
      }
    ],
    "interactions": [
      "Un hallazgo se abre en su lugar, uno a la vez; Escape lo cierra y el enlace #h-… lo abre al cargar.",
      "Los filtros dejan sólo lo del módulo elegido.",
      "Copiar enlace toma la dirección del navegador: el HTML nunca escribe el token.",
      "Cada figura se puede ver como tabla equivalente (Gráfico / Tabla), con unidad, fuente, fecha de corte y la marca Medido o Estimado; cada grupo de barras es un botón con su detalle.",
      "El embudo muestra la tasa de paso entre etapas («pasa el …») cuando el modelo la trae (1.1).",
      "Una descarga sin archivo vuelve al informe (303); nunca muestra un error ni un botón muerto."
    ],
    "presentation": "Diálogo modal con láminas: portada con el lockup, un hallazgo por lámina, la decisión, el plan (hasta cinco acciones) y el cierre con el logo de Efeonce y el eslogan. Flechas a la derecha y abajo, Av Pág y espacio avanzan; flechas a la izquierda y arriba y Re Pág retroceden; Inicio y Fin van a la primera y a la última; Escape sale y un clic en la lámina avanza. Atrapa el foco y lo devuelve al botón al salir; con pantallas desde 900 px y movimiento permitido pide pantalla completa. Contador «n de total» con aviso a lectores de pantalla y barra de progreso. En celular no se ofrece (el botón vive en la barra, que ahí sólo muestra los filtros).",
    "dock": "Bajo 720 px aparece un dock fijo abajo con «Copiar enlace» y, si hay un archivo disponible, «Descargar» (en la muestra, sólo copiar). Al final de la página el pie queda completo por encima del dock.",
    "print": "Existe una hoja de impresión de respaldo: lockup y logo en positivo, sin transiciones y con las tablas visibles. El camino para imprimir es el PDF descargable.",
    "states": [
      {
        "code": 404,
        "key": "not_found",
        "title": "Este enlace no existe o expiró.",
        "meaning": "Anti-oráculo: desconocido, mal formado, expirado, compartir apagado, organización suspendida o módulo retirado responden igual. Ofrece contacto."
      },
      {
        "code": 410,
        "key": "gone",
        "title": "Este informe fue retirado.",
        "meaning": "El enlace se revocó o la edición se retiró. Ofrece contacto."
      },
      {
        "code": 429,
        "key": "rate_limited",
        "title": "Demasiadas lecturas en poco tiempo.",
        "meaning": "El límite por enlace o por IP se alcanzó; falla cerrado."
      },
      {
        "code": 502,
        "key": "error",
        "title": "No pudimos cargar el informe.",
        "meaning": "Greenhouse no respondió, respondió con otro error, entregó un JSON inválido o un modelo que Think no acepta (major distinto de 1.x o sin modelo)."
      }
    ],
    "statesNote": "Las pantallas de estado nunca muestran el nombre de la organización ni el código de la edición.",
    "motion": [
      {
        "name": "Órbita de portada",
        "rule": "Unos 2,1 s, con los tiempos del token: aparece el anillo (350 ms), la esfera recorre su arco con la estela detrás (1100 ms tras 200 ms), asienta y sube el halo (800 ms). Un anillo «en vivo» late cada 2400 ms en la esfera y en los puntos de estado. Al bajar, se aleja y reaparece chica en la barra."
      },
      {
        "name": "Cifras",
        "rule": "Cuentan hasta su valor y terminan exactamente en el texto que entrega el modelo."
      },
      {
        "name": "Hallazgos",
        "rule": "Se expanden con View Transitions cuando el navegador las tiene."
      },
      {
        "name": "La página se compone al bajar",
        "rule": "Cada bloque marcado (data-reveal; 33 en la muestra) entra con IntersectionObserver: sube 32 px en 900 ms. Los grupos escalonados suben 24 px en 700 ms, con 70 ms entre elementos. En las escenas, el gráfico cambia de estado con cada paso."
      },
      {
        "name": "Movimiento reducido",
        "rule": "Con prefers-reduced-motion se apaga toda animación y queda la interacción."
      },
      {
        "name": "Sin JavaScript",
        "rule": "La página del servidor ya está completa: todo abierto, gráficos y tablas visibles. Si el script no monta en 3 s, un failsafe retira el motion y el modo con JavaScript: la página queda en su versión sin script."
      },
      {
        "name": "Curvas",
        "rule": "Llega con énfasis cubic-bezier(0.2, 0, 0, 1) y se transforma estándar cubic-bezier(0.4, 0, 0.2, 1); 150 y 300 ms."
      }
    ],
    "responsive": [
      {
        "at": "≤ 1000 px",
        "what": "Las escenas pasan a una columna y el gráfico fijo se pega bajo la barra."
      },
      {
        "at": "≤ 720 px",
        "what": "Aparece el dock, el contacto del pie se apila y el modo presentación esconde su ayuda de teclado."
      }
    ],
    "languages": "es-CL (tuteo) y en-US, con los mismos diccionarios; la página elige por el idioma del modelo.",
    "typography": "Poppins 400, 500, 600, 800, 800 itálica y 900 itálica; Bricolage Grotesque variable (eje óptico). Las cifras usan numerales tabulares.",
    "routes": [
      {
        "path": "think.efeoncepro.com/insights/r/<enlace>",
        "what": "El informe de un cliente por enlace con token. SSR por pedido, sin caché (private, no-store), noindex y sin Referer. El logo del cliente y las descargas se piden en la misma URL (?logo=1, ?descargar=…), así el token nunca queda escrito en el HTML ni en analítica."
      },
      {
        "path": "think.efeoncepro.com/insights/muestra",
        "what": "Muestra pública para ventas: el mismo render en modo muestra, con la marca ficticia «Marca de ejemplo», sin descargas ni logo, aviso en la portada y en el pie (las cifras no corresponden a ninguna marca real) y la invitación «Conversemos». Se genera en el build (prerender), no llama a Greenhouse, noindex y fuera del sitemap."
      }
    ],
    "guard": "Las lecturas públicas de Greenhouse tienen límites de uso; Think lee del lado del servidor. El detalle vive en el canon de Greenhouse, no en esta página pública.",
    "captures": {
      "note": "Capturas del dossier de TASK-1875 (2026-09-28, recapturado con el color de «anterior» de los PDF y la nota de datos parciales en cuadro), con los datos de ejemplo del modelo («Greenhouse Demo») y movimiento reducido, así que se ve el estado final de cada escena. En las capturas por elemento se ocultan la barra, el dock y la barra de desarrollo.",
      "list": [
        {
          "id": "first-fold",
          "name": "Primer pliegue",
          "what": "Lockup, estado del enlace, la respuesta del mes, bajada, cliente y órbita.",
          "desktop": {
            "w": 1200,
            "h": 750
          },
          "mobile": {
            "w": 390,
            "h": 844
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-first-fold.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-first-fold.webp"
        },
        {
          "id": "partial-note",
          "name": "Datos parciales",
          "what": "La nota bajo la portada cuando la fecha de corte es anterior al cierre del período.",
          "desktop": {
            "w": 1200,
            "h": 750
          },
          "mobile": {
            "w": 390,
            "h": 844
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-partial-note.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-partial-note.webp"
        },
        {
          "id": "summary",
          "name": "Lo esencial",
          "what": "Hallazgos con cifra protagonista y la decisión para la reunión.",
          "desktop": {
            "w": 1200,
            "h": 1275
          },
          "mobile": {
            "w": 390,
            "h": 2010
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-summary.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-summary.webp"
        },
        {
          "id": "finding-open",
          "name": "Hallazgo abierto",
          "what": "La evidencia dentro del hallazgo: figura, lectura, procedencia y enlace.",
          "desktop": {
            "w": 1067,
            "h": 802
          },
          "mobile": {
            "w": 348,
            "h": 1424
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-finding-open.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-finding-open.webp"
        },
        {
          "id": "chapter-figure",
          "name": "Capítulo con figura",
          "what": "La figura principal narrada paso a paso.",
          "desktop": {
            "w": 1068,
            "h": 1096
          },
          "mobile": {
            "w": 348,
            "h": 1150
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-chapter-figure.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-chapter-figure.webp"
        },
        {
          "id": "chapter-table-open",
          "name": "Tabla equivalente",
          "what": "La misma figura como tabla, con unidad, fuente, fecha de corte y la marca Medido.",
          "desktop": {
            "w": 579,
            "h": 377
          },
          "mobile": {
            "w": 348,
            "h": 480
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-chapter-table-open.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-chapter-table-open.webp"
        },
        {
          "id": "chapter-aeo",
          "name": "Capítulo de respuestas de IA",
          "what": "Las demás familias narradas como bloques alternados.",
          "desktop": {
            "w": 1068,
            "h": 3369
          },
          "mobile": {
            "w": 348,
            "h": 4792
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-chapter-aeo.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-chapter-aeo.webp"
        },
        {
          "id": "chapter-ico",
          "name": "Capítulo de entrega",
          "what": "Metas y tendencias de entrega creativa.",
          "desktop": {
            "w": 1068,
            "h": 2316
          },
          "mobile": {
            "w": 348,
            "h": 2694
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-chapter-ico.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-chapter-ico.webp"
        },
        {
          "id": "limits",
          "name": "Límites",
          "what": "Un capítulo sin cifras muestra el motivo, nunca un cero ni una figura vacía.",
          "desktop": {
            "w": 1068,
            "h": 304
          },
          "mobile": {
            "w": 348,
            "h": 374
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-limits.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-limits.webp"
        },
        {
          "id": "downloads",
          "name": "Descargas",
          "what": "Una descarga disponible por el mismo enlace.",
          "desktop": {
            "w": 1068,
            "h": 105
          },
          "mobile": {
            "w": 348,
            "h": 335
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-downloads.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-downloads.webp"
        },
        {
          "id": "downloads-unavailable",
          "name": "Descarga no disponible",
          "what": "Lo que todavía no existe dice «no disponible»; sin botones muertos.",
          "desktop": {
            "w": 1068,
            "h": 104
          },
          "mobile": {
            "w": 348,
            "h": 307
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-downloads-unavailable.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-downloads-unavailable.webp"
        },
        {
          "id": "footer",
          "name": "Pie",
          "what": "Logo y eslogan en su bloque oficial, contacto y aviso del enlace.",
          "desktop": {
            "w": 1200,
            "h": 255
          },
          "mobile": {
            "w": 390,
            "h": 446
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-footer.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-footer.webp"
        },
        {
          "id": "present-cover",
          "name": "Presentación · portada",
          "what": "El mismo modelo en láminas para una reunión.",
          "desktop": {
            "w": 1200,
            "h": 750
          },
          "mobile": null,
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-present-cover.webp",
          "mobileUrl": null
        },
        {
          "id": "present-finding",
          "name": "Presentación · hallazgo",
          "what": "Un hallazgo por lámina.",
          "desktop": {
            "w": 1200,
            "h": 750
          },
          "mobile": null,
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-present-finding.webp",
          "mobileUrl": null
        },
        {
          "id": "status-not-found",
          "name": "Estado 404",
          "what": "Enlace desconocido o vencido.",
          "desktop": {
            "w": 1200,
            "h": 750
          },
          "mobile": {
            "w": 390,
            "h": 844
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-status-not-found.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-status-not-found.webp"
        },
        {
          "id": "status-gone",
          "name": "Estado 410",
          "what": "Informe retirado.",
          "desktop": {
            "w": 1200,
            "h": 750
          },
          "mobile": {
            "w": 390,
            "h": 844
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-status-gone.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-status-gone.webp"
        },
        {
          "id": "status-rate-limited",
          "name": "Estado 429",
          "what": "Demasiadas lecturas.",
          "desktop": {
            "w": 1200,
            "h": 750
          },
          "mobile": {
            "w": 390,
            "h": 844
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-status-rate-limited.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-status-rate-limited.webp"
        },
        {
          "id": "status-error",
          "name": "Estado 502",
          "what": "No se pudo cargar.",
          "desktop": {
            "w": 1200,
            "h": 750
          },
          "mobile": {
            "w": 390,
            "h": 844
          },
          "desktopUrl": "https://axis.efeonce.org/media/insights/live/desktop-status-error.webp",
          "mobileUrl": "https://axis.efeonce.org/media/insights/live/mobile-status-error.webp"
        }
      ]
    }
  },
  "otherSurfaces": [
    {
      "name": "Correo de entrega",
      "status": "apagado",
      "what": "Un correo, tres modalidades: portal_link (lleva al informe en el portal; login revalida permisos; responde not_ready hasta que exista el portal), share_link (lleva al enlace personal, que vence) y attachment (el PDF adjunto; avisa que un archivo enviado no se retira). Funcional y sobrio, con marca Efeonce; nunca afirma que alguien leyó. Construido y en producción con el envío apagado; encendido en staging."
    },
    {
      "name": "Portal (biblioteca de informes)",
      "status": "diseno",
      "what": "Pedir, revisar y encontrar informes dentro de Greenhouse. Hoy existe sólo como diseño (wireframe, flujo y motion de TASK-1849), sin código."
    },
    {
      "name": "MCP",
      "status": "produccion",
      "what": "17 herramientas para crear, leer, renderizar, compartir y revisar entregas y recurrencias. No tienen superficie visual: devuelven datos y enlaces."
    },
    {
      "name": "Imagen para compartir",
      "status": "produccion",
      "what": "og-insights.png de Think (1200 × 630, lockup y una órbita, sin datos del informe), en el enlace y en la muestra."
    }
  ],
  "inAxis": [
    {
      "name": "Marca de producto",
      "where": "@efeoncepro/axis-brand-assets · insights-*",
      "since": "2026-09-28"
    },
    {
      "name": "Roles de color de datos y tonos de la variación",
      "where": "@efeoncepro/axis-tokens · efeonceInsights.data y .variation",
      "since": "2026-10-03"
    },
    {
      "name": "Tarjeta de cifra (tokens y contrato)",
      "where": "@efeoncepro/axis-tokens · efeonceInsights.statCard · @efeoncepro/axis-ui-contracts · efeonce.insights-stat-card 0.1.0 (candidate)",
      "since": "2026-10-03"
    }
  ],
  "axisCandidates": {
    "status": "Pendiente, con un follow-up como dueño. AXIS es la casa del sistema de diseño de Insights: la marca, los tokens de datos y la tarjeta de cifra ya están aquí; la geometría de los gráficos y los estilos del resto de las figuras son las próximas extracciones. Hasta que se muevan, siguen en los consumidores y la geometría de la web no diverge de la del PDF.",
    "next": "pending-follow-up",
    "list": [
      {
        "name": "Geometría de las 15 familias",
        "why": "Escalas, torta y dona, medidor de 270°, mapa de calor por intensidad, waffle de un cuadro por unidad y Venn proporcional se calculan en dos lugares con las mismas convenciones. Es la próxima extracción.",
        "where": "greenhouse-eo · artifact-composer/chart-geometry.ts + insights-shared/figure-svg.ts ↔ efeonce-think · insights-chart-geometry.ts + ChartFigure.astro"
      },
      {
        "name": "Estilos del resto de las figuras",
        "why": "Cascada, waffle, dona, barras apiladas, bullet y líneas: medidas, leyendas y notas, hoy en el CSS de cada catálogo y en Think. Pasan a tokens y contratos de AXIS como la tarjeta de cifra.",
        "where": "greenhouse-eo · report-editorial.css + deck-editorial.css ↔ efeonce-think · ChartFigure.astro"
      }
    ]
  },
  "gaps": [
    "Las portadas del PDF A4 y la portada y apertura del deck escriben «INSIGHTS» como texto junto al logo de Efeonce en vez de usar el archivo oficial insights-lockup-*. La marca tampoco está en el correo, el favicon del informe live, el portal ni el MCP. Cada uno es una decisión pendiente del operador; en los catálogos pasa por el contrato de fidelidad.",
    "No hay un tamaño mínimo escrito para el lockup.",
    "Greenhouse fija axis-brand-assets 0.3.5 y los archivos de Insights llegan en 0.4.0; Think usa copias manuales.",
    "En las portadas navy del PDF y del deck «INSIGHTS» va en el acento a 12 px, contra la regla del brillo del 2026-09-28 y la del acento en texto menor a 24 px: decisión pendiente del operador (toca el contrato de fidelidad de TASK-1889).",
    "El favicon del informe live es el genérico de Think.",
    "Greenhouse y Think todavía no leen efeonceInsights: hasta que adopten @efeoncepro/axis-tokens 0.3.42, editorial-roles.json es la fuente aguas arriba y un cambio allá llega aquí el mismo día. La geometría de los gráficos sigue duplicada en los dos consumidores (próxima extracción).",
    "La iconografía del informe (PDF y web) todavía no usa el set canónico Trazo de AXIS: se adopta en una task propia.",
    "Las capturas del informe live usan fixtures; falta una captura contra una edición de staging con un enlace sintético."
  ],
  "agentPrompt": "Estás trabajando con Efeonce Insights. Lee /references/insights.json. Usa la marca sólo desde @efeoncepro/axis-brand-assets (ids insights-*): junto a Efeonce, el archivo insights-lockup-* y nunca los dos logos sueltos; sin «by efeonce»; Insights nunca firma. AXIS es la casa del sistema de diseño de Insights: los colores de datos y los tonos de la variación salen de efeonceInsights (@efeoncepro/axis-tokens), nunca de un HEX copiado, y la tarjeta de cifra se valida y resuelve con el contrato efeonce.insights-stat-card (@efeoncepro/axis-ui-contracts); Greenhouse (PDF A4 y deck) y Think (informe live) dibujan desde esos assets. Lo que todavía no está en AXIS (la geometría de los gráficos y los estilos del resto de las figuras) es la próxima extracción: no la copies a mano a un tercer lugar. No agregues la marca a una superficie que figura como «falta» sin una decisión del operador. Nunca uses datos de un cliente real en una referencia pública."
}