{
  "version": "xarts.concept-structures/1",
  "family": "concept-structures",
  "provenance": {
    "legacyId": "concept-layers"
  },
  "measurement": {
    "exportText": "glyph-advances"
  },
  "typography": {
    "title": {
      "size": 22,
      "weight": 700,
      "lineHeight": 31
    },
    "hero": {
      "size": 49,
      "weight": 700,
      "lineHeight": 64
    },
    "body": {
      "size": 19,
      "weight": 500,
      "lineHeight": 28
    },
    "note": {
      "size": 16,
      "weight": 400,
      "lineHeight": 25
    },
    "stamp": {
      "size": 14,
      "weight": 700,
      "lineHeight": 22
    }
  },
  "paints": {
    "neutral": {
      "fill": "surface",
      "stroke": "border",
      "text": "textPrimary",
      "dash": ""
    },
    "focus": {
      "fill": "series.blue",
      "stroke": "series.blue",
      "text": "surface",
      "dash": ""
    },
    "warning": {
      "fill": "surface",
      "stroke": "negative",
      "text": "negative",
      "dash": ""
    },
    "absent": {
      "fill": "none",
      "stroke": "textMuted",
      "text": "textMuted",
      "dash": "6 4"
    },
    "favorable": {
      "fill": "surfaceAlt",
      "stroke": "series.teal",
      "text": "textPrimary",
      "dash": ""
    }
  },
  "layout": {
    "textOverflow": "wrap",
    "margin": {
      "top": 32,
      "right": 32,
      "bottom": 48,
      "left": 32
    },
    "grid": 8,
    "padding": {
      "x": 14,
      "y": 12
    },
    "radius": 4,
    "strokeWidth": 1.25,
    "minimumBoxWidth": 80,
    "roundHeight": "nearest",
    "capacity": "reject"
  },
  "annotations": {
    "verdictMaxLines": 8,
    "band": {
      "text": "ningún momento implica el siguiente",
      "role": "warning"
    },
    "verdict": "Dar por hecho que declarar implica evaluar es el error de armazón más caro.",
    "bandHeight": 64,
    "verdictHeight": 72,
    "bandStroke": 4,
    "ruleWidth": 1.25,
    "noteColor": "textMuted",
    "verdictColor": "accent",
    "letterSpacing": 0.06
  },
  "document": {
    "header": {
      "title": "Declarar no es evaluar, y evaluar no es materializar",
      "subtitle": "Los momentos del armazón: quien escribe la pieza, quien la comprueba y quien deja el resultado.",
      "source": "Armazón descrito en el capítulo 26. Esquema conceptual — el alto de cada capa no codifica ninguna cantidad."
    },
    "spacing": {
      "horizontalPadding": 24,
      "topPadding": 22,
      "bottomPadding": 16,
      "minimumTextGap": 4
    }
  },
  "presentation": {
    "theme": "anlak",
    "dimensions": {
      "width": 940,
      "height": 796
    },
    "locale": "es-ES",
    "fonts": "reference",
    "surface": "theme",
    "framePadding": 24
  },
  "output": {
    "filename": "concept-layers",
    "embedSpec": true,
    "geometryDecimals": 2
  },
  "operation": "dependency-layers",
  "data": {
    "items": [
      {
        "id": "item-0",
        "label": "DECLARAR",
        "body": "Registro de tipos: objetos, enlaces y acciones. No contiene datos de negocio.",
        "note": "no ejerce ninguna garantía por sí mismo",
        "role": "neutral"
      },
      {
        "id": "item-1",
        "label": "EVALUAR",
        "body": "Evaluador de invariantes, servicio de funciones y ejecutor de acciones. Comprueban sobre un caso; no escriben.",
        "note": "el ejecutor de acciones es el único escritor admitido",
        "role": "focus"
      },
      {
        "id": "item-2",
        "label": "MATERIALIZAR",
        "body": "Almacén de objetos, índice de procedencia y registro que solo crece. Aquí queda el resultado para que otro lo lea.",
        "note": "dos orígenes confluyen en un mismo índice",
        "role": "neutral"
      },
      {
        "id": "item-3",
        "label": "SUPERFICIES",
        "body": "Lee el registro para decidir la disposición y el catálogo para decidir los verbos. No escribe: invoca.",
        "note": "ninguna garantía puede depender de que una pantalla esconda un botón",
        "role": "absent"
      }
    ]
  },
  "relationship": {
    "kind": "dependency",
    "order": [
      "item-0",
      "item-1",
      "item-2",
      "item-3"
    ],
    "direction": "top-down",
    "label": "orden de dependencia"
  },
  "layers": {
    "gap": 8,
    "labelWidth": 200,
    "labelGap": 18,
    "noteFraction": 0.26,
    "noteGap": 24,
    "labelOffset": -10,
    "minimumRowHeight": 16,
    "bodyMaxLines": 20,
    "noteMaxLines": 20,
    "sideLabel": {
      "color": "textPrimary",
      "absentColor": "textMuted",
      "inkPadding": 12
    },
    "direction": {
      "color": "textSecondary",
      "width": 2,
      "headLength": 9,
      "headHeight": 8,
      "labelInset": 32,
      "arrowInset": 42,
      "reserve": 52
    },
    "noteConnector": {
      "color": "textMuted",
      "width": 1.25,
      "opacity": 0.6,
      "gap": 8
    },
    "bandGap": 16,
    "verdictGap": 6,
    "verdictGapWithoutBand": 16
  }
}
