{
  "id": "smofanBenefitPass.v1",
  "product": "SmoFan",
  "scenario": "Profile benefit pass / coupon card",
  "status": "ready",
  "style": "value-forward benefit card with left convex rail and connected action panel",
  "assets": [
    {
      "id": "smofanBenefitPass.rail",
      "label": "权益券左侧异形色块",
      "file": "/assets/smofan-benefit-pass/benefit-pass-rail.png",
      "role": "Active pass left rail, 138 x 300 source image"
    },
    {
      "id": "smofanBenefitPass.appointmentBadgeRibbon",
      "label": "已约权益券顶部履约冠标",
      "file": "/assets/smofan-benefit-pass/appointment-badge-ribbon.png",
      "role": "Appointment booked crown ribbon, transparent PNG used with dynamic text"
    },
    {
      "id": "smofanBenefitPass.coffeeIcon",
      "label": "咖啡权益图标",
      "file": "/assets/smofan-benefit-pass/coupon-cup-symbol.png",
      "role": "Coffee benefit icon, 96 x 96 transparent PNG"
    },
    {
      "id": "smofanBenefitPass.calendarIcon",
      "label": "预约动作图标",
      "file": "/assets/smofan-benefit-pass/service-calendar.png",
      "role": "Booking and care benefit icon, 96 x 96 transparent PNG"
    },
    {
      "id": "smofanBenefitPass.ticketIcon",
      "label": "通用券图标",
      "file": "/assets/smofan-benefit-pass/service-ticket.png",
      "role": "Generic ticket icon, 96 x 96 transparent PNG"
    },
    {
      "id": "smofanBenefitPass.toothIcon",
      "label": "口腔权益图标",
      "file": "/assets/smofan-benefit-pass/service-tooth.png",
      "role": "Dental benefit icon, 96 x 96 transparent PNG"
    }
  ],
  "rules": [
    "Use the rail PNG for the active pass left shape; do not redraw the convex edge in page-level CSS.",
    "Use the appointment badge ribbon PNG for booked appointment passes; keep the label dynamic text such as 已约 · 今天 18:30.",
    "The right action panel is part of the coupon body, not a separate floating card.",
    "Use 600/700 weights from the SmoFan typography scale; do not use 900 for benefit card titles.",
    "Business pages can compose the card inside a wheel, stack, or list, but the card component owns the single-pass visual surface."
  ]
}
