{
  "spec": "quick-html/v0",
  "id": "recipe-card",
  "version": "0.1.0",
  "name": "Recipe Card",
  "description": "Editorial food-magazine recipe page on one A4: serif display title, short provenance story, prep/cook/serves/level chips, ingredients beside a numbered method, optional chef's notes. Pick it when a dish — sweet or savoury — deserves a beautifully printed card.",
  "useWhen": [
    "recipe",
    "recipe card",
    "write up a dish",
    "cooking instructions",
    "baking recipe",
    "recept",
    "rezept",
    "recette",
    "kitchen card"
  ],
  "format": "printable",
  "theme": "home-living",
  "tags": [
    "recipe",
    "cooking",
    "kitchen",
    "baking",
    "food"
  ],
  "language": "en",
  "page": {
    "size": "A4",
    "orientation": "portrait"
  },
  "modules": [
    "edit-overlay",
    "print-helper"
  ],
  "slots": [
    {
      "name": "doc-title",
      "type": "text",
      "required": true,
      "example": "Grandmother’s appeltaart — recipe card",
      "notes": "Browser tab title; used as the download filename."
    },
    {
      "name": "kicker",
      "type": "text",
      "required": true,
      "example": "Dutch classics · Dessert",
      "notes": "Course/cuisine line above the title, e.g. 'Weeknight · Vegetarian'. Keep under ~40 chars."
    },
    {
      "name": "recipe-title",
      "type": "text",
      "required": true,
      "example": "Grandmother’s appeltaart",
      "notes": "Dish name. Keep under ~45 chars so it stays on one or two display lines."
    },
    {
      "name": "intro-story",
      "type": "html",
      "required": true,
      "example": "<p>The taart my grandmother baked every Sunday in her Zaandam kitchen — deep, buttery, with cinnamon apples that keep their bite.</p>",
      "notes": "1–2 sentences of warmth or provenance in one <p>; no marketing fluff."
    },
    {
      "name": "prep-time",
      "type": "text",
      "required": true,
      "example": "30 min",
      "notes": "Hands-on time, e.g. '30 min' or '1 h 15 min'."
    },
    {
      "name": "cook-time",
      "type": "text",
      "required": true,
      "example": "65 min",
      "notes": "Oven/stove time, same format as prep-time."
    },
    {
      "name": "servings",
      "type": "text",
      "required": true,
      "example": "10",
      "notes": "Bare value: '10', '4–6' — the SERVES label is printed by the template."
    },
    {
      "name": "difficulty",
      "type": "text",
      "required": true,
      "example": "Moderate",
      "notes": "One word: Easy, Moderate or Advanced."
    },
    {
      "name": "ingredients-note-text",
      "type": "text",
      "required": false,
      "example": "Take the butter straight from the fridge — cold butter is what keeps the crust short.",
      "notes": "One practical line under the ingredient list; lives in the ingredients-note optional block."
    },
    {
      "name": "notes-content",
      "type": "html",
      "required": false,
      "example": "<p>The taart keeps for three days under a tea towel. Serve barely warm, with lightly whipped cream.</p>",
      "notes": "Substitutions, storage, pairing — 1–3 sentences inside the chefs-notes optional band."
    },
    {
      "name": "footer-line",
      "type": "text",
      "required": false,
      "example": "From the kitchen of the Verlaan family · Zaandam",
      "notes": "Source or attribution line, bottom left."
    }
  ],
  "repeats": [
    {
      "name": "ingredient",
      "description": "One line per ingredient: amount + item. A sub-section header is an extra line with an empty amount and a bold item.",
      "min": 3,
      "max": 30,
      "slots": [
        {
          "name": "ingredient-amount",
          "type": "text",
          "required": true,
          "example": "300 g",
          "notes": "Metric amount incl. unit ('300 g', '2 tbsp', '1.2 kg'). Leave completely empty for a sub-section header line."
        },
        {
          "name": "ingredient-item",
          "type": "html",
          "required": true,
          "example": "plain flour",
          "notes": "The ingredient with any prep ('cold butter, in small cubes'). For a sub-section header use only '<strong>For the filling</strong>'."
        }
      ]
    },
    {
      "name": "step",
      "description": "One numbered method step; the big numeral is generated automatically.",
      "min": 2,
      "max": 15,
      "slots": [
        {
          "name": "step-text",
          "type": "html",
          "required": true,
          "example": "Mix the flour, brown sugar and salt. Rub in the cold butter, add half the beaten egg and knead briefly into a firm dough.",
          "notes": "Imperative voice, 1–3 sentences. Plain text or one <p>."
        }
      ]
    }
  ],
  "optionals": [
    {
      "name": "ingredients-note",
      "description": "One-line practical note under the ingredient list (technique or shopping tip)."
    },
    {
      "name": "chefs-notes",
      "description": "Tinted band at the bottom: substitutions, storage, wine/coffee pairing."
    }
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "date": "2026-08-14",
      "notes": "Initial release: editorial A4 recipe page with ingredient and step repeats, meta chips, sprig ornament and chef's-notes band."
    }
  ],
  "agentInstructions": "Remove every data-example line, then add one 'ingredient' and one 'step' block per real line. Amounts go in ingredient-amount WITH the metric unit ('300 g', '2 tbsp', '1.2 kg'); mirror the user's language for units (Dutch '2 el', German '2 EL', English '2 tbsp'). For a sub-section header inside the list ('For the filling'), add an ingredient block, leave ingredient-amount COMPLETELY empty (no space — it collapses automatically) and set ingredient-item to '<strong>For the filling</strong>' only. Write steps in the imperative voice, 1–3 sentences each; oven temperatures as '175°C (fan 160°C)'. servings is the bare value ('10', '4–6'); prep-time/cook-time like '30 min' or '1 h 15 min'. THE CARD MUST STAY ON ONE A4 PAGE: for a long recipe, first shorten intro-story to one sentence, then remove the chefs-notes block, then tighten step wording. Remove the chefs-notes and ingredients-note optionals when there is nothing real to say. If servings or times are unknown, estimate sensibly and tell the user you estimated; if the dish's provenance is unknown, keep intro-story to one honest sentence about the dish itself rather than inventing family history.",
  "license": "MIT",
  "authors": [
    {
      "github": "bvrln"
    }
  ]
}
