Section

Air Meet Features

1 个模板实例,9 个 section 配置,7 类 block。

真实模板变体

Schema

{
  "name": "Air Meet Features",
  "settings": [
    {
      "type": "textarea",
      "id": "title",
      "label": "Section Title (HTML allowed)",
      "info": "Use <span class=\"amf-accent\">...</span> for purple gradient text.",
      "default": "Meet <span class=\"amf-accent\">Air</span>"
    },
    {
      "type": "textarea",
      "id": "subtitle",
      "label": "Section Subtitle",
      "default": "Laifen's Lightest Hair Dryer Series Yet."
    },
    {
      "type": "checkbox",
      "id": "section_padding",
      "label": "Add section padding",
      "default": true
    },
    {
      "type": "header",
      "content": "Top Spacing"
    },
    {
      "type": "range",
      "id": "space_top_pc",
      "label": "Top Spacing (Desktop)",
      "min": 0,
      "max": 200,
      "step": 4,
      "unit": "px",
      "default": 80
    },
    {
      "type": "range",
      "id": "space_top_mb",
      "label": "Top Spacing (Mobile)",
      "min": 0,
      "max": 120,
      "step": 4,
      "unit": "px",
      "default": 40
    },
    {
      "type": "range",
      "id": "grid_gap_top_pc",
      "label": "Title-to-Grid Spacing (Desktop)",
      "info": "Space between the subtitle and the cards grid. Increase if foreground layers (e.g. product PNG) extend above the cards.",
      "min": 0,
      "max": 240,
      "step": 4,
      "unit": "px",
      "default": 120
    },
    {
      "type": "range",
      "id": "grid_gap_top_mb",
      "label": "Title-to-Grid Spacing (Mobile)",
      "min": 0,
      "max": 160,
      "step": 4,
      "unit": "px",
      "default": 60
    },
    {
      "type": "text",
      "id": "section_id",
      "label": "Section ID"
    }
  ],
  "blocks": [
    {
      "type": "feature",
      "name": "Feature",
      "limit": 7,
      "settings": [
        {
          "type": "textarea",
          "id": "title",
          "label": "Card Title (HTML allowed)",
          "info": "Use <span class=\"amf-accent\">...</span> for purple gradient text. Use <small> for the unit (e.g. oz)."
        },
        {
          "type": "header",
          "content": "Background Layer"
        },
        {
          "type": "paragraph",
          "content": "Card background image, rendered with cover. Falls back to legacy 'Image (Desktop/Mobile)' fields below if empty."
        },
        {
          "type": "image_picker",
          "id": "bg_image_pc",
          "label": "Background — Desktop"
        },
        {
          "type": "image_picker",
          "id": "bg_image_mb",
          "label": "Background — Mobile"
        },
        {
          "type": "select",
          "id": "bg_fit_pc",
          "label": "Background Fit — Desktop",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_pc",
          "label": "Background Focal X — Desktop",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_pc",
          "label": "Background Focal Y — Desktop",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "select",
          "id": "bg_fit_mb",
          "label": "Background Fit — Mobile",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_mb",
          "label": "Background Focal X — Mobile",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_mb",
          "label": "Background Focal Y — Mobile",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "header",
          "content": "Foreground Layer 1 (e.g. Product)"
        },
        {
          "type": "paragraph",
          "content": "Transparent PNG recommended. Position is the layer's center; width is a percentage of card width."
        },
        {
          "type": "image_picker",
          "id": "layer1_image_pc",
          "label": "Layer 1 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer1_image_mb",
          "label": "Layer 1 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer1_top_pc",
          "label": "Layer 1 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_pc",
          "label": "Layer 1 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_pc",
          "label": "Layer 1 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_top_mb",
          "label": "Layer 1 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_mb",
          "label": "Layer 1 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_mb",
          "label": "Layer 1 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 70
        },
        {
          "type": "header",
          "content": "Foreground Layer 2 (e.g. Model / Hand)"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_pc",
          "label": "Layer 2 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_mb",
          "label": "Layer 2 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer2_top_pc",
          "label": "Layer 2 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_pc",
          "label": "Layer 2 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_pc",
          "label": "Layer 2 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 40
        },
        {
          "type": "range",
          "id": "layer2_top_mb",
          "label": "Layer 2 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_mb",
          "label": "Layer 2 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_mb",
          "label": "Layer 2 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 60
        },
        {
          "type": "header",
          "content": "Legacy Single-Image (fallback for Background)"
        },
        {
          "type": "paragraph",
          "content": "Used as the background when the new Background fields above are empty. Existing data continues to work without changes."
        },
        {
          "type": "image_picker",
          "id": "image_pc",
          "label": "Image (Desktop) — legacy"
        },
        {
          "type": "image_picker",
          "id": "image_mb",
          "label": "Image (Mobile) — legacy"
        },
        {
          "type": "header",
          "content": "Text Position Override (optional)"
        },
        {
          "type": "select",
          "id": "text_position_pc",
          "label": "Text Position (Desktop)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Desktop Position = Custom, the sliders below control exact placement. Top/Left position the text's center anchor. Width 0 = auto."
        },
        {
          "type": "range",
          "id": "text_top_pc",
          "label": "Custom Text Top — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_pc",
          "label": "Custom Text Left — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_pc",
          "label": "Custom Text Max Width — Desktop",
          "info": "0 = auto (no constraint). Useful to wrap long titles.",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_pc",
          "label": "Custom Text Align — Desktop",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        },
        {
          "type": "select",
          "id": "text_position_mb",
          "label": "Text Position (Mobile)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Mobile Position = Custom, the sliders below control exact placement on mobile."
        },
        {
          "type": "range",
          "id": "text_top_mb",
          "label": "Custom Text Top — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_mb",
          "label": "Custom Text Left — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_mb",
          "label": "Custom Text Max Width — Mobile",
          "info": "0 = auto (no constraint).",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_mb",
          "label": "Custom Text Align — Mobile",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        }
      ]
    },
    {
      "type": "feature_2",
      "name": "Feature 2",
      "limit": 7,
      "settings": [
        {
          "type": "textarea",
          "id": "title",
          "label": "Card Title (HTML allowed)",
          "info": "Use <span class=\"amf-accent\">...</span> for purple gradient text. Use <small> for the unit (e.g. oz)."
        },
        {
          "type": "header",
          "content": "Background Layer"
        },
        {
          "type": "paragraph",
          "content": "Card background image, rendered with cover. Falls back to legacy 'Image (Desktop/Mobile)' fields below if empty."
        },
        {
          "type": "image_picker",
          "id": "bg_image_pc",
          "label": "Background — Desktop"
        },
        {
          "type": "image_picker",
          "id": "bg_image_mb",
          "label": "Background — Mobile"
        },
        {
          "type": "select",
          "id": "bg_fit_pc",
          "label": "Background Fit — Desktop",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_pc",
          "label": "Background Focal X — Desktop",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_pc",
          "label": "Background Focal Y — Desktop",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "select",
          "id": "bg_fit_mb",
          "label": "Background Fit — Mobile",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_mb",
          "label": "Background Focal X — Mobile",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_mb",
          "label": "Background Focal Y — Mobile",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "header",
          "content": "Foreground Layer 1 (e.g. Product)"
        },
        {
          "type": "paragraph",
          "content": "Transparent PNG recommended. Position is the layer's center; width is a percentage of card width."
        },
        {
          "type": "image_picker",
          "id": "layer1_image_pc",
          "label": "Layer 1 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer1_image_mb",
          "label": "Layer 1 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer1_top_pc",
          "label": "Layer 1 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_pc",
          "label": "Layer 1 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_pc",
          "label": "Layer 1 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_top_mb",
          "label": "Layer 1 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_mb",
          "label": "Layer 1 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_mb",
          "label": "Layer 1 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 70
        },
        {
          "type": "header",
          "content": "Foreground Layer 2 (e.g. Model / Hand)"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_pc",
          "label": "Layer 2 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_mb",
          "label": "Layer 2 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer2_top_pc",
          "label": "Layer 2 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_pc",
          "label": "Layer 2 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_pc",
          "label": "Layer 2 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 40
        },
        {
          "type": "range",
          "id": "layer2_top_mb",
          "label": "Layer 2 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_mb",
          "label": "Layer 2 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_mb",
          "label": "Layer 2 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 60
        },
        {
          "type": "header",
          "content": "Legacy Single-Image (fallback for Background)"
        },
        {
          "type": "paragraph",
          "content": "Used as the background when the new Background fields above are empty. Existing data continues to work without changes."
        },
        {
          "type": "image_picker",
          "id": "image_pc",
          "label": "Image (Desktop) — legacy"
        },
        {
          "type": "image_picker",
          "id": "image_mb",
          "label": "Image (Mobile) — legacy"
        },
        {
          "type": "header",
          "content": "Text Position Override (optional)"
        },
        {
          "type": "select",
          "id": "text_position_pc",
          "label": "Text Position (Desktop)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Desktop Position = Custom, the sliders below control exact placement. Top/Left position the text's center anchor. Width 0 = auto."
        },
        {
          "type": "range",
          "id": "text_top_pc",
          "label": "Custom Text Top — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_pc",
          "label": "Custom Text Left — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_pc",
          "label": "Custom Text Max Width — Desktop",
          "info": "0 = auto (no constraint). Useful to wrap long titles.",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_pc",
          "label": "Custom Text Align — Desktop",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        },
        {
          "type": "select",
          "id": "text_position_mb",
          "label": "Text Position (Mobile)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Mobile Position = Custom, the sliders below control exact placement on mobile."
        },
        {
          "type": "range",
          "id": "text_top_mb",
          "label": "Custom Text Top — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_mb",
          "label": "Custom Text Left — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_mb",
          "label": "Custom Text Max Width — Mobile",
          "info": "0 = auto (no constraint).",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_mb",
          "label": "Custom Text Align — Mobile",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        }
      ]
    },
    {
      "type": "feature_3",
      "name": "Feature 3",
      "limit": 7,
      "settings": [
        {
          "type": "textarea",
          "id": "title",
          "label": "Card Title (HTML allowed)",
          "info": "Use <span class=\"amf-accent\">...</span> for purple gradient text. Use <small> for the unit (e.g. oz)."
        },
        {
          "type": "header",
          "content": "Background Layer"
        },
        {
          "type": "paragraph",
          "content": "Card background image, rendered with cover. Falls back to legacy 'Image (Desktop/Mobile)' fields below if empty."
        },
        {
          "type": "image_picker",
          "id": "bg_image_pc",
          "label": "Background — Desktop"
        },
        {
          "type": "image_picker",
          "id": "bg_image_mb",
          "label": "Background — Mobile"
        },
        {
          "type": "select",
          "id": "bg_fit_pc",
          "label": "Background Fit — Desktop",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_pc",
          "label": "Background Focal X — Desktop",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_pc",
          "label": "Background Focal Y — Desktop",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "select",
          "id": "bg_fit_mb",
          "label": "Background Fit — Mobile",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_mb",
          "label": "Background Focal X — Mobile",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_mb",
          "label": "Background Focal Y — Mobile",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "header",
          "content": "Foreground Layer 1 (e.g. Product)"
        },
        {
          "type": "paragraph",
          "content": "Transparent PNG recommended. Position is the layer's center; width is a percentage of card width."
        },
        {
          "type": "image_picker",
          "id": "layer1_image_pc",
          "label": "Layer 1 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer1_image_mb",
          "label": "Layer 1 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer1_top_pc",
          "label": "Layer 1 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_pc",
          "label": "Layer 1 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_pc",
          "label": "Layer 1 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_top_mb",
          "label": "Layer 1 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_mb",
          "label": "Layer 1 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_mb",
          "label": "Layer 1 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 70
        },
        {
          "type": "header",
          "content": "Foreground Layer 2 (e.g. Model / Hand)"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_pc",
          "label": "Layer 2 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_mb",
          "label": "Layer 2 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer2_top_pc",
          "label": "Layer 2 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_pc",
          "label": "Layer 2 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_pc",
          "label": "Layer 2 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 40
        },
        {
          "type": "range",
          "id": "layer2_top_mb",
          "label": "Layer 2 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_mb",
          "label": "Layer 2 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_mb",
          "label": "Layer 2 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 60
        },
        {
          "type": "header",
          "content": "Legacy Single-Image (fallback for Background)"
        },
        {
          "type": "paragraph",
          "content": "Used as the background when the new Background fields above are empty. Existing data continues to work without changes."
        },
        {
          "type": "image_picker",
          "id": "image_pc",
          "label": "Image (Desktop) — legacy"
        },
        {
          "type": "image_picker",
          "id": "image_mb",
          "label": "Image (Mobile) — legacy"
        },
        {
          "type": "header",
          "content": "Text Position Override (optional)"
        },
        {
          "type": "select",
          "id": "text_position_pc",
          "label": "Text Position (Desktop)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Desktop Position = Custom, the sliders below control exact placement. Top/Left position the text's center anchor. Width 0 = auto."
        },
        {
          "type": "range",
          "id": "text_top_pc",
          "label": "Custom Text Top — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_pc",
          "label": "Custom Text Left — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_pc",
          "label": "Custom Text Max Width — Desktop",
          "info": "0 = auto (no constraint). Useful to wrap long titles.",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_pc",
          "label": "Custom Text Align — Desktop",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        },
        {
          "type": "select",
          "id": "text_position_mb",
          "label": "Text Position (Mobile)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Mobile Position = Custom, the sliders below control exact placement on mobile."
        },
        {
          "type": "range",
          "id": "text_top_mb",
          "label": "Custom Text Top — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_mb",
          "label": "Custom Text Left — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_mb",
          "label": "Custom Text Max Width — Mobile",
          "info": "0 = auto (no constraint).",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_mb",
          "label": "Custom Text Align — Mobile",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        }
      ]
    },
    {
      "type": "feature_4",
      "name": "Feature 4",
      "limit": 7,
      "settings": [
        {
          "type": "textarea",
          "id": "title",
          "label": "Card Title (HTML allowed)",
          "info": "Use <span class=\"amf-accent\">...</span> for purple gradient text. Use <small> for the unit (e.g. oz)."
        },
        {
          "type": "header",
          "content": "Background Layer"
        },
        {
          "type": "paragraph",
          "content": "Card background image, rendered with cover. Falls back to legacy 'Image (Desktop/Mobile)' fields below if empty."
        },
        {
          "type": "image_picker",
          "id": "bg_image_pc",
          "label": "Background — Desktop"
        },
        {
          "type": "image_picker",
          "id": "bg_image_mb",
          "label": "Background — Mobile"
        },
        {
          "type": "select",
          "id": "bg_fit_pc",
          "label": "Background Fit — Desktop",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_pc",
          "label": "Background Focal X — Desktop",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_pc",
          "label": "Background Focal Y — Desktop",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "select",
          "id": "bg_fit_mb",
          "label": "Background Fit — Mobile",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_mb",
          "label": "Background Focal X — Mobile",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_mb",
          "label": "Background Focal Y — Mobile",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "header",
          "content": "Foreground Layer 1 (e.g. Product)"
        },
        {
          "type": "paragraph",
          "content": "Transparent PNG recommended. Position is the layer's center; width is a percentage of card width."
        },
        {
          "type": "image_picker",
          "id": "layer1_image_pc",
          "label": "Layer 1 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer1_image_mb",
          "label": "Layer 1 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer1_top_pc",
          "label": "Layer 1 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_pc",
          "label": "Layer 1 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_pc",
          "label": "Layer 1 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_top_mb",
          "label": "Layer 1 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_mb",
          "label": "Layer 1 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_mb",
          "label": "Layer 1 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 70
        },
        {
          "type": "header",
          "content": "Foreground Layer 2 (e.g. Model / Hand)"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_pc",
          "label": "Layer 2 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_mb",
          "label": "Layer 2 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer2_top_pc",
          "label": "Layer 2 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_pc",
          "label": "Layer 2 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_pc",
          "label": "Layer 2 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 40
        },
        {
          "type": "range",
          "id": "layer2_top_mb",
          "label": "Layer 2 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_mb",
          "label": "Layer 2 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_mb",
          "label": "Layer 2 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 60
        },
        {
          "type": "header",
          "content": "Legacy Single-Image (fallback for Background)"
        },
        {
          "type": "paragraph",
          "content": "Used as the background when the new Background fields above are empty. Existing data continues to work without changes."
        },
        {
          "type": "image_picker",
          "id": "image_pc",
          "label": "Image (Desktop) — legacy"
        },
        {
          "type": "image_picker",
          "id": "image_mb",
          "label": "Image (Mobile) — legacy"
        },
        {
          "type": "header",
          "content": "Text Position Override (optional)"
        },
        {
          "type": "select",
          "id": "text_position_pc",
          "label": "Text Position (Desktop)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Desktop Position = Custom, the sliders below control exact placement. Top/Left position the text's center anchor. Width 0 = auto."
        },
        {
          "type": "range",
          "id": "text_top_pc",
          "label": "Custom Text Top — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_pc",
          "label": "Custom Text Left — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_pc",
          "label": "Custom Text Max Width — Desktop",
          "info": "0 = auto (no constraint). Useful to wrap long titles.",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_pc",
          "label": "Custom Text Align — Desktop",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        },
        {
          "type": "select",
          "id": "text_position_mb",
          "label": "Text Position (Mobile)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Mobile Position = Custom, the sliders below control exact placement on mobile."
        },
        {
          "type": "range",
          "id": "text_top_mb",
          "label": "Custom Text Top — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_mb",
          "label": "Custom Text Left — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_mb",
          "label": "Custom Text Max Width — Mobile",
          "info": "0 = auto (no constraint).",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_mb",
          "label": "Custom Text Align — Mobile",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        }
      ]
    },
    {
      "type": "feature_5",
      "name": "Feature 5",
      "limit": 7,
      "settings": [
        {
          "type": "textarea",
          "id": "title",
          "label": "Card Title (HTML allowed)",
          "info": "Use <span class=\"amf-accent\">...</span> for purple gradient text. Use <small> for the unit (e.g. oz)."
        },
        {
          "type": "header",
          "content": "Background Layer"
        },
        {
          "type": "paragraph",
          "content": "Card background image, rendered with cover. Falls back to legacy 'Image (Desktop/Mobile)' fields below if empty."
        },
        {
          "type": "image_picker",
          "id": "bg_image_pc",
          "label": "Background — Desktop"
        },
        {
          "type": "image_picker",
          "id": "bg_image_mb",
          "label": "Background — Mobile"
        },
        {
          "type": "select",
          "id": "bg_fit_pc",
          "label": "Background Fit — Desktop",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_pc",
          "label": "Background Focal X — Desktop",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_pc",
          "label": "Background Focal Y — Desktop",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "select",
          "id": "bg_fit_mb",
          "label": "Background Fit — Mobile",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_mb",
          "label": "Background Focal X — Mobile",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_mb",
          "label": "Background Focal Y — Mobile",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "header",
          "content": "Foreground Layer 1 (e.g. Product)"
        },
        {
          "type": "paragraph",
          "content": "Transparent PNG recommended. Position is the layer's center; width is a percentage of card width."
        },
        {
          "type": "image_picker",
          "id": "layer1_image_pc",
          "label": "Layer 1 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer1_image_mb",
          "label": "Layer 1 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer1_top_pc",
          "label": "Layer 1 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_pc",
          "label": "Layer 1 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_pc",
          "label": "Layer 1 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_top_mb",
          "label": "Layer 1 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_mb",
          "label": "Layer 1 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_mb",
          "label": "Layer 1 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 70
        },
        {
          "type": "header",
          "content": "Foreground Layer 2 (e.g. Model / Hand)"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_pc",
          "label": "Layer 2 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_mb",
          "label": "Layer 2 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer2_top_pc",
          "label": "Layer 2 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_pc",
          "label": "Layer 2 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_pc",
          "label": "Layer 2 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 40
        },
        {
          "type": "range",
          "id": "layer2_top_mb",
          "label": "Layer 2 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_mb",
          "label": "Layer 2 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_mb",
          "label": "Layer 2 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 60
        },
        {
          "type": "header",
          "content": "Legacy Single-Image (fallback for Background)"
        },
        {
          "type": "paragraph",
          "content": "Used as the background when the new Background fields above are empty. Existing data continues to work without changes."
        },
        {
          "type": "image_picker",
          "id": "image_pc",
          "label": "Image (Desktop) — legacy"
        },
        {
          "type": "image_picker",
          "id": "image_mb",
          "label": "Image (Mobile) — legacy"
        },
        {
          "type": "header",
          "content": "Text Position Override (optional)"
        },
        {
          "type": "select",
          "id": "text_position_pc",
          "label": "Text Position (Desktop)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Desktop Position = Custom, the sliders below control exact placement. Top/Left position the text's center anchor. Width 0 = auto."
        },
        {
          "type": "range",
          "id": "text_top_pc",
          "label": "Custom Text Top — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_pc",
          "label": "Custom Text Left — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_pc",
          "label": "Custom Text Max Width — Desktop",
          "info": "0 = auto (no constraint). Useful to wrap long titles.",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_pc",
          "label": "Custom Text Align — Desktop",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        },
        {
          "type": "select",
          "id": "text_position_mb",
          "label": "Text Position (Mobile)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Mobile Position = Custom, the sliders below control exact placement on mobile."
        },
        {
          "type": "range",
          "id": "text_top_mb",
          "label": "Custom Text Top — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_mb",
          "label": "Custom Text Left — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_mb",
          "label": "Custom Text Max Width — Mobile",
          "info": "0 = auto (no constraint).",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_mb",
          "label": "Custom Text Align — Mobile",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        }
      ]
    },
    {
      "type": "feature_6",
      "name": "Feature 6",
      "limit": 7,
      "settings": [
        {
          "type": "textarea",
          "id": "title",
          "label": "Card Title (HTML allowed)",
          "info": "Use <span class=\"amf-accent\">...</span> for purple gradient text. Use <small> for the unit (e.g. oz)."
        },
        {
          "type": "header",
          "content": "Background Layer"
        },
        {
          "type": "paragraph",
          "content": "Card background image, rendered with cover. Falls back to legacy 'Image (Desktop/Mobile)' fields below if empty."
        },
        {
          "type": "image_picker",
          "id": "bg_image_pc",
          "label": "Background — Desktop"
        },
        {
          "type": "image_picker",
          "id": "bg_image_mb",
          "label": "Background — Mobile"
        },
        {
          "type": "select",
          "id": "bg_fit_pc",
          "label": "Background Fit — Desktop",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_pc",
          "label": "Background Focal X — Desktop",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_pc",
          "label": "Background Focal Y — Desktop",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "select",
          "id": "bg_fit_mb",
          "label": "Background Fit — Mobile",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_mb",
          "label": "Background Focal X — Mobile",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_mb",
          "label": "Background Focal Y — Mobile",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "header",
          "content": "Foreground Layer 1 (e.g. Product)"
        },
        {
          "type": "paragraph",
          "content": "Transparent PNG recommended. Position is the layer's center; width is a percentage of card width."
        },
        {
          "type": "image_picker",
          "id": "layer1_image_pc",
          "label": "Layer 1 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer1_image_mb",
          "label": "Layer 1 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer1_top_pc",
          "label": "Layer 1 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_pc",
          "label": "Layer 1 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_pc",
          "label": "Layer 1 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_top_mb",
          "label": "Layer 1 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_mb",
          "label": "Layer 1 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_mb",
          "label": "Layer 1 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 70
        },
        {
          "type": "header",
          "content": "Foreground Layer 2 (e.g. Model / Hand)"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_pc",
          "label": "Layer 2 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_mb",
          "label": "Layer 2 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer2_top_pc",
          "label": "Layer 2 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_pc",
          "label": "Layer 2 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_pc",
          "label": "Layer 2 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 40
        },
        {
          "type": "range",
          "id": "layer2_top_mb",
          "label": "Layer 2 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_mb",
          "label": "Layer 2 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_mb",
          "label": "Layer 2 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 60
        },
        {
          "type": "header",
          "content": "Legacy Single-Image (fallback for Background)"
        },
        {
          "type": "paragraph",
          "content": "Used as the background when the new Background fields above are empty. Existing data continues to work without changes."
        },
        {
          "type": "image_picker",
          "id": "image_pc",
          "label": "Image (Desktop) — legacy"
        },
        {
          "type": "image_picker",
          "id": "image_mb",
          "label": "Image (Mobile) — legacy"
        },
        {
          "type": "header",
          "content": "Text Position Override (optional)"
        },
        {
          "type": "select",
          "id": "text_position_pc",
          "label": "Text Position (Desktop)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Desktop Position = Custom, the sliders below control exact placement. Top/Left position the text's center anchor. Width 0 = auto."
        },
        {
          "type": "range",
          "id": "text_top_pc",
          "label": "Custom Text Top — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_pc",
          "label": "Custom Text Left — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_pc",
          "label": "Custom Text Max Width — Desktop",
          "info": "0 = auto (no constraint). Useful to wrap long titles.",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_pc",
          "label": "Custom Text Align — Desktop",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        },
        {
          "type": "select",
          "id": "text_position_mb",
          "label": "Text Position (Mobile)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Mobile Position = Custom, the sliders below control exact placement on mobile."
        },
        {
          "type": "range",
          "id": "text_top_mb",
          "label": "Custom Text Top — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_mb",
          "label": "Custom Text Left — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_mb",
          "label": "Custom Text Max Width — Mobile",
          "info": "0 = auto (no constraint).",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_mb",
          "label": "Custom Text Align — Mobile",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        }
      ]
    },
    {
      "type": "feature_7",
      "name": "Feature 7",
      "limit": 7,
      "settings": [
        {
          "type": "textarea",
          "id": "title",
          "label": "Card Title (HTML allowed)",
          "info": "Use <span class=\"amf-accent\">...</span> for purple gradient text. Use <small> for the unit (e.g. oz)."
        },
        {
          "type": "header",
          "content": "Background Layer"
        },
        {
          "type": "paragraph",
          "content": "Card background image, rendered with cover. Falls back to legacy 'Image (Desktop/Mobile)' fields below if empty."
        },
        {
          "type": "image_picker",
          "id": "bg_image_pc",
          "label": "Background — Desktop"
        },
        {
          "type": "image_picker",
          "id": "bg_image_mb",
          "label": "Background — Mobile"
        },
        {
          "type": "select",
          "id": "bg_fit_pc",
          "label": "Background Fit — Desktop",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_pc",
          "label": "Background Focal X — Desktop",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_pc",
          "label": "Background Focal Y — Desktop",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "select",
          "id": "bg_fit_mb",
          "label": "Background Fit — Mobile",
          "default": "cover",
          "options": [
            {
              "value": "cover",
              "label": "Cover (fill, may crop)"
            },
            {
              "value": "contain",
              "label": "Contain (full image, may leave gaps)"
            }
          ]
        },
        {
          "type": "range",
          "id": "bg_pos_x_mb",
          "label": "Background Focal X — Mobile",
          "info": "Only used with Cover. 0% = left, 50% = center, 100% = right.",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "bg_pos_y_mb",
          "label": "Background Focal Y — Mobile",
          "min": 0,
          "max": 100,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "header",
          "content": "Foreground Layer 1 (e.g. Product)"
        },
        {
          "type": "paragraph",
          "content": "Transparent PNG recommended. Position is the layer's center; width is a percentage of card width."
        },
        {
          "type": "image_picker",
          "id": "layer1_image_pc",
          "label": "Layer 1 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer1_image_mb",
          "label": "Layer 1 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer1_top_pc",
          "label": "Layer 1 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_pc",
          "label": "Layer 1 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_pc",
          "label": "Layer 1 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_top_mb",
          "label": "Layer 1 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_left_mb",
          "label": "Layer 1 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer1_width_mb",
          "label": "Layer 1 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 70
        },
        {
          "type": "header",
          "content": "Foreground Layer 2 (e.g. Model / Hand)"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_pc",
          "label": "Layer 2 Image — Desktop"
        },
        {
          "type": "image_picker",
          "id": "layer2_image_mb",
          "label": "Layer 2 Image — Mobile"
        },
        {
          "type": "range",
          "id": "layer2_top_pc",
          "label": "Layer 2 Top — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_pc",
          "label": "Layer 2 Left — Desktop",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_pc",
          "label": "Layer 2 Width — Desktop",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 40
        },
        {
          "type": "range",
          "id": "layer2_top_mb",
          "label": "Layer 2 Top — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_left_mb",
          "label": "Layer 2 Left — Mobile",
          "min": -50,
          "max": 150,
          "step": 2,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "layer2_width_mb",
          "label": "Layer 2 Width — Mobile",
          "min": 10,
          "max": 200,
          "step": 2,
          "unit": "%",
          "default": 60
        },
        {
          "type": "header",
          "content": "Legacy Single-Image (fallback for Background)"
        },
        {
          "type": "paragraph",
          "content": "Used as the background when the new Background fields above are empty. Existing data continues to work without changes."
        },
        {
          "type": "image_picker",
          "id": "image_pc",
          "label": "Image (Desktop) — legacy"
        },
        {
          "type": "image_picker",
          "id": "image_mb",
          "label": "Image (Mobile) — legacy"
        },
        {
          "type": "header",
          "content": "Text Position Override (optional)"
        },
        {
          "type": "select",
          "id": "text_position_pc",
          "label": "Text Position (Desktop)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Desktop Position = Custom, the sliders below control exact placement. Top/Left position the text's center anchor. Width 0 = auto."
        },
        {
          "type": "range",
          "id": "text_top_pc",
          "label": "Custom Text Top — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_pc",
          "label": "Custom Text Left — Desktop",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_pc",
          "label": "Custom Text Max Width — Desktop",
          "info": "0 = auto (no constraint). Useful to wrap long titles.",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_pc",
          "label": "Custom Text Align — Desktop",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        },
        {
          "type": "select",
          "id": "text_position_mb",
          "label": "Text Position (Mobile)",
          "default": "default",
          "options": [
            {
              "value": "default",
              "label": "Default (per card index)"
            },
            {
              "value": "tl",
              "label": "Top Left"
            },
            {
              "value": "tc",
              "label": "Top Center"
            },
            {
              "value": "tr",
              "label": "Top Right"
            },
            {
              "value": "ml",
              "label": "Middle Left"
            },
            {
              "value": "mc",
              "label": "Middle Center"
            },
            {
              "value": "mr",
              "label": "Middle Right"
            },
            {
              "value": "bl",
              "label": "Bottom Left"
            },
            {
              "value": "bc",
              "label": "Bottom Center"
            },
            {
              "value": "br",
              "label": "Bottom Right"
            },
            {
              "value": "custom",
              "label": "Custom (use sliders below)"
            }
          ]
        },
        {
          "type": "paragraph",
          "content": "When Mobile Position = Custom, the sliders below control exact placement on mobile."
        },
        {
          "type": "range",
          "id": "text_top_mb",
          "label": "Custom Text Top — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_left_mb",
          "label": "Custom Text Left — Mobile",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 50
        },
        {
          "type": "range",
          "id": "text_width_mb",
          "label": "Custom Text Max Width — Mobile",
          "info": "0 = auto (no constraint).",
          "min": 0,
          "max": 100,
          "step": 1,
          "unit": "%",
          "default": 0
        },
        {
          "type": "select",
          "id": "text_align_mb",
          "label": "Custom Text Align — Mobile",
          "default": "center",
          "options": [
            {
              "value": "left",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ]
        }
      ]
    }
  ],
  "presets": [
    {
      "name": "Air Meet Features",
      "blocks": [
        {
          "type": "feature"
        },
        {
          "type": "feature"
        },
        {
          "type": "feature"
        },
        {
          "type": "feature"
        },
        {
          "type": "feature"
        },
        {
          "type": "feature"
        },
        {
          "type": "feature"
        }
      ]
    }
  ]
}