@jasonshimmy/custom-elements-runtime 3.3.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +28 -7
  2. package/dist/css-utils-Bn-dO44e.js +203 -0
  3. package/dist/{css-utils-CC43BbEy.js.map → css-utils-Bn-dO44e.js.map} +1 -1
  4. package/dist/{css-utils-CC43BbEy.js → css-utils-CFeP8SK1.cjs} +5 -71
  5. package/dist/{css-utils-mgjmH8qX.cjs.map → css-utils-CFeP8SK1.cjs.map} +1 -1
  6. package/dist/custom-elements-runtime.cjs.js +3 -4
  7. package/dist/custom-elements-runtime.cjs.js.map +1 -1
  8. package/dist/custom-elements-runtime.colors.cjs.js +1 -2
  9. package/dist/custom-elements-runtime.colors.cjs.js.map +1 -1
  10. package/dist/custom-elements-runtime.colors.es.js +277 -277
  11. package/dist/custom-elements-runtime.colors.es.js.map +1 -1
  12. package/dist/custom-elements-runtime.directive-enhancements.cjs.js +1 -2
  13. package/dist/custom-elements-runtime.directive-enhancements.cjs.js.map +1 -1
  14. package/dist/custom-elements-runtime.directive-enhancements.es.js +106 -122
  15. package/dist/custom-elements-runtime.directive-enhancements.es.js.map +1 -1
  16. package/dist/custom-elements-runtime.directives.cjs.js +1 -2
  17. package/dist/custom-elements-runtime.directives.cjs.js.map +1 -1
  18. package/dist/custom-elements-runtime.directives.es.js +60 -65
  19. package/dist/custom-elements-runtime.directives.es.js.map +1 -1
  20. package/dist/custom-elements-runtime.dom-jit-css.cjs.js +1 -7
  21. package/dist/custom-elements-runtime.dom-jit-css.cjs.js.map +1 -1
  22. package/dist/custom-elements-runtime.dom-jit-css.es.js +103 -115
  23. package/dist/custom-elements-runtime.dom-jit-css.es.js.map +1 -1
  24. package/dist/custom-elements-runtime.es.js +206 -253
  25. package/dist/custom-elements-runtime.es.js.map +1 -1
  26. package/dist/custom-elements-runtime.event-bus.cjs.js +1 -2
  27. package/dist/custom-elements-runtime.event-bus.cjs.js.map +1 -1
  28. package/dist/custom-elements-runtime.event-bus.es.js +102 -108
  29. package/dist/custom-elements-runtime.event-bus.es.js.map +1 -1
  30. package/dist/custom-elements-runtime.jit-css.cjs.js +1 -2
  31. package/dist/custom-elements-runtime.jit-css.cjs.js.map +1 -1
  32. package/dist/custom-elements-runtime.jit-css.es.js +14 -32
  33. package/dist/custom-elements-runtime.jit-css.es.js.map +1 -1
  34. package/dist/custom-elements-runtime.router.cjs.js +20 -21
  35. package/dist/custom-elements-runtime.router.cjs.js.map +1 -1
  36. package/dist/custom-elements-runtime.router.es.js +866 -926
  37. package/dist/custom-elements-runtime.router.es.js.map +1 -1
  38. package/dist/custom-elements-runtime.ssr-middleware.cjs.js +3 -4
  39. package/dist/custom-elements-runtime.ssr-middleware.cjs.js.map +1 -1
  40. package/dist/custom-elements-runtime.ssr-middleware.es.js +67 -73
  41. package/dist/custom-elements-runtime.ssr-middleware.es.js.map +1 -1
  42. package/dist/custom-elements-runtime.ssr.cjs.js +1 -1
  43. package/dist/custom-elements-runtime.ssr.es.js +3 -13
  44. package/dist/custom-elements-runtime.store.cjs.js +1 -2
  45. package/dist/custom-elements-runtime.store.cjs.js.map +1 -1
  46. package/dist/custom-elements-runtime.store.es.js +32 -33
  47. package/dist/custom-elements-runtime.store.es.js.map +1 -1
  48. package/dist/custom-elements-runtime.transitions.cjs.js +1 -2
  49. package/dist/custom-elements-runtime.transitions.cjs.js.map +1 -1
  50. package/dist/custom-elements-runtime.transitions.es.js +200 -210
  51. package/dist/custom-elements-runtime.transitions.es.js.map +1 -1
  52. package/dist/custom-elements-runtime.vite-plugin.cjs.js +4 -2
  53. package/dist/custom-elements-runtime.vite-plugin.cjs.js.map +1 -1
  54. package/dist/custom-elements-runtime.vite-plugin.es.js +155 -78
  55. package/dist/custom-elements-runtime.vite-plugin.es.js.map +1 -1
  56. package/dist/helpers-DcEpRwq5.cjs +5 -0
  57. package/dist/helpers-DcEpRwq5.cjs.map +1 -0
  58. package/dist/helpers-tJgb4Qve.js +693 -0
  59. package/dist/helpers-tJgb4Qve.js.map +1 -0
  60. package/dist/hooks-CEUnvtsA.js +407 -0
  61. package/dist/hooks-CEUnvtsA.js.map +1 -0
  62. package/dist/hooks-CNfugc95.cjs +2 -0
  63. package/dist/hooks-CNfugc95.cjs.map +1 -0
  64. package/dist/logger-DIJ0UH3R.js +36 -0
  65. package/dist/{logger-L25axmB-.js.map → logger-DIJ0UH3R.js.map} +1 -1
  66. package/dist/logger-Dkht1dCX.cjs +2 -0
  67. package/dist/{logger-BYIN7ysT.cjs.map → logger-Dkht1dCX.cjs.map} +1 -1
  68. package/dist/namespace-helpers-CIUkG8Mn.js +56 -0
  69. package/dist/{namespace-helpers-BucDdgz_.js.map → namespace-helpers-CIUkG8Mn.js.map} +1 -1
  70. package/dist/namespace-helpers-yYIb7INq.cjs +2 -0
  71. package/dist/{namespace-helpers-Bf7rm9JV.cjs.map → namespace-helpers-yYIb7INq.cjs.map} +1 -1
  72. package/dist/runtime/tag-utils.d.ts +11 -0
  73. package/dist/ssr-BpYy9XlW.js +170 -0
  74. package/dist/{ssr-B3lxl1vr.js.map → ssr-BpYy9XlW.js.map} +1 -1
  75. package/dist/ssr-CFabTOyi.cjs +4 -0
  76. package/dist/{ssr-DtD9e5iA.cjs.map → ssr-CFabTOyi.cjs.map} +1 -1
  77. package/dist/ssr.d.ts +33 -0
  78. package/dist/style-A8l3aQ52.cjs +55 -0
  79. package/dist/{style-Bjn8zDiZ.cjs.map → style-A8l3aQ52.cjs.map} +1 -1
  80. package/dist/style-DSSoCbC9.js +1877 -0
  81. package/dist/{style-DuDoj_xK.js.map → style-DSSoCbC9.js.map} +1 -1
  82. package/dist/tag-utils-CoSXTr1F.js +10 -0
  83. package/dist/tag-utils-CoSXTr1F.js.map +1 -0
  84. package/dist/tag-utils-XJ3dkcPQ.cjs +2 -0
  85. package/dist/tag-utils-XJ3dkcPQ.cjs.map +1 -0
  86. package/dist/template-compiler-B4B_jAPN.cjs +19 -0
  87. package/dist/{template-compiler-BB4JJdqk.cjs.map → template-compiler-B4B_jAPN.cjs.map} +1 -1
  88. package/dist/template-compiler-C3h8_vbE.js +3044 -0
  89. package/dist/{template-compiler-Cs5axmn4.js.map → template-compiler-C3h8_vbE.js.map} +1 -1
  90. package/dist/vite-plugin.d.ts +96 -2
  91. package/package.json +8 -8
  92. package/dist/css-utils-mgjmH8qX.cjs +0 -577
  93. package/dist/hooks-_3xP4G2N.js +0 -1189
  94. package/dist/hooks-_3xP4G2N.js.map +0 -1
  95. package/dist/hooks-fYQgZk2g.cjs +0 -7
  96. package/dist/hooks-fYQgZk2g.cjs.map +0 -1
  97. package/dist/logger-BYIN7ysT.cjs +0 -3
  98. package/dist/logger-L25axmB-.js +0 -41
  99. package/dist/namespace-helpers-Bf7rm9JV.cjs +0 -3
  100. package/dist/namespace-helpers-BucDdgz_.js +0 -61
  101. package/dist/ssr-B3lxl1vr.js +0 -165
  102. package/dist/ssr-DtD9e5iA.cjs +0 -5
  103. package/dist/style-Bjn8zDiZ.cjs +0 -56
  104. package/dist/style-DuDoj_xK.js +0 -1972
  105. package/dist/template-compiler-BB4JJdqk.cjs +0 -23
  106. package/dist/template-compiler-Cs5axmn4.js +0 -3236
package/README.md CHANGED
@@ -7,6 +7,7 @@
7
7
  Build modern components with strict TypeScript, zero dependencies, and a clean functional API. Designed for speed, standards compliance, and productivity.
8
8
 
