{
  "_note": "Demo catalogue. Prices are editable placeholders, not market claims. Images are stylised illustrations rendered by scripts/dev/render_demo_art.py.",
  "categories": [
    { "slug": "bags", "name": "Bags", "description": "Shoulder bags, totes and crossbodies cut to carry a working day and an evening out.", "image": "/demo/everyday-shoulder-bag-cocoa-1.jpg", "hover": "/demo/structured-mini-tote-sand-1.jpg" },
    { "slug": "accessories", "name": "Accessories", "description": "Jewellery, scarves and small finishing pieces.", "image": "/demo/silk-feel-printed-scarf-terracotta-1.jpg", "hover": "/demo/everyday-hoop-earrings-gold-1.jpg" },
    { "slug": "dresses", "name": "Dresses", "description": "Easy day dresses and considered evening pieces.", "image": "/demo/evening-wrap-dress-emerald-1.jpg", "hover": "/demo/everyday-midi-dress-rosewood-1.jpg" }
  ],
  "products": [
    { "slug": "everyday-shoulder-bag", "sku": "VL-BAG-001", "name": "Everyday Shoulder Bag", "category": "bags", "kind": "shoulder", "price": 2850,
      "mode": "READY_STOCK", "colours": [["Cocoa", "#6B4A34"], ["Ivory", "#E6DCCB"], ["Black", "#26221F"]], "stock": 8,
      "short": "A soft-structured shoulder bag with a magnetic flap and an adjustable strap.",
      "description": "Sized for a phone, wallet, keys and a small notebook. The flap closes with a concealed magnet and the strap sits comfortably on the shoulder or under the arm.",
      "materials": "Vegan leather outer, cotton-blend lining, gold-tone hardware.", "care": "Wipe clean with a soft damp cloth. Store stuffed, away from direct sunlight.",
      "specs": [["Size", "26 × 18 × 9 cm"], ["Strap drop", "24 cm, adjustable"], ["Closure", "Magnetic flap"], ["Inside", "1 zip pocket, 1 slip pocket"]], "featured": true },
    { "slug": "structured-mini-tote", "sku": "VL-BAG-002", "name": "Structured Mini Tote", "category": "bags", "kind": "tote", "price": 3450,
      "mode": "PRE_ORDER", "colours": [["Sand", "#C8AE8C"], ["Espresso", "#3F2B20"]],
      "batch": { "code": "VL-B24-TOTE", "capacity": 40, "openDays": -5, "closeDays": 25, "dispatchFromDays": 45, "dispatchToDays": 55, "payment": "DEPOSIT_OPTIONAL", "depositType": "PERCENT", "deposit": 30 },
      "short": "A compact, upright tote with twin top handles and a detachable strap.",
      "description": "Built on a firm base so it stands on its own. Carry it by hand or clip on the long strap for crossbody wear.",
      "materials": "Vegan leather, microsuede lining, gold-tone feet and hardware.", "care": "Wipe clean. Keep the dust bag for storage.",
      "specs": [["Size", "22 × 17 × 11 cm"], ["Handle drop", "9 cm"], ["Strap", "Detachable, 110–125 cm"], ["Closure", "Zip top"]], "featured": true },
    { "slug": "weekend-crossbody", "sku": "VL-BAG-003", "name": "Weekend Crossbody", "category": "bags", "kind": "crossbody", "price": 2250,
      "mode": "READY_STOCK", "colours": [["Caramel", "#A8703F"], ["Olive", "#5F5E3C"]], "stock": 12,
      "short": "A light crossbody with a long strap for errands and travel days.",
      "description": "Rounded corners, a front flap and a strap long enough to wear across the body over a jacket.",
      "materials": "Vegan leather, cotton lining.", "care": "Wipe clean with a damp cloth.",
      "specs": [["Size", "21 × 15 × 6 cm"], ["Strap", "Adjustable, up to 130 cm"], ["Closure", "Push-lock flap"]] },
    { "slug": "crescent-hobo-bag", "sku": "VL-BAG-004", "name": "Crescent Hobo Bag", "category": "bags", "kind": "hobo", "price": 3150,
      "mode": "PRE_ORDER", "colours": [["Chestnut", "#7A4128"], ["Stone", "#B9AC9C"]],
      "batch": { "code": "VL-B24-HOBO", "capacity": 30, "openDays": -2, "closeDays": 18, "dispatchFromDays": 40, "dispatchToDays": 50, "payment": "DEPOSIT_OPTIONAL", "depositType": "PERCENT", "deposit": 40 },
      "short": "A slouchy half-moon bag with a short shoulder strap.",
      "description": "The crescent shape softens as you wear it. One main compartment with a zip pocket inside.",
      "materials": "Soft vegan leather, cotton lining.", "care": "Store stuffed to keep the curve.",
      "specs": [["Size", "34 × 20 × 10 cm"], ["Strap drop", "20 cm"], ["Closure", "Zip top"]] },
    { "slug": "evening-box-clutch", "sku": "VL-BAG-005", "name": "Evening Box Clutch", "category": "bags", "kind": "clutch", "price": 2650,
      "mode": "PRE_ORDER", "colours": [["Black", "#1F1B19"], ["Champagne", "#D8C39E"]],
      "batch": { "code": "VL-B24-CLUTCH", "capacity": 25, "openDays": -10, "closeDays": 12, "dispatchFromDays": 35, "dispatchToDays": 42, "payment": "DEPOSIT_REQUIRED", "depositType": "FIXED", "deposit": 1000 },
      "short": "A hard-sided clutch with a gold clasp and a tuck-away chain.",
      "description": "Holds a phone, cards and a lipstick. Carry it in hand or let the chain out to wear it on the shoulder.",
      "materials": "Satin-finish shell, faux-suede lining, gold-tone chain.", "care": "Keep away from moisture. Polish hardware with a dry cloth.",
      "specs": [["Size", "20 × 11 × 6 cm"], ["Chain", "Detachable, 110 cm"], ["Closure", "Kiss clasp"]] },
    { "slug": "woven-bucket-bag", "sku": "VL-BAG-006", "name": "Woven Bucket Bag", "category": "bags", "kind": "bucket", "price": 2950,
      "mode": "READY_STOCK", "colours": [["Natural", "#C9A97A"]], "stock": 0,
      "short": "A hand-woven bucket bag with a drawstring top.",
      "description": "Woven by hand, so the pattern varies slightly from bag to bag. A drawstring closes the top and a single strap goes over the shoulder.",
      "materials": "Woven faux raffia, cotton drawstring lining.", "care": "Spot clean only. Do not soak.",
      "specs": [["Size", "24 × 26 × 18 cm"], ["Strap drop", "22 cm"], ["Closure", "Drawstring"]] },

    { "slug": "minimal-chain-necklace", "sku": "VL-ACC-001", "name": "Minimal Chain Necklace", "category": "accessories", "kind": "necklace", "price": 890,
      "mode": "READY_STOCK", "colours": [["Gold", "gold"], ["Silver", "silver"]], "stock": 20,
      "short": "A fine chain with a single bead, made for everyday layering.",
      "description": "Light enough to wear daily and short enough to sit above a neckline. Finished with a lobster clasp and an extender.",
      "materials": "Plated brass.", "care": "Remove before showering or swimming. Store in the pouch provided.",
      "specs": [["Length", "40 cm + 5 cm extender"], ["Clasp", "Lobster"]], "featured": true },
    { "slug": "silk-feel-printed-scarf", "sku": "VL-ACC-002", "name": "Silk-Feel Printed Scarf", "category": "accessories", "kind": "scarf", "price": 1150,
      "mode": "READY_STOCK", "colours": [["Terracotta", ["#B5674A", "#F1E3CF"]], ["Navy", ["#25324A", "#D9C08D"]]], "stock": 15,
      "short": "A square scarf with a botanical print and hand-rolled-look edges.",
      "description": "Wear it at the neck, on a bag handle or folded into a headband.",
      "materials": "Polyester satin with a silk-like hand.", "care": "Hand wash cold. Cool iron on the reverse.",
      "specs": [["Size", "70 × 70 cm"]] },
    { "slug": "everyday-hoop-earrings", "sku": "VL-ACC-003", "name": "Everyday Hoop Earrings", "category": "accessories", "kind": "hoops", "price": 690,
      "mode": "READY_STOCK", "colours": [["Gold", "gold"], ["Silver", "silver"]], "stock": 25,
      "short": "Medium hoops with a hinged click closure.",
      "description": "A rounded tube profile that catches the light without feeling heavy.",
      "materials": "Plated brass, hypoallergenic posts.", "care": "Wipe after wear. Avoid perfume contact.",
      "specs": [["Diameter", "25 mm"], ["Closure", "Hinged click"]] },
    { "slug": "pearl-drop-earrings", "sku": "VL-ACC-004", "name": "Pearl Drop Earrings", "category": "accessories", "kind": "pearls", "price": 950,
      "mode": "PRE_ORDER", "colours": [["Gold", "gold"]],
      "batch": { "code": "VL-B24-PEARL", "capacity": 60, "openDays": -7, "closeDays": 20, "dispatchFromDays": 30, "dispatchToDays": 38, "payment": "FULL_ONLY", "depositType": "PERCENT", "deposit": 0 },
      "short": "A glass pearl suspended from a fine gold-tone bar.",
      "description": "A small drop that moves as you do. Pairs well with the Minimal Chain Necklace.",
      "materials": "Glass pearl, plated brass.", "care": "Keep dry. Store separately to avoid scratches.",
      "specs": [["Drop", "35 mm"], ["Pearl", "12 mm glass"]] },
    { "slug": "tortoise-claw-clip", "sku": "VL-ACC-005", "name": "Tortoise Claw Clip", "category": "accessories", "kind": "clip", "price": 450,
      "mode": "READY_STOCK", "colours": [["Tortoise", "#8A5A2B"], ["Honey", "#C79A55"]], "stock": 30,
      "short": "A large claw clip that holds thick hair securely.",
      "description": "A strong spring and rounded teeth keep it comfortable for all-day wear.",
      "materials": "Cellulose acetate.", "care": "Wipe clean.",
      "specs": [["Length", "11 cm"]] },
    { "slug": "leaf-charm-bracelet", "sku": "VL-ACC-006", "name": "Leaf Charm Bracelet", "category": "accessories", "kind": "bracelet", "price": 1250,
      "mode": "PRE_ORDER", "colours": [["Gold", "gold"]],
      "batch": { "code": "VL-B25-LEAF", "capacity": 50, "openDays": 10, "closeDays": 40, "dispatchFromDays": 60, "dispatchToDays": 70, "payment": "DEPOSIT_OPTIONAL", "depositType": "PERCENT", "deposit": 50 },
      "short": "A slim bangle with three small leaf charms.",
      "description": "Pre-orders open soon. The leaf charms echo the Veloura monogram.",
      "materials": "Plated brass.", "care": "Remove before washing hands. Store in the pouch.",
      "specs": [["Inner diameter", "6 cm"], ["Charms", "3"]] },

    { "slug": "everyday-midi-dress", "sku": "VL-DRS-001", "name": "Everyday Midi Dress", "category": "dresses", "kind": "midi", "price": 2950,
      "mode": "PRE_ORDER", "colours": [["Rosewood", "#9C5A57"], ["Sage", "#8E9C82"]], "sizes": ["S", "M", "L", "XL"],
      "batch": { "code": "VL-B24-MIDI", "capacity": 80, "openDays": -3, "closeDays": 21, "dispatchFromDays": 40, "dispatchToDays": 50, "payment": "DEPOSIT_OPTIONAL", "depositType": "PERCENT", "deposit": 30 },
      "short": "A sleeveless midi with a fitted bodice and a softly flared skirt.",
      "description": "Fully lined through the bodice. Concealed side zip and a skirt with enough movement to walk freely.",
      "materials": "Viscose crepe, cotton lining.", "care": "Machine wash cold on gentle. Hang to dry.",
      "specs": [["Length", "118 cm (size M)"], ["Fit", "Fitted bodice, relaxed skirt"], ["Closure", "Side zip"]], "featured": true },
    { "slug": "relaxed-shirt-dress", "sku": "VL-DRS-002", "name": "Relaxed Shirt Dress", "category": "dresses", "kind": "shirt", "price": 3250,
      "mode": "READY_STOCK", "colours": [["Sky", "#9DB3C8"], ["Ecru", "#E2D8C6"]], "sizes": ["S", "M", "L", "XL"], "stock": 5,
      "short": "A button-through shirt dress with a self-tie belt.",
      "description": "Wear it belted, open as a light layer or loose over trousers.",
      "materials": "Cotton poplin.", "care": "Machine wash 30°C. Warm iron.",
      "specs": [["Length", "112 cm (size M)"], ["Fit", "Relaxed"], ["Closure", "Front buttons"]] },
    { "slug": "evening-wrap-dress", "sku": "VL-DRS-003", "name": "Evening Wrap Dress", "category": "dresses", "kind": "wrap", "price": 3850,
      "mode": "PRE_ORDER", "colours": [["Emerald", "#1F5B4A"], ["Wine", "#5C1E2A"]], "sizes": ["S", "M", "L", "XL"],
      "batch": { "code": "VL-B24-WRAP", "capacity": 50, "openDays": -6, "closeDays": 14, "dispatchFromDays": 42, "dispatchToDays": 52, "payment": "DEPOSIT_OPTIONAL", "depositType": "PERCENT", "deposit": 40 },
      "short": "A true wrap dress in a fluid satin with a long tie.",
      "description": "Adjust the wrap to your fit. The skirt falls to mid-calf with a soft front split.",
      "materials": "Polyester satin.", "care": "Hand wash cold or dry clean. Cool iron.",
      "specs": [["Length", "124 cm (size M)"], ["Fit", "Adjustable wrap"]], "featured": true },
    { "slug": "tiered-cotton-maxi", "sku": "VL-DRS-004", "name": "Tiered Cotton Maxi", "category": "dresses", "kind": "maxi", "price": 3450,
      "mode": "PRE_ORDER", "colours": [["Mustard", "#C2933A"], ["White", "#EEEAE2"]], "sizes": ["S", "M", "L", "XL"],
      "batch": { "code": "VL-B24-MAXI", "capacity": 60, "openDays": -1, "closeDays": 28, "dispatchFromDays": 50, "dispatchToDays": 60, "payment": "DEPOSIT_OPTIONAL", "depositType": "PERCENT", "deposit": 30 },
      "short": "A light cotton maxi with three gathered tiers.",
      "description": "Breathable for warm days with a skirt that gets fuller towards the hem.",
      "materials": "Cotton voile, cotton lining to the knee.", "care": "Machine wash cold. Line dry.",
      "specs": [["Length", "138 cm (size M)"], ["Fit", "Relaxed"]] },
    { "slug": "pleated-slip-dress", "sku": "VL-DRS-005", "name": "Pleated Slip Dress", "category": "dresses", "kind": "slip", "price": 3650,
      "mode": "READY_STOCK", "colours": [["Champagne", "#D4BE98"], ["Midnight", "#232A3B"]], "sizes": ["S", "M", "L"], "stock": 4,
      "short": "A bias-cut slip with a pleated skirt and adjustable straps.",
      "description": "Layer it over a fine knit by day or wear it alone in the evening.",
      "materials": "Satin with micro-pleated skirt.", "care": "Hand wash cold. Do not iron the pleats.",
      "specs": [["Length", "116 cm (size M)"], ["Straps", "Adjustable"]] },
    { "slug": "linen-day-dress", "sku": "VL-DRS-006", "name": "Linen Day Dress", "category": "dresses", "kind": "linen", "price": 2750,
      "mode": "PRE_ORDER", "colours": [["Oat", "#CDBB9E"]], "sizes": ["S", "M", "L", "XL"],
      "batch": { "code": "VL-B24-LINEN", "capacity": 20, "committed": 20, "openDays": -20, "closeDays": 5, "dispatchFromDays": 25, "dispatchToDays": 32, "payment": "DEPOSIT_OPTIONAL", "depositType": "PERCENT", "deposit": 30 },
      "short": "A short-sleeved linen-blend dress with a patch pocket.",
      "description": "This batch is fully reserved. Join the newsletter to hear when the next batch opens.",
      "materials": "Linen-cotton blend.", "care": "Machine wash cold. Iron while damp.",
      "specs": [["Length", "108 cm (size M)"], ["Fit", "Straight"]] }
  ],
  "scenes": [
    { "name": "scene-bags", "items": [["shoulder", "#6B4A34"], ["tote", "#C8AE8C"], ["clutch", "#1F1B19"]] },
    { "name": "scene-dresses", "items": [["wrap", "#1F5B4A"], ["midi", "#9C5A57"], ["maxi", "#C2933A"], ["slip", "#D4BE98"]] },
    { "name": "scene-accessories", "items": [["hoops", "gold"], ["necklace", "gold"], ["pearls", "gold"]] },
    { "name": "scene-gifting", "items": [["scarf", ["#B5674A", "#F1E3CF"]], ["clip", "#8A5A2B"], ["bracelet", "gold"]], "w": 1600, "h": 1100 },
    { "name": "scene-story", "items": [["hobo", "#7A4128"], ["linen", "#CDBB9E"]], "w": 1200, "h": 1500 }
  ]
}
