{
  "schemaVersion": "0.1.0",
  "rules": [
    {
      "id": "no-random-local-ui",
      "severity": "error",
      "text": "Do not create a local one-off UI element when a registry component exists."
    },
    {
      "id": "no-outlines",
      "severity": "error",
      "text": "Visible outlines, stroke borders, focus rings, and hard colored contours are forbidden on runtime UI. Use only fill, opacity, blur, and surface hover/focus states."
    },
    {
      "id": "circle-actions",
      "severity": "error",
      "text": "Icon-only actions are circular controls. They use the shared control-ring size and 5px inset rules."
    },
    {
      "id": "dropdowns-portal",
      "severity": "error",
      "text": "Dropdowns inside cards, tables, sidebars, sticky headers, and scroll containers render through a portal/fixed layer."
    },
    {
      "id": "dropdowns-shared-engine",
      "severity": "error",
      "text": "Selection dropdowns and action dropdowns use the shared dropdown engine. Do not implement local outside-click and absolute inline menus."
    },
    {
      "id": "matte-glass",
      "severity": "error",
      "text": "Popup, dropdown, modal, sidebar, and settings surfaces use dark matte glass with blur, not plain transparency, monocolor fills, or light foreign backgrounds."
    },
    {
      "id": "accent-contrast",
      "severity": "error",
      "text": "Filled accent controls must use computed on-accent text from the accent-contrast utility."
    },
    {
      "id": "buttons-shared-module",
      "severity": "error",
      "text": "Text actions use the shared Button primitive with variant and surface props. Modal footer buttons must use surface='modal'."
    },
    {
      "id": "status-pills",
      "severity": "error",
      "text": "Statuses use the shared status-tone palette, centered label, no outline, and fixed status control geometry."
    },
    {
      "id": "admin-tables",
      "severity": "warning",
      "text": "Admin data screens use AdminTable anatomy: table-shell, toolbar, editable cells, circular actions, and shared status/date controls."
    },
    {
      "id": "delete-confirmation",
      "severity": "error",
      "text": "Every destructive delete/removal action must open NodeDcDeleteModal before mutating data."
    },
    {
      "id": "inline-delete-buttons",
      "severity": "error",
      "text": "Inline delete buttons inside editors and tables stay transparent by default and receive only neutral glass hover; red filled delete buttons are forbidden outside the confirmation modal."
    },
    {
      "id": "taskmanager-calendar",
      "severity": "warning",
      "text": "Calendar popovers must follow the Task Manager nodedc-calendar-shell and portal dropdown pattern."
    }
  ]
}