9
9
  - Try it on [Codepen.io](https://codepen.io/jshimkoski/pen/JoYmpxm).
10
+ - Build SPA, SSR, and SSG apps with the [CER App Framework](https://github.com/jshimkoski/vite-plugin-cer-app).
10
11
  - Check out the [Material Design 3 Components](https://github.com/jshimkoski/cer-material) built with this runtime.
11
12
  - Play a game of [Solatro](https://solatro.netlify.app) built with this runtime in 100% Web Components.
12
13
  - Learn more about the author at [jasonshimmy.com](https://jasonshimmy.com).
@@ -380,10 +381,11 @@ jit.destroy(); // tear down
380
381
 
381
382
  **Package:** `@jasonshimmy/custom-elements-runtime/vite-plugin`
382
383
 
383
- Build-time static analysis plugin that emits pre-generated CSS, eliminating runtime parsing cost entirely. Two exports are available:
384
+ Build-time plugins for JIT CSS, SSR config, and per-page component code splitting. Three exports are available:
384
385
 
385
386
  - **`cerPlugin`** — All-in-one: JIT CSS + SSR configuration. Recommended for SSR apps.
386
387
  - **`cerJITCSS`** — JIT CSS only.
388
+ - **`cerComponentImports`** — Per-page component code splitting: injects static `import` statements for custom elements used in `html\`` templates so Rollup can chunk components per page.
387
389
 
388
390
  ```ts
389
391
  // vite.config.ts — SSR app (recommended)
@@ -414,11 +416,29 @@ export default defineConfig({
414
416
  });
415
417
  ```
416
418
 
417
- | Export | Description |
418
- | ----------- | --------------------------------------------------------------------------------------------- |
419
- | `cerPlugin` | Combined plugin: JIT CSS + SSR config (`virtual:cer-ssr-config`). Returns a `Plugin[]` array. |
420
- | `cerJITCSS` | JIT CSS-only Vite plugin that scans source files at build time and emits pre-generated CSS. |
421
- | **Types** | `CerPluginOptions`, `CerSSROptions`, `CerJITCSSPluginOptions` |
419
+ ```ts
420
+ // vite.config.ts per-page component code splitting
421
+ import { cerComponentImports } from '@jasonshimmy/custom-elements-runtime/vite-plugin';
422
+
423
+ export default defineConfig({
424
+ plugins: [
425
+ cerComponentImports({
426
+ componentsDir: '/absolute/path/to/app/components',
427
+ appRoot: '/absolute/path/to/app',
428
+ }),
429
+ ],
430
+ });
431
+ ```
432
+
433
+ | Export | Description |
434
+ | --------------------- | ------------------------------------------------------------------------------------------------------------ |
435
+ | `cerPlugin` | Combined plugin: JIT CSS + SSR config (`virtual:cer-ssr-config`). Returns a `Plugin[]` array. |
436
+ | `cerJITCSS` | JIT CSS-only Vite plugin that scans source files at build time and emits pre-generated CSS. |
437
+ | `cerComponentImports` | Transform plugin that injects per-file static imports for custom elements, enabling per-page code splitting. |
438
+ | `resolveTagName` | Normalize a component name to its kebab-case custom-element tag name (prefixes with `cer-` if no hyphen). |
439
+ | `extractTemplateTagNames` | Extract hyphenated custom-element tag names from a source string's `html\`` templates. |
440
+ | `extractComponentRegistrations` | Extract resolved tag names from all `component('name', …)` calls in a source string. |
441
+ | **Types** | `CerPluginOptions`, `CerSSROptions`, `CerJITCSSPluginOptions`, `CerComponentImportsOptions` |
422
442
 
423
443
  ---
424
444
 
@@ -452,7 +472,8 @@ Explore the complete documentation for every runtime feature:
452
472
 
453
473
  - [🎨 JIT CSS](./docs/jit-css.md) - On-demand utility-first styling system (opt-in architecture, all utilities, `useJITCSS`, `useDesignTokens`, `useGlobalStyle`, `cls`)
454
474
  - [⚡ DOM JIT CSS](./docs/dom-jit-css.md) - Runtime DOM scanner for non-Shadow DOM contexts (React, Svelte, Vue, plain HTML)
455
- - [🔧 Vite Plugin](./docs/vite-plugin.md) - `cerPlugin` (JIT CSS + SSR config) and `cerJITCSS` (JIT CSS only) build-time plugins
475
+ - [🔧 Vite Plugin](./docs/vite-plugin.md) - `cerPlugin` (JIT CSS + SSR config), `cerJITCSS` (JIT CSS only), and `cerComponentImports` (per-page code splitting) build-time plugins
476
+ - [🔌 cerComponentImports](./docs/vite-plugin-component-imports.md) - Per-page component code splitting: auto-inject imports from `html\`` templates
456
477
  - [📏 Space Utilities](./docs/space-utilities.md) - Tailwind-style `space-x-*` and `space-y-*` spacing utilities
457
478
  - [📝 Prose Typography](./docs/prose.md) - Beautiful typography for long-form content
458
479
  - [🎨 Colors](./docs/colors.md) - Extended Tailwind-compatible color palette (`/css/colors` subpath)
@@ -0,0 +1,203 @@
1
+ //#region src/lib/css/variables.css?raw
2
+ var e = "/*\n * Custom Elements Variables CSS\n * Default fallback values\n * \n * Define your overrides in the document's :root to have them\n * inherited into all Shadow DOM components:\n * \n * <style>\n * :root {\n * --cer-color-primary-500: #8b5cf6;\n * --cer-font-sans: 'Inter', sans-serif;\n * }\n * </style>\n * \n * Note: Only :root is used here (not :host) so document-level\n * overrides will inherit into Shadow DOM and take precedence.\n */\n\n:root {\n /* Font families (match runtime defaults in src/lib/runtime/style.ts) */\n --cer-font-sans:\n ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto,\n 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;\n --cer-font-serif: ui-serif, Georgia, 'Times New Roman', Times, serif;\n --cer-font-mono:\n ui-monospace, 'SFMono-Regular', Menlo, Monaco, 'Roboto Mono', 'Courier New',\n monospace;\n\n /* Default outline style */\n --cer-outline-style: solid;\n\n /* Colors */\n --cer-color-transparent: transparent;\n --cer-color-current: currentColor;\n --cer-color-black: #000000;\n --cer-color-white: #ffffff;\n --cer-color-inherit: inherit;\n\n /* neutral */\n --cer-color-neutral-50: #fafafa;\n --cer-color-neutral-100: #f4f4f5;\n --cer-color-neutral-200: #e4e4e7;\n --cer-color-neutral-300: #d4d4d8;\n --cer-color-neutral-400: #9f9fa9;\n --cer-color-neutral-500: #71717b;\n --cer-color-neutral-600: #52525c;\n --cer-color-neutral-700: #3f3f46;\n --cer-color-neutral-800: #27272a;\n --cer-color-neutral-900: #18181b;\n --cer-color-neutral-950: #09090b;\n\n /* primary */\n --cer-color-primary-50: #eff6ff;\n --cer-color-primary-100: #dbeafe;\n --cer-color-primary-200: #bfdbfe;\n --cer-color-primary-300: #93c5fd;\n --cer-color-primary-400: #60a5fa;\n --cer-color-primary-500: #3b82f6;\n --cer-color-primary-600: #2563eb;\n --cer-color-primary-700: #1d4ed8;\n --cer-color-primary-800: #1e40af;\n --cer-color-primary-900: #1e3a8a;\n --cer-color-primary-950: #172554;\n\n /* secondary */\n --cer-color-secondary-50: #eef2ff;\n --cer-color-secondary-100: #e0e7ff;\n --cer-color-secondary-200: #c7d2fe;\n --cer-color-secondary-300: #a5b4fc;\n --cer-color-secondary-400: #818cf8;\n --cer-color-secondary-500: #6366f1;\n --cer-color-secondary-600: #4f46e5;\n --cer-color-secondary-700: #4338ca;\n --cer-color-secondary-800: #3730a3;\n --cer-color-secondary-900: #312e81;\n --cer-color-secondary-950: #1e1b4b;\n\n /* success */\n --cer-color-success-50: #f0fdf4;\n --cer-color-success-100: #dcfce7;\n --cer-color-success-200: #bbf7d0;\n --cer-color-success-300: #86efac;\n --cer-color-success-400: #4ade80;\n --cer-color-success-500: #22c55e;\n --cer-color-success-600: #16a34a;\n --cer-color-success-700: #15803d;\n --cer-color-success-800: #166534;\n --cer-color-success-900: #14532d;\n --cer-color-success-950: #052e16;\n\n /* info */\n --cer-color-info-50: #f0f9ff;\n --cer-color-info-100: #e0f2fe;\n --cer-color-info-200: #bae6fd;\n --cer-color-info-300: #7dd3fc;\n --cer-color-info-400: #38bdf8;\n --cer-color-info-500: #0ea5e9;\n --cer-color-info-600: #0284c7;\n --cer-color-info-700: #0369a1;\n --cer-color-info-800: #075985;\n --cer-color-info-900: #0c4a6e;\n --cer-color-info-950: #082f49;\n\n /* warning */\n --cer-color-warning-50: #fffbeb;\n --cer-color-warning-100: #fef3c7;\n --cer-color-warning-200: #fde68a;\n --cer-color-warning-300: #fcd34d;\n --cer-color-warning-400: #fbbf24;\n --cer-color-warning-500: #f59e0b;\n --cer-color-warning-600: #d97706;\n --cer-color-warning-700: #b45309;\n --cer-color-warning-800: #92400e;\n --cer-color-warning-900: #78350f;\n --cer-color-warning-950: #451a03;\n\n /* error */\n --cer-color-error-50: #fef2f2;\n --cer-color-error-100: #fee2e2;\n --cer-color-error-200: #fecaca;\n --cer-color-error-300: #fca5a5;\n --cer-color-error-400: #f87171;\n --cer-color-error-500: #ef4444;\n --cer-color-error-600: #dc2626;\n --cer-color-error-700: #b91c1c;\n --cer-color-error-800: #991b1b;\n --cer-color-error-900: #7f1d1d;\n --cer-color-error-950: #450a0a;\n\n /* Extended Tailwind palette — override to theme these colors */\n /* slate */\n --cer-color-slate-50: #f8fafc;\n --cer-color-slate-100: #f1f5f9;\n --cer-color-slate-200: #e2e8f0;\n --cer-color-slate-300: #cbd5e1;\n --cer-color-slate-400: #94a3b8;\n --cer-color-slate-500: #64748b;\n --cer-color-slate-600: #475569;\n --cer-color-slate-700: #334155;\n --cer-color-slate-800: #1e293b;\n --cer-color-slate-900: #0f172a;\n --cer-color-slate-950: #020617;\n /* gray */\n --cer-color-gray-50: #f9fafb;\n --cer-color-gray-100: #f3f4f6;\n --cer-color-gray-200: #e5e7eb;\n --cer-color-gray-300: #d1d5db;\n --cer-color-gray-400: #9ca3af;\n --cer-color-gray-500: #6b7280;\n --cer-color-gray-600: #4b5563;\n --cer-color-gray-700: #374151;\n --cer-color-gray-800: #1f2937;\n --cer-color-gray-900: #111827;\n --cer-color-gray-950: #030712;\n /* zinc */\n --cer-color-zinc-50: #fafafa;\n --cer-color-zinc-100: #f4f4f5;\n --cer-color-zinc-200: #e4e4e7;\n --cer-color-zinc-300: #d4d4d8;\n --cer-color-zinc-400: #a1a1aa;\n --cer-color-zinc-500: #71717a;\n --cer-color-zinc-600: #52525b;\n --cer-color-zinc-700: #3f3f46;\n --cer-color-zinc-800: #27272a;\n --cer-color-zinc-900: #18181b;\n --cer-color-zinc-950: #09090b;\n /* stone */\n --cer-color-stone-50: #fafaf9;\n --cer-color-stone-100: #f5f5f4;\n --cer-color-stone-200: #e7e5e4;\n --cer-color-stone-300: #d6d3d1;\n --cer-color-stone-400: #a8a29e;\n --cer-color-stone-500: #78716c;\n --cer-color-stone-600: #57534e;\n --cer-color-stone-700: #44403c;\n --cer-color-stone-800: #292524;\n --cer-color-stone-900: #1c1917;\n --cer-color-stone-950: #0c0a09;\n /* red */\n --cer-color-red-50: #fef2f2;\n --cer-color-red-100: #fee2e2;\n --cer-color-red-200: #fecaca;\n --cer-color-red-300: #fca5a5;\n --cer-color-red-400: #f87171;\n --cer-color-red-500: #ef4444;\n --cer-color-red-600: #dc2626;\n --cer-color-red-700: #b91c1c;\n --cer-color-red-800: #991b1b;\n --cer-color-red-900: #7f1d1d;\n --cer-color-red-950: #450a0a;\n /* orange */\n --cer-color-orange-50: #fff7ed;\n --cer-color-orange-100: #ffedd5;\n --cer-color-orange-200: #fed7aa;\n --cer-color-orange-300: #fdba74;\n --cer-color-orange-400: #fb923c;\n --cer-color-orange-500: #f97316;\n --cer-color-orange-600: #ea580c;\n --cer-color-orange-700: #c2410c;\n --cer-color-orange-800: #9a3412;\n --cer-color-orange-900: #7c2d12;\n --cer-color-orange-950: #431407;\n /* amber */\n --cer-color-amber-50: #fffbeb;\n --cer-color-amber-100: #fef3c7;\n --cer-color-amber-200: #fde68a;\n --cer-color-amber-300: #fcd34d;\n --cer-color-amber-400: #fbbf24;\n --cer-color-amber-500: #f59e0b;\n --cer-color-amber-600: #d97706;\n --cer-color-amber-700: #b45309;\n --cer-color-amber-800: #92400e;\n --cer-color-amber-900: #78350f;\n --cer-color-amber-950: #451a03;\n /* yellow */\n --cer-color-yellow-50: #fefce8;\n --cer-color-yellow-100: #fef9c3;\n --cer-color-yellow-200: #fef08a;\n --cer-color-yellow-300: #fde047;\n --cer-color-yellow-400: #facc15;\n --cer-color-yellow-500: #eab308;\n --cer-color-yellow-600: #ca8a04;\n --cer-color-yellow-700: #a16207;\n --cer-color-yellow-800: #854d0e;\n --cer-color-yellow-900: #713f12;\n --cer-color-yellow-950: #422006;\n /* lime */\n --cer-color-lime-50: #f7fee7;\n --cer-color-lime-100: #ecfccb;\n --cer-color-lime-200: #d9f99d;\n --cer-color-lime-300: #bef264;\n --cer-color-lime-400: #a3e635;\n --cer-color-lime-500: #84cc16;\n --cer-color-lime-600: #65a30d;\n --cer-color-lime-700: #4d7c0f;\n --cer-color-lime-800: #3f6212;\n --cer-color-lime-900: #365314;\n --cer-color-lime-950: #1a2e05;\n /* green */\n --cer-color-green-50: #f0fdf4;\n --cer-color-green-100: #dcfce7;\n --cer-color-green-200: #bbf7d0;\n --cer-color-green-300: #86efac;\n --cer-color-green-400: #4ade80;\n --cer-color-green-500: #22c55e;\n --cer-color-green-600: #16a34a;\n --cer-color-green-700: #15803d;\n --cer-color-green-800: #166534;\n --cer-color-green-900: #14532d;\n --cer-color-green-950: #052e16;\n /* emerald */\n --cer-color-emerald-50: #ecfdf5;\n --cer-color-emerald-100: #d1fae5;\n --cer-color-emerald-200: #a7f3d0;\n --cer-color-emerald-300: #6ee7b7;\n --cer-color-emerald-400: #34d399;\n --cer-color-emerald-500: #10b981;\n --cer-color-emerald-600: #059669;\n --cer-color-emerald-700: #047857;\n --cer-color-emerald-800: #065f46;\n --cer-color-emerald-900: #064e3b;\n --cer-color-emerald-950: #022c22;\n /* teal */\n --cer-color-teal-50: #f0fdfa;\n --cer-color-teal-100: #ccfbf1;\n --cer-color-teal-200: #99f6e4;\n --cer-color-teal-300: #5eead4;\n --cer-color-teal-400: #2dd4bf;\n --cer-color-teal-500: #14b8a6;\n --cer-color-teal-600: #0d9488;\n --cer-color-teal-700: #0f766e;\n --cer-color-teal-800: #115e59;\n --cer-color-teal-900: #134e4a;\n --cer-color-teal-950: #042f2e;\n /* cyan */\n --cer-color-cyan-50: #ecfeff;\n --cer-color-cyan-100: #cffafe;\n --cer-color-cyan-200: #a5f3fc;\n --cer-color-cyan-300: #67e8f9;\n --cer-color-cyan-400: #22d3ee;\n --cer-color-cyan-500: #06b6d4;\n --cer-color-cyan-600: #0891b2;\n --cer-color-cyan-700: #0e7490;\n --cer-color-cyan-800: #155e75;\n --cer-color-cyan-900: #164e63;\n --cer-color-cyan-950: #083344;\n /* sky */\n --cer-color-sky-50: #f0f9ff;\n --cer-color-sky-100: #e0f2fe;\n --cer-color-sky-200: #bae6fd;\n --cer-color-sky-300: #7dd3fc;\n --cer-color-sky-400: #38bdf8;\n --cer-color-sky-500: #0ea5e9;\n --cer-color-sky-600: #0284c7;\n --cer-color-sky-700: #0369a1;\n --cer-color-sky-800: #075985;\n --cer-color-sky-900: #0c4a6e;\n --cer-color-sky-950: #082f49;\n /* blue */\n --cer-color-blue-50: #eff6ff;\n --cer-color-blue-100: #dbeafe;\n --cer-color-blue-200: #bfdbfe;\n --cer-color-blue-300: #93c5fd;\n --cer-color-blue-400: #60a5fa;\n --cer-color-blue-500: #3b82f6;\n --cer-color-blue-600: #2563eb;\n --cer-color-blue-700: #1d4ed8;\n --cer-color-blue-800: #1e40af;\n --cer-color-blue-900: #1e3a8a;\n --cer-color-blue-950: #172554;\n /* indigo */\n --cer-color-indigo-50: #eef2ff;\n --cer-color-indigo-100: #e0e7ff;\n --cer-color-indigo-200: #c7d2fe;\n --cer-color-indigo-300: #a5b4fc;\n --cer-color-indigo-400: #818cf8;\n --cer-color-indigo-500: #6366f1;\n --cer-color-indigo-600: #4f46e5;\n --cer-color-indigo-700: #4338ca;\n --cer-color-indigo-800: #3730a3;\n --cer-color-indigo-900: #312e81;\n --cer-color-indigo-950: #1e1b4b;\n /* violet */\n --cer-color-violet-50: #f5f3ff;\n --cer-color-violet-100: #ede9fe;\n --cer-color-violet-200: #ddd6fe;\n --cer-color-violet-300: #c4b5fd;\n --cer-color-violet-400: #a78bfa;\n --cer-color-violet-500: #8b5cf6;\n --cer-color-violet-600: #7c3aed;\n --cer-color-violet-700: #6d28d9;\n --cer-color-violet-800: #5b21b6;\n --cer-color-violet-900: #4c1d95;\n --cer-color-violet-950: #2e1065;\n /* purple */\n --cer-color-purple-50: #faf5ff;\n --cer-color-purple-100: #f3e8ff;\n --cer-color-purple-200: #e9d5ff;\n --cer-color-purple-300: #d8b4fe;\n --cer-color-purple-400: #c084fc;\n --cer-color-purple-500: #a855f7;\n --cer-color-purple-600: #9333ea;\n --cer-color-purple-700: #7e22ce;\n --cer-color-purple-800: #6b21a8;\n --cer-color-purple-900: #581c87;\n --cer-color-purple-950: #3b0764;\n /* fuchsia */\n --cer-color-fuchsia-50: #fdf4ff;\n --cer-color-fuchsia-100: #fae8ff;\n --cer-color-fuchsia-200: #f5d0fe;\n --cer-color-fuchsia-300: #f0abfc;\n --cer-color-fuchsia-400: #e879f9;\n --cer-color-fuchsia-500: #d946ef;\n --cer-color-fuchsia-600: #c026d3;\n --cer-color-fuchsia-700: #a21caf;\n --cer-color-fuchsia-800: #86198f;\n --cer-color-fuchsia-900: #701a75;\n --cer-color-fuchsia-950: #4a044e;\n /* pink */\n --cer-color-pink-50: #fdf2f8;\n --cer-color-pink-100: #fce7f3;\n --cer-color-pink-200: #fbcfe8;\n --cer-color-pink-300: #f9a8d4;\n --cer-color-pink-400: #f472b6;\n --cer-color-pink-500: #ec4899;\n --cer-color-pink-600: #db2777;\n --cer-color-pink-700: #be185d;\n --cer-color-pink-800: #9d174d;\n --cer-color-pink-900: #831843;\n --cer-color-pink-950: #500724;\n /* rose */\n --cer-color-rose-50: #fff1f2;\n --cer-color-rose-100: #ffe4e6;\n --cer-color-rose-200: #fecdd3;\n --cer-color-rose-300: #fda4af;\n --cer-color-rose-400: #fb7185;\n --cer-color-rose-500: #f43f5e;\n --cer-color-rose-600: #e11d48;\n --cer-color-rose-700: #be123c;\n --cer-color-rose-800: #9f1239;\n --cer-color-rose-900: #881337;\n --cer-color-rose-950: #4c0519;\n}\n\n/* @property registrations for CSS transition composability */\n@property --cer-rotate {\n syntax: '<angle>';\n initial-value: 0deg;\n inherits: false;\n}\n@property --cer-translate-x {\n syntax: '<length>';\n initial-value: 0px;\n inherits: false;\n}\n@property --cer-translate-y {\n syntax: '<length>';\n initial-value: 0px;\n inherits: false;\n}\n@property --cer-skew-x {\n syntax: '<angle>';\n initial-value: 0deg;\n inherits: false;\n}\n@property --cer-skew-y {\n syntax: '<angle>';\n initial-value: 0deg;\n inherits: false;\n}\n@property --cer-scale-x {\n syntax: '<number>';\n initial-value: 1;\n inherits: false;\n}\n@property --cer-scale-y {\n syntax: '<number>';\n initial-value: 1;\n inherits: false;\n}\n/* Filter composition variables (--cer-blur, --cer-brightness, etc.) intentionally\n omit @property registration because their \"no-op\" value is empty string (''),\n which is not a valid CSS initial-value. They compose correctly without Houdini. */\n@property --cer-opacity {\n syntax: '<number>';\n initial-value: 1;\n inherits: false;\n}\n";
3
+ //#endregion
4
+ //#region src/lib/runtime/css-utils.ts
5
+ function t(e, ...t) {
6
+ let n = "";
7
+ for (let r = 0; r < e.length; r++) n += e[r], r < t.length && (n += t[r]);
8
+ return n;
9
+ }
10
+ function n(e) {
11
+ return e.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\s+/g, " ").replace(/\s*([{}:;,>~])\s*/g, "$1").replace(/;}/g, "}").trim();
12
+ }
13
+ function r(e) {
14
+ return e.replace(/@charset\s+[^;]*;/gi, "").replace(/url\s*\(\s*['"]?javascript:[^)]*\)/gi, "").replace(/url\s*\(\s*['"]?data:[^)]*\)/gi, "").replace(/@import\s[^;{]*/gi, "").replace(/-moz-binding\s*:[^;]*/gi, "").replace(/\bbehavior\s*:[^;]*/gi, "").replace(/<script[\s\S]*?>[\s\S]*?<\/script>/gi, "").replace(/expression\s*\([^)]*\)/gi, "");
15
+ }
16
+ function i(e) {
17
+ if (typeof CSS < "u" && CSS.escape) return CSS.escape(e);
18
+ let t = String(e), n = t.length, r = "", i = 0;
19
+ for (; i < n;) {
20
+ let e = t.charAt(i), a = t.charCodeAt(i);
21
+ a === 0 ? r += "�" : a >= 1 && a <= 31 || a === 127 || i === 0 && a >= 48 && a <= 57 || i === 1 && a >= 48 && a <= 57 && t.charCodeAt(0) === 45 ? r += "\\" + a.toString(16) + " " : i === 0 && n === 1 && a === 45 ? r += "\\" + e : a >= 128 || a === 45 || a === 95 || a >= 48 && a <= 57 || a >= 65 && a <= 90 || a >= 97 && a <= 122 ? r += e : r += "\\" + e, i++;
22
+ }
23
+ return r;
24
+ }
25
+ function a(e) {
26
+ return "." + i(e);
27
+ }
28
+ function o(e) {
29
+ return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
30
+ }
31
+ var s = t`
32
+ ${e}
33
+ :host,
34
+ *,
35
+ ::before,
36
+ ::after {
37
+ all: isolate;
38
+ box-sizing: border-box;
39
+ border: 0 solid currentColor;
40
+ margin: 0;
41
+ padding: 0;
42
+ font: inherit;
43
+ vertical-align: baseline;
44
+ background: transparent;
45
+ color: inherit;
46
+ -webkit-tap-highlight-color: transparent;
47
+ /* Transform composition variables (reset per-element for composability) */
48
+ --cer-translate-x: 0px;
49
+ --cer-translate-y: 0px;
50
+ --cer-rotate: 0deg;
51
+ --cer-skew-x: 0deg;
52
+ --cer-skew-y: 0deg;
53
+ --cer-scale-x: 1;
54
+ --cer-scale-y: 1;
55
+ /* Ring variables */
56
+ --cer-ring-color: rgb(59 130 246 / 0.5);
57
+ /* Filter composition variables (empty = no-op in filter chain) */
58
+ --cer-blur: ;
59
+ --cer-brightness: ;
60
+ --cer-contrast: ;
61
+ --cer-grayscale: ;
62
+ --cer-hue-rotate: ;
63
+ --cer-invert: ;
64
+ --cer-saturate: ;
65
+ --cer-sepia: ;
66
+ --cer-drop-shadow: ;
67
+ --cer-backdrop-blur: ;
68
+ --cer-backdrop-brightness: ;
69
+ --cer-backdrop-contrast: ;
70
+ --cer-backdrop-grayscale: ;
71
+ --cer-backdrop-hue-rotate: ;
72
+ --cer-backdrop-invert: ;
73
+ --cer-backdrop-saturate: ;
74
+ --cer-backdrop-sepia: ;
75
+ }
76
+ :host {
77
+ display: contents;
78
+ font: 16px/1.5 var(--cer-font-sans, ui-sans-serif, system-ui, sans-serif);
79
+ /* Default CE line-height variable so leading-* can reliably override */
80
+ --cer-line-height: 1.5;
81
+ -webkit-text-size-adjust: 100%;
82
+ text-size-adjust: 100%;
83
+ -webkit-font-smoothing: antialiased;
84
+ -moz-osx-font-smoothing: grayscale;
85
+ /* Default gradient variables to avoid undefined var() usage in generated utilities */
86
+ --cer-gradient-from-position: 0%;
87
+ --cer-gradient-to-position: 100%;
88
+ --cer-gradient-via-position: 50%;
89
+ --cer-gradient-from: rgba(255, 255, 255, 0);
90
+ --cer-gradient-to: rgba(255, 255, 255, 0);
91
+ --cer-gradient-stops: var(--cer-gradient-from), var(--cer-gradient-to);
92
+ /* Default outline style variable */
93
+ --cer-outline-style: solid;
94
+ }
95
+ button,
96
+ input,
97
+ select,
98
+ textarea {
99
+ background: transparent;
100
+ outline: none;
101
+ }
102
+ textarea {
103
+ resize: vertical;
104
+ }
105
+ progress {
106
+ vertical-align: baseline;
107
+ }
108
+ button,
109
+ textarea {
110
+ overflow: visible;
111
+ }
112
+ img,
113
+ svg,
114
+ video,
115
+ canvas,
116
+ audio,
117
+ iframe,
118
+ embed,
119
+ object {
120
+ display: block;
121
+ max-width: 100%;
122
+ height: auto;
123
+ }
124
+ svg {
125
+ fill: currentColor;
126
+ stroke: none;
127
+ }
128
+ a {
129
+ text-decoration: inherit;
130
+ cursor: pointer;
131
+ }
132
+ button,
133
+ [type='button'],
134
+ [type='reset'],
135
+ [type='submit'] {
136
+ cursor: pointer;
137
+ appearance: button;
138
+ background: none;
139
+ -webkit-user-select: none;
140
+ user-select: none;
141
+ }
142
+ ::-webkit-input-placeholder,
143
+ ::placeholder {
144
+ color: inherit;
145
+ opacity: 0.5;
146
+ }
147
+ *:focus-visible {
148
+ outline: 2px solid var(--cer-color-primary-500, #3b82f6);
149
+ outline-offset: 2px;
150
+ }
151
+ ol,
152
+ ul {
153
+ list-style: none;
154
+ }
155
+ table {
156
+ border-collapse: collapse;
157
+ }
158
+ sub,
159
+ sup {
160
+ font-size: 0.75em;
161
+ line-height: 0;
162
+ position: relative;
163
+ }
164
+ sub {
165
+ bottom: -0.25em;
166
+ }
167
+ sup {
168
+ top: -0.5em;
169
+ }
170
+ [disabled],
171
+ [aria-disabled='true'] {
172
+ cursor: not-allowed;
173
+ }
174
+ [hidden] {
175
+ display: none;
176
+ }
177
+ `, c = "0.25rem", l = null;
178
+ function u() {
179
+ return l || (typeof CSSStyleSheet > "u" ? l = {
180
+ cssRules: [],
181
+ replaceSync: () => {},
182
+ toString: () => n(s)
183
+ } : (l = new CSSStyleSheet(), l.replaceSync(n(s)))), l;
184
+ }
185
+ //#endregion
186
+ //#region src/lib/runtime/render-bridge.ts
187
+ var d = null, f = null, p = null;
188
+ function m(e, t, n) {
189
+ d = e, f = t, p = n;
190
+ }
191
+ function h(e) {
192
+ return d ? d(e) : !1;
193
+ }
194
+ function g(e) {
195
+ return f ? f(e) : "";
196
+ }
197
+ function _() {
198
+ return p ? p() : null;
199
+ }
200
+ //#endregion
201
+ export { s as a, a as c, n as d, r as f, g as i, o as l, _ as n, t as o, c as p, h as r, i as s, m as t, u };
202
+
203
+ //# sourceMappingURL=css-utils-Bn-dO44e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"css-utils-CC43BbEy.js","names":[],"sources":["../src/lib/css/variables.css?raw","../src/lib/runtime/css-utils.ts","../src/lib/runtime/render-bridge.ts"],"sourcesContent":["export default \"/*\\n * Custom Elements Variables CSS\\n * Default fallback values\\n * \\n * Define your overrides in the document's :root to have them\\n * inherited into all Shadow DOM components:\\n * \\n * <style>\\n * :root {\\n * --cer-color-primary-500: #8b5cf6;\\n * --cer-font-sans: 'Inter', sans-serif;\\n * }\\n * </style>\\n * \\n * Note: Only :root is used here (not :host) so document-level\\n * overrides will inherit into Shadow DOM and take precedence.\\n */\\n\\n:root {\\n /* Font families (match runtime defaults in src/lib/runtime/style.ts) */\\n --cer-font-sans:\\n ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto,\\n 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;\\n --cer-font-serif: ui-serif, Georgia, 'Times New Roman', Times, serif;\\n --cer-font-mono:\\n ui-monospace, 'SFMono-Regular', Menlo, Monaco, 'Roboto Mono', 'Courier New',\\n monospace;\\n\\n /* Default outline style */\\n --cer-outline-style: solid;\\n\\n /* Colors */\\n --cer-color-transparent: transparent;\\n --cer-color-current: currentColor;\\n --cer-color-black: #000000;\\n --cer-color-white: #ffffff;\\n --cer-color-inherit: inherit;\\n\\n /* neutral */\\n --cer-color-neutral-50: #fafafa;\\n --cer-color-neutral-100: #f4f4f5;\\n --cer-color-neutral-200: #e4e4e7;\\n --cer-color-neutral-300: #d4d4d8;\\n --cer-color-neutral-400: #9f9fa9;\\n --cer-color-neutral-500: #71717b;\\n --cer-color-neutral-600: #52525c;\\n --cer-color-neutral-700: #3f3f46;\\n --cer-color-neutral-800: #27272a;\\n --cer-color-neutral-900: #18181b;\\n --cer-color-neutral-950: #09090b;\\n\\n /* primary */\\n --cer-color-primary-50: #eff6ff;\\n --cer-color-primary-100: #dbeafe;\\n --cer-color-primary-200: #bfdbfe;\\n --cer-color-primary-300: #93c5fd;\\n --cer-color-primary-400: #60a5fa;\\n --cer-color-primary-500: #3b82f6;\\n --cer-color-primary-600: #2563eb;\\n --cer-color-primary-700: #1d4ed8;\\n --cer-color-primary-800: #1e40af;\\n --cer-color-primary-900: #1e3a8a;\\n --cer-color-primary-950: #172554;\\n\\n /* secondary */\\n --cer-color-secondary-50: #eef2ff;\\n --cer-color-secondary-100: #e0e7ff;\\n --cer-color-secondary-200: #c7d2fe;\\n --cer-color-secondary-300: #a5b4fc;\\n --cer-color-secondary-400: #818cf8;\\n --cer-color-secondary-500: #6366f1;\\n --cer-color-secondary-600: #4f46e5;\\n --cer-color-secondary-700: #4338ca;\\n --cer-color-secondary-800: #3730a3;\\n --cer-color-secondary-900: #312e81;\\n --cer-color-secondary-950: #1e1b4b;\\n\\n /* success */\\n --cer-color-success-50: #f0fdf4;\\n --cer-color-success-100: #dcfce7;\\n --cer-color-success-200: #bbf7d0;\\n --cer-color-success-300: #86efac;\\n --cer-color-success-400: #4ade80;\\n --cer-color-success-500: #22c55e;\\n --cer-color-success-600: #16a34a;\\n --cer-color-success-700: #15803d;\\n --cer-color-success-800: #166534;\\n --cer-color-success-900: #14532d;\\n --cer-color-success-950: #052e16;\\n\\n /* info */\\n --cer-color-info-50: #f0f9ff;\\n --cer-color-info-100: #e0f2fe;\\n --cer-color-info-200: #bae6fd;\\n --cer-color-info-300: #7dd3fc;\\n --cer-color-info-400: #38bdf8;\\n --cer-color-info-500: #0ea5e9;\\n --cer-color-info-600: #0284c7;\\n --cer-color-info-700: #0369a1;\\n --cer-color-info-800: #075985;\\n --cer-color-info-900: #0c4a6e;\\n --cer-color-info-950: #082f49;\\n\\n /* warning */\\n --cer-color-warning-50: #fffbeb;\\n --cer-color-warning-100: #fef3c7;\\n --cer-color-warning-200: #fde68a;\\n --cer-color-warning-300: #fcd34d;\\n --cer-color-warning-400: #fbbf24;\\n --cer-color-warning-500: #f59e0b;\\n --cer-color-warning-600: #d97706;\\n --cer-color-warning-700: #b45309;\\n --cer-color-warning-800: #92400e;\\n --cer-color-warning-900: #78350f;\\n --cer-color-warning-950: #451a03;\\n\\n /* error */\\n --cer-color-error-50: #fef2f2;\\n --cer-color-error-100: #fee2e2;\\n --cer-color-error-200: #fecaca;\\n --cer-color-error-300: #fca5a5;\\n --cer-color-error-400: #f87171;\\n --cer-color-error-500: #ef4444;\\n --cer-color-error-600: #dc2626;\\n --cer-color-error-700: #b91c1c;\\n --cer-color-error-800: #991b1b;\\n --cer-color-error-900: #7f1d1d;\\n --cer-color-error-950: #450a0a;\\n\\n /* Extended Tailwind palette — override to theme these colors */\\n /* slate */\\n --cer-color-slate-50: #f8fafc;\\n --cer-color-slate-100: #f1f5f9;\\n --cer-color-slate-200: #e2e8f0;\\n --cer-color-slate-300: #cbd5e1;\\n --cer-color-slate-400: #94a3b8;\\n --cer-color-slate-500: #64748b;\\n --cer-color-slate-600: #475569;\\n --cer-color-slate-700: #334155;\\n --cer-color-slate-800: #1e293b;\\n --cer-color-slate-900: #0f172a;\\n --cer-color-slate-950: #020617;\\n /* gray */\\n --cer-color-gray-50: #f9fafb;\\n --cer-color-gray-100: #f3f4f6;\\n --cer-color-gray-200: #e5e7eb;\\n --cer-color-gray-300: #d1d5db;\\n --cer-color-gray-400: #9ca3af;\\n --cer-color-gray-500: #6b7280;\\n --cer-color-gray-600: #4b5563;\\n --cer-color-gray-700: #374151;\\n --cer-color-gray-800: #1f2937;\\n --cer-color-gray-900: #111827;\\n --cer-color-gray-950: #030712;\\n /* zinc */\\n --cer-color-zinc-50: #fafafa;\\n --cer-color-zinc-100: #f4f4f5;\\n --cer-color-zinc-200: #e4e4e7;\\n --cer-color-zinc-300: #d4d4d8;\\n --cer-color-zinc-400: #a1a1aa;\\n --cer-color-zinc-500: #71717a;\\n --cer-color-zinc-600: #52525b;\\n --cer-color-zinc-700: #3f3f46;\\n --cer-color-zinc-800: #27272a;\\n --cer-color-zinc-900: #18181b;\\n --cer-color-zinc-950: #09090b;\\n /* stone */\\n --cer-color-stone-50: #fafaf9;\\n --cer-color-stone-100: #f5f5f4;\\n --cer-color-stone-200: #e7e5e4;\\n --cer-color-stone-300: #d6d3d1;\\n --cer-color-stone-400: #a8a29e;\\n --cer-color-stone-500: #78716c;\\n --cer-color-stone-600: #57534e;\\n --cer-color-stone-700: #44403c;\\n --cer-color-stone-800: #292524;\\n --cer-color-stone-900: #1c1917;\\n --cer-color-stone-950: #0c0a09;\\n /* red */\\n --cer-color-red-50: #fef2f2;\\n --cer-color-red-100: #fee2e2;\\n --cer-color-red-200: #fecaca;\\n --cer-color-red-300: #fca5a5;\\n --cer-color-red-400: #f87171;\\n --cer-color-red-500: #ef4444;\\n --cer-color-red-600: #dc2626;\\n --cer-color-red-700: #b91c1c;\\n --cer-color-red-800: #991b1b;\\n --cer-color-red-900: #7f1d1d;\\n --cer-color-red-950: #450a0a;\\n /* orange */\\n --cer-color-orange-50: #fff7ed;\\n --cer-color-orange-100: #ffedd5;\\n --cer-color-orange-200: #fed7aa;\\n --cer-color-orange-300: #fdba74;\\n --cer-color-orange-400: #fb923c;\\n --cer-color-orange-500: #f97316;\\n --cer-color-orange-600: #ea580c;\\n --cer-color-orange-700: #c2410c;\\n --cer-color-orange-800: #9a3412;\\n --cer-color-orange-900: #7c2d12;\\n --cer-color-orange-950: #431407;\\n /* amber */\\n --cer-color-amber-50: #fffbeb;\\n --cer-color-amber-100: #fef3c7;\\n --cer-color-amber-200: #fde68a;\\n --cer-color-amber-300: #fcd34d;\\n --cer-color-amber-400: #fbbf24;\\n --cer-color-amber-500: #f59e0b;\\n --cer-color-amber-600: #d97706;\\n --cer-color-amber-700: #b45309;\\n --cer-color-amber-800: #92400e;\\n --cer-color-amber-900: #78350f;\\n --cer-color-amber-950: #451a03;\\n /* yellow */\\n --cer-color-yellow-50: #fefce8;\\n --cer-color-yellow-100: #fef9c3;\\n --cer-color-yellow-200: #fef08a;\\n --cer-color-yellow-300: #fde047;\\n --cer-color-yellow-400: #facc15;\\n --cer-color-yellow-500: #eab308;\\n --cer-color-yellow-600: #ca8a04;\\n --cer-color-yellow-700: #a16207;\\n --cer-color-yellow-800: #854d0e;\\n --cer-color-yellow-900: #713f12;\\n --cer-color-yellow-950: #422006;\\n /* lime */\\n --cer-color-lime-50: #f7fee7;\\n --cer-color-lime-100: #ecfccb;\\n --cer-color-lime-200: #d9f99d;\\n --cer-color-lime-300: #bef264;\\n --cer-color-lime-400: #a3e635;\\n --cer-color-lime-500: #84cc16;\\n --cer-color-lime-600: #65a30d;\\n --cer-color-lime-700: #4d7c0f;\\n --cer-color-lime-800: #3f6212;\\n --cer-color-lime-900: #365314;\\n --cer-color-lime-950: #1a2e05;\\n /* green */\\n --cer-color-green-50: #f0fdf4;\\n --cer-color-green-100: #dcfce7;\\n --cer-color-green-200: #bbf7d0;\\n --cer-color-green-300: #86efac;\\n --cer-color-green-400: #4ade80;\\n --cer-color-green-500: #22c55e;\\n --cer-color-green-600: #16a34a;\\n --cer-color-green-700: #15803d;\\n --cer-color-green-800: #166534;\\n --cer-color-green-900: #14532d;\\n --cer-color-green-950: #052e16;\\n /* emerald */\\n --cer-color-emerald-50: #ecfdf5;\\n --cer-color-emerald-100: #d1fae5;\\n --cer-color-emerald-200: #a7f3d0;\\n --cer-color-emerald-300: #6ee7b7;\\n --cer-color-emerald-400: #34d399;\\n --cer-color-emerald-500: #10b981;\\n --cer-color-emerald-600: #059669;\\n --cer-color-emerald-700: #047857;\\n --cer-color-emerald-800: #065f46;\\n --cer-color-emerald-900: #064e3b;\\n --cer-color-emerald-950: #022c22;\\n /* teal */\\n --cer-color-teal-50: #f0fdfa;\\n --cer-color-teal-100: #ccfbf1;\\n --cer-color-teal-200: #99f6e4;\\n --cer-color-teal-300: #5eead4;\\n --cer-color-teal-400: #2dd4bf;\\n --cer-color-teal-500: #14b8a6;\\n --cer-color-teal-600: #0d9488;\\n --cer-color-teal-700: #0f766e;\\n --cer-color-teal-800: #115e59;\\n --cer-color-teal-900: #134e4a;\\n --cer-color-teal-950: #042f2e;\\n /* cyan */\\n --cer-color-cyan-50: #ecfeff;\\n --cer-color-cyan-100: #cffafe;\\n --cer-color-cyan-200: #a5f3fc;\\n --cer-color-cyan-300: #67e8f9;\\n --cer-color-cyan-400: #22d3ee;\\n --cer-color-cyan-500: #06b6d4;\\n --cer-color-cyan-600: #0891b2;\\n --cer-color-cyan-700: #0e7490;\\n --cer-color-cyan-800: #155e75;\\n --cer-color-cyan-900: #164e63;\\n --cer-color-cyan-950: #083344;\\n /* sky */\\n --cer-color-sky-50: #f0f9ff;\\n --cer-color-sky-100: #e0f2fe;\\n --cer-color-sky-200: #bae6fd;\\n --cer-color-sky-300: #7dd3fc;\\n --cer-color-sky-400: #38bdf8;\\n --cer-color-sky-500: #0ea5e9;\\n --cer-color-sky-600: #0284c7;\\n --cer-color-sky-700: #0369a1;\\n --cer-color-sky-800: #075985;\\n --cer-color-sky-900: #0c4a6e;\\n --cer-color-sky-950: #082f49;\\n /* blue */\\n --cer-color-blue-50: #eff6ff;\\n --cer-color-blue-100: #dbeafe;\\n --cer-color-blue-200: #bfdbfe;\\n --cer-color-blue-300: #93c5fd;\\n --cer-color-blue-400: #60a5fa;\\n --cer-color-blue-500: #3b82f6;\\n --cer-color-blue-600: #2563eb;\\n --cer-color-blue-700: #1d4ed8;\\n --cer-color-blue-800: #1e40af;\\n --cer-color-blue-900: #1e3a8a;\\n --cer-color-blue-950: #172554;\\n /* indigo */\\n --cer-color-indigo-50: #eef2ff;\\n --cer-color-indigo-100: #e0e7ff;\\n --cer-color-indigo-200: #c7d2fe;\\n --cer-color-indigo-300: #a5b4fc;\\n --cer-color-indigo-400: #818cf8;\\n --cer-color-indigo-500: #6366f1;\\n --cer-color-indigo-600: #4f46e5;\\n --cer-color-indigo-700: #4338ca;\\n --cer-color-indigo-800: #3730a3;\\n --cer-color-indigo-900: #312e81;\\n --cer-color-indigo-950: #1e1b4b;\\n /* violet */\\n --cer-color-violet-50: #f5f3ff;\\n --cer-color-violet-100: #ede9fe;\\n --cer-color-violet-200: #ddd6fe;\\n --cer-color-violet-300: #c4b5fd;\\n --cer-color-violet-400: #a78bfa;\\n --cer-color-violet-500: #8b5cf6;\\n --cer-color-violet-600: #7c3aed;\\n --cer-color-violet-700: #6d28d9;\\n --cer-color-violet-800: #5b21b6;\\n --cer-color-violet-900: #4c1d95;\\n --cer-color-violet-950: #2e1065;\\n /* purple */\\n --cer-color-purple-50: #faf5ff;\\n --cer-color-purple-100: #f3e8ff;\\n --cer-color-purple-200: #e9d5ff;\\n --cer-color-purple-300: #d8b4fe;\\n --cer-color-purple-400: #c084fc;\\n --cer-color-purple-500: #a855f7;\\n --cer-color-purple-600: #9333ea;\\n --cer-color-purple-700: #7e22ce;\\n --cer-color-purple-800: #6b21a8;\\n --cer-color-purple-900: #581c87;\\n --cer-color-purple-950: #3b0764;\\n /* fuchsia */\\n --cer-color-fuchsia-50: #fdf4ff;\\n --cer-color-fuchsia-100: #fae8ff;\\n --cer-color-fuchsia-200: #f5d0fe;\\n --cer-color-fuchsia-300: #f0abfc;\\n --cer-color-fuchsia-400: #e879f9;\\n --cer-color-fuchsia-500: #d946ef;\\n --cer-color-fuchsia-600: #c026d3;\\n --cer-color-fuchsia-700: #a21caf;\\n --cer-color-fuchsia-800: #86198f;\\n --cer-color-fuchsia-900: #701a75;\\n --cer-color-fuchsia-950: #4a044e;\\n /* pink */\\n --cer-color-pink-50: #fdf2f8;\\n --cer-color-pink-100: #fce7f3;\\n --cer-color-pink-200: #fbcfe8;\\n --cer-color-pink-300: #f9a8d4;\\n --cer-color-pink-400: #f472b6;\\n --cer-color-pink-500: #ec4899;\\n --cer-color-pink-600: #db2777;\\n --cer-color-pink-700: #be185d;\\n --cer-color-pink-800: #9d174d;\\n --cer-color-pink-900: #831843;\\n --cer-color-pink-950: #500724;\\n /* rose */\\n --cer-color-rose-50: #fff1f2;\\n --cer-color-rose-100: #ffe4e6;\\n --cer-color-rose-200: #fecdd3;\\n --cer-color-rose-300: #fda4af;\\n --cer-color-rose-400: #fb7185;\\n --cer-color-rose-500: #f43f5e;\\n --cer-color-rose-600: #e11d48;\\n --cer-color-rose-700: #be123c;\\n --cer-color-rose-800: #9f1239;\\n --cer-color-rose-900: #881337;\\n --cer-color-rose-950: #4c0519;\\n}\\n\\n/* @property registrations for CSS transition composability */\\n@property --cer-rotate {\\n syntax: '<angle>';\\n initial-value: 0deg;\\n inherits: false;\\n}\\n@property --cer-translate-x {\\n syntax: '<length>';\\n initial-value: 0px;\\n inherits: false;\\n}\\n@property --cer-translate-y {\\n syntax: '<length>';\\n initial-value: 0px;\\n inherits: false;\\n}\\n@property --cer-skew-x {\\n syntax: '<angle>';\\n initial-value: 0deg;\\n inherits: false;\\n}\\n@property --cer-skew-y {\\n syntax: '<angle>';\\n initial-value: 0deg;\\n inherits: false;\\n}\\n@property --cer-scale-x {\\n syntax: '<number>';\\n initial-value: 1;\\n inherits: false;\\n}\\n@property --cer-scale-y {\\n syntax: '<number>';\\n initial-value: 1;\\n inherits: false;\\n}\\n/* Filter composition variables (--cer-blur, --cer-brightness, etc.) intentionally\\n omit @property registration because their \\\"no-op\\\" value is empty string (''),\\n which is not a valid CSS initial-value. They compose correctly without Houdini. */\\n@property --cer-opacity {\\n syntax: '<number>';\\n initial-value: 1;\\n inherits: false;\\n}\\n\"","/**\n * Pure CSS utility functions — no JIT dependencies, no module-level side effects.\n *\n * Extracted so that render.ts and hooks.ts can import lightweight CSS helpers\n * without pulling the entire JIT CSS engine into every consumer's bundle.\n */\n\nimport variables from '../css/variables.css?raw';\n\n/**\n * CSS template literal tag\n */\nexport function css(\n strings: TemplateStringsArray,\n ...values: unknown[]\n): string {\n let result = '';\n for (let i = 0; i < strings.length; i++) {\n result += strings[i];\n if (i < values.length) result += values[i];\n }\n return result;\n}\n\n/**\n * CSS minification utility (basic)\n */\nexport function minifyCSS(input: string): string {\n return input\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\s+/g, ' ')\n .replace(/\\s*([{}:;,>~])\\s*/g, '$1')\n .replace(/;}/g, '}')\n .trim();\n}\n\n/**\n * Sanitize CSS to prevent injection attacks (XSS, javascript: URLs, expression(), etc.)\n */\nexport function sanitizeCSS(input: string): string {\n return input\n // Remove @charset rules (can alter encoding interpretation in some parsers)\n .replace(/@charset\\s+[^;]*;/gi, '')\n // Remove javascript: URL references inside url()\n .replace(/url\\s*\\(\\s*['\"]?javascript:[^)]*\\)/gi, '')\n // Remove data: URI references inside url() (can embed scripts/SVGs)\n .replace(/url\\s*\\(\\s*['\"]?data:[^)]*\\)/gi, '')\n // Remove @import rules (can load external malicious stylesheets)\n .replace(/@import\\s[^;{]*/gi, '')\n // Remove IE-era -moz-binding and behavior properties\n .replace(/-moz-binding\\s*:[^;]*/gi, '')\n .replace(/\\bbehavior\\s*:[^;]*/gi, '')\n // Remove <script> tags that may be injected alongside CSS\n .replace(/<script[\\s\\S]*?>[\\s\\S]*?<\\/script>/gi, '')\n // Remove IE expression() calls\n .replace(/expression\\s*\\([^)]*\\)/gi, '');\n}\n\n/**\n * Polyfill for CSS.escape() for SSR environments.\n * Based on https://drafts.csswg.org/cssom/#serialize-an-identifier\n */\nexport function cssEscape(value: string): string {\n if (typeof CSS !== 'undefined' && CSS.escape) {\n return CSS.escape(value);\n }\n\n const str = String(value);\n const length = str.length;\n let result = '';\n let i = 0;\n\n while (i < length) {\n const char = str.charAt(i);\n const code = str.charCodeAt(i);\n\n if (code === 0x0000) {\n result += '\\uFFFD';\n } else if (\n (code >= 0x0001 && code <= 0x001f) ||\n code === 0x007f ||\n (i === 0 && code >= 0x0030 && code <= 0x0039) ||\n (i === 1 &&\n code >= 0x0030 &&\n code <= 0x0039 &&\n str.charCodeAt(0) === 0x002d)\n ) {\n result += '\\\\' + code.toString(16) + ' ';\n } else if (i === 0 && length === 1 && code === 0x002d) {\n result += '\\\\' + char;\n } else if (\n code >= 0x0080 ||\n code === 0x002d ||\n code === 0x005f ||\n (code >= 0x0030 && code <= 0x0039) ||\n (code >= 0x0041 && code <= 0x005a) ||\n (code >= 0x0061 && code <= 0x007a)\n ) {\n result += char;\n } else {\n result += '\\\\' + char;\n }\n\n i++;\n }\n\n return result;\n}\n\n/** Escape a class name and prefix it with a dot for use in CSS selectors. */\nexport function escapeClassName(name: string): string {\n return '.' + cssEscape(name);\n}\n\n/** Escape a string for use in a RegExp. */\nexport function escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n// --- Base reset stylesheet ---\n\nexport const baseReset = css`\n ${variables}\n :host,\n *,\n ::before,\n ::after {\n all: isolate;\n box-sizing: border-box;\n border: 0 solid currentColor;\n margin: 0;\n padding: 0;\n font: inherit;\n vertical-align: baseline;\n background: transparent;\n color: inherit;\n -webkit-tap-highlight-color: transparent;\n /* Transform composition variables (reset per-element for composability) */\n --cer-translate-x: 0px;\n --cer-translate-y: 0px;\n --cer-rotate: 0deg;\n --cer-skew-x: 0deg;\n --cer-skew-y: 0deg;\n --cer-scale-x: 1;\n --cer-scale-y: 1;\n /* Ring variables */\n --cer-ring-color: rgb(59 130 246 / 0.5);\n /* Filter composition variables (empty = no-op in filter chain) */\n --cer-blur: ;\n --cer-brightness: ;\n --cer-contrast: ;\n --cer-grayscale: ;\n --cer-hue-rotate: ;\n --cer-invert: ;\n --cer-saturate: ;\n --cer-sepia: ;\n --cer-drop-shadow: ;\n --cer-backdrop-blur: ;\n --cer-backdrop-brightness: ;\n --cer-backdrop-contrast: ;\n --cer-backdrop-grayscale: ;\n --cer-backdrop-hue-rotate: ;\n --cer-backdrop-invert: ;\n --cer-backdrop-saturate: ;\n --cer-backdrop-sepia: ;\n }\n :host {\n display: contents;\n font: 16px/1.5 var(--cer-font-sans, ui-sans-serif, system-ui, sans-serif);\n /* Default CE line-height variable so leading-* can reliably override */\n --cer-line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n text-size-adjust: 100%;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n /* Default gradient variables to avoid undefined var() usage in generated utilities */\n --cer-gradient-from-position: 0%;\n --cer-gradient-to-position: 100%;\n --cer-gradient-via-position: 50%;\n --cer-gradient-from: rgba(255, 255, 255, 0);\n --cer-gradient-to: rgba(255, 255, 255, 0);\n --cer-gradient-stops: var(--cer-gradient-from), var(--cer-gradient-to);\n /* Default outline style variable */\n --cer-outline-style: solid;\n }\n button,\n input,\n select,\n textarea {\n background: transparent;\n outline: none;\n }\n textarea {\n resize: vertical;\n }\n progress {\n vertical-align: baseline;\n }\n button,\n textarea {\n overflow: visible;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n display: block;\n max-width: 100%;\n height: auto;\n }\n svg {\n fill: currentColor;\n stroke: none;\n }\n a {\n text-decoration: inherit;\n cursor: pointer;\n }\n button,\n [type='button'],\n [type='reset'],\n [type='submit'] {\n cursor: pointer;\n appearance: button;\n background: none;\n -webkit-user-select: none;\n user-select: none;\n }\n ::-webkit-input-placeholder,\n ::placeholder {\n color: inherit;\n opacity: 0.5;\n }\n *:focus-visible {\n outline: 2px solid var(--cer-color-primary-500, #3b82f6);\n outline-offset: 2px;\n }\n ol,\n ul {\n list-style: none;\n }\n table {\n border-collapse: collapse;\n }\n sub,\n sup {\n font-size: 0.75em;\n line-height: 0;\n position: relative;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n [disabled],\n [aria-disabled='true'] {\n cursor: not-allowed;\n }\n [hidden] {\n display: none;\n }\n`;\n\n/** Default spacing unit used by the JIT spacing scale. */\nexport const spacing = '0.25rem';\n\n// --- Base reset stylesheet singleton ---\n\nlet baseResetSheet: CSSStyleSheet | null = null;\n\nexport function getBaseResetSheet(): CSSStyleSheet {\n if (!baseResetSheet) {\n if (typeof CSSStyleSheet === 'undefined') {\n baseResetSheet = {\n cssRules: [],\n replaceSync: () => {},\n toString: () => minifyCSS(baseReset),\n } as unknown as CSSStyleSheet;\n } else {\n baseResetSheet = new CSSStyleSheet();\n baseResetSheet.replaceSync(minifyCSS(baseReset));\n }\n }\n return baseResetSheet;\n}\n\n/** Reset the base reset sheet singleton (for HMR). @internal */\nexport function _resetBaseResetSheet(): void {\n baseResetSheet = null;\n}\n","/**\n * Lazy render bridge — populated by style.ts when the JIT engine is imported.\n *\n * render.ts always imports this module (so it is always bundled), but\n * style.ts (the full JIT engine, ~24 KB gzip) is only bundled when the\n * consumer explicitly imports JIT CSS symbols such as `enableJITCSS` or\n * `useJITCSS`. When style.ts IS imported it registers itself here so that\n * render.ts can call back into the JIT engine without a static dependency.\n *\n * Result: consumers that never use JIT CSS get zero JIT code in their bundle.\n */\n\ntype JITChecker = (root: ShadowRoot) => boolean;\ntype JITProcessor = (html: string) => string;\ntype ProseSheetGetter = () => CSSStyleSheet | null;\n\nlet _jitChecker: JITChecker | null = null;\nlet _jitProcessor: JITProcessor | null = null;\nlet _proseGetter: ProseSheetGetter | null = null;\n\n/**\n * Register the JIT CSS engine with the render pipeline.\n * Called by style.ts at module load time so renders automatically get\n * JIT processing without render.ts needing to import style.ts directly.\n * @internal\n */\nexport function _registerRenderBridge(\n checker: JITChecker,\n processor: JITProcessor,\n proseGetter: ProseSheetGetter,\n): void {\n _jitChecker = checker;\n _jitProcessor = processor;\n _proseGetter = proseGetter;\n}\n\n/**\n * Returns true when JIT CSS should run for the given shadow root.\n * Returns false if the JIT engine is not loaded.\n */\nexport function isJITCSSActiveFor(root: ShadowRoot): boolean {\n return _jitChecker ? _jitChecker(root) : false;\n}\n\n/**\n * Run JIT CSS processing over the aggregated HTML string.\n * Returns empty string if the JIT engine is not loaded.\n */\nexport function processJITCSS(html: string): string {\n return _jitProcessor ? _jitProcessor(html) : '';\n}\n\n/**\n * Get the prose stylesheet singleton.\n * Returns null if the JIT engine is not loaded or no prose classes detected.\n */\nexport function getProseStyleSheet(): CSSStyleSheet | null {\n return _proseGetter ? _proseGetter() : null;\n}\n"],"mappings":"AAAA,IAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACYf,SAAgB,EACd,MACG,GACK;AACR,MAAI,IAAS;AACb,WAAS,IAAI,GAAG,IAAI,EAAQ,QAAQ;AAClC,IAAA,KAAU,EAAQ,CAAA,GACd,IAAI,EAAO,WAAQ,KAAU,EAAO,CAAA;AAE1C,SAAO;;AAMT,SAAgB,EAAU,GAAuB;AAC/C,SAAO,EACJ,QAAQ,qBAAqB,EAAA,EAC7B,QAAQ,QAAQ,GAAA,EAChB,QAAQ,sBAAsB,IAAA,EAC9B,QAAQ,OAAO,GAAA,EACf,KAAA;;AAML,SAAgB,EAAY,GAAuB;AACjD,SAAO,EAEJ,QAAQ,uBAAuB,EAAA,EAE/B,QAAQ,wCAAwC,EAAA,EAEhD,QAAQ,kCAAkC,EAAA,EAE1C,QAAQ,qBAAqB,EAAA,EAE7B,QAAQ,2BAA2B,EAAA,EACnC,QAAQ,yBAAyB,EAAA,EAEjC,QAAQ,wCAAwC,EAAA,EAEhD,QAAQ,4BAA4B,EAAA;;AAOzC,SAAgB,EAAU,GAAuB;AAC/C,MAAI,OAAO,MAAQ,OAAe,IAAI,OACpC,QAAO,IAAI,OAAO,CAAA;AAGpB,QAAM,IAAM,OAAO,CAAA,GACb,IAAS,EAAI;AACnB,MAAI,IAAS,IACT,IAAI;AAER,SAAO,IAAI,KAAQ;AACjB,UAAM,IAAO,EAAI,OAAO,CAAA,GAClB,IAAO,EAAI,WAAW,CAAA;AAE5B,IAAI,MAAS,IACX,KAAU,MAET,KAAQ,KAAU,KAAQ,MAC3B,MAAS,OACR,MAAM,KAAK,KAAQ,MAAU,KAAQ,MACrC,MAAM,KACL,KAAQ,MACR,KAAQ,MACR,EAAI,WAAW,CAAA,MAAO,KAExB,KAAU,OAAO,EAAK,SAAS,EAAA,IAAM,MAC5B,MAAM,KAAK,MAAW,KAAK,MAAS,KAC7C,KAAU,OAAO,IAEjB,KAAQ,OACR,MAAS,MACT,MAAS,MACR,KAAQ,MAAU,KAAQ,MAC1B,KAAQ,MAAU,KAAQ,MAC1B,KAAQ,MAAU,KAAQ,MAE3B,KAAU,IAEV,KAAU,OAAO,GAGnB;AAAA;AAGF,SAAO;;AAIT,SAAgB,EAAgB,GAAsB;AACpD,SAAO,MAAM,EAAU,CAAA;;AAIzB,SAAgB,EAAa,GAAqB;AAChD,SAAO,EAAI,QAAQ,uBAAuB,MAAA;;AAK5C,IAAa,IAAY;AAAA,IACrB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAoJS,IAAU,WAInB,IAAuC;AAE3C,SAAgB,IAAmC;AACjD,SAAK,MACC,OAAO,gBAAkB,MAC3B,IAAiB;AAAA,IACf,UAAU,CAAA;AAAA,IACV,aAAA,MAAmB;AAAA,IAAA;AAAA,IACnB,UAAA,MAAgB,EAAU,CAAA;AAAA,OAG5B,IAAiB,IAAI,cAAA,GACrB,EAAe,YAAY,EAAU,CAAA,CAAU,KAG5C;;ACjRT,IAAI,IAAiC,MACjC,IAAqC,MACrC,IAAwC;AAQ5C,SAAgB,EACd,GACA,GACA,GACM;AACN,EAAA,IAAc,GACd,IAAgB,GAChB,IAAe;;AAOjB,SAAgB,EAAkB,GAA2B;AAC3D,SAAO,IAAc,EAAY,CAAA,IAAQ;;AAO3C,SAAgB,EAAc,GAAsB;AAClD,SAAO,IAAgB,EAAc,CAAA,IAAQ;;AAO/C,SAAgB,IAA2C;AACzD,SAAO,IAAe,EAAA,IAAiB"}
1
+ {"version":3,"file":"css-utils-Bn-dO44e.js","names":[],"sources":["../src/lib/css/variables.css?raw","../src/lib/runtime/css-utils.ts","../src/lib/runtime/render-bridge.ts"],"sourcesContent":["export default \"/*\\n * Custom Elements Variables CSS\\n * Default fallback values\\n * \\n * Define your overrides in the document's :root to have them\\n * inherited into all Shadow DOM components:\\n * \\n * <style>\\n * :root {\\n * --cer-color-primary-500: #8b5cf6;\\n * --cer-font-sans: 'Inter', sans-serif;\\n * }\\n * </style>\\n * \\n * Note: Only :root is used here (not :host) so document-level\\n * overrides will inherit into Shadow DOM and take precedence.\\n */\\n\\n:root {\\n /* Font families (match runtime defaults in src/lib/runtime/style.ts) */\\n --cer-font-sans:\\n ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto,\\n 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;\\n --cer-font-serif: ui-serif, Georgia, 'Times New Roman', Times, serif;\\n --cer-font-mono:\\n ui-monospace, 'SFMono-Regular', Menlo, Monaco, 'Roboto Mono', 'Courier New',\\n monospace;\\n\\n /* Default outline style */\\n --cer-outline-style: solid;\\n\\n /* Colors */\\n --cer-color-transparent: transparent;\\n --cer-color-current: currentColor;\\n --cer-color-black: #000000;\\n --cer-color-white: #ffffff;\\n --cer-color-inherit: inherit;\\n\\n /* neutral */\\n --cer-color-neutral-50: #fafafa;\\n --cer-color-neutral-100: #f4f4f5;\\n --cer-color-neutral-200: #e4e4e7;\\n --cer-color-neutral-300: #d4d4d8;\\n --cer-color-neutral-400: #9f9fa9;\\n --cer-color-neutral-500: #71717b;\\n --cer-color-neutral-600: #52525c;\\n --cer-color-neutral-700: #3f3f46;\\n --cer-color-neutral-800: #27272a;\\n --cer-color-neutral-900: #18181b;\\n --cer-color-neutral-950: #09090b;\\n\\n /* primary */\\n --cer-color-primary-50: #eff6ff;\\n --cer-color-primary-100: #dbeafe;\\n --cer-color-primary-200: #bfdbfe;\\n --cer-color-primary-300: #93c5fd;\\n --cer-color-primary-400: #60a5fa;\\n --cer-color-primary-500: #3b82f6;\\n --cer-color-primary-600: #2563eb;\\n --cer-color-primary-700: #1d4ed8;\\n --cer-color-primary-800: #1e40af;\\n --cer-color-primary-900: #1e3a8a;\\n --cer-color-primary-950: #172554;\\n\\n /* secondary */\\n --cer-color-secondary-50: #eef2ff;\\n --cer-color-secondary-100: #e0e7ff;\\n --cer-color-secondary-200: #c7d2fe;\\n --cer-color-secondary-300: #a5b4fc;\\n --cer-color-secondary-400: #818cf8;\\n --cer-color-secondary-500: #6366f1;\\n --cer-color-secondary-600: #4f46e5;\\n --cer-color-secondary-700: #4338ca;\\n --cer-color-secondary-800: #3730a3;\\n --cer-color-secondary-900: #312e81;\\n --cer-color-secondary-950: #1e1b4b;\\n\\n /* success */\\n --cer-color-success-50: #f0fdf4;\\n --cer-color-success-100: #dcfce7;\\n --cer-color-success-200: #bbf7d0;\\n --cer-color-success-300: #86efac;\\n --cer-color-success-400: #4ade80;\\n --cer-color-success-500: #22c55e;\\n --cer-color-success-600: #16a34a;\\n --cer-color-success-700: #15803d;\\n --cer-color-success-800: #166534;\\n --cer-color-success-900: #14532d;\\n --cer-color-success-950: #052e16;\\n\\n /* info */\\n --cer-color-info-50: #f0f9ff;\\n --cer-color-info-100: #e0f2fe;\\n --cer-color-info-200: #bae6fd;\\n --cer-color-info-300: #7dd3fc;\\n --cer-color-info-400: #38bdf8;\\n --cer-color-info-500: #0ea5e9;\\n --cer-color-info-600: #0284c7;\\n --cer-color-info-700: #0369a1;\\n --cer-color-info-800: #075985;\\n --cer-color-info-900: #0c4a6e;\\n --cer-color-info-950: #082f49;\\n\\n /* warning */\\n --cer-color-warning-50: #fffbeb;\\n --cer-color-warning-100: #fef3c7;\\n --cer-color-warning-200: #fde68a;\\n --cer-color-warning-300: #fcd34d;\\n --cer-color-warning-400: #fbbf24;\\n --cer-color-warning-500: #f59e0b;\\n --cer-color-warning-600: #d97706;\\n --cer-color-warning-700: #b45309;\\n --cer-color-warning-800: #92400e;\\n --cer-color-warning-900: #78350f;\\n --cer-color-warning-950: #451a03;\\n\\n /* error */\\n --cer-color-error-50: #fef2f2;\\n --cer-color-error-100: #fee2e2;\\n --cer-color-error-200: #fecaca;\\n --cer-color-error-300: #fca5a5;\\n --cer-color-error-400: #f87171;\\n --cer-color-error-500: #ef4444;\\n --cer-color-error-600: #dc2626;\\n --cer-color-error-700: #b91c1c;\\n --cer-color-error-800: #991b1b;\\n --cer-color-error-900: #7f1d1d;\\n --cer-color-error-950: #450a0a;\\n\\n /* Extended Tailwind palette — override to theme these colors */\\n /* slate */\\n --cer-color-slate-50: #f8fafc;\\n --cer-color-slate-100: #f1f5f9;\\n --cer-color-slate-200: #e2e8f0;\\n --cer-color-slate-300: #cbd5e1;\\n --cer-color-slate-400: #94a3b8;\\n --cer-color-slate-500: #64748b;\\n --cer-color-slate-600: #475569;\\n --cer-color-slate-700: #334155;\\n --cer-color-slate-800: #1e293b;\\n --cer-color-slate-900: #0f172a;\\n --cer-color-slate-950: #020617;\\n /* gray */\\n --cer-color-gray-50: #f9fafb;\\n --cer-color-gray-100: #f3f4f6;\\n --cer-color-gray-200: #e5e7eb;\\n --cer-color-gray-300: #d1d5db;\\n --cer-color-gray-400: #9ca3af;\\n --cer-color-gray-500: #6b7280;\\n --cer-color-gray-600: #4b5563;\\n --cer-color-gray-700: #374151;\\n --cer-color-gray-800: #1f2937;\\n --cer-color-gray-900: #111827;\\n --cer-color-gray-950: #030712;\\n /* zinc */\\n --cer-color-zinc-50: #fafafa;\\n --cer-color-zinc-100: #f4f4f5;\\n --cer-color-zinc-200: #e4e4e7;\\n --cer-color-zinc-300: #d4d4d8;\\n --cer-color-zinc-400: #a1a1aa;\\n --cer-color-zinc-500: #71717a;\\n --cer-color-zinc-600: #52525b;\\n --cer-color-zinc-700: #3f3f46;\\n --cer-color-zinc-800: #27272a;\\n --cer-color-zinc-900: #18181b;\\n --cer-color-zinc-950: #09090b;\\n /* stone */\\n --cer-color-stone-50: #fafaf9;\\n --cer-color-stone-100: #f5f5f4;\\n --cer-color-stone-200: #e7e5e4;\\n --cer-color-stone-300: #d6d3d1;\\n --cer-color-stone-400: #a8a29e;\\n --cer-color-stone-500: #78716c;\\n --cer-color-stone-600: #57534e;\\n --cer-color-stone-700: #44403c;\\n --cer-color-stone-800: #292524;\\n --cer-color-stone-900: #1c1917;\\n --cer-color-stone-950: #0c0a09;\\n /* red */\\n --cer-color-red-50: #fef2f2;\\n --cer-color-red-100: #fee2e2;\\n --cer-color-red-200: #fecaca;\\n --cer-color-red-300: #fca5a5;\\n --cer-color-red-400: #f87171;\\n --cer-color-red-500: #ef4444;\\n --cer-color-red-600: #dc2626;\\n --cer-color-red-700: #b91c1c;\\n --cer-color-red-800: #991b1b;\\n --cer-color-red-900: #7f1d1d;\\n --cer-color-red-950: #450a0a;\\n /* orange */\\n --cer-color-orange-50: #fff7ed;\\n --cer-color-orange-100: #ffedd5;\\n --cer-color-orange-200: #fed7aa;\\n --cer-color-orange-300: #fdba74;\\n --cer-color-orange-400: #fb923c;\\n --cer-color-orange-500: #f97316;\\n --cer-color-orange-600: #ea580c;\\n --cer-color-orange-700: #c2410c;\\n --cer-color-orange-800: #9a3412;\\n --cer-color-orange-900: #7c2d12;\\n --cer-color-orange-950: #431407;\\n /* amber */\\n --cer-color-amber-50: #fffbeb;\\n --cer-color-amber-100: #fef3c7;\\n --cer-color-amber-200: #fde68a;\\n --cer-color-amber-300: #fcd34d;\\n --cer-color-amber-400: #fbbf24;\\n --cer-color-amber-500: #f59e0b;\\n --cer-color-amber-600: #d97706;\\n --cer-color-amber-700: #b45309;\\n --cer-color-amber-800: #92400e;\\n --cer-color-amber-900: #78350f;\\n --cer-color-amber-950: #451a03;\\n /* yellow */\\n --cer-color-yellow-50: #fefce8;\\n --cer-color-yellow-100: #fef9c3;\\n --cer-color-yellow-200: #fef08a;\\n --cer-color-yellow-300: #fde047;\\n --cer-color-yellow-400: #facc15;\\n --cer-color-yellow-500: #eab308;\\n --cer-color-yellow-600: #ca8a04;\\n --cer-color-yellow-700: #a16207;\\n --cer-color-yellow-800: #854d0e;\\n --cer-color-yellow-900: #713f12;\\n --cer-color-yellow-950: #422006;\\n /* lime */\\n --cer-color-lime-50: #f7fee7;\\n --cer-color-lime-100: #ecfccb;\\n --cer-color-lime-200: #d9f99d;\\n --cer-color-lime-300: #bef264;\\n --cer-color-lime-400: #a3e635;\\n --cer-color-lime-500: #84cc16;\\n --cer-color-lime-600: #65a30d;\\n --cer-color-lime-700: #4d7c0f;\\n --cer-color-lime-800: #3f6212;\\n --cer-color-lime-900: #365314;\\n --cer-color-lime-950: #1a2e05;\\n /* green */\\n --cer-color-green-50: #f0fdf4;\\n --cer-color-green-100: #dcfce7;\\n --cer-color-green-200: #bbf7d0;\\n --cer-color-green-300: #86efac;\\n --cer-color-green-400: #4ade80;\\n --cer-color-green-500: #22c55e;\\n --cer-color-green-600: #16a34a;\\n --cer-color-green-700: #15803d;\\n --cer-color-green-800: #166534;\\n --cer-color-green-900: #14532d;\\n --cer-color-green-950: #052e16;\\n /* emerald */\\n --cer-color-emerald-50: #ecfdf5;\\n --cer-color-emerald-100: #d1fae5;\\n --cer-color-emerald-200: #a7f3d0;\\n --cer-color-emerald-300: #6ee7b7;\\n --cer-color-emerald-400: #34d399;\\n --cer-color-emerald-500: #10b981;\\n --cer-color-emerald-600: #059669;\\n --cer-color-emerald-700: #047857;\\n --cer-color-emerald-800: #065f46;\\n --cer-color-emerald-900: #064e3b;\\n --cer-color-emerald-950: #022c22;\\n /* teal */\\n --cer-color-teal-50: #f0fdfa;\\n --cer-color-teal-100: #ccfbf1;\\n --cer-color-teal-200: #99f6e4;\\n --cer-color-teal-300: #5eead4;\\n --cer-color-teal-400: #2dd4bf;\\n --cer-color-teal-500: #14b8a6;\\n --cer-color-teal-600: #0d9488;\\n --cer-color-teal-700: #0f766e;\\n --cer-color-teal-800: #115e59;\\n --cer-color-teal-900: #134e4a;\\n --cer-color-teal-950: #042f2e;\\n /* cyan */\\n --cer-color-cyan-50: #ecfeff;\\n --cer-color-cyan-100: #cffafe;\\n --cer-color-cyan-200: #a5f3fc;\\n --cer-color-cyan-300: #67e8f9;\\n --cer-color-cyan-400: #22d3ee;\\n --cer-color-cyan-500: #06b6d4;\\n --cer-color-cyan-600: #0891b2;\\n --cer-color-cyan-700: #0e7490;\\n --cer-color-cyan-800: #155e75;\\n --cer-color-cyan-900: #164e63;\\n --cer-color-cyan-950: #083344;\\n /* sky */\\n --cer-color-sky-50: #f0f9ff;\\n --cer-color-sky-100: #e0f2fe;\\n --cer-color-sky-200: #bae6fd;\\n --cer-color-sky-300: #7dd3fc;\\n --cer-color-sky-400: #38bdf8;\\n --cer-color-sky-500: #0ea5e9;\\n --cer-color-sky-600: #0284c7;\\n --cer-color-sky-700: #0369a1;\\n --cer-color-sky-800: #075985;\\n --cer-color-sky-900: #0c4a6e;\\n --cer-color-sky-950: #082f49;\\n /* blue */\\n --cer-color-blue-50: #eff6ff;\\n --cer-color-blue-100: #dbeafe;\\n --cer-color-blue-200: #bfdbfe;\\n --cer-color-blue-300: #93c5fd;\\n --cer-color-blue-400: #60a5fa;\\n --cer-color-blue-500: #3b82f6;\\n --cer-color-blue-600: #2563eb;\\n --cer-color-blue-700: #1d4ed8;\\n --cer-color-blue-800: #1e40af;\\n --cer-color-blue-900: #1e3a8a;\\n --cer-color-blue-950: #172554;\\n /* indigo */\\n --cer-color-indigo-50: #eef2ff;\\n --cer-color-indigo-100: #e0e7ff;\\n --cer-color-indigo-200: #c7d2fe;\\n --cer-color-indigo-300: #a5b4fc;\\n --cer-color-indigo-400: #818cf8;\\n --cer-color-indigo-500: #6366f1;\\n --cer-color-indigo-600: #4f46e5;\\n --cer-color-indigo-700: #4338ca;\\n --cer-color-indigo-800: #3730a3;\\n --cer-color-indigo-900: #312e81;\\n --cer-color-indigo-950: #1e1b4b;\\n /* violet */\\n --cer-color-violet-50: #f5f3ff;\\n --cer-color-violet-100: #ede9fe;\\n --cer-color-violet-200: #ddd6fe;\\n --cer-color-violet-300: #c4b5fd;\\n --cer-color-violet-400: #a78bfa;\\n --cer-color-violet-500: #8b5cf6;\\n --cer-color-violet-600: #7c3aed;\\n --cer-color-violet-700: #6d28d9;\\n --cer-color-violet-800: #5b21b6;\\n --cer-color-violet-900: #4c1d95;\\n --cer-color-violet-950: #2e1065;\\n /* purple */\\n --cer-color-purple-50: #faf5ff;\\n --cer-color-purple-100: #f3e8ff;\\n --cer-color-purple-200: #e9d5ff;\\n --cer-color-purple-300: #d8b4fe;\\n --cer-color-purple-400: #c084fc;\\n --cer-color-purple-500: #a855f7;\\n --cer-color-purple-600: #9333ea;\\n --cer-color-purple-700: #7e22ce;\\n --cer-color-purple-800: #6b21a8;\\n --cer-color-purple-900: #581c87;\\n --cer-color-purple-950: #3b0764;\\n /* fuchsia */\\n --cer-color-fuchsia-50: #fdf4ff;\\n --cer-color-fuchsia-100: #fae8ff;\\n --cer-color-fuchsia-200: #f5d0fe;\\n --cer-color-fuchsia-300: #f0abfc;\\n --cer-color-fuchsia-400: #e879f9;\\n --cer-color-fuchsia-500: #d946ef;\\n --cer-color-fuchsia-600: #c026d3;\\n --cer-color-fuchsia-700: #a21caf;\\n --cer-color-fuchsia-800: #86198f;\\n --cer-color-fuchsia-900: #701a75;\\n --cer-color-fuchsia-950: #4a044e;\\n /* pink */\\n --cer-color-pink-50: #fdf2f8;\\n --cer-color-pink-100: #fce7f3;\\n --cer-color-pink-200: #fbcfe8;\\n --cer-color-pink-300: #f9a8d4;\\n --cer-color-pink-400: #f472b6;\\n --cer-color-pink-500: #ec4899;\\n --cer-color-pink-600: #db2777;\\n --cer-color-pink-700: #be185d;\\n --cer-color-pink-800: #9d174d;\\n --cer-color-pink-900: #831843;\\n --cer-color-pink-950: #500724;\\n /* rose */\\n --cer-color-rose-50: #fff1f2;\\n --cer-color-rose-100: #ffe4e6;\\n --cer-color-rose-200: #fecdd3;\\n --cer-color-rose-300: #fda4af;\\n --cer-color-rose-400: #fb7185;\\n --cer-color-rose-500: #f43f5e;\\n --cer-color-rose-600: #e11d48;\\n --cer-color-rose-700: #be123c;\\n --cer-color-rose-800: #9f1239;\\n --cer-color-rose-900: #881337;\\n --cer-color-rose-950: #4c0519;\\n}\\n\\n/* @property registrations for CSS transition composability */\\n@property --cer-rotate {\\n syntax: '<angle>';\\n initial-value: 0deg;\\n inherits: false;\\n}\\n@property --cer-translate-x {\\n syntax: '<length>';\\n initial-value: 0px;\\n inherits: false;\\n}\\n@property --cer-translate-y {\\n syntax: '<length>';\\n initial-value: 0px;\\n inherits: false;\\n}\\n@property --cer-skew-x {\\n syntax: '<angle>';\\n initial-value: 0deg;\\n inherits: false;\\n}\\n@property --cer-skew-y {\\n syntax: '<angle>';\\n initial-value: 0deg;\\n inherits: false;\\n}\\n@property --cer-scale-x {\\n syntax: '<number>';\\n initial-value: 1;\\n inherits: false;\\n}\\n@property --cer-scale-y {\\n syntax: '<number>';\\n initial-value: 1;\\n inherits: false;\\n}\\n/* Filter composition variables (--cer-blur, --cer-brightness, etc.) intentionally\\n omit @property registration because their \\\"no-op\\\" value is empty string (''),\\n which is not a valid CSS initial-value. They compose correctly without Houdini. */\\n@property --cer-opacity {\\n syntax: '<number>';\\n initial-value: 1;\\n inherits: false;\\n}\\n\"","/**\n * Pure CSS utility functions — no JIT dependencies, no module-level side effects.\n *\n * Extracted so that render.ts and hooks.ts can import lightweight CSS helpers\n * without pulling the entire JIT CSS engine into every consumer's bundle.\n */\n\nimport variables from '../css/variables.css?raw';\n\n/**\n * CSS template literal tag\n */\nexport function css(\n strings: TemplateStringsArray,\n ...values: unknown[]\n): string {\n let result = '';\n for (let i = 0; i < strings.length; i++) {\n result += strings[i];\n if (i < values.length) result += values[i];\n }\n return result;\n}\n\n/**\n * CSS minification utility (basic)\n */\nexport function minifyCSS(input: string): string {\n return input\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\s+/g, ' ')\n .replace(/\\s*([{}:;,>~])\\s*/g, '$1')\n .replace(/;}/g, '}')\n .trim();\n}\n\n/**\n * Sanitize CSS to prevent injection attacks (XSS, javascript: URLs, expression(), etc.)\n */\nexport function sanitizeCSS(input: string): string {\n return input\n // Remove @charset rules (can alter encoding interpretation in some parsers)\n .replace(/@charset\\s+[^;]*;/gi, '')\n // Remove javascript: URL references inside url()\n .replace(/url\\s*\\(\\s*['\"]?javascript:[^)]*\\)/gi, '')\n // Remove data: URI references inside url() (can embed scripts/SVGs)\n .replace(/url\\s*\\(\\s*['\"]?data:[^)]*\\)/gi, '')\n // Remove @import rules (can load external malicious stylesheets)\n .replace(/@import\\s[^;{]*/gi, '')\n // Remove IE-era -moz-binding and behavior properties\n .replace(/-moz-binding\\s*:[^;]*/gi, '')\n .replace(/\\bbehavior\\s*:[^;]*/gi, '')\n // Remove <script> tags that may be injected alongside CSS\n .replace(/<script[\\s\\S]*?>[\\s\\S]*?<\\/script>/gi, '')\n // Remove IE expression() calls\n .replace(/expression\\s*\\([^)]*\\)/gi, '');\n}\n\n/**\n * Polyfill for CSS.escape() for SSR environments.\n * Based on https://drafts.csswg.org/cssom/#serialize-an-identifier\n */\nexport function cssEscape(value: string): string {\n if (typeof CSS !== 'undefined' && CSS.escape) {\n return CSS.escape(value);\n }\n\n const str = String(value);\n const length = str.length;\n let result = '';\n let i = 0;\n\n while (i < length) {\n const char = str.charAt(i);\n const code = str.charCodeAt(i);\n\n if (code === 0x0000) {\n result += '\\uFFFD';\n } else if (\n (code >= 0x0001 && code <= 0x001f) ||\n code === 0x007f ||\n (i === 0 && code >= 0x0030 && code <= 0x0039) ||\n (i === 1 &&\n code >= 0x0030 &&\n code <= 0x0039 &&\n str.charCodeAt(0) === 0x002d)\n ) {\n result += '\\\\' + code.toString(16) + ' ';\n } else if (i === 0 && length === 1 && code === 0x002d) {\n result += '\\\\' + char;\n } else if (\n code >= 0x0080 ||\n code === 0x002d ||\n code === 0x005f ||\n (code >= 0x0030 && code <= 0x0039) ||\n (code >= 0x0041 && code <= 0x005a) ||\n (code >= 0x0061 && code <= 0x007a)\n ) {\n result += char;\n } else {\n result += '\\\\' + char;\n }\n\n i++;\n }\n\n return result;\n}\n\n/** Escape a class name and prefix it with a dot for use in CSS selectors. */\nexport function escapeClassName(name: string): string {\n return '.' + cssEscape(name);\n}\n\n/** Escape a string for use in a RegExp. */\nexport function escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n// --- Base reset stylesheet ---\n\nexport const baseReset = css`\n ${variables}\n :host,\n *,\n ::before,\n ::after {\n all: isolate;\n box-sizing: border-box;\n border: 0 solid currentColor;\n margin: 0;\n padding: 0;\n font: inherit;\n vertical-align: baseline;\n background: transparent;\n color: inherit;\n -webkit-tap-highlight-color: transparent;\n /* Transform composition variables (reset per-element for composability) */\n --cer-translate-x: 0px;\n --cer-translate-y: 0px;\n --cer-rotate: 0deg;\n --cer-skew-x: 0deg;\n --cer-skew-y: 0deg;\n --cer-scale-x: 1;\n --cer-scale-y: 1;\n /* Ring variables */\n --cer-ring-color: rgb(59 130 246 / 0.5);\n /* Filter composition variables (empty = no-op in filter chain) */\n --cer-blur: ;\n --cer-brightness: ;\n --cer-contrast: ;\n --cer-grayscale: ;\n --cer-hue-rotate: ;\n --cer-invert: ;\n --cer-saturate: ;\n --cer-sepia: ;\n --cer-drop-shadow: ;\n --cer-backdrop-blur: ;\n --cer-backdrop-brightness: ;\n --cer-backdrop-contrast: ;\n --cer-backdrop-grayscale: ;\n --cer-backdrop-hue-rotate: ;\n --cer-backdrop-invert: ;\n --cer-backdrop-saturate: ;\n --cer-backdrop-sepia: ;\n }\n :host {\n display: contents;\n font: 16px/1.5 var(--cer-font-sans, ui-sans-serif, system-ui, sans-serif);\n /* Default CE line-height variable so leading-* can reliably override */\n --cer-line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n text-size-adjust: 100%;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n /* Default gradient variables to avoid undefined var() usage in generated utilities */\n --cer-gradient-from-position: 0%;\n --cer-gradient-to-position: 100%;\n --cer-gradient-via-position: 50%;\n --cer-gradient-from: rgba(255, 255, 255, 0);\n --cer-gradient-to: rgba(255, 255, 255, 0);\n --cer-gradient-stops: var(--cer-gradient-from), var(--cer-gradient-to);\n /* Default outline style variable */\n --cer-outline-style: solid;\n }\n button,\n input,\n select,\n textarea {\n background: transparent;\n outline: none;\n }\n textarea {\n resize: vertical;\n }\n progress {\n vertical-align: baseline;\n }\n button,\n textarea {\n overflow: visible;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n display: block;\n max-width: 100%;\n height: auto;\n }\n svg {\n fill: currentColor;\n stroke: none;\n }\n a {\n text-decoration: inherit;\n cursor: pointer;\n }\n button,\n [type='button'],\n [type='reset'],\n [type='submit'] {\n cursor: pointer;\n appearance: button;\n background: none;\n -webkit-user-select: none;\n user-select: none;\n }\n ::-webkit-input-placeholder,\n ::placeholder {\n color: inherit;\n opacity: 0.5;\n }\n *:focus-visible {\n outline: 2px solid var(--cer-color-primary-500, #3b82f6);\n outline-offset: 2px;\n }\n ol,\n ul {\n list-style: none;\n }\n table {\n border-collapse: collapse;\n }\n sub,\n sup {\n font-size: 0.75em;\n line-height: 0;\n position: relative;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n [disabled],\n [aria-disabled='true'] {\n cursor: not-allowed;\n }\n [hidden] {\n display: none;\n }\n`;\n\n/** Default spacing unit used by the JIT spacing scale. */\nexport const spacing = '0.25rem';\n\n// --- Base reset stylesheet singleton ---\n\nlet baseResetSheet: CSSStyleSheet | null = null;\n\nexport function getBaseResetSheet(): CSSStyleSheet {\n if (!baseResetSheet) {\n if (typeof CSSStyleSheet === 'undefined') {\n baseResetSheet = {\n cssRules: [],\n replaceSync: () => {},\n toString: () => minifyCSS(baseReset),\n } as unknown as CSSStyleSheet;\n } else {\n baseResetSheet = new CSSStyleSheet();\n baseResetSheet.replaceSync(minifyCSS(baseReset));\n }\n }\n return baseResetSheet;\n}\n\n/** Reset the base reset sheet singleton (for HMR). @internal */\nexport function _resetBaseResetSheet(): void {\n baseResetSheet = null;\n}\n","/**\n * Lazy render bridge — populated by style.ts when the JIT engine is imported.\n *\n * render.ts always imports this module (so it is always bundled), but\n * style.ts (the full JIT engine, ~24 KB gzip) is only bundled when the\n * consumer explicitly imports JIT CSS symbols such as `enableJITCSS` or\n * `useJITCSS`. When style.ts IS imported it registers itself here so that\n * render.ts can call back into the JIT engine without a static dependency.\n *\n * Result: consumers that never use JIT CSS get zero JIT code in their bundle.\n */\n\ntype JITChecker = (root: ShadowRoot) => boolean;\ntype JITProcessor = (html: string) => string;\ntype ProseSheetGetter = () => CSSStyleSheet | null;\n\nlet _jitChecker: JITChecker | null = null;\nlet _jitProcessor: JITProcessor | null = null;\nlet _proseGetter: ProseSheetGetter | null = null;\n\n/**\n * Register the JIT CSS engine with the render pipeline.\n * Called by style.ts at module load time so renders automatically get\n * JIT processing without render.ts needing to import style.ts directly.\n * @internal\n */\nexport function _registerRenderBridge(\n checker: JITChecker,\n processor: JITProcessor,\n proseGetter: ProseSheetGetter,\n): void {\n _jitChecker = checker;\n _jitProcessor = processor;\n _proseGetter = proseGetter;\n}\n\n/**\n * Returns true when JIT CSS should run for the given shadow root.\n * Returns false if the JIT engine is not loaded.\n */\nexport function isJITCSSActiveFor(root: ShadowRoot): boolean {\n return _jitChecker ? _jitChecker(root) : false;\n}\n\n/**\n * Run JIT CSS processing over the aggregated HTML string.\n * Returns empty string if the JIT engine is not loaded.\n */\nexport function processJITCSS(html: string): string {\n return _jitProcessor ? _jitProcessor(html) : '';\n}\n\n/**\n * Get the prose stylesheet singleton.\n * Returns null if the JIT engine is not loaded or no prose classes detected.\n */\nexport function getProseStyleSheet(): CSSStyleSheet | null {\n return _proseGetter ? _proseGetter() : null;\n}\n"],"mappings":";AAAA,IAAA,IAAe;;;ACYf,SAAgB,EACd,GACA,GAAG,GACK;CACR,IAAI,IAAS;AACb,MAAK,IAAI,IAAI,GAAG,IAAI,EAAQ,QAAQ,IAElC,CADA,KAAU,EAAQ,IACd,IAAI,EAAO,WAAQ,KAAU,EAAO;AAE1C,QAAO;;AAMT,SAAgB,EAAU,GAAuB;AAC/C,QAAO,EACJ,QAAQ,qBAAqB,GAAG,CAChC,QAAQ,QAAQ,IAAI,CACpB,QAAQ,sBAAsB,KAAK,CACnC,QAAQ,OAAO,IAAI,CACnB,MAAM;;AAMX,SAAgB,EAAY,GAAuB;AACjD,QAAO,EAEJ,QAAQ,uBAAuB,GAAG,CAElC,QAAQ,wCAAwC,GAAG,CAEnD,QAAQ,kCAAkC,GAAG,CAE7C,QAAQ,qBAAqB,GAAG,CAEhC,QAAQ,2BAA2B,GAAG,CACtC,QAAQ,yBAAyB,GAAG,CAEpC,QAAQ,wCAAwC,GAAG,CAEnD,QAAQ,4BAA4B,GAAG;;AAO5C,SAAgB,EAAU,GAAuB;AAC/C,KAAI,OAAO,MAAQ,OAAe,IAAI,OACpC,QAAO,IAAI,OAAO,EAAM;CAG1B,IAAM,IAAM,OAAO,EAAM,EACnB,IAAS,EAAI,QACf,IAAS,IACT,IAAI;AAER,QAAO,IAAI,IAAQ;EACjB,IAAM,IAAO,EAAI,OAAO,EAAE,EACpB,IAAO,EAAI,WAAW,EAAE;AA6B9B,EA3BI,MAAS,IACX,KAAU,MAET,KAAQ,KAAU,KAAQ,MAC3B,MAAS,OACR,MAAM,KAAK,KAAQ,MAAU,KAAQ,MACrC,MAAM,KACL,KAAQ,MACR,KAAQ,MACR,EAAI,WAAW,EAAE,KAAK,KAExB,KAAU,OAAO,EAAK,SAAS,GAAG,GAAG,MAC5B,MAAM,KAAK,MAAW,KAAK,MAAS,KAC7C,KAAU,OAAO,IAEjB,KAAQ,OACR,MAAS,MACT,MAAS,MACR,KAAQ,MAAU,KAAQ,MAC1B,KAAQ,MAAU,KAAQ,MAC1B,KAAQ,MAAU,KAAQ,MAE3B,KAAU,IAEV,KAAU,OAAO,GAGnB;;AAGF,QAAO;;AAIT,SAAgB,EAAgB,GAAsB;AACpD,QAAO,MAAM,EAAU,EAAK;;AAI9B,SAAgB,EAAa,GAAqB;AAChD,QAAO,EAAI,QAAQ,uBAAuB,OAAO;;AAKnD,IAAa,IAAY,CAAG;IACxB,EAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoJD,IAAU,WAInB,IAAuC;AAE3C,SAAgB,IAAmC;AAajD,QAZK,MACC,OAAO,gBAAkB,MAC3B,IAAiB;EACf,UAAU,EAAE;EACZ,mBAAmB;EACnB,gBAAgB,EAAU,EAAU;EACrC,IAED,IAAiB,IAAI,eAAe,EACpC,EAAe,YAAY,EAAU,EAAU,CAAC,IAG7C;;;;ACjRT,IAAI,IAAiC,MACjC,IAAqC,MACrC,IAAwC;AAQ5C,SAAgB,EACd,GACA,GACA,GACM;AAGN,CAFA,IAAc,GACd,IAAgB,GAChB,IAAe;;AAOjB,SAAgB,EAAkB,GAA2B;AAC3D,QAAO,IAAc,EAAY,EAAK,GAAG;;AAO3C,SAAgB,EAAc,GAAsB;AAClD,QAAO,IAAgB,EAAc,EAAK,GAAG;;AAO/C,SAAgB,IAA2C;AACzD,QAAO,IAAe,GAAc,GAAG"}
@@ -1,4 +1,4 @@
1
- var u = `/*
1
+ var e=`/*
2
2
  * Custom Elements Variables CSS
3
3
  * Default fallback values
4
4
  *
@@ -426,37 +426,8 @@ var u = `/*
426
426
  initial-value: 1;
427
427
  inherits: false;
428
428
  }
429
- `;
430
- function p(e, ...c) {
431
- let n = "";
432
- for (let o = 0; o < e.length; o++)
433
- n += e[o], o < c.length && (n += c[o]);
434
- return n;
435
- }
436
- function d(e) {
437
- return e.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\s+/g, " ").replace(/\s*([{}:;,>~])\s*/g, "$1").replace(/;}/g, "}").trim();
438
- }
439
- function y(e) {
440
- return e.replace(/@charset\s+[^;]*;/gi, "").replace(/url\s*\(\s*['"]?javascript:[^)]*\)/gi, "").replace(/url\s*\(\s*['"]?data:[^)]*\)/gi, "").replace(/@import\s[^;{]*/gi, "").replace(/-moz-binding\s*:[^;]*/gi, "").replace(/\bbehavior\s*:[^;]*/gi, "").replace(/<script[\s\S]*?>[\s\S]*?<\/script>/gi, "").replace(/expression\s*\([^)]*\)/gi, "");
441
- }
442
- function g(e) {
443
- if (typeof CSS < "u" && CSS.escape) return CSS.escape(e);
444
- const c = String(e), n = c.length;
445
- let o = "", l = 0;
446
- for (; l < n; ) {
447
- const i = c.charAt(l), r = c.charCodeAt(l);
448
- r === 0 ? o += "�" : r >= 1 && r <= 31 || r === 127 || l === 0 && r >= 48 && r <= 57 || l === 1 && r >= 48 && r <= 57 && c.charCodeAt(0) === 45 ? o += "\\" + r.toString(16) + " " : l === 0 && n === 1 && r === 45 ? o += "\\" + i : r >= 128 || r === 45 || r === 95 || r >= 48 && r <= 57 || r >= 65 && r <= 90 || r >= 97 && r <= 122 ? o += i : o += "\\" + i, l++;
449
- }
450
- return o;
451
- }
452
- function m(e) {
453
- return "." + g(e);
454
- }
455
- function h(e) {
456
- return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
457
- }
458
- var b = p`
459
- ${u}
429
+ `;function t(e,...t){let n=``;for(let r=0;r<e.length;r++)n+=e[r],r<t.length&&(n+=t[r]);return n}function n(e){return e.replace(/\/\*[\s\S]*?\*\//g,``).replace(/\s+/g,` `).replace(/\s*([{}:;,>~])\s*/g,`$1`).replace(/;}/g,`}`).trim()}function r(e){return e.replace(/@charset\s+[^;]*;/gi,``).replace(/url\s*\(\s*['"]?javascript:[^)]*\)/gi,``).replace(/url\s*\(\s*['"]?data:[^)]*\)/gi,``).replace(/@import\s[^;{]*/gi,``).replace(/-moz-binding\s*:[^;]*/gi,``).replace(/\bbehavior\s*:[^;]*/gi,``).replace(/<script[\s\S]*?>[\s\S]*?<\/script>/gi,``).replace(/expression\s*\([^)]*\)/gi,``)}function i(e){if(typeof CSS<`u`&&CSS.escape)return CSS.escape(e);let t=String(e),n=t.length,r=``,i=0;for(;i<n;){let e=t.charAt(i),a=t.charCodeAt(i);a===0?r+=`�`:a>=1&&a<=31||a===127||i===0&&a>=48&&a<=57||i===1&&a>=48&&a<=57&&t.charCodeAt(0)===45?r+=`\\`+a.toString(16)+` `:i===0&&n===1&&a===45?r+=`\\`+e:a>=128||a===45||a===95||a>=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122?r+=e:r+=`\\`+e,i++}return r}function a(e){return`.`+i(e)}function o(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}var s=t`
430
+ ${e}
460
431
  :host,
461
432
  *,
462
433
  ::before,
@@ -601,42 +572,5 @@ var b = p`
601
572
  [hidden] {
602
573
  display: none;
603
574
  }
604
- `, v = "0.25rem", a = null;
605
- function k() {
606
- return a || (typeof CSSStyleSheet > "u" ? a = {
607
- cssRules: [],
608
- replaceSync: () => {
609
- },
610
- toString: () => d(b)
611
- } : (a = new CSSStyleSheet(), a.replaceSync(d(b)))), a;
612
- }
613
- var t = null, s = null, f = null;
614
- function w(e, c, n) {
615
- t = e, s = c, f = n;
616
- }
617
- function S(e) {
618
- return t ? t(e) : !1;
619
- }
620
- function x(e) {
621
- return s ? s(e) : "";
622
- }
623
- function C() {
624
- return f ? f() : null;
625
- }
626
- export {
627
- b as a,
628
- m as c,
629
- d,
630
- y as f,
631
- x as i,
632
- h as l,
633
- C as n,
634
- p as o,
635
- v as p,
636
- S as r,
637
- g as s,
638
- w as t,
639
- k as u
640
- };
641
-
642
- //# sourceMappingURL=css-utils-CC43BbEy.js.map
575
+ `,c=`0.25rem`,l=null;function u(){return l||(typeof CSSStyleSheet>`u`?l={cssRules:[],replaceSync:()=>{},toString:()=>n(s)}:(l=new CSSStyleSheet,l.replaceSync(n(s)))),l}var d=null,f=null,p=null;function m(e,t,n){d=e,f=t,p=n}function h(e){return d?d(e):!1}function g(e){return f?f(e):``}function _(){return p?p():null}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return u}});
576
+ //# sourceMappingURL=css-utils-CFeP8SK1.cjs.map