{
  "version": "xarts.concept-structures/1",
  "family": "concept-structures",
  "provenance": {
    "legacyId": "concept-drivertree"
  },
  "measurement": {
    "exportText": "glyph-advances"
  },
  "typography": {
    "title": {
      "size": 22,
      "weight": 700,
      "lineHeight": 31
    },
    "hero": {
      "size": 49,
      "weight": 700,
      "lineHeight": 59
    },
    "body": {
      "size": 19,
      "weight": 700,
      "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": 40,
      "right": 40,
      "bottom": 56,
      "left": 40
    },
    "grid": 8,
    "padding": {
      "x": 14,
      "y": 12
    },
    "radius": 4,
    "strokeWidth": 1.25,
    "minimumBoxWidth": 40,
    "roundHeight": "nearest",
    "capacity": "reject"
  },
  "annotations": {
    "verdictMaxLines": 8,
    "band": {
      "text": "ninguna contribución está medida — todas son cualitativas",
      "role": "absent"
    },
    "verdict": "El motivo de cancelación no se registra: no hay nada que repartir.",
    "bandHeight": 64,
    "verdictHeight": 240,
    "bandStroke": 4,
    "ruleWidth": 1.25,
    "noteColor": "textMuted",
    "verdictColor": "accent",
    "letterSpacing": 0.06
  },
  "document": {
    "header": {
      "title": "De las cuatro cosas que mueven el margen, la casa solo acciona dos",
      "subtitle": "Árbol de palancas: cada rama lleva escrito lo que aporta a la métrica de su padre. Las contribuciones van en cualitativo porque este esquema no declara ninguna medida.",
      "source": "Esquema conceptual — sin cifras, sin coste medido. El contorno discontinuo marca la palanca no accionable y la que nadie registra."
    },
    "spacing": {
      "horizontalPadding": 24,
      "topPadding": 22,
      "bottomPadding": 16,
      "minimumTextGap": 4
    }
  },
  "presentation": {
    "theme": "anlak",
    "dimensions": {
      "width": 940,
      "height": 780
    },
    "locale": "es-ES",
    "fonts": "reference",
    "surface": "theme",
    "framePadding": 24
  },
  "output": {
    "filename": "concept-drivertree",
    "embedSpec": true,
    "geometryDecimals": 2
  },
  "operation": "branch-tree",
  "data": {
    "items": [
      {
        "id": "raiz",
        "parentId": null,
        "label": "Margen por reserva",
        "detail": "",
        "metric": "€ por reserva",
        "branch": "",
        "role": "focus"
      },
      {
        "id": "precio",
        "parentId": "raiz",
        "label": "Precio de venta",
        "detail": "",
        "metric": "tarifa media",
        "branch": "efecto más directo",
        "role": "neutral"
      },
      {
        "id": "coste",
        "parentId": "raiz",
        "label": "Coste de compra",
        "detail": "",
        "metric": "tarifa neta",
        "branch": "efecto simétrico",
        "role": "neutral"
      },
      {
        "id": "cancel",
        "parentId": "raiz",
        "label": "Cancelaciones",
        "detail": "",
        "metric": "no consumidas",
        "branch": "se come lo reconocido",
        "role": "warning"
      },
      {
        "id": "mix",
        "parentId": "precio",
        "label": "Mezcla de canal",
        "detail": "otra tarifa",
        "metric": "",
        "branch": "accionable en semanas",
        "role": "favorable"
      },
      {
        "id": "temporada",
        "parentId": "precio",
        "label": "Temporada del destino",
        "detail": "no se mueve",
        "metric": "",
        "branch": "no accionable",
        "role": "absent"
      },
      {
        "id": "contrato",
        "parentId": "coste",
        "label": "Condiciones de compra",
        "detail": "solo en campaña",
        "metric": "",
        "branch": "accionable una vez al año",
        "role": "neutral"
      },
      {
        "id": "motivo",
        "parentId": "cancel",
        "label": "Motivo de cancelar",
        "detail": "no se registra",
        "metric": "",
        "branch": "sin dato",
        "role": "absent"
      }
    ]
  },
  "relationship": {
    "kind": "contribution",
    "order": [
      "raiz",
      "precio",
      "coste",
      "cancel",
      "mix",
      "temporada",
      "contrato",
      "motivo"
    ],
    "roots": "single",
    "maxDepth": 2
  },
  "tree": {
    "laneWidth": 168,
    "minimumLane": 100,
    "minimumColumn": 100,
    "minimumLeafSlot": 76,
    "rowGap": 16,
    "bracketInset": 16,
    "equalHeight": "depth",
    "minimumNodeHeight": 40,
    "titleMaxLines": 3,
    "detailMaxLines": 2,
    "detailGap": 8,
    "detailOpacity": 0.75,
    "focusDetailOpacity": 0.85,
    "metricHeight": 28,
    "metricOpacity": 0.7,
    "metricLetterSpacing": 0.06,
    "leafAccentWidth": 0,
    "levelLabels": [
      "La métrica",
      "Palancas",
      "Lo que las mueve"
    ],
    "levelLabelHeight": 40,
    "levelLabelOffset": 18,
    "levelLabelSpacing": 0.08,
    "footerGap": 8,
    "bandGap": 8,
    "verdictGap": 6,
    "verdictGapWithoutBand": 16,
    "verdictMaxLines": 8,
    "dynamicVerdictHeight": true,
    "connectors": {
      "kind": "bracket",
      "color": "textSecondary",
      "width": 2,
      "arrows": true,
      "arrowLength": 9,
      "arrowHeight": 8,
      "junctionRadius": 0
    },
    "branchLabels": {
      "requireAll": true,
      "kind": "badge",
      "color": "textPrimary",
      "background": "surface",
      "maxLines": 2,
      "lineHeight": 22,
      "minimumWidth": 20,
      "horizontalPadding": 7,
      "heightPadding": 15,
      "laneInset": 16,
      "maxWidthInset": 8,
      "inlineXOffset": -6,
      "inlineAbove": -6,
      "inlineBelow": 18,
      "letterSpacing": 0.04,
      "baselineAdjustment": -3
    }
  }
}
