{
  "schema": "axis.efeonce-cast-2d.v1",
  "title": "El elenco 2D de Efeonce",
  "status": "approved",
  "since": "2026-10-03",
  "inTokens": false,
  "decidedBy": "Operador (Julio Reyes): personajes, estilo y sello el 2026-10-03 («Me encantan, están aprobados todos. Canonízalos»); publicación en AXIS sin fondo el mismo día («publica los personajes 2D en axis… envíalos a axis, packages y lab»)",
  "canon": "greenhouse-eo · docs/operations/brand-characters/EFEONCE_2D_CAST_V1.md (hojas selladas en scripts/foto/assets.lock.json, catálogo ELENCO_2D)",
  "production": "greenhouse-eo · ai-generations/_identidad-elenco-2d/",
  "package": "@efeoncepro/axis-brand-assets 0.4.16 (AXIS_CAST_2D, AXIS_CAST_2D_ASSETS, AXIS_CAST_2D_USE, AXIS_CAST_2D_STYLE, AXIS_CAST_2D_RULES, findCast2dAsset, cast2dAssetUrl)",
  "page": "/references/cast-2d/",
  "guide": "docs/agent-composition/cast-2d.md",
  "use": {
    "fictional": true,
    "represents": "grupo de compra del cliente",
    "canPlayClient": "ficcion-declarada",
    "photographicCastCanPlayClient": false,
    "supervisesSparks": true
  },
  "what": [
    "Cuatro personajes ficticios dibujados en 2D que representan al grupo de compra del cliente: quien tiene el problema, quien pide evidencia, quien firma y quien produce.",
    "Conviven con los Sparks en piezas animadas y fijas, y siempre los supervisan: los Sparks nunca deciden solos.",
    "Nació con el video «Los Sparks de Efeonce × Efeonce AEO» (2026-10-03), cuando el operador pidió un elenco propio para reutilizarlo y para definir el estilo de personajes 2D de Efeonce.",
    "Los archivos son las hojas aprobadas, editadas sólo para quitar el fondo y separadas por pieza: el dibujo es el aprobado, no una versión nueva."
  ],
  "vsPhotographicCast": [
    {
      "aspect": "A quién representa",
      "photo": "Los roles de las líneas de servicio de Efeonce, uno por línea (personajes ficticios, nunca el equipo real)",
      "flat": "Al grupo de compra del cliente"
    },
    {
      "aspect": "Lenguaje",
      "photo": "Fotografía con piel real",
      "flat": "2D vectorial con volumen, el mismo trazo que los Sparks"
    },
    {
      "aspect": "¿Puede hacer de «cliente»?",
      "photo": "No",
      "flat": "Sí, en ficción declarada: empresa ficticia, sin testimonio"
    },
    {
      "aspect": "Cómo se pide",
      "photo": "Como identidad en foto:prompt",
      "flat": "Desde este paquete, o como referencia ilustracion-2d en la producción 2D; nunca en foto:prompt"
    }
  ],
  "members": [
    {
      "key": "tomas",
      "name": "Tomás Ríos",
      "age": 34,
      "nationality": "chileno",
      "city": "Valparaíso",
      "role": "Gerente de marketing B2B",
      "buyingRole": "problema",
      "inBuyingGroup": "Tiene el problema.",
      "character": "Metódico, humor seco, pregunta lo que nadie pregunta.",
      "silhouette": "Rectángulo: alto, hombros rectos.",
      "traits": "Lentes redondos gruesos, remolino, barba corta.",
      "wardrobe": "Suéter mostaza sobre camisa gris azulada, pantalón gris azulado.",
      "blueObject": "cuaderno",
      "gesture": "Se ajusta los lentes antes de preguntar."
    },
    {
      "key": "camila",
      "name": "Camila Quispe",
      "age": 29,
      "nationality": "peruana",
      "city": "Arequipa",
      "role": "Analista de datos y crecimiento",
      "buyingRole": "evidencia",
      "inBuyingGroup": "Pide evidencia.",
      "character": "Curiosa, rápida, desconfía de lo que no se mide.",
      "silhouette": "Círculo: compacta.",
      "traits": "Flequillo recto, moño alto, aros pequeños.",
      "wardrobe": "Chaqueta verde salvia sobre polera blanca, pantalón oscuro, zapatillas blancas.",
      "blueObject": "lápiz",
      "gesture": "Gira el lápiz entre los dedos."
    },
    {
      "key": "renata",
      "name": "Renata Salgado",
      "age": 43,
      "nationality": "mexicana",
      "city": "Monterrey",
      "role": "Directora comercial",
      "buyingRole": "firma",
      "inBuyingGroup": "Firma y decide.",
      "character": "Directa, cálida, decide bien.",
      "silhouette": "Triángulo: base ancha.",
      "traits": "Mechón canoso, aros dorados.",
      "wardrobe": "Blazer burdeos, top y pantalón negros, tacón bajo.",
      "blueObject": "reloj",
      "gesture": "Cruza los brazos y asiente una vez."
    },
    {
      "key": "mateo",
      "name": "Mateo Arango",
      "age": 26,
      "nationality": "colombiano",
      "city": "Medellín",
      "role": "Creador de contenido",
      "buyingRole": "produce",
      "inBuyingGroup": "Produce.",
      "character": "Entusiasta, gesticula, piensa en voz alta.",
      "silhouette": "Línea: larguirucho, se inclina.",
      "traits": "Rizos, gorro tejido.",
      "wardrobe": "Sobrecamisa terracota, polera gris, jeans arremangados, zapatillas blancas.",
      "blueObject": "audífonos",
      "gesture": "El teléfono siempre en la mano."
    }
  ],
  "style": {
    "name": "vector con volumen",
    "direction": "A",
    "invariants": [
      "Formas vectoriales limpias con contorno navy grueso, el mismo peso de línea que los Sparks 2D.",
      "Rellenos planos con un solo paso de volumen y sombras duras (cel).",
      "Proporciones y nivel de detalle de las hojas aprobadas: los cuatro se leen dibujados por la misma mano."
    ],
    "seal": {
      "lightLine": "Línea fina de luz azul en el contorno, del lado de donde viene la luz (los Sparks, cuando están en cuadro). Traduce «línea fina y luz, nunca un disco» de la línea gráfica.",
      "blueObject": "Un objeto de trabajo azul por personaje (cuaderno, lápiz, reloj, audífonos): el azul portador, nunca un muro pintado.",
      "token": "efeonceGraphicLine.lines.engine.accentOnDark"
    },
    "notTheSeal": "Órbitas o esferas sobre los personajes (la línea gráfica las reserva para lente, medida y foco), ropa de marca (el elenco representa al cliente) ni halos como brillo.",
    "light": {
      "token": "efeonceGraphicLine.lines.engine.accentOnDark",
      "line": "engine",
      "accentOnDark": "#0375db"
    }
  },
  "views": [
    "frente",
    "tres-cuartos",
    "perfil",
    "espalda"
  ],
  "expressions": [
    "neutral",
    "curiosidad",
    "sorpresa",
    "concentracion",
    "aprobacion",
    "satisfaccion"
  ],
  "defaultView": "frente",
  "assets": [
    {
      "id": "cast-2d-tomas-vista-frente",
      "member": "tomas",
      "kind": "vista",
      "pose": "frente",
      "label": "Frente",
      "png": "cast-2d/cast-2d-tomas-vista-frente.png",
      "width": 327,
      "height": 915,
      "sha256": "4e039a256e54e68c769c1a713c2f4b9d788b7a02588bfd6b23d2166578aa0743",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-tomas-vista-frente.png"
      },
      "url": "/branding/cast-2d/cast-2d-tomas-vista-frente.png"
    },
    {
      "id": "cast-2d-tomas-vista-tres-cuartos",
      "member": "tomas",
      "kind": "vista",
      "pose": "tres-cuartos",
      "label": "Tres cuartos",
      "png": "cast-2d/cast-2d-tomas-vista-tres-cuartos.png",
      "width": 309,
      "height": 917,
      "sha256": "5b4bd7a9543140dfdeb97873d9ee7b94b0802ba5b07e4ef48414ea863dc622e1",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-tomas-vista-tres-cuartos.png"
      },
      "url": "/branding/cast-2d/cast-2d-tomas-vista-tres-cuartos.png"
    },
    {
      "id": "cast-2d-tomas-vista-perfil",
      "member": "tomas",
      "kind": "vista",
      "pose": "perfil",
      "label": "Perfil",
      "png": "cast-2d/cast-2d-tomas-vista-perfil.png",
      "width": 197,
      "height": 911,
      "sha256": "262ab0a93135e6f9ba5e3bde5d90f68850777d8ccd6664df5c31b892be837f00",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-tomas-vista-perfil.png"
      },
      "url": "/branding/cast-2d/cast-2d-tomas-vista-perfil.png"
    },
    {
      "id": "cast-2d-tomas-vista-espalda",
      "member": "tomas",
      "kind": "vista",
      "pose": "espalda",
      "label": "Espalda",
      "png": "cast-2d/cast-2d-tomas-vista-espalda.png",
      "width": 328,
      "height": 916,
      "sha256": "180f1dce4470a5292e120b3d55f0a330f94974fa7ce383ba0b83ed0341f85ffb",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-tomas-vista-espalda.png"
      },
      "url": "/branding/cast-2d/cast-2d-tomas-vista-espalda.png"
    },
    {
      "id": "cast-2d-tomas-expresion-neutral",
      "member": "tomas",
      "kind": "expresion",
      "pose": "neutral",
      "label": "Neutral",
      "png": "cast-2d/cast-2d-tomas-expresion-neutral.png",
      "width": 435,
      "height": 472,
      "sha256": "d2b7848809409d08db55286e893d3a4ffc891f1fc08338dea18fd96de77acb5f",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-tomas-expresion-neutral.png"
      },
      "url": "/branding/cast-2d/cast-2d-tomas-expresion-neutral.png"
    },
    {
      "id": "cast-2d-tomas-expresion-curiosidad",
      "member": "tomas",
      "kind": "expresion",
      "pose": "curiosidad",
      "label": "Curiosa",
      "png": "cast-2d/cast-2d-tomas-expresion-curiosidad.png",
      "width": 429,
      "height": 481,
      "sha256": "fa3eb89e2a7c467d9e7931312a60454addb1606904a31370059ad5fc57c5fb15",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-tomas-expresion-curiosidad.png"
      },
      "url": "/branding/cast-2d/cast-2d-tomas-expresion-curiosidad.png"
    },
    {
      "id": "cast-2d-tomas-expresion-sorpresa",
      "member": "tomas",
      "kind": "expresion",
      "pose": "sorpresa",
      "label": "Sorprendida",
      "png": "cast-2d/cast-2d-tomas-expresion-sorpresa.png",
      "width": 434,
      "height": 477,
      "sha256": "3d8e34e16db75a421afb1d4d77dbec36dd71cebdf90be2f6ddd5b2f5bdd9e5a2",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-tomas-expresion-sorpresa.png"
      },
      "url": "/branding/cast-2d/cast-2d-tomas-expresion-sorpresa.png"
    },
    {
      "id": "cast-2d-tomas-expresion-concentracion",
      "member": "tomas",
      "kind": "expresion",
      "pose": "concentracion",
      "label": "Pensando",
      "png": "cast-2d/cast-2d-tomas-expresion-concentracion.png",
      "width": 420,
      "height": 467,
      "sha256": "d3f02d63177cdb466c5379e3b977c35b4a8bb999e9484e753014fec615cc0ef4",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-tomas-expresion-concentracion.png"
      },
      "url": "/branding/cast-2d/cast-2d-tomas-expresion-concentracion.png"
    },
    {
      "id": "cast-2d-tomas-expresion-aprobacion",
      "member": "tomas",
      "kind": "expresion",
      "pose": "aprobacion",
      "label": "Aprobando",
      "png": "cast-2d/cast-2d-tomas-expresion-aprobacion.png",
      "width": 490,
      "height": 477,
      "sha256": "2ea4709c1cc675b165429ff80f200b500645f8d99589263553cb612e0d41f946",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-tomas-expresion-aprobacion.png"
      },
      "url": "/branding/cast-2d/cast-2d-tomas-expresion-aprobacion.png"
    },
    {
      "id": "cast-2d-tomas-expresion-satisfaccion",
      "member": "tomas",
      "kind": "expresion",
      "pose": "satisfaccion",
      "label": "Sonrisa contenida",
      "png": "cast-2d/cast-2d-tomas-expresion-satisfaccion.png",
      "width": 419,
      "height": 473,
      "sha256": "21ad45bbdb5490c0b5aef3f2f7b69de0fdc03c5badf7992adebe16a4e48f6d1e",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-tomas-expresion-satisfaccion.png"
      },
      "url": "/branding/cast-2d/cast-2d-tomas-expresion-satisfaccion.png"
    },
    {
      "id": "cast-2d-camila-vista-frente",
      "member": "camila",
      "kind": "vista",
      "pose": "frente",
      "label": "Frente",
      "png": "cast-2d/cast-2d-camila-vista-frente.png",
      "width": 336,
      "height": 873,
      "sha256": "30e7187df6aebf7c988e9b02c0ba2df2c11115c3b0b64303fdc08293d738e7bf",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-camila-vista-frente.png"
      },
      "url": "/branding/cast-2d/cast-2d-camila-vista-frente.png"
    },
    {
      "id": "cast-2d-camila-vista-tres-cuartos",
      "member": "camila",
      "kind": "vista",
      "pose": "tres-cuartos",
      "label": "Tres cuartos",
      "png": "cast-2d/cast-2d-camila-vista-tres-cuartos.png",
      "width": 304,
      "height": 874,
      "sha256": "27b85b64bfdf0df1498275b417fdf5d1d6e4bc8c16d4c989945c63ea9d691dbf",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-camila-vista-tres-cuartos.png"
      },
      "url": "/branding/cast-2d/cast-2d-camila-vista-tres-cuartos.png"
    },
    {
      "id": "cast-2d-camila-vista-perfil",
      "member": "camila",
      "kind": "vista",
      "pose": "perfil",
      "label": "Perfil",
      "png": "cast-2d/cast-2d-camila-vista-perfil.png",
      "width": 247,
      "height": 865,
      "sha256": "1b5654e5db2ec880befaddd5471f6d27a39c70fe6cd3202ecd0e582807b0467b",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-camila-vista-perfil.png"
      },
      "url": "/branding/cast-2d/cast-2d-camila-vista-perfil.png"
    },
    {
      "id": "cast-2d-camila-vista-espalda",
      "member": "camila",
      "kind": "vista",
      "pose": "espalda",
      "label": "Espalda",
      "png": "cast-2d/cast-2d-camila-vista-espalda.png",
      "width": 308,
      "height": 868,
      "sha256": "b34dbafda5298f3a3998509805c247bb04166929273d88ecb6a5199d5ed7345b",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-camila-vista-espalda.png"
      },
      "url": "/branding/cast-2d/cast-2d-camila-vista-espalda.png"
    },
    {
      "id": "cast-2d-camila-expresion-neutral",
      "member": "camila",
      "kind": "expresion",
      "pose": "neutral",
      "label": "Neutral",
      "png": "cast-2d/cast-2d-camila-expresion-neutral.png",
      "width": 386,
      "height": 477,
      "sha256": "b90f4a39fdd0a78bd311d7ad521dd481a7b2ad59038e26221785b2961b032b06",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-camila-expresion-neutral.png"
      },
      "url": "/branding/cast-2d/cast-2d-camila-expresion-neutral.png"
    },
    {
      "id": "cast-2d-camila-expresion-curiosidad",
      "member": "camila",
      "kind": "expresion",
      "pose": "curiosidad",
      "label": "Curiosa",
      "png": "cast-2d/cast-2d-camila-expresion-curiosidad.png",
      "width": 375,
      "height": 468,
      "sha256": "08382cedba7ae4cdf0bcb5ed01119221cc3767e310001939c100eb19588d4d99",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-camila-expresion-curiosidad.png"
      },
      "url": "/branding/cast-2d/cast-2d-camila-expresion-curiosidad.png"
    },
    {
      "id": "cast-2d-camila-expresion-sorpresa",
      "member": "camila",
      "kind": "expresion",
      "pose": "sorpresa",
      "label": "Sorprendida",
      "png": "cast-2d/cast-2d-camila-expresion-sorpresa.png",
      "width": 379,
      "height": 476,
      "sha256": "54a8561dde5e42856a117328197b549d2cebf75e3016c049900957ce31317732",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-camila-expresion-sorpresa.png"
      },
      "url": "/branding/cast-2d/cast-2d-camila-expresion-sorpresa.png"
    },
    {
      "id": "cast-2d-camila-expresion-concentracion",
      "member": "camila",
      "kind": "expresion",
      "pose": "concentracion",
      "label": "Pensando",
      "png": "cast-2d/cast-2d-camila-expresion-concentracion.png",
      "width": 361,
      "height": 476,
      "sha256": "4f4dc465cf45e92913af5a9dd5386aaeb59067f3297d849c574c2b5af7c345ce",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-camila-expresion-concentracion.png"
      },
      "url": "/branding/cast-2d/cast-2d-camila-expresion-concentracion.png"
    },
    {
      "id": "cast-2d-camila-expresion-aprobacion",
      "member": "camila",
      "kind": "expresion",
      "pose": "aprobacion",
      "label": "Aprobando",
      "png": "cast-2d/cast-2d-camila-expresion-aprobacion.png",
      "width": 474,
      "height": 477,
      "sha256": "5a797b20ea5be93b6b817bd5e958b1c0f830c8890060320edbe1ab8de73d2ce2",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-camila-expresion-aprobacion.png"
      },
      "url": "/branding/cast-2d/cast-2d-camila-expresion-aprobacion.png"
    },
    {
      "id": "cast-2d-camila-expresion-satisfaccion",
      "member": "camila",
      "kind": "expresion",
      "pose": "satisfaccion",
      "label": "Sonrisa contenida",
      "png": "cast-2d/cast-2d-camila-expresion-satisfaccion.png",
      "width": 377,
      "height": 476,
      "sha256": "676ee4f872b21d9cc9aef5f9e4091d02b031848517c208ff6e0d9ac50c9c1432",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-camila-expresion-satisfaccion.png"
      },
      "url": "/branding/cast-2d/cast-2d-camila-expresion-satisfaccion.png"
    },
    {
      "id": "cast-2d-renata-vista-frente",
      "member": "renata",
      "kind": "vista",
      "pose": "frente",
      "label": "Frente",
      "png": "cast-2d/cast-2d-renata-vista-frente.png",
      "width": 335,
      "height": 893,
      "sha256": "2f36a094cd2d987eafadce2ff7cbec65d73f47cb7006523e0ea203ba291419f4",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-renata-vista-frente.png"
      },
      "url": "/branding/cast-2d/cast-2d-renata-vista-frente.png"
    },
    {
      "id": "cast-2d-renata-vista-tres-cuartos",
      "member": "renata",
      "kind": "vista",
      "pose": "tres-cuartos",
      "label": "Tres cuartos",
      "png": "cast-2d/cast-2d-renata-vista-tres-cuartos.png",
      "width": 306,
      "height": 894,
      "sha256": "9b696bb354c27eb1abde91d63ffbee360640b2fed85894cc61f6213fadfed2a3",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-renata-vista-tres-cuartos.png"
      },
      "url": "/branding/cast-2d/cast-2d-renata-vista-tres-cuartos.png"
    },
    {
      "id": "cast-2d-renata-vista-perfil",
      "member": "renata",
      "kind": "vista",
      "pose": "perfil",
      "label": "Perfil",
      "png": "cast-2d/cast-2d-renata-vista-perfil.png",
      "width": 234,
      "height": 884,
      "sha256": "91eaa9eb264969f0627141a856afd604126f255d20ae12aef65bc3e7f31cdcac",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-renata-vista-perfil.png"
      },
      "url": "/branding/cast-2d/cast-2d-renata-vista-perfil.png"
    },
    {
      "id": "cast-2d-renata-vista-espalda",
      "member": "renata",
      "kind": "vista",
      "pose": "espalda",
      "label": "Espalda",
      "png": "cast-2d/cast-2d-renata-vista-espalda.png",
      "width": 326,
      "height": 889,
      "sha256": "fc935b7c87616df5c61500d574d01410e689f00aada735f17968a3025c663781",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-renata-vista-espalda.png"
      },
      "url": "/branding/cast-2d/cast-2d-renata-vista-espalda.png"
    },
    {
      "id": "cast-2d-renata-expresion-neutral",
      "member": "renata",
      "kind": "expresion",
      "pose": "neutral",
      "label": "Neutral",
      "png": "cast-2d/cast-2d-renata-expresion-neutral.png",
      "width": 420,
      "height": 452,
      "sha256": "6ac7732d675f1de6daec967e7a10f2371d3ebb131fb7ed2130ff3468ba397fe6",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-renata-expresion-neutral.png"
      },
      "url": "/branding/cast-2d/cast-2d-renata-expresion-neutral.png"
    },
    {
      "id": "cast-2d-renata-expresion-curiosidad",
      "member": "renata",
      "kind": "expresion",
      "pose": "curiosidad",
      "label": "Curiosa",
      "png": "cast-2d/cast-2d-renata-expresion-curiosidad.png",
      "width": 421,
      "height": 451,
      "sha256": "d6588d1595bb3689051397d5757fd82e5b9ea4d55533ac4a163a52604d76ccec",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-renata-expresion-curiosidad.png"
      },
      "url": "/branding/cast-2d/cast-2d-renata-expresion-curiosidad.png"
    },
    {
      "id": "cast-2d-renata-expresion-sorpresa",
      "member": "renata",
      "kind": "expresion",
      "pose": "sorpresa",
      "label": "Sorprendida",
      "png": "cast-2d/cast-2d-renata-expresion-sorpresa.png",
      "width": 423,
      "height": 452,
      "sha256": "7c4f92cb74839d292d08eda49a10af929b9e3d9850135b09bf340b1c9f0c423d",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-renata-expresion-sorpresa.png"
      },
      "url": "/branding/cast-2d/cast-2d-renata-expresion-sorpresa.png"
    },
    {
      "id": "cast-2d-renata-expresion-concentracion",
      "member": "renata",
      "kind": "expresion",
      "pose": "concentracion",
      "label": "Pensando",
      "png": "cast-2d/cast-2d-renata-expresion-concentracion.png",
      "width": 417,
      "height": 462,
      "sha256": "9734b5aec073c40546b6529718d352e5cb247fedf7f84b1d88e22b13e0308976",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-renata-expresion-concentracion.png"
      },
      "url": "/branding/cast-2d/cast-2d-renata-expresion-concentracion.png"
    },
    {
      "id": "cast-2d-renata-expresion-aprobacion",
      "member": "renata",
      "kind": "expresion",
      "pose": "aprobacion",
      "label": "Aprobando",
      "png": "cast-2d/cast-2d-renata-expresion-aprobacion.png",
      "width": 484,
      "height": 463,
      "sha256": "5aadfb86cca721af3dddadc7aa6dd00469cce3a2d99bf863f607efa52be139ed",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-renata-expresion-aprobacion.png"
      },
      "url": "/branding/cast-2d/cast-2d-renata-expresion-aprobacion.png"
    },
    {
      "id": "cast-2d-renata-expresion-satisfaccion",
      "member": "renata",
      "kind": "expresion",
      "pose": "satisfaccion",
      "label": "Sonrisa contenida",
      "png": "cast-2d/cast-2d-renata-expresion-satisfaccion.png",
      "width": 427,
      "height": 464,
      "sha256": "741588ba9c95d8246ca72d8305c8e54f141e00835990b7ee1056ee32be1d2246",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-renata-expresion-satisfaccion.png"
      },
      "url": "/branding/cast-2d/cast-2d-renata-expresion-satisfaccion.png"
    },
    {
      "id": "cast-2d-mateo-vista-frente",
      "member": "mateo",
      "kind": "vista",
      "pose": "frente",
      "label": "Frente",
      "png": "cast-2d/cast-2d-mateo-vista-frente.png",
      "width": 309,
      "height": 915,
      "sha256": "aa153a8ba07fa30002e7de1c8e15062c2ac7f95ac8c223041e85095b9497ecd7",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-mateo-vista-frente.png"
      },
      "url": "/branding/cast-2d/cast-2d-mateo-vista-frente.png"
    },
    {
      "id": "cast-2d-mateo-vista-tres-cuartos",
      "member": "mateo",
      "kind": "vista",
      "pose": "tres-cuartos",
      "label": "Tres cuartos",
      "png": "cast-2d/cast-2d-mateo-vista-tres-cuartos.png",
      "width": 304,
      "height": 915,
      "sha256": "f18e663d10545395edde4b190d391de56ec068a3a0ae75fc60085cec6e6cbb5b",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-mateo-vista-tres-cuartos.png"
      },
      "url": "/branding/cast-2d/cast-2d-mateo-vista-tres-cuartos.png"
    },
    {
      "id": "cast-2d-mateo-vista-perfil",
      "member": "mateo",
      "kind": "vista",
      "pose": "perfil",
      "label": "Perfil",
      "png": "cast-2d/cast-2d-mateo-vista-perfil.png",
      "width": 204,
      "height": 908,
      "sha256": "46fa63b8477256220917c1c95e2defbaa26f7c505ac8dbcb8584f5bb4f196869",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-mateo-vista-perfil.png"
      },
      "url": "/branding/cast-2d/cast-2d-mateo-vista-perfil.png"
    },
    {
      "id": "cast-2d-mateo-vista-espalda",
      "member": "mateo",
      "kind": "vista",
      "pose": "espalda",
      "label": "Espalda",
      "png": "cast-2d/cast-2d-mateo-vista-espalda.png",
      "width": 320,
      "height": 910,
      "sha256": "2527fa1aefd0d6985eb05da5b9db10e3517c254332f20cc5d0ab14b44d716526",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-mateo-vista-espalda.png"
      },
      "url": "/branding/cast-2d/cast-2d-mateo-vista-espalda.png"
    },
    {
      "id": "cast-2d-mateo-expresion-neutral",
      "member": "mateo",
      "kind": "expresion",
      "pose": "neutral",
      "label": "Neutral",
      "png": "cast-2d/cast-2d-mateo-expresion-neutral.png",
      "width": 410,
      "height": 441,
      "sha256": "2fd7c9bf88d9bb83f77502d6f6c7f998fdedfa5423bd0b858851f12991579747",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-mateo-expresion-neutral.png"
      },
      "url": "/branding/cast-2d/cast-2d-mateo-expresion-neutral.png"
    },
    {
      "id": "cast-2d-mateo-expresion-curiosidad",
      "member": "mateo",
      "kind": "expresion",
      "pose": "curiosidad",
      "label": "Curiosa",
      "png": "cast-2d/cast-2d-mateo-expresion-curiosidad.png",
      "width": 414,
      "height": 447,
      "sha256": "73092f97cdc4480977a531c9b505591f6d5042a8e39f1a7bb346005f22e847a0",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-mateo-expresion-curiosidad.png"
      },
      "url": "/branding/cast-2d/cast-2d-mateo-expresion-curiosidad.png"
    },
    {
      "id": "cast-2d-mateo-expresion-sorpresa",
      "member": "mateo",
      "kind": "expresion",
      "pose": "sorpresa",
      "label": "Sorprendida",
      "png": "cast-2d/cast-2d-mateo-expresion-sorpresa.png",
      "width": 411,
      "height": 442,
      "sha256": "c77ac8929dbf5e7c2495a1a526618a6b463f41fecde98a30946b663b3bb8218d",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-mateo-expresion-sorpresa.png"
      },
      "url": "/branding/cast-2d/cast-2d-mateo-expresion-sorpresa.png"
    },
    {
      "id": "cast-2d-mateo-expresion-concentracion",
      "member": "mateo",
      "kind": "expresion",
      "pose": "concentracion",
      "label": "Pensando",
      "png": "cast-2d/cast-2d-mateo-expresion-concentracion.png",
      "width": 408,
      "height": 456,
      "sha256": "d762c917111a8f974877498bb2c1da56ded2dc00b92e74abcd4fcff43e48ddf5",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-mateo-expresion-concentracion.png"
      },
      "url": "/branding/cast-2d/cast-2d-mateo-expresion-concentracion.png"
    },
    {
      "id": "cast-2d-mateo-expresion-aprobacion",
      "member": "mateo",
      "kind": "expresion",
      "pose": "aprobacion",
      "label": "Aprobando",
      "png": "cast-2d/cast-2d-mateo-expresion-aprobacion.png",
      "width": 516,
      "height": 459,
      "sha256": "1830393e888d55c9a565190262411ad4a74075822a9f85dbea26ddcfad3a5787",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-mateo-expresion-aprobacion.png"
      },
      "url": "/branding/cast-2d/cast-2d-mateo-expresion-aprobacion.png"
    },
    {
      "id": "cast-2d-mateo-expresion-satisfaccion",
      "member": "mateo",
      "kind": "expresion",
      "pose": "satisfaccion",
      "label": "Sonrisa contenida",
      "png": "cast-2d/cast-2d-mateo-expresion-satisfaccion.png",
      "width": 407,
      "height": 453,
      "sha256": "a9583fde452b44bc042dd2ba25f9cbfdb02b1fd8be8125bc58f9a00c71a8d757",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-mateo-expresion-satisfaccion.png"
      },
      "url": "/branding/cast-2d/cast-2d-mateo-expresion-satisfaccion.png"
    },
    {
      "id": "cast-2d-grupo",
      "member": "grupo",
      "kind": "grupo",
      "pose": null,
      "label": "Los cuatro, sin Spark",
      "png": "cast-2d/cast-2d-grupo.png",
      "width": 1334,
      "height": 913,
      "sha256": "322d1fe9bbc17f1928dceec090a2239c4fbf8c56860069fe4ffe263a73d0f1cf",
      "package": {
        "name": "@efeoncepro/axis-brand-assets",
        "file": "cast-2d/cast-2d-grupo.png"
      },
      "url": "/branding/cast-2d/cast-2d-grupo.png"
    }
  ],
  "rules": [
    {
      "id": "fictional",
      "rule": "Son ficticios: nunca se presentan como cliente real, equipo de Efeonce ni testimonio firmado."
    },
    {
      "id": "client-in-declared-fiction",
      "rule": "Pueden hacer de cliente sólo en ficción declarada, como personas de una empresa ficticia (Andina Cargo en el video de AEO). Su nombre en pantalla, sólo dentro de esa ficción. El elenco fotográfico representa al equipo de Efeonce y nunca hace de cliente."
    },
    {
      "id": "supervise-sparks",
      "rule": "Con los Sparks en cuadro, un personaje del elenco los supervisa: los Sparks no deciden solos."
    },
    {
      "id": "sparks-from-svg",
      "rule": "Los Sparks que aparezcan con ellos salen del SVG oficial (AXIS_SPARK_2D_ASSETS) o del rig, nunca del dibujo de un modelo. Por eso la foto de grupo de este paquete viaja sin Spark."
    },
    {
      "id": "never-mirror-or-redraw",
      "rule": "Nunca se espejan, se redibujan ni se regeneran de cero: el lado de la línea de luz y del objeto azul es parte del dibujo. Una variante se edita desde la hoja aprobada; generar de cero reinventa al personaje."
    },
    {
      "id": "no-orbits",
      "rule": "Sin órbitas ni esferas sobre los personajes, sin ropa de marca, sin logo de Efeonce ni marcas reales en la ropa, sin halos como brillo."
    },
    {
      "id": "keep-identity",
      "rule": "Cada personaje conserva rol, carácter, vestuario y objeto azul entre piezas."
    },
    {
      "id": "no-photo-mix",
      "rule": "No se mezclan con fotografía en el mismo cuadro sin un pase de integración."
    },
    {
      "id": "native-resolution",
      "rule": "Se usan a su resolución nativa (vistas ~900 px de alto, bustos ~450 px) o menor; no se escalan para ganar detalle. Una pieza mayor parte de la hoja aprobada en el canon de Greenhouse."
    }
  ],
  "limits": [
    "Resolución nativa: las vistas de cuerpo entero miden ~900 px de alto y los bustos ~450 px. No hay masters mayores en AXIS; no se escalan para ganar detalle.",
    "Una pieza más grande parte de la hoja aprobada en el canon de Greenhouse (ai-generations/_identidad-elenco-2d/), editándola, nunca regenerando de cero.",
    "El quitafondos recorta mal el pantalón navy de Tomás contra un fondo navy: para composiciones sobre oscuro, preferir recortes de cintura arriba o revisar el borde al 100 %.",
    "Las siluetas se distinguen menos de lo previsto en el canon: se reconocen por color, pelo y objeto azul."
  ],
  "boundary": [
    "Las reglas del elenco son de criterio (quién es, qué papel puede hacer, cómo se compone con los Sparks): no son valores para componer, así que no van a @efeoncepro/axis-tokens ni a un contrato de @efeoncepro/axis-ui-contracts.",
    "El azul del sello no se copia: es el acento de Engine (efeonceGraphicLine.lines.engine.accentOnDark).",
    "Los archivos sí se versionan: los recortes sin fondo en @efeoncepro/axis-brand-assets, sellados por SHA-256."
  ],
  "snippet": "import { AXIS_CAST_2D_USE, findCast2dAsset, cast2dAssetUrl } from '@efeoncepro/axis-brand-assets'\n\n// Ficticios, el grupo de compra del cliente; cliente sólo en ficción declarada\nAXIS_CAST_2D_USE\n\n// Tomás de frente (vista por defecto): PNG sin fondo, resolución nativa\nconst tomas = findCast2dAsset('tomas')\nconst file = cast2dAssetUrl(tomas.id)\n\n// Camila pensando (busto) y Renata de espaldas\nfindCast2dAsset('camila', { expression: 'concentracion' })\nfindCast2dAsset('renata', { view: 'espalda' })\n\n// Los cuatro juntos, sin Spark: el Spark se compone desde el SVG oficial\nfindCast2dAsset('grupo')",
  "media": {
    "base": "/branding/cast-2d/"
  },
  "pending": [
    {
      "topic": "Reconocimiento y silueta",
      "detail": "Prueba de reconocimiento y de silueta a 390 px (pendiente en el canon)."
    },
    {
      "topic": "Derechos de uso",
      "detail": "Revisión de derechos de uso de imágenes generadas antes de usarlas en pauta."
    },
    {
      "topic": "Resolución",
      "detail": "Sin masters mayores que la hoja aprobada: si una pieza los necesita, se producen en Greenhouse y se suman aquí como versión nueva."
    }
  ],
  "agentPrompt": "Vas a usar el elenco 2D de Efeonce (Tomás, Camila, Renata, Mateo).\n1. Lee /references/cast-2d.json: perfiles, vistas, expresiones, reglas y el sha256 de cada archivo.\n2. Confirma el papel: son ficticios y representan al grupo de compra del cliente. Pueden hacer de cliente sólo en ficción declarada (empresa ficticia, sin testimonio). Nunca como equipo de Efeonce ni cliente real.\n3. Toma el archivo del paquete @efeoncepro/axis-brand-assets (findCast2dAsset, cast2dAssetUrl) y comprueba su sha256. Nunca redibujes, espejes ni regeneres a un personaje.\n4. Si hay Sparks en cuadro, salen del SVG oficial (AXIS_SPARK_2D_ASSETS) o del rig, y un personaje del elenco los supervisa.\n5. Sin órbitas ni esferas sobre los personajes, sin ropa de marca, sin logo de Efeonce en la ropa.\n6. Úsalos a su resolución nativa o menor. Para algo mayor, parte de la hoja aprobada en el canon de Greenhouse."
}