{
  "$comment": "The single source of print truth (docs/redesign/DECISIONS.md §5-§6). Read by js/v3/shared/pricing.js in the browser and bundled into functions/_lib/checkout-core.js on the server, which recomputes every price. The keys (A4..A1, matte/lustre/rag, imageWrap/mirrorWrap/black/white, black/white/natural/walnut, paper/canvas) are what functions/api/webhook.js maps to Prodigi SKUs and attributes: never rename them. Prices are CAD. Public file: no private notes.",
  "version": 1,
  "currency": "CAD",
  "defaults": {
    "productType": "paper",
    "size": "A3",
    "paper": "lustre",
    "canvasEdge": "imageWrap",
    "frame": "black",
    "framedType": "paper"
  },
  "productTypes": {
    "paper": {
      "name": "Paper print",
      "label": "Paper print",
      "lineTitle": "Paper Print",
      "prodigiSku": "GLOBAL-{paper}-{size}"
    },
    "canvas": {
      "name": "Canvas",
      "label": "Canvas",
      "lineTitle": "Canvas",
      "note": "Stretched canvas.",
      "prodigiSku": "GLOBAL-CAN-{size}"
    },
    "framed": {
      "name": "Framed",
      "framedTypes": {
        "paper": {
          "name": "Paper print",
          "label": "Framed print",
          "lineTitle": "Framed Print",
          "note": "Framed prints have no paper choice.",
          "prodigiSku": "GLOBAL-CFP-{size}"
        },
        "canvas": {
          "name": "Canvas",
          "label": "Framed canvas",
          "lineTitle": "Framed Canvas",
          "note": "Black edges inside the frame.",
          "prodigiSku": "GLOBAL-FRA-CAN-{size}"
        }
      }
    }
  },
  "sizes": {
    "A4": { "name": "8 × 12 in", "dimensions": "20 × 30 cm", "inches": [8, 12], "cm": [20, 30], "prodigi": "8x12" },
    "A3": { "name": "12 × 16 in", "dimensions": "30 × 41 cm", "inches": [12, 16], "cm": [30, 41], "prodigi": "12x16" },
    "A2": { "name": "16 × 24 in", "dimensions": "41 × 61 cm", "inches": [16, 24], "cm": [41, 61], "prodigi": "16x24" },
    "A1": { "name": "24 × 33 in", "dimensions": "61 × 84 cm", "inches": [24, 33], "cm": [61, 84], "prodigi": "24x33" }
  },
  "base": {
    "paper": { "A4": 45, "A3": 55, "A2": 85, "A1": 115 },
    "canvas": { "A4": 55, "A3": 70, "A2": 110, "A1": 150 }
  },
  "papers": {
    "matte": { "name": "Enhanced Matte", "note": "200 gsm, smooth, no shine", "add": 0, "prodigi": "FAP" },
    "lustre": { "name": "Lustre Photo", "note": "240 gsm, slight sheen", "add": 0, "prodigi": "LPP" },
    "rag": { "name": "Hahnemühle Rag", "note": "310 gsm cotton", "add": 20, "prodigi": "HGE", "unframedOnly": true }
  },
  "canvasEdges": {
    "imageWrap": { "name": "Image wrap", "description": "The picture continues around the sides, so a little of it leaves the front.", "prodigi": "ImageWrap" },
    "mirrorWrap": { "name": "Mirror wrap", "description": "The front keeps the whole picture; its edges are mirrored onto the sides.", "prodigi": "MirrorWrap" },
    "black": { "name": "Black edge", "description": "The front keeps the whole picture; the sides are solid black.", "prodigi": "Black" },
    "white": { "name": "White edge", "description": "The front keeps the whole picture; the sides are solid white.", "prodigi": "White" }
  },
  "frames": {
    "black": { "name": "Black", "add": { "paper": 45, "canvas": 55 }, "prodigi": "black" },
    "white": { "name": "White", "add": { "paper": 45, "canvas": 55 }, "prodigi": "white" },
    "natural": { "name": "Natural wood", "add": { "paper": 60, "canvas": 70 }, "prodigi": "natural" },
    "walnut": { "name": "Walnut", "add": { "paper": 60, "canvas": 70 }, "prodigi": "brown" }
  },
  "shipping": {
    "standard": {
      "name": "Standard Shipping",
      "label": "Standard",
      "amount": 15,
      "days": [7, 14],
      "enabled": true
    },
    "express": {
      "name": "Express Shipping",
      "label": "Express",
      "amount": 25,
      "days": [3, 5],
      "enabled": true,
      "ownerNote": "Express is charged at payment and passed to the print lab as Express (functions/_lib/prodigi.js shippingMethodFor). Set enabled to false here to stop offering it; that removes it from Stripe and from every price block."
    }
  },
  "countries": ["US", "CA", "GB", "DE", "FR", "IT", "ES", "NL", "BE", "AU", "JP", "CH", "AT", "SE", "NO", "DK", "FI", "IE", "PT", "NZ"],
  "statesRequired": ["US", "CA", "AU"],
  "sources": {
    "gallery": { "ai": false },
    "visitors_gallery": { "ai": true },
    "ai_generated": { "ai": true }
  },
  "limits": {
    "maxQuantity": 10,
    "maxLines": 20,
    "aiSizes": ["A4", "A3"]
  }
}
