{
  "version": "1.4.6",
  "architecture": {
    "layers": [
      "bp-tokens",
      "bp-reset",
      "bp-grid",
      "bp-components",
      "bp-utilities"
    ],
    "layerOrder": "cascade order — tokens always lose to components, utilities always win",
    "responsive": {
      "strategy": "container queries over media queries",
      "default": "every component root has container-type: inline-size",
      "note": "use @container, not @media, for component-level breakpoints. Only use @media for full-viewport layouts."
    },
    "tokenPattern": {
      "patternName": "3-level Constructor Pattern",
      "reference": "https://www.giorgiosaud.io/notebook/custom-properties-with-defaults",
      "levels": {
        "1_base": "--bp-* — context-free design tokens on :root. Never referenced directly inside component CSS.",
        "2_public": "--<component>-* — consumer API. Not declared anywhere; exists only when the consumer sets it. This is the ONLY level AI agents should touch.",
        "3_private": "--_* — internal only. Resolves public → base chain. Never use or override these."
      },
      "resolutionChain": "--_bg: var(--btn-bg, var(--bp-primary))  /* private ← public ← base */",
      "rule": "AI agents customize by setting --<component>-* on a CSS class. Never set --_* or --bp-* directly on a component."
    },
    "statePattern": "Visual state lives in ARIA attributes and native pseudo-classes. CSS reads them. JS writes them. Never toggle style classes from JS."
  },
  "baseTokens": {
    "--bp-primary": "#5fcb9f",
    "--bp-radius": "0.625rem",
    "--bp-primary-hover": "oklch(from var(--bp-primary) calc(l - 0.08) c h)",
    "--bp-primary-subtle": "color-mix(in srgb, var(--bp-primary) 18%, #16140f)",
    "--bp-primary-fg": "oklch(from var(--bp-primary) 0.15 c h)",
    "--bp-radius-sm": "calc(var(--bp-radius) * 0.5)",
    "--bp-radius-md": "var(--bp-radius)",
    "--bp-radius-lg": "calc(var(--bp-radius) * 1.5)",
    "--bp-radius-xl": "calc(var(--bp-radius) * 2)",
    "--bp-radius-full": "9999px",
    "--bp-color-bg": "#f8f6f2",
    "--bp-color-bg-subtle": "#f2efe9",
    "--bp-color-bg-elevated": "#ffffff",
    "--bp-color-text": "#181715",
    "--bp-color-text-muted": "#6b6760",
    "--bp-color-text-inverse": "#f2eee6",
    "--bp-color-border": "#e5e0d8",
    "--bp-color-success": "#2e9e72",
    "--bp-color-warning": "#c97a3d",
    "--bp-color-error": "#b14a3a",
    "--bp-color-error-surface": "#a84434",
    "--bp-color-info": "#3b82f6",
    "--bp-focus-ring": "0 0 0 3px color-mix(in srgb, var(--bp-primary) 40%, transparent)",
    "--bp-font-sans": "'Be Vietnam Pro', 'Inter', system-ui, sans-serif",
    "--bp-font-mono": "'JetBrains Mono', 'IBM Plex Mono', ui-monospace, monospace",
    "--bp-font-weight-regular": "400",
    "--bp-font-weight-medium": "500",
    "--bp-font-weight-semibold": "600",
    "--bp-font-weight-bold": "700",
    "--bp-leading-tight": "1.25",
    "--bp-leading-normal": "1.5",
    "--bp-leading-loose": "1.75",
    "--bp-text-xs": "clamp(0.694rem, 0.65rem + 0.22vw, 0.8rem)",
    "--bp-text-sm": "clamp(0.833rem, 0.78rem + 0.27vw, 0.95rem)",
    "--bp-text-base": "clamp(1rem, 0.93rem + 0.33vw, 1.125rem)",
    "--bp-text-lg": "clamp(1.2rem, 1.11rem + 0.44vw, 1.35rem)",
    "--bp-text-xl": "clamp(1.44rem, 1.31rem + 0.63vw, 1.8rem)",
    "--bp-text-2xl": "clamp(1.728rem, 1.54rem + 0.94vw, 2.4rem)",
    "--bp-text-3xl": "clamp(2.074rem, 1.82rem + 1.27vw, 3.2rem)",
    "--bp-text-4xl": "clamp(2.488rem, 2.13rem + 1.79vw, 4.2rem)",
    "--bp-text-5xl": "clamp(2.986rem, 2.5rem + 2.43vw, 5.6rem)",
    "--bp-space-1": "0.25rem",
    "--bp-space-2": "0.5rem",
    "--bp-space-3": "0.75rem",
    "--bp-space-4": "1rem",
    "--bp-space-5": "1.25rem",
    "--bp-space-6": "1.5rem",
    "--bp-space-8": "2rem",
    "--bp-space-10": "2.5rem",
    "--bp-space-12": "3rem",
    "--bp-space-16": "4rem",
    "--bp-space-20": "5rem",
    "--bp-space-24": "6rem",
    "--bp-shadow-sm": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
    "--bp-shadow-md": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
    "--bp-shadow-lg": "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
    "--bp-shadow-xl": "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
    "--bp-duration-fast": "120ms",
    "--bp-duration-normal": "220ms",
    "--bp-duration-slow": "380ms",
    "--bp-ease": "cubic-bezier(0.4, 0, 0.2, 1)",
    "--bp-ease-spring": "cubic-bezier(0.34, 1.56, 0.64, 1)"
  },
  "layouts": [
    {
      "name": "content-grid",
      "title": "Content Grid",
      "description": "Named-line CSS grid layout. Root class: .bp-content-grid. Zone classes go on DIRECT CHILDREN of the grid, not on the grid root itself.",
      "rootClass": ".bp-content-grid",
      "zones": {
        "content": {
          "class": null,
          "width": "~72rem",
          "note": "Default. No class needed. All direct children land here."
        },
        "popout": {
          "class": ".popout",
          "width": "~60rem",
          "note": "Add class .popout on the child. For quotes, CTAs, mid-size media."
        },
        "breakout": {
          "class": ".breakout",
          "width": "~90rem",
          "note": "Add class .breakout on the child. For grids, covers, video."
        },
        "full-width": {
          "class": ".full-width",
          "width": "100vw",
          "note": "Add class .full-width on the child. Sub-content still inherits grid columns."
        }
      },
      "publicTokens": {
        "--padding-inline": {
          "default": "clamp(1.25rem, 1vw + 1rem, 2rem",
          "description": "Horizontal gutter. Default: clamp(1.25rem, 1vw + 1rem, 2rem)"
        },
        "--content-max-width": {
          "default": "72rem",
          "description": "Max width of the content zone. Default: 72rem (1152px)"
        },
        "--popout-max-width": {
          "default": "60rem",
          "description": "Max width of the popout zone.  Default: 60rem (960px)"
        },
        "--breakout-max-width": {
          "default": "90rem",
          "description": "Max width of the breakout zone. Default: 90rem (1440px)"
        }
      },
      "html": "<div class=\"bp-content-grid\">\n  <p>Default content zone — no class needed</p>\n  <blockquote class=\"popout\">Popout zone</blockquote>\n  <figure class=\"breakout\">Breakout zone</figure>\n  <div class=\"full-width\">Full-width zone</div>\n</div>"
    }
  ],
  "components": [
    {
      "name": "accordion",
      "title": "Accordion",
      "description": "Native details/summary accordion — zero JavaScript required.",
      "html": "<!-- Group A -->\n<details class=\"bp-accordion__item\" name=\"pricing-faq\">…</details>\n<details class=\"bp-accordion__item\" name=\"pricing-faq\">…</details>\n\n<!-- Group B — independent -->\n<details class=\"bp-accordion__item\" name=\"support-faq\">…</details>\n<details class=\"bp-accordion__item\" name=\"support-faq\">…</details>",
      "containerQuery": false,
      "publicTokens": {
        "--accordion-bg": {
          "default": "transparent",
          "description": "Background color"
        },
        "--accordion-radius": {
          "default": "0px",
          "description": "Border radius"
        },
        "--accordion-border": {
          "default": "1px solid var(--bp-color-border",
          "description": "Item border"
        },
        "--accordion-accent": {
          "default": "var(--bp-primary",
          "description": "Left border color when open"
        }
      },
      "privateVars": [
        "--_bg",
        "--_radius",
        "--_border",
        "--_accent"
      ],
      "variants": [],
      "stateAttrs": []
    },
    {
      "name": "alert",
      "title": "Alert",
      "description": "Inline feedback message for persistent contextual notices — four semantic variants, optional dismiss, and left-accent stripe.",
      "html": null,
      "containerQuery": true,
      "publicTokens": {
        "--alert-bg": {
          "default": "var(--bp-color-bg-subtle",
          "description": "Background (color-mix tint)"
        },
        "--alert-color": {
          "default": "var(--bp-color-text",
          "description": "Text color"
        },
        "--alert-border-color": {
          "default": "var(--bp-color-border",
          "description": "Border color"
        },
        "--alert-border-width": {
          "default": "1px",
          "description": "Border width (default: 1px)"
        },
        "--alert-border-radius": {
          "default": "var(--bp-radius-md",
          "description": "Border radius"
        },
        "--alert-padding-x": {
          "default": "var(--bp-space-4",
          "description": "Horizontal padding"
        },
        "--alert-padding-y": {
          "default": "var(--bp-space-3",
          "description": "Vertical padding"
        },
        "--alert-gap": {
          "default": "var(--bp-space-3",
          "description": "Gap between icon, content, and close button"
        },
        "--alert-accent-width": {
          "default": "4px",
          "description": "Left stripe width (default: 4px)"
        },
        "--alert-accent-color": {
          "default": "var(--_border-color",
          "description": "Left stripe color"
        },
        "--alert-title-size": {
          "default": "var(--bp-text-sm",
          "description": "Font size of title"
        },
        "--alert-body-size": {
          "default": "var(--bp-text-sm",
          "description": "Font size of body"
        }
      },
      "privateVars": [
        "--_bg",
        "--_color",
        "--_border-color",
        "--_border-width",
        "--_border-radius",
        "--_padding-x",
        "--_padding-y",
        "--_gap",
        "--_accent-width",
        "--_accent-color"
      ],
      "variants": [
        "bp-alert--info",
        "bp-alert--success",
        "bp-alert--warning",
        "bp-alert--error",
        "bp-alert--accent"
      ],
      "stateAttrs": []
    },
    {
      "name": "avatar",
      "title": "Avatar",
      "description": "Circular user image using a native img element — with CSS-only initials fallback, size variants, and composable avatar groups.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {
        "--avatar-size": {
          "default": "2.5rem",
          "description": "Width and height of the avatar"
        },
        "--avatar-radius": {
          "default": "9999px",
          "description": "Border radius (circle by default)"
        },
        "--avatar-font-size": {
          "default": "calc(var(--avatar-size, 2.5rem",
          "description": "Initials text size"
        },
        "--avatar-font-weight": {
          "default": "600",
          "description": "Initials text weight"
        },
        "--avatar-bg": {
          "default": "var(--bp-color-neutral-200, #e5e7eb",
          "description": "Fallback background color"
        },
        "--avatar-color": {
          "default": "var(--bp-color-neutral-700, #374151",
          "description": "Initials text color"
        },
        "--avatar-border-width": {
          "default": "2px",
          "description": "Ring width (used in groups)"
        },
        "--avatar-border-color": {
          "default": "var(--bp-color-bg, #fff",
          "description": "Ring color (used in groups)"
        },
        "--avatar-group-overlap": {
          "default": "-0.75rem",
          "description": "Negative margin for stacking in groups"
        },
        "--avatar-overflow-bg": {
          "default": "var(--bp-color-neutral-300, #d1d5db",
          "description": "Background for overflow count avatar"
        },
        "--avatar-overflow-color": {
          "default": "var(--bp-color-neutral-800, #1f2937",
          "description": "Text color for overflow count avatar"
        }
      },
      "privateVars": [
        "--_size",
        "--_radius",
        "--_font-size",
        "--_font-weight",
        "--_bg",
        "--_color",
        "--_border-width",
        "--_border-color"
      ],
      "variants": [
        "bp-avatar--xs",
        "bp-avatar--sm",
        "bp-avatar--lg",
        "bp-avatar--xl",
        "bp-avatar--square",
        "bp-avatar--overflow"
      ],
      "stateAttrs": []
    },
    {
      "name": "badge",
      "title": "Badge",
      "description": "Inline label for status, counts, and categories — semantic color variants with solid, subtle, and outline styles.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {
        "--badge-bg": {
          "default": "var(--bp-primary-subtle",
          "description": "Background color"
        },
        "--badge-color": {
          "default": "var(--bp-primary-fg",
          "description": "Text color"
        },
        "--badge-border": {
          "default": "1px solid transparent",
          "description": "Border (default: transparent)"
        },
        "--badge-radius": {
          "default": "var(--bp-radius-full",
          "description": "Border radius"
        }
      },
      "privateVars": [
        "--_bg",
        "--_color",
        "--_border",
        "--_radius"
      ],
      "variants": [
        "bp-badge--primary",
        "bp-badge--success",
        "bp-badge--warning",
        "bp-badge--error",
        "bp-badge--info",
        "bp-badge--neutral",
        "bp-badge--subtle",
        "bp-badge--outline",
        "bp-badge--lg"
      ],
      "stateAttrs": []
    },
    {
      "name": "breadcrumb",
      "title": "Breadcrumb",
      "description": "Navigation trail showing the user's location in a hierarchy — semantic `<nav>` + `<ol>` with CSS-only separators.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {},
      "privateVars": [
        "--_separator",
        "--_color",
        "--_color-active",
        "--_gap",
        "--_size"
      ],
      "variants": [],
      "stateAttrs": [
        "aria-current=\"page\""
      ]
    },
    {
      "name": "button",
      "title": "Button",
      "description": "Interactive trigger element for actions and navigation.",
      "html": "<button class=\"bp-btn\" type=\"button\">Label</button>",
      "containerQuery": false,
      "publicTokens": {
        "--btn-background": {
          "default": "var(--bp-primary",
          "description": "Button background color"
        },
        "--btn-color": {
          "default": "var(--bp-primary-fg",
          "description": "Button text color"
        },
        "--btn-border-radius": {
          "default": "var(--bp-radius-md",
          "description": "Border radius"
        },
        "--btn-padding": {
          "default": "var(--bp-space-3",
          "description": "Padding shorthand"
        },
        "--btn-border": {
          "default": "none",
          "description": "Border (default: none)"
        }
      },
      "privateVars": [
        "--_background",
        "--_color",
        "--_border-radius",
        "--_padding",
        "--_border"
      ],
      "variants": [
        "bp-btn--secondary",
        "bp-btn--ghost",
        "bp-btn--danger",
        "bp-btn--icon",
        "bp-btn--sm",
        "bp-btn--lg"
      ],
      "stateAttrs": [
        "aria-disabled='true'"
      ]
    },
    {
      "name": "card",
      "title": "Card",
      "description": "Flexible content container with image, body, and footer slots.",
      "html": null,
      "containerQuery": true,
      "publicTokens": {
        "--card-bg": {
          "default": "var(--bp-color-bg-elevated",
          "description": "Background color"
        },
        "--card-radius": {
          "default": "var(--bp-radius-lg",
          "description": "Border radius"
        },
        "--card-padding": {
          "default": "var(--bp-space-6",
          "description": "Inner padding"
        },
        "--card-shadow": {
          "default": "var(--bp-shadow-md",
          "description": "Box shadow"
        },
        "--card-border": {
          "default": "1px solid var(--bp-color-border",
          "description": "Border"
        }
      },
      "privateVars": [
        "--_bg",
        "--_radius",
        "--_padding",
        "--_shadow",
        "--_border"
      ],
      "variants": [
        "bp-card--horizontal",
        "bp-card--interactive"
      ],
      "stateAttrs": []
    },
    {
      "name": "carousel",
      "title": "Carousel",
      "description": "CSS scroll-snap carousel — no JavaScript required for basic scrolling.",
      "html": null,
      "containerQuery": true,
      "publicTokens": {
        "--carousel-gap": {
          "default": "var(--bp-space-4",
          "description": "Gap between slides"
        },
        "--carousel-slide-min": {
          "default": "100%",
          "description": "Minimum slide width (default: 100%)"
        },
        "--carousel-radius": {
          "default": "var(--bp-radius-lg",
          "description": "Slide border radius"
        },
        "--carousel-slide-bg": {
          "default": "transparent",
          "description": "Slide background (default: transparent)"
        }
      },
      "privateVars": [
        "--_gap",
        "--_slide-min",
        "--_radius",
        "--_bg",
        "--_padding",
        "--_height"
      ],
      "variants": [
        "bp-carousel--multi",
        "bp-carousel--peek"
      ],
      "stateAttrs": [
        "aria-current='true'"
      ]
    },
    {
      "name": "checkbox",
      "title": "Checkbox",
      "description": "Styled native checkbox with label wrapping, indeterminate support, error state, and group layout — built on the native `<input type=\"checkbox\">` element.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {
        "--checkbox-size": {
          "default": "1.125rem",
          "description": "Control box width/height"
        },
        "--checkbox-radius": {
          "default": "var(--bp-radius-sm",
          "description": "Control border radius"
        },
        "--checkbox-border": {
          "default": "1px solid var(--bp-color-border",
          "description": "Unchecked border"
        },
        "--checkbox-bg": {
          "default": "var(--bp-color-bg-elevated",
          "description": "Unchecked background"
        },
        "--checkbox-color": {
          "default": "var(--bp-primary",
          "description": "Checked/indeterminate fill color"
        },
        "--checkbox-check-color": {
          "default": "#fff",
          "description": "Checkmark/dash color"
        },
        "--checkbox-gap": {
          "default": "var(--bp-space-2",
          "description": "Control-to-label gap"
        },
        "--checkbox-label-color": {
          "default": "var(--bp-color-text",
          "description": "Label text color"
        },
        "--checkbox-error-color": {
          "default": "var(--bp-color-error",
          "description": "Error border/text color"
        },
        "--checkbox-group-gap": {
          "default": "var(--bp-space-3",
          "description": "Stacked group gap"
        },
        "--checkbox-group-inline-gap": {
          "default": "var(--bp-space-4",
          "description": "Inline group gap"
        }
      },
      "privateVars": [
        "--_size",
        "--_radius",
        "--_border",
        "--_bg",
        "--_color",
        "--_check-color",
        "--_gap",
        "--_label-color"
      ],
      "variants": [],
      "stateAttrs": [
        "aria-invalid='true'"
      ]
    },
    {
      "name": "datepicker",
      "title": "Date Picker",
      "description": "Styled native `<input type=\"date\">` — browser calendar popup, zero JavaScript, full keyboard and screen reader support out of the box.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {},
      "privateVars": [
        "--_border",
        "--_radius",
        "--_bg",
        "--_color",
        "--_accent",
        "--_padding",
        "--_height"
      ],
      "variants": [],
      "stateAttrs": []
    },
    {
      "name": "dropdown",
      "title": "Dropdown Menu",
      "description": "Accessible menu anchored to a trigger — CSS for appearance, a small Web Component for keyboard navigation and focus management.",
      "html": "<bp-dropdown class=\"bp-dropdown\">\n  <button class=\"bp-btn bp-dropdown__trigger\">Options ▾</button>\n  <ul class=\"bp-dropdown__panel\" role=\"menu\">\n    <li><button class=\"bp-dropdown__item\" role=\"menuitem\">Edit</button></li>\n    <li><button class=\"bp-dropdown__item\" role=\"menuitem\">Delete</button></li>\n  </ul>\n</bp-dropdown>",
      "containerQuery": false,
      "publicTokens": {},
      "privateVars": [
        "--_bg",
        "--_border",
        "--_radius",
        "--_shadow",
        "--_min-width",
        "--_item-gap"
      ],
      "variants": [],
      "stateAttrs": [
        "aria-disabled=\"true\""
      ]
    },
    {
      "name": "footer",
      "title": "Footer",
      "description": "Site footer with a responsive column grid, brand slot, and link groups.",
      "html": null,
      "containerQuery": true,
      "publicTokens": {
        "--footer-bg": {
          "default": "var(--bp-color-bg-subtle",
          "description": "Background color"
        },
        "--footer-color": {
          "default": "var(--bp-color-text-muted",
          "description": "Text color"
        },
        "--footer-border": {
          "default": "1px solid var(--bp-color-border",
          "description": "Top border"
        }
      },
      "privateVars": [
        "--_bg",
        "--_color",
        "--_border"
      ],
      "variants": [],
      "stateAttrs": []
    },
    {
      "name": "header",
      "title": "Header",
      "description": "Sticky site header with glassmorphism and scroll-state shadow.",
      "html": null,
      "containerQuery": true,
      "publicTokens": {
        "--header-bg": {
          "default": "var(--bp-color-bg-elevated",
          "description": "Background color / fallback"
        },
        "--header-height": {
          "default": "4rem",
          "description": "Header height"
        },
        "--header-z": {
          "default": "100",
          "description": "z-index"
        },
        "--header-shadow": {
          "default": "",
          "description": "Box shadow when scrolled"
        }
      },
      "privateVars": [
        "--_bg",
        "--_height",
        "--_z"
      ],
      "variants": [],
      "stateAttrs": []
    },
    {
      "name": "hero",
      "title": "Hero",
      "description": "Page hero section with CSS-only entrance animation via @starting-style.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {
        "--hero-bg": {
          "default": "var(--bp-color-bg",
          "description": "Background color or gradient"
        },
        "--hero-min-height": {
          "default": "80dvh",
          "description": "Minimum section height"
        },
        "--hero-align": {
          "default": "center",
          "description": "Content alignment: center | left | right"
        }
      },
      "privateVars": [
        "--_bg",
        "--_min-height",
        "--_align"
      ],
      "variants": [
        "bp-hero--center",
        "bp-hero--left",
        "bp-hero--with-image"
      ],
      "stateAttrs": []
    },
    {
      "name": "input",
      "title": "Input",
      "description": "Text inputs, textarea, and select — with label, hint, and error states.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {
        "--input-bg": {
          "default": "var(--bp-color-bg-elevated",
          "description": "Background color"
        },
        "--input-color": {
          "default": "var(--bp-color-text",
          "description": "Text color"
        },
        "--input-radius": {
          "default": "var(--bp-radius-md",
          "description": "Border radius"
        },
        "--input-padding": {
          "default": "var(--bp-space-3",
          "description": "Inner padding"
        },
        "--input-border": {
          "default": "1px solid var(--bp-color-border",
          "description": "Border"
        }
      },
      "privateVars": [
        "--_bg",
        "--_color",
        "--_radius",
        "--_padding",
        "--_border"
      ],
      "variants": [],
      "stateAttrs": [
        "aria-invalid='true'"
      ]
    },
    {
      "name": "modal",
      "title": "Modal",
      "description": "Native dialog element modal with CSS-only entrance animation and a blurred backdrop.",
      "html": null,
      "containerQuery": true,
      "publicTokens": {
        "--modal-bg": {
          "default": "var(--bp-color-bg-elevated",
          "description": "Modal background"
        },
        "--modal-radius": {
          "default": "var(--bp-radius-xl",
          "description": "Border radius"
        },
        "--modal-padding": {
          "default": "var(--bp-space-8",
          "description": "Inner padding"
        },
        "--modal-width": {
          "default": "32rem",
          "description": "Max width"
        }
      },
      "privateVars": [
        "--_bg",
        "--_radius",
        "--_padding",
        "--_width"
      ],
      "variants": [],
      "stateAttrs": []
    },
    {
      "name": "nav",
      "title": "Nav",
      "description": "Horizontal navigation with simple links, dropdowns, and a megamenu panel.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {
        "--nav-gap": {
          "default": "var(--bp-space-1",
          "description": "Gap between top-level items"
        },
        "--nav-link-color": {
          "default": "var(--bp-color-text",
          "description": "Text color of nav links"
        }
      },
      "privateVars": [
        "--_gap",
        "--_link-color"
      ],
      "variants": [],
      "stateAttrs": [
        "aria-current='page'"
      ]
    },
    {
      "name": "pagination",
      "title": "Pagination",
      "description": "Page navigation controls built with `<nav>` + `<ol>` — active state via `aria-current`, disabled via `aria-disabled`. No JavaScript required.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {},
      "privateVars": [
        "--_color",
        "--_color-active",
        "--_bg-active",
        "--_border",
        "--_radius",
        "--_size",
        "--_gap"
      ],
      "variants": [],
      "stateAttrs": [
        "aria-current",
        "aria-disabled=\"true\"",
        "aria-current=\"page\""
      ]
    },
    {
      "name": "popover",
      "title": "Popover",
      "description": "Floating panel anchored to a trigger — built on the native Popover API. No JavaScript required for show/hide.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {},
      "privateVars": [
        "--_bg",
        "--_border",
        "--_radius",
        "--_shadow",
        "--_padding",
        "--_width"
      ],
      "variants": [],
      "stateAttrs": []
    },
    {
      "name": "radio",
      "title": "Radio",
      "description": "Single-select control for mutually exclusive options — uses native `<input type=\"radio\">` inside a wrapping `<label>`.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {
        "--radio-size": {
          "default": "1.125rem",
          "description": "Circle diameter"
        },
        "--radio-dot-size": {
          "default": "0.5rem",
          "description": "Inner dot diameter"
        },
        "--radio-color": {
          "default": "var(--bp-primary",
          "description": "Checked ring and dot color"
        },
        "--radio-border": {
          "default": "1px solid var(--bp-color-border",
          "description": "Unchecked border"
        },
        "--radio-bg": {
          "default": "var(--bp-color-bg-elevated",
          "description": "Unchecked background"
        },
        "--radio-gap": {
          "default": "var(--bp-space-2",
          "description": "Control-to-label gap"
        },
        "--radio-group-gap": {
          "default": "var(--bp-space-3",
          "description": "Vertical group gap between items"
        },
        "--radio-group-gap-horizontal": {
          "default": "var(--bp-space-6",
          "description": "Horizontal group gap between items"
        },
        "--radio-label-color": {
          "default": "var(--bp-color-text",
          "description": "Label text color"
        },
        "--radio-error-color": {
          "default": "var(--bp-color-error",
          "description": "Error message color"
        }
      },
      "privateVars": [
        "--_size",
        "--_dot-size",
        "--_color",
        "--_border",
        "--_bg",
        "--_gap",
        "--_label-color",
        "--_group-gap",
        "--_error-color"
      ],
      "variants": [],
      "stateAttrs": [
        "aria-invalid='true'"
      ]
    },
    {
      "name": "skeleton",
      "title": "Skeleton / Spinner",
      "description": "Loading state placeholders — `.bp-skeleton` for content shapes with shimmer animation, `.bp-spinner` for indeterminate progress. Both respect `prefers-reduced-motion`.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {},
      "privateVars": [
        "--_color",
        "--_highlight",
        "--_radius",
        "--_duration",
        "--_color-active",
        "--_size",
        "--_width"
      ],
      "variants": [
        "bp-skeleton--text",
        "bp-skeleton--heading",
        "bp-skeleton--circle",
        "bp-skeleton--rect"
      ],
      "stateAttrs": []
    },
    {
      "name": "table",
      "title": "Table",
      "description": "Data table with sortable columns — CSS for appearance, a small Web Component for client-side sort. Scrollable on small viewports.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {},
      "privateVars": [
        "--_border",
        "--_radius",
        "--_bg",
        "--_bg-alt",
        "--_bg-head",
        "--_sort-color",
        "--_padding"
      ],
      "variants": [],
      "stateAttrs": [
        "aria-sort",
        "aria-sort=\"ascending\"",
        "aria-sort=\"descending\"",
        "aria-selected=\"true\""
      ]
    },
    {
      "name": "tabs",
      "title": "Tabs",
      "description": "Accessible tabs component — CSS-driven visuals, minimal JS for state and keyboard navigation.",
      "html": null,
      "containerQuery": true,
      "publicTokens": {
        "--tabs-accent": {
          "default": "var(--bp-primary",
          "description": "Active tab underline / left-border color"
        },
        "--tabs-border": {
          "default": "1px solid var(--bp-color-border",
          "description": "Tab list bottom border"
        },
        "--tabs-gap": {
          "default": "var(--bp-space-2",
          "description": "Space between tab buttons"
        }
      },
      "privateVars": [
        "--_accent",
        "--_border",
        "--_gap"
      ],
      "variants": [],
      "stateAttrs": [
        "aria-selected='true'"
      ]
    },
    {
      "name": "theme",
      "title": "theme",
      "description": "",
      "html": null,
      "containerQuery": false,
      "publicTokens": {},
      "privateVars": [
        "--_theme-duration",
        "--_theme-ease"
      ],
      "variants": [],
      "stateAttrs": []
    },
    {
      "name": "toast",
      "title": "Toast",
      "description": "Transient feedback notifications — semantic variants, auto-dismiss, optional action, WCAG AA.",
      "html": null,
      "containerQuery": true,
      "publicTokens": {
        "--toast-bg": {
          "default": "var(--bp-color-bg-elevated",
          "description": "Background override"
        },
        "--toast-color": {
          "default": "var(--bp-color-text",
          "description": "Text color override"
        },
        "--toast-border": {
          "default": "transparent",
          "description": "Border color override (default: transparent)"
        },
        "--toast-width": {
          "default": "22rem",
          "description": "Max width (set on region)"
        },
        "--toast-radius": {
          "default": "var(--bp-radius-lg",
          "description": "Border radius"
        }
      },
      "privateVars": [
        "--_bg",
        "--_color",
        "--_radius",
        "--_border"
      ],
      "variants": [
        "bp-toast--success",
        "bp-toast--error",
        "bp-toast--warning",
        "bp-toast--info"
      ],
      "stateAttrs": []
    },
    {
      "name": "toggle",
      "title": "Toggle",
      "description": "On/off switch for boolean settings — a styled checkbox with role=\"switch\" using native HTML and CSS only.",
      "html": null,
      "containerQuery": false,
      "publicTokens": {
        "--toggle-track-bg": {
          "default": "var(--bp-color-border",
          "description": "Unchecked track color"
        },
        "--toggle-track-bg-checked": {
          "default": "var(--bp-primary",
          "description": "Checked track color"
        },
        "--toggle-track-radius": {
          "default": "var(--bp-radius-full",
          "description": "Track border radius"
        },
        "--toggle-track-width": {
          "default": "2.75rem",
          "description": "Track width"
        },
        "--toggle-track-height": {
          "default": "1.5rem",
          "description": "Track height"
        },
        "--toggle-thumb-bg": {
          "default": "#fff",
          "description": "Thumb fill color"
        },
        "--toggle-thumb-size": {
          "default": "1.125rem",
          "description": "Thumb diameter"
        },
        "--toggle-thumb-shadow": {
          "default": "var(--bp-shadow-sm",
          "description": "Thumb drop shadow"
        },
        "--toggle-duration": {
          "default": "var(--bp-duration-fast",
          "description": "Transition duration"
        },
        "--toggle-label-color": {
          "default": "var(--bp-color-text",
          "description": "Label text color"
        },
        "--toggle-label-gap": {
          "default": "var(--bp-space-3",
          "description": "Gap between track and label"
        },
        "--toggle-disabled-opacity": {
          "default": "0.45",
          "description": "Opacity when disabled"
        }
      },
      "privateVars": [
        "--_track-bg",
        "--_track-bg-checked",
        "--_track-radius",
        "--_track-width",
        "--_track-height",
        "--_thumb-bg",
        "--_thumb-size",
        "--_thumb-shadow",
        "--_duration",
        "--_label-color",
        "--_label-gap",
        "--_disabled-opacity"
      ],
      "variants": [
        "bp-toggle--sm",
        "bp-toggle--lg"
      ],
      "stateAttrs": []
    },
    {
      "name": "tooltip",
      "title": "Tooltip",
      "description": "Contextual label that appears on hover and focus — CSS-only, four placement variants, RTL-aware. No JavaScript required.",
      "html": "<span class=\"bp-tooltip-wrap\">\n  <button aria-describedby=\"tip-save\">Save</button>\n  <span id=\"tip-save\" class=\"bp-tooltip\" role=\"tooltip\">Ctrl+S</span>\n</span>",
      "containerQuery": false,
      "publicTokens": {},
      "privateVars": [
        "--_bg",
        "--_color",
        "--_radius",
        "--_size",
        "--_padding",
        "--_delay",
        "--_offset"
      ],
      "variants": [],
      "stateAttrs": []
    }
  ],
  "examples": []
}