@fab1o978/react-ui 0.1.0 → 0.1.2

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Button/Button.module.scss","../src/components/Button/Button.tsx","../src/components/Input/Input.module.scss","../src/components/Input/Input.tsx","../src/components/Badge/Badge.module.scss","../src/components/Badge/Badge.tsx","../src/components/RainCanvas/RainCanvas.module.scss","../src/components/RainCanvas/RainCanvas.tsx","../src/components/Timeline/Timeline.module.scss","../src/utils/color.ts","../src/components/Timeline/Timeline.tsx","../src/components/ColorPicker/ColorPicker.module.scss","../src/components/ColorPicker/ColorPicker.tsx"],"names":["button","primary","secondary","danger","ghost","sm","md","lg","fullWidth","loading","spinner","spin","wrapper","label","inputWrapper","input","error","adornment","adornmentEnd","withStart","withEnd","helperText","errorText","React","jsxs","jsx","badge","default","success","warning","dotIndicator","trailCanvas","content","dropContainer","filterId","timeline","vertical","item","track","connector","last","horizontal","dot","iconSlot","completed","dotIn","active","pulse","pending","title","description","connectorHidden","connectorDone","colorPicker","topRow","discWrapper","disc","lSlider","lThumb","alphaSlider","alphaThumb","previewSwatch","eyedropperBtn","inputSection","tabs","tab","tabActive","inputAddon","inputCopyBtn","recents","recentsLabel","swatches","recentSwatch","CheckIcon","useEffect","useRef","rr","gg","bb"],"mappings":"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","file":"index.js","sourcesContent":["@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n font-family: var(--font-family-base);\n font-weight: 500;\n letter-spacing: -0.01em;\n border: 1px solid transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);\n white-space: nowrap;\n text-decoration: none;\n outline-offset: 2px;\n}\n\n.button:focus-visible {\n outline: 2px solid var(--color-primary-500);\n}\n\n.button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Variants */\n.primary {\n background-color: var(--color-primary-600);\n color: var(--color-neutral-0);\n}\n\n.primary:hover:not(:disabled) {\n background-color: var(--color-primary-700);\n}\n\n.secondary {\n background-color: var(--color-neutral-0);\n color: var(--color-neutral-900);\n border-color: var(--color-neutral-200);\n box-shadow: var(--shadow-sm);\n}\n\n.secondary:hover:not(:disabled) {\n background-color: var(--color-neutral-100);\n}\n\n.danger {\n background-color: var(--color-danger-500);\n color: var(--color-neutral-0);\n}\n\n.danger:hover:not(:disabled) {\n background-color: var(--color-danger-600);\n}\n\n.ghost {\n background-color: transparent;\n color: var(--color-neutral-600);\n}\n\n.ghost:hover:not(:disabled) {\n background-color: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n/* Sizes */\n.sm {\n font-size: var(--font-size-xs);\n padding: var(--spacing-1) var(--spacing-3);\n height: 2rem;\n}\n\n.md {\n font-size: var(--font-size-sm);\n padding: var(--spacing-2) var(--spacing-4);\n height: 2.5rem;\n}\n\n.lg {\n font-size: var(--font-size-md);\n padding: var(--spacing-3) var(--spacing-4);\n height: 3rem;\n}\n\n.fullWidth {\n width: 100%;\n}\n\n/* Loading */\n.loading {\n position: relative;\n}\n\n.spinner {\n width: 1em;\n height: 1em;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: var(--radius-full);\n animation: spin 0.6s linear infinite;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIkJ1dHRvbi5tb2R1bGUuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFUTtBQUtSO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBR0E7RUFHQTtFQUNBOzs7QUFRRjtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUNBO0VBSUE7RUFHQTtFQUNBOzs7QUNqR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBOzs7QUFFRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFFRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUVGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTs7O0FBRUY7RUFDRTtFQUNBOzs7QUFHRjtBQUNBO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0FBQ0E7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7SUFDRSIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgXCJzYXNzOmNvbG9yXCI7XG5cbkBpbXBvcnQgdXJsKFwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDQwMDs1MDA7NjAwJmRpc3BsYXk9c3dhcFwiKTtcblxuLy8gQWNjZW50IGRpIGRlZmF1bHQg4oCUIGNhbWJpYSBxdWkgcGVyIGFnZ2lvcm5hcmUgdHV0dGEgbGEgbGlicmVyaWFcbiRhY2NlbnQ6ICMzYjgyZjY7XG5cbjpyb290IHtcbiAgLy8gQWNjZW50IHNjYWxlIOKAlCBkZXJpdmF0YSBkYSAkYWNjZW50IGEgY29tcGlsZSB0aW1lXG4gIC0tYWNjZW50OiAgICAgICAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtZG90OiAgICAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDEyJSl9O1xuICAtLWFjY2VudC10cmFjazogICN7JGFjY2VudH07XG4gIC0tYWNjZW50LXJpbmc6ICAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtZ2xvdzogICAje2NvbG9yLmNoYW5nZSgkYWNjZW50LCAkYWxwaGE6IDAuMyl9O1xuICAtLWFjY2VudC1saWdodDogICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDUlLCAkc2F0dXJhdGlvbjogLTIwJSl9O1xuXG4gIC8vIFByaW1hcnkgc2NhbGUgKG1hbnRlbnV0YSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCBjb24gQnV0dG9uLCBCYWRnZSwgSW5wdXQpXG4gIC0tY29sb3ItcHJpbWFyeS01MDogICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDklLCAkc2F0dXJhdGlvbjogLTMwJSl9O1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDQyJSwgJHNhdHVyYXRpb246IC0xNSUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTQwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAxMiUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTUwMDogI3skYWNjZW50fTtcbiAgLS1jb2xvci1wcmltYXJ5LTYwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAtMTAlKX07XG4gIC0tY29sb3ItcHJpbWFyeS03MDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogLTIwJSl9O1xuXG4gIC8vIE5ldXRyYWxcbiAgLS1jb2xvci1uZXV0cmFsLTA6ICAgI2ZmZmZmZjtcbiAgLS1jb2xvci1uZXV0cmFsLTEwMDogI2YzZjRmNjtcbiAgLS1jb2xvci1uZXV0cmFsLTIwMDogI2U1ZTdlYjtcbiAgLS1jb2xvci1uZXV0cmFsLTQwMDogIzljYTNhZjtcbiAgLS1jb2xvci1uZXV0cmFsLTYwMDogIzRiNTU2MztcbiAgLS1jb2xvci1uZXV0cmFsLTkwMDogIzExMTgyNztcblxuICAvLyBTZW1hbnRpY1xuICAtLWNvbG9yLXN1Y2Nlc3MtNTAwOiAjMjJjNTVlO1xuICAtLWNvbG9yLXN1Y2Nlc3MtNjAwOiAjMTZhMzRhO1xuICAtLWNvbG9yLWRhbmdlci01MDA6ICAjZWY0NDQ0O1xuICAtLWNvbG9yLWRhbmdlci02MDA6ICAjZGMyNjI2O1xuICAtLWNvbG9yLXdhcm5pbmctNTAwOiAjZjU5ZTBiO1xuICAtLWNvbG9yLXdhcm5pbmctNjAwOiAjZDk3NzA2O1xuXG4gIC8vIFR5cG9ncmFwaHlcbiAgLS1mb250LWZhbWlseS1iYXNlOiBcIkludGVyXCIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjtcbiAgLS1mb250LXNpemUteHM6IDAuNzVyZW07XG4gIC0tZm9udC1zaXplLXNtOiAwLjg3NXJlbTtcbiAgLS1mb250LXNpemUtbWQ6IDFyZW07XG4gIC0tZm9udC1zaXplLWxnOiAxLjEyNXJlbTtcblxuICAvLyBTcGFjaW5nXG4gIC0tc3BhY2luZy0xOiAwLjI1cmVtO1xuICAtLXNwYWNpbmctMjogMC41cmVtO1xuICAtLXNwYWNpbmctMzogMC43NXJlbTtcbiAgLS1zcGFjaW5nLTQ6IDFyZW07XG5cbiAgLy8gUmFkaXVzXG4gIC0tcmFkaXVzLXNtOiAgIDAuMjVyZW07XG4gIC0tcmFkaXVzLW1kOiAgIDAuMzc1cmVtO1xuICAtLXJhZGl1cy1sZzogICAwLjVyZW07XG4gIC0tcmFkaXVzLWZ1bGw6IDk5OTlweDtcblxuICAvLyBTaGFkb3dzXG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuMSk7XG5cbiAgLy8gVHJhbnNpdGlvbnNcbiAgLS10cmFuc2l0aW9uLWZhc3Q6IDE1MG1zIGVhc2U7XG5cbiAgLy8gU3VyZmFjZSAoYmFja2dyb3VuZCBkaSBjYXJkL3BhbmVsKVxuICAtLWNvbG9yLXN1cmZhY2U6ICAgICAgICAgICNmZmZmZmY7XG4gIC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZDogI2ZmZmZmZjtcbn1cblxuLy8g4pSA4pSA4pSAIERhcmsgdGhlbWUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBBcHBsaWNhdG8gdmlhIGRhdGEtdGhlbWU9XCJkYXJrXCIgc3VsbCdlbGVtZW50byByb290IChnZXN0aXRvIGRhIFN0b3J5Ym9vayBkZWNvcmF0b3Jcbi8vIGUgZGFsbCdhcHAgY29uc3VtZXIpLiBJIGNvbXBvbmVudGkgbm9uIGRldm9ubyBmYXJlIG51bGxhIGRpIHNwZWNpYWxlOiBiYXN0YSBjaGVcbi8vIHVzaW5vIGkgdG9rZW4gdmFyKCkgZSByaWNldmVyYW5ubyBhdXRvbWF0aWNhbWVudGUgaSB2YWxvcmkgZGFyay5cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIHtcbiAgLy8gTmV1dHJhbCAoc2NhbGEgaW52ZXJ0aXRhKVxuICAtLWNvbG9yLW5ldXRyYWwtMDogICAjMGYxNzJhO1xuICAtLWNvbG9yLW5ldXRyYWwtMTAwOiAjMWUyOTNiO1xuICAtLWNvbG9yLW5ldXRyYWwtMjAwOiAjMzM0MTU1O1xuICAtLWNvbG9yLW5ldXRyYWwtNDAwOiAjOTRhM2I4O1xuICAtLWNvbG9yLW5ldXRyYWwtNjAwOiAjY2JkNWUxO1xuICAtLWNvbG9yLW5ldXRyYWwtOTAwOiAjZjhmYWZjO1xuXG4gIC8vIFN1cmZhY2VcbiAgLS1jb2xvci1zdXJmYWNlOiAgICAgICAgICAjMWUyOTNiO1xuICAtLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQ6ICMyNzM1NDk7XG5cbiAgLy8gUHJpbWFyeSBzY2FsZSBkYXJrIChwZXIgaWwgZGVmYXVsdCBhY2NlbnQgYmx1IOKAlCBsZSBzZnVtYXR1cmUgY2hpYXJlIGRpdmVudGFubyBzY3VyZSlcbiAgLS1jb2xvci1wcmltYXJ5LTUwOiAgIzE3MjU1NDtcbiAgLS1jb2xvci1wcmltYXJ5LTEwMDogIzFlM2E4YTtcbiAgLy8gNDAwIC8gNTAwIC8gNjAwIC8gNzAwIHJpbWFuZ29ubyBpbnZhcmlhdGkgKGFiYmFzdGFuemEgc2F0dXJpIHN1IGJnIHNjdXJvKVxuXG4gIC8vIEFjY2VudCBsaWdodDogdmFyaWFudGUgc2N1cmFcbiAgLS1hY2NlbnQtbGlnaHQ6ICMxNzI1NTQ7XG5cbiAgLy8gU2hhZG93cyAocGnDuSBmb3J0aSBzdSBiZyBzY3VybylcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuNCk7XG4gIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAwLjUpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAwLjQpO1xufVxuIiwiQGltcG9ydCBcIi4uLy4uL3N0eWxlcy90b2tlbnMuc2Nzc1wiO1xuXG4uYnV0dG9uIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNpbmctMik7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1iYXNlKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSxcbiAgICBib3JkZXItY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSwgY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSxcbiAgICBib3gtc2hhZG93IHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLmJ1dHRvbjpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktNTAwKTtcbn1cblxuLmJ1dHRvbjpkaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLyogVmFyaWFudHMgKi9cbi5wcmltYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS02MDApO1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0wKTtcbn1cbi5wcmltYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS03MDApO1xufVxuXG4uc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0wKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG59XG4uc2Vjb25kYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0xMDApO1xufVxuXG4uZGFuZ2VyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZGFuZ2VyLTUwMCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTApO1xufVxuLmRhbmdlcjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWRhbmdlci02MDApO1xufVxuXG4uZ2hvc3Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNjAwKTtcbn1cbi5naG9zdDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbn1cblxuLyogU2l6ZXMgKi9cbi5zbSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0xKSB2YXIoLS1zcGFjaW5nLTMpO1xuICBoZWlnaHQ6IDJyZW07XG59XG5cbi5tZCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0yKSB2YXIoLS1zcGFjaW5nLTQpO1xuICBoZWlnaHQ6IDIuNXJlbTtcbn1cblxuLmxnIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbWQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTMpIHZhcigtLXNwYWNpbmctNCk7XG4gIGhlaWdodDogM3JlbTtcbn1cblxuLmZ1bGxXaWR0aCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBMb2FkaW5nICovXG4ubG9hZGluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnNwaW5uZXIge1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICBhbmltYXRpb246IHNwaW4gMC42cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgc3BpbiB7XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG4iXX0= */","import React from \"react\";\nimport styles from \"./Button.module.scss\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"danger\" | \"ghost\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n loading?: boolean;\n fullWidth?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = \"primary\",\n size = \"md\",\n loading = false,\n fullWidth = false,\n disabled,\n children,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n disabled={disabled || loading}\n className={[\n styles.button,\n styles[variant],\n styles[size],\n fullWidth ? styles.fullWidth : \"\",\n loading ? styles.loading : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {loading && <span className={styles.spinner} aria-hidden=\"true\" />}\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.wrapper {\n display: inline-flex;\n flex-direction: column;\n gap: var(--spacing-1);\n}\n\n.fullWidth {\n width: 100%;\n}\n\n.label {\n font-family: var(--font-family-base);\n font-size: var(--font-size-sm);\n font-weight: 500;\n color: var(--color-neutral-900);\n letter-spacing: -0.01em;\n}\n\n.inputWrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.input {\n width: 100%;\n font-family: var(--font-family-base);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-md);\n background-color: var(--color-neutral-0);\n color: var(--color-neutral-900);\n outline: none;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n\n.input::placeholder {\n color: var(--color-neutral-400);\n}\n\n.input:focus {\n border-color: var(--color-primary-500);\n box-shadow: 0 0 0 3px var(--color-primary-100);\n}\n\n.input:disabled {\n background-color: var(--color-neutral-100);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.input.error {\n border-color: var(--color-danger-500);\n}\n\n.input.error:focus {\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15);\n}\n\n/* Sizes */\n.sm .input {\n font-size: var(--font-size-xs);\n padding: var(--spacing-1) var(--spacing-2);\n height: 2rem;\n}\n\n.md .input {\n font-size: var(--font-size-sm);\n padding: var(--spacing-2) var(--spacing-3);\n height: 2.5rem;\n}\n\n.lg .input {\n font-size: var(--font-size-md);\n padding: var(--spacing-3) var(--spacing-4);\n height: 3rem;\n}\n\n/* Adornments */\n.adornment {\n position: absolute;\n left: var(--spacing-3);\n display: flex;\n align-items: center;\n color: var(--color-neutral-400);\n pointer-events: none;\n}\n\n.adornmentEnd {\n left: unset;\n right: var(--spacing-3);\n}\n\n.sm .withStart {\n padding-left: 2rem;\n}\n\n.md .withStart {\n padding-left: 2.25rem;\n}\n\n.lg .withStart {\n padding-left: 2.5rem;\n}\n\n.sm .withEnd {\n padding-right: 2rem;\n}\n\n.md .withEnd {\n padding-right: 2.25rem;\n}\n\n.lg .withEnd {\n padding-right: 2.5rem;\n}\n\n.helperText {\n font-family: var(--font-family-base);\n font-size: var(--font-size-xs);\n color: var(--color-neutral-400);\n}\n\n.errorText {\n font-family: var(--font-family-base);\n font-size: var(--font-size-xs);\n color: var(--color-danger-500);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIklucHV0Lm1vZHVsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVRO0FBS1I7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7OztBQVFGO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFJQTtFQUdBO0VBQ0E7OztBQ2pHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtBQUNBO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFBaUI7OztBQUNqQjtFQUFpQjs7O0FBQ2pCO0VBQWlCOzs7QUFFakI7RUFBZTs7O0FBQ2Y7RUFBZTs7O0FBQ2Y7RUFBZTs7O0FBRWY7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSBcInNhc3M6Y29sb3JcIjtcblxuQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDAmZGlzcGxheT1zd2FwXCIpO1xuXG4vLyBBY2NlbnQgZGkgZGVmYXVsdCDigJQgY2FtYmlhIHF1aSBwZXIgYWdnaW9ybmFyZSB0dXR0YSBsYSBsaWJyZXJpYVxuJGFjY2VudDogIzNiODJmNjtcblxuOnJvb3Qge1xuICAvLyBBY2NlbnQgc2NhbGUg4oCUIGRlcml2YXRhIGRhICRhY2NlbnQgYSBjb21waWxlIHRpbWVcbiAgLS1hY2NlbnQ6ICAgICAgICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1kb3Q6ICAgICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogMTIlKX07XG4gIC0tYWNjZW50LXRyYWNrOiAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtcmluZzogICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1nbG93OiAgICN7Y29sb3IuY2hhbmdlKCRhY2NlbnQsICRhbHBoYTogMC4zKX07XG4gIC0tYWNjZW50LWxpZ2h0OiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0NSUsICRzYXR1cmF0aW9uOiAtMjAlKX07XG5cbiAgLy8gUHJpbWFyeSBzY2FsZSAobWFudGVudXRhIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIGNvbiBCdXR0b24sIEJhZGdlLCBJbnB1dClcbiAgLS1jb2xvci1wcmltYXJ5LTUwOiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0OSUsICRzYXR1cmF0aW9uOiAtMzAlKX07XG4gIC0tY29sb3ItcHJpbWFyeS0xMDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDIlLCAkc2F0dXJhdGlvbjogLTE1JSl9O1xuICAtLWNvbG9yLXByaW1hcnktNDAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDEyJSl9O1xuICAtLWNvbG9yLXByaW1hcnktNTAwOiAjeyRhY2NlbnR9O1xuICAtLWNvbG9yLXByaW1hcnktNjAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IC0xMCUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTcwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAtMjAlKX07XG5cbiAgLy8gTmV1dHJhbFxuICAtLWNvbG9yLW5ldXRyYWwtMDogICAjZmZmZmZmO1xuICAtLWNvbG9yLW5ldXRyYWwtMTAwOiAjZjNmNGY2O1xuICAtLWNvbG9yLW5ldXRyYWwtMjAwOiAjZTVlN2ViO1xuICAtLWNvbG9yLW5ldXRyYWwtNDAwOiAjOWNhM2FmO1xuICAtLWNvbG9yLW5ldXRyYWwtNjAwOiAjNGI1NTYzO1xuICAtLWNvbG9yLW5ldXRyYWwtOTAwOiAjMTExODI3O1xuXG4gIC8vIFNlbWFudGljXG4gIC0tY29sb3Itc3VjY2Vzcy01MDA6ICMyMmM1NWU7XG4gIC0tY29sb3Itc3VjY2Vzcy02MDA6ICMxNmEzNGE7XG4gIC0tY29sb3ItZGFuZ2VyLTUwMDogICNlZjQ0NDQ7XG4gIC0tY29sb3ItZGFuZ2VyLTYwMDogICNkYzI2MjY7XG4gIC0tY29sb3Itd2FybmluZy01MDA6ICNmNTllMGI7XG4gIC0tY29sb3Itd2FybmluZy02MDA6ICNkOTc3MDY7XG5cbiAgLy8gVHlwb2dyYXBoeVxuICAtLWZvbnQtZmFtaWx5LWJhc2U6IFwiSW50ZXJcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xuICAtLWZvbnQtc2l6ZS14czogMC43NXJlbTtcbiAgLS1mb250LXNpemUtc206IDAuODc1cmVtO1xuICAtLWZvbnQtc2l6ZS1tZDogMXJlbTtcbiAgLS1mb250LXNpemUtbGc6IDEuMTI1cmVtO1xuXG4gIC8vIFNwYWNpbmdcbiAgLS1zcGFjaW5nLTE6IDAuMjVyZW07XG4gIC0tc3BhY2luZy0yOiAwLjVyZW07XG4gIC0tc3BhY2luZy0zOiAwLjc1cmVtO1xuICAtLXNwYWNpbmctNDogMXJlbTtcblxuICAvLyBSYWRpdXNcbiAgLS1yYWRpdXMtc206ICAgMC4yNXJlbTtcbiAgLS1yYWRpdXMtbWQ6ICAgMC4zNzVyZW07XG4gIC0tcmFkaXVzLWxnOiAgIDAuNXJlbTtcbiAgLS1yYWRpdXMtZnVsbDogOTk5OXB4O1xuXG4gIC8vIFNoYWRvd3NcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC4xKTtcblxuICAvLyBUcmFuc2l0aW9uc1xuICAtLXRyYW5zaXRpb24tZmFzdDogMTUwbXMgZWFzZTtcblxuICAvLyBTdXJmYWNlIChiYWNrZ3JvdW5kIGRpIGNhcmQvcGFuZWwpXG4gIC0tY29sb3Itc3VyZmFjZTogICAgICAgICAgI2ZmZmZmZjtcbiAgLS1jb2xvci1zdXJmYWNlLWVsZXZhdGVkOiAjZmZmZmZmO1xufVxuXG4vLyDilIDilIDilIAgRGFyayB0aGVtZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEFwcGxpY2F0byB2aWEgZGF0YS10aGVtZT1cImRhcmtcIiBzdWxsJ2VsZW1lbnRvIHJvb3QgKGdlc3RpdG8gZGEgU3Rvcnlib29rIGRlY29yYXRvclxuLy8gZSBkYWxsJ2FwcCBjb25zdW1lcikuIEkgY29tcG9uZW50aSBub24gZGV2b25vIGZhcmUgbnVsbGEgZGkgc3BlY2lhbGU6IGJhc3RhIGNoZVxuLy8gdXNpbm8gaSB0b2tlbiB2YXIoKSBlIHJpY2V2ZXJhbm5vIGF1dG9tYXRpY2FtZW50ZSBpIHZhbG9yaSBkYXJrLlxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0ge1xuICAvLyBOZXV0cmFsIChzY2FsYSBpbnZlcnRpdGEpXG4gIC0tY29sb3ItbmV1dHJhbC0wOiAgICMwZjE3MmE7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICMxZTI5M2I7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICMzMzQxNTU7XG4gIC0tY29sb3ItbmV1dHJhbC00MDA6ICM5NGEzYjg7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICNjYmQ1ZTE7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICNmOGZhZmM7XG5cbiAgLy8gU3VyZmFjZVxuICAtLWNvbG9yLXN1cmZhY2U6ICAgICAgICAgICMxZTI5M2I7XG4gIC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZDogIzI3MzU0OTtcblxuICAvLyBQcmltYXJ5IHNjYWxlIGRhcmsgKHBlciBpbCBkZWZhdWx0IGFjY2VudCBibHUg4oCUIGxlIHNmdW1hdHVyZSBjaGlhcmUgZGl2ZW50YW5vIHNjdXJlKVxuICAtLWNvbG9yLXByaW1hcnktNTA6ICAjMTcyNTU0O1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAjMWUzYThhO1xuICAvLyA0MDAgLyA1MDAgLyA2MDAgLyA3MDAgcmltYW5nb25vIGludmFyaWF0aSAoYWJiYXN0YW56YSBzYXR1cmkgc3UgYmcgc2N1cm8pXG5cbiAgLy8gQWNjZW50IGxpZ2h0OiB2YXJpYW50ZSBzY3VyYVxuICAtLWFjY2VudC1saWdodDogIzE3MjU1NDtcblxuICAvLyBTaGFkb3dzIChwacO5IGZvcnRpIHN1IGJnIHNjdXJvKVxuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC40KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuNSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuNCk7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2Vucy5zY3NzXCI7XG5cbi53cmFwcGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2luZy0xKTtcbn1cblxuLmZ1bGxXaWR0aCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubGFiZWwge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktYmFzZSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG59XG5cbi5pbnB1dFdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5pbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktYmFzZSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0wKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXRyYW5zaXRpb24tZmFzdCksIGJveC1zaGFkb3cgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmlucHV0OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG59XG5cbi5pbnB1dDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS01MDApO1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggdmFyKC0tY29sb3ItcHJpbWFyeS0xMDApO1xufVxuXG4uaW5wdXQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTEwMCk7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLmlucHV0LmVycm9yIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1kYW5nZXItNTAwKTtcbn1cblxuLmlucHV0LmVycm9yOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYigyMzkgNjggNjggLyAwLjE1KTtcbn1cblxuLyogU2l6ZXMgKi9cbi5zbSAuaW5wdXQge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14cyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMSkgdmFyKC0tc3BhY2luZy0yKTtcbiAgaGVpZ2h0OiAycmVtO1xufVxuXG4ubWQgLmlucHV0IHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLXNwYWNpbmctMyk7XG4gIGhlaWdodDogMi41cmVtO1xufVxuXG4ubGcgLmlucHV0IHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbWQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTMpIHZhcigtLXNwYWNpbmctNCk7XG4gIGhlaWdodDogM3JlbTtcbn1cblxuLyogQWRvcm5tZW50cyAqL1xuLmFkb3JubWVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogdmFyKC0tc3BhY2luZy0zKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNDAwKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5hZG9ybm1lbnRFbmQge1xuICBsZWZ0OiB1bnNldDtcbiAgcmlnaHQ6IHZhcigtLXNwYWNpbmctMyk7XG59XG5cbi5zbSAud2l0aFN0YXJ0IHsgcGFkZGluZy1sZWZ0OiAycmVtOyB9XG4ubWQgLndpdGhTdGFydCB7IHBhZGRpbmctbGVmdDogMi4yNXJlbTsgfVxuLmxnIC53aXRoU3RhcnQgeyBwYWRkaW5nLWxlZnQ6IDIuNXJlbTsgfVxuXG4uc20gLndpdGhFbmQgeyBwYWRkaW5nLXJpZ2h0OiAycmVtOyB9XG4ubWQgLndpdGhFbmQgeyBwYWRkaW5nLXJpZ2h0OiAyLjI1cmVtOyB9XG4ubGcgLndpdGhFbmQgeyBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07IH1cblxuLmhlbHBlclRleHQge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktYmFzZSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNDAwKTtcbn1cblxuLmVycm9yVGV4dCB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1iYXNlKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZGFuZ2VyLTUwMCk7XG59XG4iXX0= */","import React from \"react\";\nimport styles from \"./Input.module.scss\";\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n size?: InputSize;\n fullWidth?: boolean;\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n label,\n helperText,\n errorText,\n size = \"md\",\n fullWidth = false,\n startAdornment,\n endAdornment,\n id,\n className,\n ...props\n },\n ref\n ) => {\n const inputId = id ?? (label ? label.toLowerCase().replace(/\\s+/g, \"-\") : undefined);\n const hasError = Boolean(errorText);\n\n return (\n <div\n className={[\n styles.wrapper,\n fullWidth ? styles.fullWidth : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {label && (\n <label htmlFor={inputId} className={styles.label}>\n {label}\n </label>\n )}\n <div className={[styles.inputWrapper, styles[size]].join(\" \")}>\n {startAdornment && (\n <span className={styles.adornment}>{startAdornment}</span>\n )}\n <input\n ref={ref}\n id={inputId}\n className={[\n styles.input,\n hasError ? styles.error : \"\",\n startAdornment ? styles.withStart : \"\",\n endAdornment ? styles.withEnd : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-invalid={hasError}\n aria-describedby={\n errorText\n ? `${inputId}-error`\n : helperText\n ? `${inputId}-helper`\n : undefined\n }\n {...props}\n />\n {endAdornment && (\n <span className={[styles.adornment, styles.adornmentEnd].join(\" \")}>\n {endAdornment}\n </span>\n )}\n </div>\n {errorText && (\n <span id={`${inputId}-error`} className={styles.errorText}>\n {errorText}\n </span>\n )}\n {helperText && !errorText && (\n <span id={`${inputId}-helper`} className={styles.helperText}>\n {helperText}\n </span>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n","@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-1);\n font-family: var(--font-family-base);\n font-weight: 500;\n letter-spacing: 0.01em;\n border-radius: var(--radius-full);\n white-space: nowrap;\n}\n\n/* Sizes */\n.sm {\n font-size: var(--font-size-xs);\n padding: 0.1rem var(--spacing-2);\n}\n\n.md {\n font-size: var(--font-size-xs);\n padding: var(--spacing-1) var(--spacing-3);\n}\n\n/* Variants */\n.default {\n background-color: var(--color-neutral-100);\n color: var(--color-neutral-600);\n}\n\n.primary {\n background-color: var(--color-primary-50);\n color: var(--color-primary-700);\n}\n\n.success {\n background-color: #f0fdf4;\n color: var(--color-success-600);\n}\n\n.warning {\n background-color: #fffbeb;\n color: var(--color-warning-600);\n}\n\n.danger {\n background-color: #fef2f2;\n color: var(--color-danger-600);\n}\n\n/* Dot indicator */\n.dotIndicator {\n width: 0.5rem;\n height: 0.5rem;\n border-radius: var(--radius-full);\n background-color: currentColor;\n flex-shrink: 0;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIkJhZGdlLm1vZHVsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVRO0FBS1I7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7OztBQVFGO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFJQTtFQUdBO0VBQ0E7OztBQ2pHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSBcInNhc3M6Y29sb3JcIjtcblxuQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDAmZGlzcGxheT1zd2FwXCIpO1xuXG4vLyBBY2NlbnQgZGkgZGVmYXVsdCDigJQgY2FtYmlhIHF1aSBwZXIgYWdnaW9ybmFyZSB0dXR0YSBsYSBsaWJyZXJpYVxuJGFjY2VudDogIzNiODJmNjtcblxuOnJvb3Qge1xuICAvLyBBY2NlbnQgc2NhbGUg4oCUIGRlcml2YXRhIGRhICRhY2NlbnQgYSBjb21waWxlIHRpbWVcbiAgLS1hY2NlbnQ6ICAgICAgICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1kb3Q6ICAgICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogMTIlKX07XG4gIC0tYWNjZW50LXRyYWNrOiAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtcmluZzogICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1nbG93OiAgICN7Y29sb3IuY2hhbmdlKCRhY2NlbnQsICRhbHBoYTogMC4zKX07XG4gIC0tYWNjZW50LWxpZ2h0OiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0NSUsICRzYXR1cmF0aW9uOiAtMjAlKX07XG5cbiAgLy8gUHJpbWFyeSBzY2FsZSAobWFudGVudXRhIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIGNvbiBCdXR0b24sIEJhZGdlLCBJbnB1dClcbiAgLS1jb2xvci1wcmltYXJ5LTUwOiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0OSUsICRzYXR1cmF0aW9uOiAtMzAlKX07XG4gIC0tY29sb3ItcHJpbWFyeS0xMDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDIlLCAkc2F0dXJhdGlvbjogLTE1JSl9O1xuICAtLWNvbG9yLXByaW1hcnktNDAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDEyJSl9O1xuICAtLWNvbG9yLXByaW1hcnktNTAwOiAjeyRhY2NlbnR9O1xuICAtLWNvbG9yLXByaW1hcnktNjAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IC0xMCUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTcwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAtMjAlKX07XG5cbiAgLy8gTmV1dHJhbFxuICAtLWNvbG9yLW5ldXRyYWwtMDogICAjZmZmZmZmO1xuICAtLWNvbG9yLW5ldXRyYWwtMTAwOiAjZjNmNGY2O1xuICAtLWNvbG9yLW5ldXRyYWwtMjAwOiAjZTVlN2ViO1xuICAtLWNvbG9yLW5ldXRyYWwtNDAwOiAjOWNhM2FmO1xuICAtLWNvbG9yLW5ldXRyYWwtNjAwOiAjNGI1NTYzO1xuICAtLWNvbG9yLW5ldXRyYWwtOTAwOiAjMTExODI3O1xuXG4gIC8vIFNlbWFudGljXG4gIC0tY29sb3Itc3VjY2Vzcy01MDA6ICMyMmM1NWU7XG4gIC0tY29sb3Itc3VjY2Vzcy02MDA6ICMxNmEzNGE7XG4gIC0tY29sb3ItZGFuZ2VyLTUwMDogICNlZjQ0NDQ7XG4gIC0tY29sb3ItZGFuZ2VyLTYwMDogICNkYzI2MjY7XG4gIC0tY29sb3Itd2FybmluZy01MDA6ICNmNTllMGI7XG4gIC0tY29sb3Itd2FybmluZy02MDA6ICNkOTc3MDY7XG5cbiAgLy8gVHlwb2dyYXBoeVxuICAtLWZvbnQtZmFtaWx5LWJhc2U6IFwiSW50ZXJcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xuICAtLWZvbnQtc2l6ZS14czogMC43NXJlbTtcbiAgLS1mb250LXNpemUtc206IDAuODc1cmVtO1xuICAtLWZvbnQtc2l6ZS1tZDogMXJlbTtcbiAgLS1mb250LXNpemUtbGc6IDEuMTI1cmVtO1xuXG4gIC8vIFNwYWNpbmdcbiAgLS1zcGFjaW5nLTE6IDAuMjVyZW07XG4gIC0tc3BhY2luZy0yOiAwLjVyZW07XG4gIC0tc3BhY2luZy0zOiAwLjc1cmVtO1xuICAtLXNwYWNpbmctNDogMXJlbTtcblxuICAvLyBSYWRpdXNcbiAgLS1yYWRpdXMtc206ICAgMC4yNXJlbTtcbiAgLS1yYWRpdXMtbWQ6ICAgMC4zNzVyZW07XG4gIC0tcmFkaXVzLWxnOiAgIDAuNXJlbTtcbiAgLS1yYWRpdXMtZnVsbDogOTk5OXB4O1xuXG4gIC8vIFNoYWRvd3NcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC4xKTtcblxuICAvLyBUcmFuc2l0aW9uc1xuICAtLXRyYW5zaXRpb24tZmFzdDogMTUwbXMgZWFzZTtcblxuICAvLyBTdXJmYWNlIChiYWNrZ3JvdW5kIGRpIGNhcmQvcGFuZWwpXG4gIC0tY29sb3Itc3VyZmFjZTogICAgICAgICAgI2ZmZmZmZjtcbiAgLS1jb2xvci1zdXJmYWNlLWVsZXZhdGVkOiAjZmZmZmZmO1xufVxuXG4vLyDilIDilIDilIAgRGFyayB0aGVtZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEFwcGxpY2F0byB2aWEgZGF0YS10aGVtZT1cImRhcmtcIiBzdWxsJ2VsZW1lbnRvIHJvb3QgKGdlc3RpdG8gZGEgU3Rvcnlib29rIGRlY29yYXRvclxuLy8gZSBkYWxsJ2FwcCBjb25zdW1lcikuIEkgY29tcG9uZW50aSBub24gZGV2b25vIGZhcmUgbnVsbGEgZGkgc3BlY2lhbGU6IGJhc3RhIGNoZVxuLy8gdXNpbm8gaSB0b2tlbiB2YXIoKSBlIHJpY2V2ZXJhbm5vIGF1dG9tYXRpY2FtZW50ZSBpIHZhbG9yaSBkYXJrLlxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0ge1xuICAvLyBOZXV0cmFsIChzY2FsYSBpbnZlcnRpdGEpXG4gIC0tY29sb3ItbmV1dHJhbC0wOiAgICMwZjE3MmE7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICMxZTI5M2I7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICMzMzQxNTU7XG4gIC0tY29sb3ItbmV1dHJhbC00MDA6ICM5NGEzYjg7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICNjYmQ1ZTE7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICNmOGZhZmM7XG5cbiAgLy8gU3VyZmFjZVxuICAtLWNvbG9yLXN1cmZhY2U6ICAgICAgICAgICMxZTI5M2I7XG4gIC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZDogIzI3MzU0OTtcblxuICAvLyBQcmltYXJ5IHNjYWxlIGRhcmsgKHBlciBpbCBkZWZhdWx0IGFjY2VudCBibHUg4oCUIGxlIHNmdW1hdHVyZSBjaGlhcmUgZGl2ZW50YW5vIHNjdXJlKVxuICAtLWNvbG9yLXByaW1hcnktNTA6ICAjMTcyNTU0O1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAjMWUzYThhO1xuICAvLyA0MDAgLyA1MDAgLyA2MDAgLyA3MDAgcmltYW5nb25vIGludmFyaWF0aSAoYWJiYXN0YW56YSBzYXR1cmkgc3UgYmcgc2N1cm8pXG5cbiAgLy8gQWNjZW50IGxpZ2h0OiB2YXJpYW50ZSBzY3VyYVxuICAtLWFjY2VudC1saWdodDogIzE3MjU1NDtcblxuICAvLyBTaGFkb3dzIChwacO5IGZvcnRpIHN1IGJnIHNjdXJvKVxuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC40KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuNSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuNCk7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2Vucy5zY3NzXCI7XG5cbi5iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNpbmctMSk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1iYXNlKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vKiBTaXplcyAqL1xuLnNtIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBwYWRkaW5nOiAwLjFyZW0gdmFyKC0tc3BhY2luZy0yKTtcbn1cblxuLm1kIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTEpIHZhcigtLXNwYWNpbmctMyk7XG59XG5cbi8qIFZhcmlhbnRzICovXG4uZGVmYXVsdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNjAwKTtcbn1cblxuLnByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LTUwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktNzAwKTtcbn1cblxuLnN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmZGY0O1xuICBjb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcy02MDApO1xufVxuXG4ud2FybmluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZiZWI7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci13YXJuaW5nLTYwMCk7XG59XG5cbi5kYW5nZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmMmYyO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZGFuZ2VyLTYwMCk7XG59XG5cbi8qIERvdCBpbmRpY2F0b3IgKi9cbi5kb3RJbmRpY2F0b3Ige1xuICB3aWR0aDogMC41cmVtO1xuICBoZWlnaHQ6IDAuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuIl19 */","import React from \"react\";\nimport styles from \"./Badge.module.scss\";\n\nexport type BadgeVariant = \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\";\nexport type BadgeSize = \"sm\" | \"md\";\n\nexport interface BadgeProps {\n variant?: BadgeVariant;\n size?: BadgeSize;\n dot?: boolean;\n children: React.ReactNode;\n className?: string;\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = \"default\",\n size = \"md\",\n dot = false,\n children,\n className,\n}) => {\n return (\n <span\n className={[\n styles.badge,\n styles[variant],\n styles[size],\n dot ? styles.dot : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {dot && <span className={styles.dotIndicator} aria-hidden=\"true\" />}\n {children}\n </span>\n );\n};\n","@charset \"UTF-8\";\n.wrapper {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\n\n/* Scie umide — sotto il contenuto */\n.trailCanvas {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n display: block;\n z-index: 1;\n pointer-events: none;\n}\n\n/* Form e contenuto — sopra le scie */\n.content {\n position: absolute;\n inset: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Le gocce DOM stanno sopra tutto, ma pointer-events: none (impostato inline) */\n.dropContainer {\n position: absolute;\n inset: 0;\n z-index: 3;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJhaW5DYW52YXMubW9kdWxlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFDQTtFQUNFO0VBQ0E7RUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi53cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4vKiBTY2llIHVtaWRlIOKAlCBzb3R0byBpbCBjb250ZW51dG8gKi9cbi50cmFpbENhbnZhcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB6LWluZGV4OiAxO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLyogRm9ybSBlIGNvbnRlbnV0byDigJQgc29wcmEgbGUgc2NpZSAqL1xuLmNvbnRlbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICB6LWluZGV4OiAyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLyogTGUgZ29jY2UgRE9NIHN0YW5ubyBzb3ByYSB0dXR0bywgbWEgcG9pbnRlci1ldmVudHM6IG5vbmUgKGltcG9zdGF0byBpbmxpbmUpICovXG4uZHJvcENvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHotaW5kZXg6IDM7XG59XG4iXX0= */","import React, { useEffect, useRef } from \"react\";\nimport styles from \"./RainCanvas.module.scss\";\n\n// --- Tipi ---\n\ninterface Drop {\n id: number;\n kind: \"static\" | \"sliding\";\n x: number;\n y: number;\n radius: number;\n age: number;\n maxAge: number;\n speed: number;\n trail: { x: number; y: number }[];\n}\n\n// --- Helpers ---\n\nlet _nextId = 0;\n\nfunction randomBetween(a: number, b: number) {\n return a + Math.random() * (b - a);\n}\n\nfunction createStaticDrop(width: number, height: number): Drop {\n return {\n id: _nextId++,\n kind: \"static\",\n x: randomBetween(10, width - 10),\n y: randomBetween(10, height - 10),\n radius: randomBetween(4, 11),\n age: 0,\n maxAge: randomBetween(120, 400),\n speed: 0,\n trail: [],\n };\n}\n\n// --- Componente ---\n\nexport interface RainCanvasProps {\n dropCount?: number;\n background?: string;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const RainCanvas: React.FC<RainCanvasProps> = ({\n dropCount = 55,\n background = \"linear-gradient(160deg, #0f172a 0%, #1e3a5f 60%, #0f2a4a 100%)\",\n children,\n className,\n style,\n}) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const trailCanvasRef = useRef<HTMLCanvasElement>(null);\n const dropContainerRef = useRef<HTMLDivElement>(null);\n const dropsRef = useRef<Drop[]>([]);\n const nodeMapRef = useRef<Map<number, HTMLDivElement>>(new Map());\n const rafRef = useRef<number>(0);\n // Unique id per istanza per evitare conflitti se ci sono più RainCanvas nella pagina\n const filterIdRef = useRef(`rnf-${Math.random().toString(36).slice(2, 7)}`);\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n const trailCanvas = trailCanvasRef.current;\n const dropContainer = dropContainerRef.current;\n if (!wrapper || !trailCanvas || !dropContainer) return;\n\n const trailCtx = trailCanvas.getContext(\"2d\");\n if (!trailCtx) return;\n\n const filterId = filterIdRef.current;\n\n const resize = () => {\n const w = wrapper.offsetWidth;\n const h = wrapper.offsetHeight;\n trailCanvas.width = w;\n trailCanvas.height = h;\n dropsRef.current = Array.from({ length: dropCount }, () =>\n createStaticDrop(w, h)\n );\n };\n\n resize();\n const ro = new ResizeObserver(resize);\n ro.observe(wrapper);\n\n // Crea un nodo DOM per una goccia e lo aggiunge al container\n function getOrCreateNode(drop: Drop): HTMLDivElement {\n let node = nodeMapRef.current.get(drop.id);\n if (!node) {\n node = document.createElement(\"div\");\n // backdrop-filter: url(#id) applica il filtro SVG al contenuto DOM sottostante\n // Questo è ciò che crea la vera distorsione del contenuto reale\n node.style.cssText = `\n position: absolute;\n backdrop-filter: url(#${filterId}) brightness(1.12);\n -webkit-backdrop-filter: url(#${filterId}) brightness(1.12);\n box-shadow:\n inset 0 0 0 1px rgba(255,255,255,0.4),\n inset -2px -3px 6px rgba(255,255,255,0.18),\n inset 2px 2px 4px rgba(0, 40, 120, 0.15);\n background: radial-gradient(\n circle at 32% 30%,\n rgba(255,255,255,0.30) 0%,\n rgba(255,255,255,0.05) 45%,\n transparent 65%\n );\n pointer-events: none;\n will-change: transform;\n `;\n dropContainer!.appendChild(node);\n nodeMapRef.current.set(drop.id, node);\n }\n return node;\n }\n\n function removeNode(id: number) {\n const node = nodeMapRef.current.get(id);\n if (node) {\n node.remove();\n nodeMapRef.current.delete(id);\n }\n }\n\n function syncNode(drop: Drop) {\n const node = getOrCreateNode(drop);\n const isSliding = drop.kind === \"sliding\";\n const h = isSliding ? drop.radius * 2.4 : drop.radius * 2;\n const br = isSliding ? \"50% 50% 55% 55%\" : \"50%\";\n node.style.left = `${drop.x - drop.radius}px`;\n node.style.top = `${drop.y - drop.radius}px`;\n node.style.width = `${drop.radius * 2}px`;\n node.style.height = `${h}px`;\n node.style.borderRadius = br;\n }\n\n const tick = () => {\n const { width, height } = trailCanvas;\n\n // Fade della scia: riempiamo con un nero semi-trasparente ogni frame\n trailCtx.fillStyle = \"rgba(0,0,0,0.04)\";\n trailCtx.fillRect(0, 0, width, height);\n\n const next: Drop[] = [];\n\n for (const drop of dropsRef.current) {\n if (drop.kind === \"static\") {\n drop.age++;\n syncNode(drop);\n\n if (drop.age >= drop.maxAge) {\n // Diventa scorrevole: rimuovo il vecchio nodo e creo uno nuovo\n removeNode(drop.id);\n next.push({\n ...drop,\n id: _nextId++,\n kind: \"sliding\",\n speed: randomBetween(1.5, 3.5),\n trail: [],\n });\n } else {\n next.push(drop);\n }\n } else {\n // Aggiorna scia\n drop.trail.push({ x: drop.x, y: drop.y });\n if (drop.trail.length > 24) drop.trail.shift();\n\n // Disegna scia umida sul canvas\n if (drop.trail.length > 1) {\n trailCtx.beginPath();\n trailCtx.moveTo(drop.trail[0].x, drop.trail[0].y);\n for (let i = 1; i < drop.trail.length; i++) {\n trailCtx.lineTo(drop.trail[i].x, drop.trail[i].y);\n }\n trailCtx.strokeStyle = \"rgba(160, 200, 255, 0.18)\";\n trailCtx.lineWidth = drop.radius * 0.7;\n trailCtx.lineCap = \"round\";\n trailCtx.stroke();\n }\n\n drop.y += drop.speed;\n drop.speed += 0.06;\n syncNode(drop);\n\n if (drop.y - drop.radius > height) {\n removeNode(drop.id);\n next.push(createStaticDrop(width, height));\n } else {\n next.push(drop);\n }\n }\n }\n\n dropsRef.current = next;\n rafRef.current = requestAnimationFrame(tick);\n };\n\n rafRef.current = requestAnimationFrame(tick);\n\n return () => {\n cancelAnimationFrame(rafRef.current);\n ro.disconnect();\n // Pulizia nodi DOM\n nodeMapRef.current.forEach((node) => node.remove());\n nodeMapRef.current.clear();\n };\n }, [dropCount]);\n\n const filterId = filterIdRef.current;\n\n return (\n <div\n ref={wrapperRef}\n className={[styles.wrapper, className ?? \"\"].filter(Boolean).join(\" \")}\n style={{ background, ...style }}\n >\n {/*\n Definizione del filtro SVG:\n - feTurbulence genera rumore procedurale (pattern d'acqua)\n - feDisplacementMap usa quel rumore per spostare i pixel del backdrop\n L'animazione del seed fa \"muovere\" l'acqua nel tempo\n */}\n <svg width=\"0\" height=\"0\" style={{ position: \"absolute\" }}>\n <defs>\n <filter\n id={filterId}\n x=\"-20%\"\n y=\"-20%\"\n width=\"140%\"\n height=\"140%\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feTurbulence\n type=\"turbulence\"\n baseFrequency=\"0.07 0.04\"\n numOctaves=\"2\"\n result=\"noise\"\n >\n <animate\n attributeName=\"seed\"\n values=\"1;20;1\"\n dur=\"5s\"\n repeatCount=\"indefinite\"\n />\n </feTurbulence>\n <feDisplacementMap\n in=\"SourceGraphic\"\n in2=\"noise\"\n scale=\"22\"\n xChannelSelector=\"R\"\n yChannelSelector=\"G\"\n />\n </filter>\n </defs>\n </svg>\n\n {/* Canvas per le scie umide (z-index basso) */}\n <canvas ref={trailCanvasRef} className={styles.trailCanvas} />\n\n {/* Contenuto (form, ecc.) */}\n <div className={styles.content}>{children}</div>\n\n {/* Container delle gocce DOM — sopra il contenuto, pointer-events none */}\n <div ref={dropContainerRef} className={styles.dropContainer} />\n </div>\n );\n};\n","@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.timeline {\n list-style: none;\n margin: 0;\n padding: 0;\n font-family: var(--font-family-base);\n}\n\n.vertical {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n.vertical .item {\n display: grid;\n grid-template-columns: 1.25rem 1fr;\n column-gap: 1rem;\n align-items: stretch;\n}\n.vertical .track {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 1.25rem;\n}\n.vertical .connector {\n flex: 1;\n width: 0;\n min-height: 0.5rem;\n border-left: 2px dashed var(--color-neutral-200);\n transition: border-color 0.3s ease;\n}\n.vertical .content {\n padding-bottom: 1.75rem;\n padding-top: 0.1rem;\n}\n.vertical .item.last .content {\n padding-bottom: 0;\n}\n\n.horizontal {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n}\n.horizontal .item {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex: 1;\n min-width: 0;\n}\n.horizontal .track {\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 100%;\n}\n.horizontal .connector {\n flex: 1;\n height: 0;\n min-width: 1rem;\n border-top: 2px dashed var(--color-neutral-200);\n transition: border-color 0.3s ease;\n}\n.horizontal .content {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding-top: 0.75rem;\n padding-inline: 0.5rem;\n}\n\n.dot {\n width: 1.25rem;\n height: 1.25rem;\n border-radius: 50%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.6rem;\n position: relative;\n z-index: 1;\n transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;\n background-color: var(--color-neutral-0);\n border: 2px solid var(--color-neutral-200);\n color: var(--color-neutral-400);\n}\n\n.iconSlot {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.65rem;\n line-height: 1;\n}\n\n.completed .dot {\n background-color: var(--timeline-accent-dot, var(--accent-dot));\n border-color: var(--timeline-accent-dot, var(--accent-dot));\n color: var(--color-neutral-0);\n box-shadow: 0 0 0 3px var(--timeline-accent-ring, var(--accent-ring));\n animation: dotIn 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) both;\n animation-delay: var(--dot-delay, 0s);\n}\n\n.active .dot {\n background-color: var(--color-neutral-0);\n border-color: var(--timeline-accent-track, var(--accent-track));\n border-width: 2px;\n box-shadow: 0 0 0 3px var(--timeline-accent-ring, var(--accent-ring));\n animation: pulse 2s ease-in-out infinite;\n}\n\n.pending .dot {\n box-shadow: 0 0 0 3px var(--color-neutral-200);\n}\n\n.label {\n display: block;\n font-size: var(--font-size-xs);\n color: var(--color-neutral-400);\n margin-bottom: 0.2rem;\n letter-spacing: 0.01em;\n}\n\n.title {\n display: block;\n font-size: var(--font-size-sm);\n font-weight: 600;\n color: var(--color-neutral-900);\n letter-spacing: -0.01em;\n}\n\n.description {\n margin: 0.35rem 0 0;\n font-size: var(--font-size-xs);\n color: var(--color-neutral-600);\n line-height: 1.5;\n}\n\n.pending .title {\n color: var(--color-neutral-400);\n font-weight: 500;\n}\n\n.connectorHidden {\n border-color: transparent !important;\n}\n\n.connectorDone {\n border-color: var(--timeline-accent-track, var(--accent-track)) !important;\n border-style: solid !important;\n}\n\n@keyframes dotIn {\n 0% {\n transform: scale(0.5);\n background-color: var(--color-neutral-0);\n border-color: var(--color-neutral-200);\n box-shadow: 0 0 0 3px var(--color-neutral-200);\n color: transparent;\n }\n 40% {\n background-color: var(--timeline-accent-dot, var(--accent-dot));\n border-color: var(--timeline-accent-dot, var(--accent-dot));\n box-shadow: 0 0 0 3px var(--timeline-accent-ring, var(--accent-ring));\n color: var(--color-neutral-0);\n }\n 50% {\n transform: scale(1.06);\n }\n 70% {\n transform: scale(0.97);\n }\n 85% {\n transform: scale(1.02);\n }\n 100% {\n transform: scale(1);\n }\n}\n@keyframes pulse {\n 0%, 100% {\n box-shadow: 0 0 0 3px var(--timeline-accent-ring, var(--accent-ring));\n }\n 50% {\n box-shadow: 0 0 0 3px var(--timeline-accent-ring, var(--accent-ring)), 0 0 0 6px var(--timeline-accent-glow, var(--accent-glow));\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIlRpbWVsaW5lLm1vZHVsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVRO0FBS1I7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7OztBQVFGO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFJQTtFQUdBO0VBQ0E7OztBQ3JGRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFNRjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsT0FwQ087O0FBdUNUO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTs7O0FBT0o7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUtGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFPSjtFQUNFLE9BekdTO0VBMEdULFFBMUdTO0VBMkdUO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFPQTtFQUNFLGtCQXBJVztFQXFJWCxjQXJJVztFQXNJWDtFQUNBO0VBQ0E7RUFDQTs7O0FBS0Y7RUFDRTtFQUNBLGNBL0lXO0VBZ0pYO0VBQ0E7RUFDQTs7O0FBS0Y7RUFDRTs7O0FBT0o7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUlGO0VBQ0U7RUFDQTs7O0FBSUY7RUFDRTs7O0FBSUY7RUFDRTtFQUNBOzs7QUFNRjtFQUNFO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFFRjtJQUNFLGtCQXBOVztJQXFOWCxjQXJOVztJQXNOWDtJQUNBOztFQUVGO0lBQU87O0VBQ1A7SUFBTzs7RUFDUDtJQUFPOztFQUNQO0lBQU87OztBQUdUO0VBQ0U7SUFBVzs7RUFDWDtJQUFZIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSBcInNhc3M6Y29sb3JcIjtcblxuQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDAmZGlzcGxheT1zd2FwXCIpO1xuXG4vLyBBY2NlbnQgZGkgZGVmYXVsdCDigJQgY2FtYmlhIHF1aSBwZXIgYWdnaW9ybmFyZSB0dXR0YSBsYSBsaWJyZXJpYVxuJGFjY2VudDogIzNiODJmNjtcblxuOnJvb3Qge1xuICAvLyBBY2NlbnQgc2NhbGUg4oCUIGRlcml2YXRhIGRhICRhY2NlbnQgYSBjb21waWxlIHRpbWVcbiAgLS1hY2NlbnQ6ICAgICAgICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1kb3Q6ICAgICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogMTIlKX07XG4gIC0tYWNjZW50LXRyYWNrOiAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtcmluZzogICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1nbG93OiAgICN7Y29sb3IuY2hhbmdlKCRhY2NlbnQsICRhbHBoYTogMC4zKX07XG4gIC0tYWNjZW50LWxpZ2h0OiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0NSUsICRzYXR1cmF0aW9uOiAtMjAlKX07XG5cbiAgLy8gUHJpbWFyeSBzY2FsZSAobWFudGVudXRhIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIGNvbiBCdXR0b24sIEJhZGdlLCBJbnB1dClcbiAgLS1jb2xvci1wcmltYXJ5LTUwOiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0OSUsICRzYXR1cmF0aW9uOiAtMzAlKX07XG4gIC0tY29sb3ItcHJpbWFyeS0xMDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDIlLCAkc2F0dXJhdGlvbjogLTE1JSl9O1xuICAtLWNvbG9yLXByaW1hcnktNDAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDEyJSl9O1xuICAtLWNvbG9yLXByaW1hcnktNTAwOiAjeyRhY2NlbnR9O1xuICAtLWNvbG9yLXByaW1hcnktNjAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IC0xMCUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTcwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAtMjAlKX07XG5cbiAgLy8gTmV1dHJhbFxuICAtLWNvbG9yLW5ldXRyYWwtMDogICAjZmZmZmZmO1xuICAtLWNvbG9yLW5ldXRyYWwtMTAwOiAjZjNmNGY2O1xuICAtLWNvbG9yLW5ldXRyYWwtMjAwOiAjZTVlN2ViO1xuICAtLWNvbG9yLW5ldXRyYWwtNDAwOiAjOWNhM2FmO1xuICAtLWNvbG9yLW5ldXRyYWwtNjAwOiAjNGI1NTYzO1xuICAtLWNvbG9yLW5ldXRyYWwtOTAwOiAjMTExODI3O1xuXG4gIC8vIFNlbWFudGljXG4gIC0tY29sb3Itc3VjY2Vzcy01MDA6ICMyMmM1NWU7XG4gIC0tY29sb3Itc3VjY2Vzcy02MDA6ICMxNmEzNGE7XG4gIC0tY29sb3ItZGFuZ2VyLTUwMDogICNlZjQ0NDQ7XG4gIC0tY29sb3ItZGFuZ2VyLTYwMDogICNkYzI2MjY7XG4gIC0tY29sb3Itd2FybmluZy01MDA6ICNmNTllMGI7XG4gIC0tY29sb3Itd2FybmluZy02MDA6ICNkOTc3MDY7XG5cbiAgLy8gVHlwb2dyYXBoeVxuICAtLWZvbnQtZmFtaWx5LWJhc2U6IFwiSW50ZXJcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xuICAtLWZvbnQtc2l6ZS14czogMC43NXJlbTtcbiAgLS1mb250LXNpemUtc206IDAuODc1cmVtO1xuICAtLWZvbnQtc2l6ZS1tZDogMXJlbTtcbiAgLS1mb250LXNpemUtbGc6IDEuMTI1cmVtO1xuXG4gIC8vIFNwYWNpbmdcbiAgLS1zcGFjaW5nLTE6IDAuMjVyZW07XG4gIC0tc3BhY2luZy0yOiAwLjVyZW07XG4gIC0tc3BhY2luZy0zOiAwLjc1cmVtO1xuICAtLXNwYWNpbmctNDogMXJlbTtcblxuICAvLyBSYWRpdXNcbiAgLS1yYWRpdXMtc206ICAgMC4yNXJlbTtcbiAgLS1yYWRpdXMtbWQ6ICAgMC4zNzVyZW07XG4gIC0tcmFkaXVzLWxnOiAgIDAuNXJlbTtcbiAgLS1yYWRpdXMtZnVsbDogOTk5OXB4O1xuXG4gIC8vIFNoYWRvd3NcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC4xKTtcblxuICAvLyBUcmFuc2l0aW9uc1xuICAtLXRyYW5zaXRpb24tZmFzdDogMTUwbXMgZWFzZTtcblxuICAvLyBTdXJmYWNlIChiYWNrZ3JvdW5kIGRpIGNhcmQvcGFuZWwpXG4gIC0tY29sb3Itc3VyZmFjZTogICAgICAgICAgI2ZmZmZmZjtcbiAgLS1jb2xvci1zdXJmYWNlLWVsZXZhdGVkOiAjZmZmZmZmO1xufVxuXG4vLyDilIDilIDilIAgRGFyayB0aGVtZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEFwcGxpY2F0byB2aWEgZGF0YS10aGVtZT1cImRhcmtcIiBzdWxsJ2VsZW1lbnRvIHJvb3QgKGdlc3RpdG8gZGEgU3Rvcnlib29rIGRlY29yYXRvclxuLy8gZSBkYWxsJ2FwcCBjb25zdW1lcikuIEkgY29tcG9uZW50aSBub24gZGV2b25vIGZhcmUgbnVsbGEgZGkgc3BlY2lhbGU6IGJhc3RhIGNoZVxuLy8gdXNpbm8gaSB0b2tlbiB2YXIoKSBlIHJpY2V2ZXJhbm5vIGF1dG9tYXRpY2FtZW50ZSBpIHZhbG9yaSBkYXJrLlxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0ge1xuICAvLyBOZXV0cmFsIChzY2FsYSBpbnZlcnRpdGEpXG4gIC0tY29sb3ItbmV1dHJhbC0wOiAgICMwZjE3MmE7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICMxZTI5M2I7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICMzMzQxNTU7XG4gIC0tY29sb3ItbmV1dHJhbC00MDA6ICM5NGEzYjg7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICNjYmQ1ZTE7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICNmOGZhZmM7XG5cbiAgLy8gU3VyZmFjZVxuICAtLWNvbG9yLXN1cmZhY2U6ICAgICAgICAgICMxZTI5M2I7XG4gIC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZDogIzI3MzU0OTtcblxuICAvLyBQcmltYXJ5IHNjYWxlIGRhcmsgKHBlciBpbCBkZWZhdWx0IGFjY2VudCBibHUg4oCUIGxlIHNmdW1hdHVyZSBjaGlhcmUgZGl2ZW50YW5vIHNjdXJlKVxuICAtLWNvbG9yLXByaW1hcnktNTA6ICAjMTcyNTU0O1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAjMWUzYThhO1xuICAvLyA0MDAgLyA1MDAgLyA2MDAgLyA3MDAgcmltYW5nb25vIGludmFyaWF0aSAoYWJiYXN0YW56YSBzYXR1cmkgc3UgYmcgc2N1cm8pXG5cbiAgLy8gQWNjZW50IGxpZ2h0OiB2YXJpYW50ZSBzY3VyYVxuICAtLWFjY2VudC1saWdodDogIzE3MjU1NDtcblxuICAvLyBTaGFkb3dzIChwacO5IGZvcnRpIHN1IGJnIHNjdXJvKVxuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC40KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuNSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuNCk7XG59XG4iLCJAdXNlIFwiLi4vLi4vc3R5bGVzL3Rva2Vuc1wiIGFzICo7XG5cbi8vIC0tLSBUb2tlbnMgbG9jYWxpIC0tLVxuLy8gVXNhIC0tdGltZWxpbmUtYWNjZW50LSogc2UgcGFzc2F0byB2aWEgcHJvcCwgYWx0cmltZW50aSBmYWxsYmFjayBhaSB0b2tlbiBnbG9iYWxpXG4kZG90LXNpemU6IDEuMjVyZW07XG4kY29ubmVjdG9yLXRoaWNrbmVzczogMnB4O1xuJGNvbG9yLXBlbmRpbmc6IHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcblxuJGFjY2VudC1kb3Q6ICAgdmFyKC0tdGltZWxpbmUtYWNjZW50LWRvdCwgICB2YXIoLS1hY2NlbnQtZG90KSk7XG4kYWNjZW50LXRyYWNrOiB2YXIoLS10aW1lbGluZS1hY2NlbnQtdHJhY2ssIHZhcigtLWFjY2VudC10cmFjaykpO1xuJGFjY2VudC1yaW5nOiAgdmFyKC0tdGltZWxpbmUtYWNjZW50LXJpbmcsICB2YXIoLS1hY2NlbnQtcmluZykpO1xuJGFjY2VudC1nbG93OiAgdmFyKC0tdGltZWxpbmUtYWNjZW50LWdsb3csICB2YXIoLS1hY2NlbnQtZ2xvdykpO1xuXG4vLyAtLS0gUmVzZXQgbGlzdGEgLS0tXG4udGltZWxpbmUge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1iYXNlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09XG4vLyBWRVJUSUNBTEUgKGRlZmF1bHQpXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cbi52ZXJ0aWNhbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMDtcblxuICAuaXRlbSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRkb3Qtc2l6ZSAxZnI7XG4gICAgY29sdW1uLWdhcDogMXJlbTtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgfVxuXG4gIC50cmFjayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6ICRkb3Qtc2l6ZTtcbiAgfVxuXG4gIC5jb25uZWN0b3Ige1xuICAgIGZsZXg6IDE7XG4gICAgd2lkdGg6IDA7XG4gICAgbWluLWhlaWdodDogMC41cmVtO1xuICAgIGJvcmRlci1sZWZ0OiAkY29ubmVjdG9yLXRoaWNrbmVzcyBkYXNoZWQgJGNvbG9yLXBlbmRpbmc7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuM3MgZWFzZTtcbiAgfVxuXG4gIC5jb250ZW50IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS43NXJlbTtcbiAgICBwYWRkaW5nLXRvcDogMC4xcmVtO1xuICB9XG5cbiAgLml0ZW0ubGFzdCAuY29udGVudCB7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9SSVpaT05UQUxFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PVxuLmhvcml6b250YWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAuaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG5cbiAgfVxuXG4gIC50cmFjayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAuY29ubmVjdG9yIHtcbiAgICBmbGV4OiAxO1xuICAgIGhlaWdodDogMDtcbiAgICBtaW4td2lkdGg6IDFyZW07XG4gICAgYm9yZGVyLXRvcDogJGNvbm5lY3Rvci10aGlja25lc3MgZGFzaGVkICRjb2xvci1wZW5kaW5nO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjNzIGVhc2U7XG4gIH1cblxuXG5cbiAgLmNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogMC43NXJlbTtcbiAgICBwYWRkaW5nLWlubGluZTogMC41cmVtO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PVxuLy8gRE9UXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cbi5kb3Qge1xuICB3aWR0aDogJGRvdC1zaXplO1xuICBoZWlnaHQ6ICRkb3Qtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBmbGV4LXNocmluazogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMC42cmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlLCBib3JkZXItY29sb3IgMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZTtcblxuICAvLyBwZW5kaW5nXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMCk7XG4gIGJvcmRlcjogJGNvbm5lY3Rvci10aGlja25lc3Mgc29saWQgJGNvbG9yLXBlbmRpbmc7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG59XG5cbi5pY29uU2xvdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250LXNpemU6IDAuNjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUQVRVU1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG4uY29tcGxldGVkIHtcbiAgLmRvdCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudC1kb3Q7XG4gICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LWRvdDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0wKTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJGFjY2VudC1yaW5nO1xuICAgIGFuaW1hdGlvbjogZG90SW4gMC40cyBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxLjI3NSkgYm90aDtcbiAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWRvdC1kZWxheSwgMHMpO1xuICB9XG59XG5cbi5hY3RpdmUge1xuICAuZG90IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTApO1xuICAgIGJvcmRlci1jb2xvcjogJGFjY2VudC10cmFjaztcbiAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJGFjY2VudC1yaW5nO1xuICAgIGFuaW1hdGlvbjogcHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gIH1cbn1cblxuLnBlbmRpbmcge1xuICAuZG90IHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggdmFyKC0tY29sb3ItbmV1dHJhbC0yMDApO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09OVEVOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09XG4ubGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC00MDApO1xuICBtYXJnaW4tYm90dG9tOiAwLjJyZW07XG4gIGxldHRlci1zcGFjaW5nOiAwLjAxZW07XG59XG5cbi50aXRsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTkwMCk7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xufVxuXG4uZGVzY3JpcHRpb24ge1xuICBtYXJnaW46IDAuMzVyZW0gMCAwO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14cyk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTYwMCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi8vIFN0YXR1czogdGl0b2xvIHBpw7kgc2JpYWRpdG8gcGVyIHBlbmRpbmdcbi5wZW5kaW5nIC50aXRsZSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi8vIENvbm5ldHRvcmUgaW52aXNpYmlsZSDigJQgdGllbmUgbG8gc3BhemlvIG1hIG5vbiBtb3N0cmEgbGEgbGluZWFcbi5jb25uZWN0b3JIaWRkZW4ge1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG5cbi8vIENvbm5ldHRvcmUgY29tcGxldGF0byDigJQgc292cmFzY3JpdmUgZGFzaGVkIGNvbiBzb2xpZCArIGNvbG9yZSBhY2NlbnRcbi5jb25uZWN0b3JEb25lIHtcbiAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LXRyYWNrICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1zdHlsZTogc29saWQgIWltcG9ydGFudDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09XG4vLyBBTklNQVpJT05JXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cbkBrZXlmcmFtZXMgZG90SW4ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbiAgNDAlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50LWRvdDtcbiAgICBib3JkZXItY29sb3I6ICRhY2NlbnQtZG90O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAkYWNjZW50LXJpbmc7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMCk7XG4gIH1cbiAgNTAlICB7IHRyYW5zZm9ybTogc2NhbGUoMS4wNik7IH1cbiAgNzAlICB7IHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7IH1cbiAgODUlICB7IHRyYW5zZm9ybTogc2NhbGUoMS4wMik7IH1cbiAgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH1cbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlLCAxMDAlIHsgYm94LXNoYWRvdzogMCAwIDAgM3B4ICRhY2NlbnQtcmluZzsgfVxuICA1MCUgICAgICAgeyBib3gtc2hhZG93OiAwIDAgMCAzcHggJGFjY2VudC1yaW5nLCAwIDAgMCA2cHggJGFjY2VudC1nbG93OyB9XG59XG4iXX0= */","export function hexToHsl(hex: string): [number, number, number] {\n const r = parseInt(hex.slice(1, 3), 16) / 255;\n const g = parseInt(hex.slice(3, 5), 16) / 255;\n const b = parseInt(hex.slice(5, 7), 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;\n case g: h = ((b - r) / d + 2) / 6; break;\n case b: h = ((r - g) / d + 4) / 6; break;\n }\n }\n\n return [h * 360, s * 100, l * 100];\n}\n\nexport function hslToHex(h: number, s: number, l: number): string {\n const sl = s / 100;\n const ll = l / 100;\n const a = sl * Math.min(ll, 1 - ll);\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n const color = ll - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return Math.round(255 * color).toString(16).padStart(2, \"0\");\n };\n return `#${f(0)}${f(8)}${f(4)}`;\n}\n\nexport function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n const sl = s / 100;\n const ll = l / 100;\n const a = sl * Math.min(ll, 1 - ll);\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n return Math.round(255 * (ll - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)));\n };\n return { r: f(0), g: f(8), b: f(4) };\n}\n\nexport function rgbToHsl(r: number, g: number, b: number): [number, number, number] {\n const rr = r / 255, gg = g / 255, bb = b / 255;\n const max = Math.max(rr, gg, bb);\n const min = Math.min(rr, gg, bb);\n const l = (max + min) / 2;\n let h = 0, s = 0;\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rr: h = ((gg - bb) / d + (gg < bb ? 6 : 0)) / 6; break;\n case gg: h = ((bb - rr) / d + 2) / 6; break;\n case bb: h = ((rr - gg) / d + 4) / 6; break;\n }\n }\n return [h * 360, s * 100, l * 100];\n}\n\nfunction hslToRgba(h: number, s: number, l: number, alpha: number): string {\n const { r, g, b } = hslToRgb(h, s, l);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\nexport interface AccentTokens {\n base: string;\n dot: string;\n track: string;\n ring: string;\n glow: string;\n light: string;\n}\n\nexport interface ColorValue {\n hex: string;\n hexa: string;\n hsl: string;\n hsla: string;\n rgb: string;\n rgba: string;\n h: number;\n s: number;\n l: number;\n a: number;\n}\n\nexport function buildColorValue(h: number, s: number, l: number, a: number): ColorValue {\n const { r, g, b } = hslToRgb(h, s, l);\n const hex = hslToHex(h, s, l);\n const alphaHex = Math.round(a * 255).toString(16).padStart(2, \"0\");\n const hR = Math.round(h), sR = Math.round(s), lR = Math.round(l);\n const aR = Math.round(a * 100) / 100;\n return {\n hex,\n hexa: `${hex}${alphaHex}`,\n hsl: `hsl(${hR}, ${sR}%, ${lR}%)`,\n hsla: `hsla(${hR}, ${sR}%, ${lR}%, ${aR})`,\n rgb: `rgb(${r}, ${g}, ${b})`,\n rgba: `rgba(${r}, ${g}, ${b}, ${aR})`,\n h, s, l, a,\n };\n}\n\nexport function deriveAccent(hex: string): AccentTokens {\n const [h, s, l] = hexToHsl(hex);\n return {\n base: hex,\n dot: hslToHex(h, s, Math.min(l + 12, 95)),\n track: hex,\n ring: hex,\n glow: hslToRgba(h, s, l, 0.3),\n light: hslToHex(h, Math.max(s - 20, 0), Math.min(l + 45, 96)),\n };\n}\n\nexport function accentToCssVars(\n tokens: AccentTokens,\n prefix: string\n): Record<string, string> {\n return {\n [`--${prefix}-accent`]: tokens.base,\n [`--${prefix}-accent-dot`]: tokens.dot,\n [`--${prefix}-accent-track`]: tokens.track,\n [`--${prefix}-accent-ring`]: tokens.ring,\n [`--${prefix}-accent-glow`]: tokens.glow,\n [`--${prefix}-accent-light`]: tokens.light,\n };\n}\n","import React from \"react\";\nimport styles from \"./Timeline.module.scss\";\nimport { deriveAccent, accentToCssVars } from \"../../utils/color\";\n\nexport type TimelineStatus = \"completed\" | \"active\" | \"pending\";\nexport type TimelineOrientation = \"vertical\" | \"horizontal\";\n\nexport interface TimelineItem {\n id: string | number;\n title: string;\n description?: string;\n label?: string;\n status?: TimelineStatus;\n icon?: React.ReactNode;\n}\n\nexport interface TimelineProps {\n items: TimelineItem[];\n orientation?: TimelineOrientation;\n /** Colore accent custom — sovrascrive il tema globale per questa istanza */\n accent?: string;\n className?: string;\n}\n\nconst CheckIcon = () => (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path\n d=\"M1.5 5L4 7.5L8.5 2.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const Timeline: React.FC<TimelineProps> = ({\n items,\n orientation = \"vertical\",\n accent,\n className,\n}) => {\n const accentVars = accent\n ? accentToCssVars(deriveAccent(accent), \"timeline\")\n : {};\n\n return (\n <ol\n className={[\n styles.timeline,\n styles[orientation],\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n style={accentVars as React.CSSProperties}\n >\n {items.map((item, index) => {\n const status = item.status ?? \"pending\";\n const isLast = index === items.length - 1;\n\n return (\n <li\n key={item.id}\n className={[styles.item, styles[status], isLast ? styles.last : \"\"]\n .filter(Boolean)\n .join(\" \")}\n style={{ \"--dot-delay\": `${index * 0.08}s` } as React.CSSProperties}\n >\n {/* Colonna sinistra (verticale) o riga superiore (orizzontale): dot + connettore */}\n <div className={styles.track}>\n {/* Connettore sinistro — orizzontale: sempre, invisibile sul primo */}\n {orientation === \"horizontal\" && (\n <div className={[\n styles.connector,\n index === 0 ? styles.connectorHidden : \"\",\n index > 0 && items[index - 1].status === \"completed\" ? styles.connectorDone : \"\",\n ].filter(Boolean).join(\" \")} />\n )}\n\n <div className={styles.dot}>\n {status === \"completed\" && (\n item.icon\n ? <span className={styles.iconSlot}>{item.icon}</span>\n : <CheckIcon />\n )}\n </div>\n\n {/* Connettore destro — verticale: non sull'ultimo; orizzontale: sempre, invisibile sull'ultimo */}\n {(orientation === \"horizontal\" || !isLast) && (\n <div className={[\n styles.connector,\n orientation === \"horizontal\" && isLast ? styles.connectorHidden : \"\",\n status === \"completed\" ? styles.connectorDone : \"\",\n ].filter(Boolean).join(\" \")} />\n )}\n </div>\n\n {/* Contenuto */}\n <div className={styles.content}>\n {item.label && (\n <span className={styles.label}>{item.label}</span>\n )}\n <span className={styles.title}>{item.title}</span>\n {item.description && (\n <p className={styles.description}>{item.description}</p>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n );\n};\n","@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.colorPicker {\n display: inline-flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 1rem;\n background: var(--color-surface);\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md), 0 0 0 1px rgba(0, 0, 0, 0.04);\n font-family: var(--font-family-base);\n width: calc(200px + 2rem);\n box-sizing: border-box;\n user-select: none;\n}\n\n.topRow {\n display: flex;\n justify-content: center;\n}\n\n.discWrapper {\n position: relative;\n width: 200px;\n height: 200px;\n flex-shrink: 0;\n border-radius: 50%;\n box-shadow: 0 0 0 1.5px var(--color-neutral-200);\n}\n\n.disc {\n display: block;\n width: 200px;\n height: 200px;\n cursor: crosshair;\n border-radius: 50%;\n}\n\n.dot {\n position: absolute;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid;\n transform: translate(-50%, -50%);\n pointer-events: none;\n box-shadow: 0 0 0 1.5px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.2);\n background: transparent;\n}\n\n.lSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.lThumb {\n position: absolute;\n top: 50%;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n.alphaSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.alphaThumb {\n position: absolute;\n top: 50%;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n.previewSwatch {\n width: 100%;\n height: 48px;\n border-radius: var(--radius-md);\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 0 0.5rem;\n box-sizing: border-box;\n}\n\n.eyedropperBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: var(--radius-sm);\n background: rgba(255, 255, 255, 0.25);\n color: rgba(255, 255, 255, 0.9);\n cursor: pointer;\n backdrop-filter: blur(4px);\n transition: background var(--transition-fast);\n}\n.eyedropperBtn:hover {\n background: rgba(255, 255, 255, 0.4);\n}\n\n.inputSection {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.tabs {\n display: flex;\n background: var(--color-neutral-100);\n border-radius: var(--radius-sm);\n padding: 2px;\n gap: 2px;\n}\n\n.tab {\n flex: 1;\n padding: 0.2rem 0;\n font-size: 0.65rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n border: none;\n border-radius: calc(var(--radius-sm) - 1px);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n}\n.tab:hover:not(.tabActive) {\n color: var(--color-neutral-600);\n}\n\n.tabActive {\n background: var(--colorpicker-accent, var(--accent));\n color: #fff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.inputWrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.inputAddon {\n position: absolute;\n left: 0.5rem;\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-400);\n pointer-events: none;\n line-height: 1;\n}\n\n.input {\n width: 100%;\n box-sizing: border-box;\n padding: 0.4rem 2rem;\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-sm);\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-900);\n background: var(--color-neutral-0);\n outline: none;\n text-align: center;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n.input:focus {\n border-color: var(--colorpicker-accent, var(--accent));\n box-shadow: 0 0 0 2px var(--colorpicker-accent-glow, var(--accent-glow));\n}\n\n.inputCopyBtn {\n position: absolute;\n right: 0.35rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border: none;\n border-radius: var(--radius-sm);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n}\n.inputCopyBtn:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.recents {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding-top: 0.25rem;\n border-top: 1px solid var(--color-neutral-100);\n overflow: hidden;\n}\n\n.recentsLabel {\n font-size: 0.6rem;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-neutral-400);\n flex-shrink: 0;\n}\n\n.swatches {\n display: flex;\n gap: 0.35rem;\n flex-wrap: nowrap;\n overflow: hidden;\n}\n\n.recentSwatch {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 1.5px solid rgba(0, 0, 0, 0.1);\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIkNvbG9yUGlja2VyLm1vZHVsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVRO0FBS1I7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7OztBQVFGO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFJQTtFQUdBO0VBQ0E7OztBQ3JGRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUtGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBLE9BakNLO0VBa0NMLFFBbENLO0VBbUNMO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBLE9BMUNLO0VBMkNMLFFBM0NLO0VBNENMO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFLRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQSxPQXpFVztFQTBFWCxRQTFFVztFQTJFWDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUtGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUlGO0VBQ0U7RUFDQTtFQUNBLE9BbkdXO0VBb0dYLFFBcEdXO0VBcUdYO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBS0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOzs7QUFNSjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7O0FBSUo7RUFDRSxZQTFMYTtFQTJMYjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxjQTlOVztFQStOWDs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7OztBQU9KO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgXCJzYXNzOmNvbG9yXCI7XG5cbkBpbXBvcnQgdXJsKFwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDQwMDs1MDA7NjAwJmRpc3BsYXk9c3dhcFwiKTtcblxuLy8gQWNjZW50IGRpIGRlZmF1bHQg4oCUIGNhbWJpYSBxdWkgcGVyIGFnZ2lvcm5hcmUgdHV0dGEgbGEgbGlicmVyaWFcbiRhY2NlbnQ6ICMzYjgyZjY7XG5cbjpyb290IHtcbiAgLy8gQWNjZW50IHNjYWxlIOKAlCBkZXJpdmF0YSBkYSAkYWNjZW50IGEgY29tcGlsZSB0aW1lXG4gIC0tYWNjZW50OiAgICAgICAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtZG90OiAgICAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDEyJSl9O1xuICAtLWFjY2VudC10cmFjazogICN7JGFjY2VudH07XG4gIC0tYWNjZW50LXJpbmc6ICAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtZ2xvdzogICAje2NvbG9yLmNoYW5nZSgkYWNjZW50LCAkYWxwaGE6IDAuMyl9O1xuICAtLWFjY2VudC1saWdodDogICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDUlLCAkc2F0dXJhdGlvbjogLTIwJSl9O1xuXG4gIC8vIFByaW1hcnkgc2NhbGUgKG1hbnRlbnV0YSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCBjb24gQnV0dG9uLCBCYWRnZSwgSW5wdXQpXG4gIC0tY29sb3ItcHJpbWFyeS01MDogICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDklLCAkc2F0dXJhdGlvbjogLTMwJSl9O1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDQyJSwgJHNhdHVyYXRpb246IC0xNSUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTQwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAxMiUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTUwMDogI3skYWNjZW50fTtcbiAgLS1jb2xvci1wcmltYXJ5LTYwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAtMTAlKX07XG4gIC0tY29sb3ItcHJpbWFyeS03MDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogLTIwJSl9O1xuXG4gIC8vIE5ldXRyYWxcbiAgLS1jb2xvci1uZXV0cmFsLTA6ICAgI2ZmZmZmZjtcbiAgLS1jb2xvci1uZXV0cmFsLTEwMDogI2YzZjRmNjtcbiAgLS1jb2xvci1uZXV0cmFsLTIwMDogI2U1ZTdlYjtcbiAgLS1jb2xvci1uZXV0cmFsLTQwMDogIzljYTNhZjtcbiAgLS1jb2xvci1uZXV0cmFsLTYwMDogIzRiNTU2MztcbiAgLS1jb2xvci1uZXV0cmFsLTkwMDogIzExMTgyNztcblxuICAvLyBTZW1hbnRpY1xuICAtLWNvbG9yLXN1Y2Nlc3MtNTAwOiAjMjJjNTVlO1xuICAtLWNvbG9yLXN1Y2Nlc3MtNjAwOiAjMTZhMzRhO1xuICAtLWNvbG9yLWRhbmdlci01MDA6ICAjZWY0NDQ0O1xuICAtLWNvbG9yLWRhbmdlci02MDA6ICAjZGMyNjI2O1xuICAtLWNvbG9yLXdhcm5pbmctNTAwOiAjZjU5ZTBiO1xuICAtLWNvbG9yLXdhcm5pbmctNjAwOiAjZDk3NzA2O1xuXG4gIC8vIFR5cG9ncmFwaHlcbiAgLS1mb250LWZhbWlseS1iYXNlOiBcIkludGVyXCIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjtcbiAgLS1mb250LXNpemUteHM6IDAuNzVyZW07XG4gIC0tZm9udC1zaXplLXNtOiAwLjg3NXJlbTtcbiAgLS1mb250LXNpemUtbWQ6IDFyZW07XG4gIC0tZm9udC1zaXplLWxnOiAxLjEyNXJlbTtcblxuICAvLyBTcGFjaW5nXG4gIC0tc3BhY2luZy0xOiAwLjI1cmVtO1xuICAtLXNwYWNpbmctMjogMC41cmVtO1xuICAtLXNwYWNpbmctMzogMC43NXJlbTtcbiAgLS1zcGFjaW5nLTQ6IDFyZW07XG5cbiAgLy8gUmFkaXVzXG4gIC0tcmFkaXVzLXNtOiAgIDAuMjVyZW07XG4gIC0tcmFkaXVzLW1kOiAgIDAuMzc1cmVtO1xuICAtLXJhZGl1cy1sZzogICAwLjVyZW07XG4gIC0tcmFkaXVzLWZ1bGw6IDk5OTlweDtcblxuICAvLyBTaGFkb3dzXG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuMSk7XG5cbiAgLy8gVHJhbnNpdGlvbnNcbiAgLS10cmFuc2l0aW9uLWZhc3Q6IDE1MG1zIGVhc2U7XG5cbiAgLy8gU3VyZmFjZSAoYmFja2dyb3VuZCBkaSBjYXJkL3BhbmVsKVxuICAtLWNvbG9yLXN1cmZhY2U6ICAgICAgICAgICNmZmZmZmY7XG4gIC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZDogI2ZmZmZmZjtcbn1cblxuLy8g4pSA4pSA4pSAIERhcmsgdGhlbWUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBBcHBsaWNhdG8gdmlhIGRhdGEtdGhlbWU9XCJkYXJrXCIgc3VsbCdlbGVtZW50byByb290IChnZXN0aXRvIGRhIFN0b3J5Ym9vayBkZWNvcmF0b3Jcbi8vIGUgZGFsbCdhcHAgY29uc3VtZXIpLiBJIGNvbXBvbmVudGkgbm9uIGRldm9ubyBmYXJlIG51bGxhIGRpIHNwZWNpYWxlOiBiYXN0YSBjaGVcbi8vIHVzaW5vIGkgdG9rZW4gdmFyKCkgZSByaWNldmVyYW5ubyBhdXRvbWF0aWNhbWVudGUgaSB2YWxvcmkgZGFyay5cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIHtcbiAgLy8gTmV1dHJhbCAoc2NhbGEgaW52ZXJ0aXRhKVxuICAtLWNvbG9yLW5ldXRyYWwtMDogICAjMGYxNzJhO1xuICAtLWNvbG9yLW5ldXRyYWwtMTAwOiAjMWUyOTNiO1xuICAtLWNvbG9yLW5ldXRyYWwtMjAwOiAjMzM0MTU1O1xuICAtLWNvbG9yLW5ldXRyYWwtNDAwOiAjOTRhM2I4O1xuICAtLWNvbG9yLW5ldXRyYWwtNjAwOiAjY2JkNWUxO1xuICAtLWNvbG9yLW5ldXRyYWwtOTAwOiAjZjhmYWZjO1xuXG4gIC8vIFN1cmZhY2VcbiAgLS1jb2xvci1zdXJmYWNlOiAgICAgICAgICAjMWUyOTNiO1xuICAtLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQ6ICMyNzM1NDk7XG5cbiAgLy8gUHJpbWFyeSBzY2FsZSBkYXJrIChwZXIgaWwgZGVmYXVsdCBhY2NlbnQgYmx1IOKAlCBsZSBzZnVtYXR1cmUgY2hpYXJlIGRpdmVudGFubyBzY3VyZSlcbiAgLS1jb2xvci1wcmltYXJ5LTUwOiAgIzE3MjU1NDtcbiAgLS1jb2xvci1wcmltYXJ5LTEwMDogIzFlM2E4YTtcbiAgLy8gNDAwIC8gNTAwIC8gNjAwIC8gNzAwIHJpbWFuZ29ubyBpbnZhcmlhdGkgKGFiYmFzdGFuemEgc2F0dXJpIHN1IGJnIHNjdXJvKVxuXG4gIC8vIEFjY2VudCBsaWdodDogdmFyaWFudGUgc2N1cmFcbiAgLS1hY2NlbnQtbGlnaHQ6ICMxNzI1NTQ7XG5cbiAgLy8gU2hhZG93cyAocGnDuSBmb3J0aSBzdSBiZyBzY3VybylcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuNCk7XG4gIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAwLjUpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAwLjQpO1xufVxuIiwiQHVzZSBcIi4uLy4uL3N0eWxlcy90b2tlbnNcIiBhcyAqO1xuXG4kYWNjZW50LWJhc2U6ICB2YXIoLS1jb2xvcnBpY2tlci1hY2NlbnQsICAgICAgIHZhcigtLWFjY2VudCkpO1xuJGFjY2VudC1yaW5nOiAgdmFyKC0tY29sb3JwaWNrZXItYWNjZW50LXJpbmcsICB2YXIoLS1hY2NlbnQtcmluZykpO1xuJGFjY2VudC1nbG93OiAgdmFyKC0tY29sb3JwaWNrZXItYWNjZW50LWdsb3csICB2YXIoLS1hY2NlbnQtZ2xvdykpO1xuJGFjY2VudC1saWdodDogdmFyKC0tY29sb3JwaWNrZXItYWNjZW50LWxpZ2h0LCB2YXIoLS1hY2NlbnQtbGlnaHQpKTtcblxuJGRpc2M6IDIwMHB4O1xuJHNsaWRlci13OiAyMHB4O1xuJHRodW1iLXNpemU6IDIwcHg7XG4kZ2FwOiAwLjVyZW07XG5cbi8vIOKUgOKUgOKUgCBDYXJkIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4uY29sb3JQaWNrZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjc1cmVtO1xuICBwYWRkaW5nOiAxcmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlKTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE2cHgpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxNnB4KTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItbmV1dHJhbC0yMDApO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpLCAwIDAgMCAxcHggcmdiYSgwLDAsMCwwLjA0KTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LWJhc2UpO1xuICB3aWR0aDogY2FsYygjeyRkaXNjfSArIDJyZW0pOyAvLyBkaXNjICsgY2FyZCBwYWRkaW5nICgxcmVtIMOXIDIgc2lkZXMpXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4vLyDilIDilIDilIAgRGlzYyArIEwgc2xpZGVyIHJvdyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLnRvcFJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uZGlzY1dyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAkZGlzYztcbiAgaGVpZ2h0OiAkZGlzYztcbiAgZmxleC1zaHJpbms6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm94LXNoYWRvdzogMCAwIDAgMS41cHggdmFyKC0tY29sb3ItbmV1dHJhbC0yMDApO1xufVxuXG4uZGlzYyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogJGRpc2M7XG4gIGhlaWdodDogJGRpc2M7XG4gIGN1cnNvcjogY3Jvc3NoYWlyO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5kb3Qge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxNHB4O1xuICBoZWlnaHQ6IDE0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiAycHggc29saWQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgYm94LXNoYWRvdzogMCAwIDAgMS41cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLy8g4pSA4pSA4pSAIExpZ2h0bmVzcyBzbGlkZXIgKGhvcml6b250YWwpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4ubFNsaWRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMHB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGN1cnNvcjogZXctcmVzaXplO1xuICBtYXJnaW4tYmxvY2s6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0yMDApO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4ubFRodW1iIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgd2lkdGg6ICR0aHVtYi1zaXplO1xuICBoZWlnaHQ6ICR0aHVtYi1zaXplO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8vIOKUgOKUgOKUgCBBbHBoYSBzbGlkZXIgKGhvcml6b250YWwpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4uYWxwaGFTbGlkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMTBweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbiAgbWFyZ2luLWJsb2NrOiA1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuXG4uYWxwaGFUaHVtYiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHdpZHRoOiAkdGh1bWItc2l6ZTtcbiAgaGVpZ2h0OiAkdGh1bWItc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgYm94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4vLyDilIDilIDilIAgUHJldmlldyBzd2F0Y2gg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi5wcmV2aWV3U3dhdGNoIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNDhweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBhZGRpbmc6IDAgMC41cmVtO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4uZXllZHJvcHBlckJ0biB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMjhweDtcbiAgaGVpZ2h0OiAyOHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4gIH1cbn1cblxuLy8g4pSA4pSA4pSAIElucHV0cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLmlucHV0U2VjdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC41cmVtO1xufVxuXG4udGFicyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgcGFkZGluZzogMnB4O1xuICBnYXA6IDJweDtcbn1cblxuLnRhYiB7XG4gIGZsZXg6IDE7XG4gIHBhZGRpbmc6IDAuMnJlbSAwO1xuICBmb250LXNpemU6IDAuNjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogY2FsYyh2YXIoLS1yYWRpdXMtc20pIC0gMXB4KTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpLCBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICY6aG92ZXI6bm90KC50YWJBY3RpdmUpIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC02MDApO1xuICB9XG59XG5cbi50YWJBY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAkYWNjZW50LWJhc2U7XG4gIGNvbG9yOiAjZmZmO1xuICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLmlucHV0V3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmlucHV0QWRkb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDAuNXJlbTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBmb250LWZhbWlseTogXCJTRiBNb25vXCIsIFwiRmlyYSBDb2RlXCIsIFwiQ29uc29sYXNcIiwgbW9ub3NwYWNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC00MDApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi5pbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAwLjRyZW0gMnJlbTsgLy8gc3ltbWV0cmljOiByb29tIGZvciAjIG9uIGxlZnQgYW5kIGNvcHkgaWNvbiBvbiByaWdodFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgZm9udC1mYW1pbHk6IFwiU0YgTW9ub1wiLCBcIkZpcmEgQ29kZVwiLCBcIkNvbnNvbGFzXCIsIG1vbm9zcGFjZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItbmV1dHJhbC0wKTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSwgYm94LXNoYWRvdyB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogJGFjY2VudC1iYXNlO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAkYWNjZW50LWdsb3c7XG4gIH1cbn1cblxuLmlucHV0Q29weUJ0biB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDAuMzVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMjJweDtcbiAgaGVpZ2h0OiAyMnB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC00MDApO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSwgY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1uZXV0cmFsLTEwMCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgfVxufVxuXG5cbi8vIOKUgOKUgOKUgCBSZWNlbnQgY29sb3JzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4ucmVjZW50cyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xuICBwYWRkaW5nLXRvcDogMC4yNXJlbTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnJlY2VudHNMYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC42cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC00MDApO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLnN3YXRjaGVzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAwLjM1cmVtO1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnJlY2VudFN3YXRjaCB7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiAxLjVweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogMDtcbiAgZmxleC1zaHJpbms6IDA7XG59XG4iXX0= */","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport styles from \"./ColorPicker.module.scss\";\nimport {\n accentToCssVars,\n buildColorValue,\n deriveAccent,\n hexToHsl,\n hslToHex,\n hslToRgb,\n rgbToHsl,\n} from \"../../utils/color\";\nimport type { ColorValue } from \"../../utils/color\";\n\ndeclare global {\n interface Window {\n EyeDropper?: new () => { open(): Promise<{ sRGBHex: string }> };\n }\n}\n\nconst DISC = 200;\n\n// ─── Icons ────────────────────────────────────────────────────────────────────\n\nconst CopyIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"7\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.4\" />\n <path d=\"M2 9V2.5A.5.5 0 0 1 2.5 2H9\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst CheckIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M2.5 7L5.5 10L11.5 4\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst EyedropperIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M9.5 2.5L11.5 4.5L6 10L3 11L4 8L9.5 2.5Z\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" />\n <path d=\"M8 4L10 6\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n <circle cx=\"2.5\" cy=\"11.5\" r=\"1\" fill=\"currentColor\" />\n </svg>\n);\n\n// ─── Input sub-component ──────────────────────────────────────────────────────\n\ntype InputMode = \"hex\" | \"hsl\" | \"rgb\";\n\ninterface ColorInputProps {\n mode: InputMode;\n h: number; s: number; l: number;\n r: number; g: number; b: number;\n hex: string;\n onChange: (h: number, s: number, l: number) => void;\n onCopy: () => void;\n copied: boolean;\n}\n\nfunction formatValue(mode: InputMode, h: number, s: number, l: number, r: number, g: number, b: number, hex: string): string {\n if (mode === \"hex\") return hex.replace(\"#\", \"\");\n if (mode === \"hsl\") return `${Math.round(h)} ${Math.round(s)} ${Math.round(l)}`;\n return `${r} ${g} ${b}`;\n}\n\nfunction parseValue(mode: InputMode, raw: string): [number, number, number] | null {\n if (mode === \"hex\") {\n const clean = raw.replace(/^#/, \"\");\n if (!/^[0-9a-fA-F]{6}$/.test(clean)) return null;\n const [h, s, l] = hexToHsl(`#${clean}`);\n return [h, s, l];\n }\n const parts = raw.trim().split(/[\\s,]+/).map(Number);\n if (parts.length !== 3 || parts.some(isNaN)) return null;\n if (mode === \"hsl\") {\n const [h, s, l] = parts;\n if (h < 0 || h > 360 || s < 0 || s > 100 || l < 0 || l > 100) return null;\n return [h, s, l];\n }\n // rgb\n const [r, g, b] = parts;\n if ([r, g, b].some((v) => v < 0 || v > 255)) return null;\n return rgbToHsl(r, g, b);\n}\n\nconst ColorInput: React.FC<ColorInputProps> = ({ mode, h, s, l, r, g, b, hex, onChange, onCopy, copied }) => {\n const [draft, setDraft] = useState(() => formatValue(mode, h, s, l, r, g, b, hex));\n const [focused, setFocused] = useState(false);\n\n // sync from outside only when not focused\n useEffect(() => {\n if (!focused) setDraft(formatValue(mode, h, s, l, r, g, b, hex));\n }, [focused, mode, h, s, l, r, g, b, hex]);\n\n const placeholder = mode === \"hex\" ? \"3b82f6\" : mode === \"hsl\" ? \"217 91 60\" : \"59 130 246\";\n\n return (\n <div className={styles.inputWrapper}>\n {mode === \"hex\" && <span className={styles.inputAddon}>#</span>}\n <input\n className={styles.input}\n value={draft}\n placeholder={placeholder}\n spellCheck={false}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n onChange={(e) => {\n const raw = e.target.value;\n setDraft(raw);\n const result = parseValue(mode, raw);\n if (result) onChange(...result);\n }}\n />\n <button className={styles.inputCopyBtn} onClick={onCopy} tabIndex={-1} title=\"Copia\">\n {copied ? <CheckIcon /> : <CopyIcon />}\n </button>\n </div>\n );\n};\n\n// ─── Main component ────────────────────────────────────────────────────────────\n\nexport interface ColorPickerProps {\n value?: string;\n onChange?: (color: ColorValue) => void;\n showAlpha?: boolean;\n recentColors?: string[];\n accent?: string;\n className?: string;\n}\n\nfunction parseInitial(value?: string): [number, number, number, number] {\n if (value?.startsWith(\"#\")) {\n const [h, s, l] = hexToHsl(value);\n return [h, s, l, 1];\n }\n return [217, 91, 60, 1];\n}\n\nexport const ColorPicker: React.FC<ColorPickerProps> = ({\n value,\n onChange,\n showAlpha = true,\n recentColors = [],\n accent,\n className,\n}) => {\n const init = parseInitial(value);\n const [h, setH] = useState(init[0]);\n const [s, setS] = useState(init[1]);\n const [l, setL] = useState(init[2]);\n const [a, setA] = useState(init[3]);\n const [mode, setMode] = useState<\"hex\" | \"hsl\" | \"rgb\">(\"hex\");\n const [copied, setCopied] = useState(false);\n const [hasEyeDropper, setHasEyeDropper] = useState(false);\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n setHasEyeDropper(typeof window !== \"undefined\" && \"EyeDropper\" in window);\n }, []);\n\n // Sync from value prop (controlled)\n useEffect(() => {\n if (value?.startsWith(\"#\")) {\n const [nh, ns, nl] = hexToHsl(value);\n setH(nh); setS(ns); setL(nl);\n }\n }, [value]);\n\n // Render disc canvas via ImageData\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n const img = ctx.createImageData(DISC, DISC);\n const data = img.data;\n const cx = DISC / 2;\n const cy = DISC / 2;\n const radius = DISC / 2;\n\n for (let py = 0; py < DISC; py++) {\n for (let px = 0; px < DISC; px++) {\n const dx = px - cx;\n const dy = py - cy;\n const r = Math.sqrt(dx * dx + dy * dy);\n const idx = (py * DISC + px) * 4;\n if (r > radius) { data[idx + 3] = 0; continue; }\n const theta = (Math.atan2(dy, dx) * 180) / Math.PI;\n const hue = (theta + 360) % 360;\n const sat = (r / radius) * 100;\n const { r: rr, g: gg, b: bb } = hslToRgb(hue, sat, l);\n data[idx] = rr;\n data[idx + 1] = gg;\n data[idx + 2] = bb;\n // soft edge anti-alias\n data[idx + 3] = r > radius - 1 ? Math.round(255 * (radius - r)) : 255;\n }\n }\n ctx.putImageData(img, 0, 0);\n }, [l]);\n\n const notify = useCallback(\n (nh: number, ns: number, nl: number, na: number) => {\n onChange?.(buildColorValue(nh, ns, nl, na));\n },\n [onChange]\n );\n\n // Disc drag\n const updateDisc = useCallback(\n (clientX: number, clientY: number, rect: DOMRect) => {\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n const dx = clientX - cx;\n const dy = clientY - cy;\n const r = Math.sqrt(dx * dx + dy * dy);\n const radius = rect.width / 2;\n const clampedR = Math.min(r, radius);\n const theta = (Math.atan2(dy, dx) * 180) / Math.PI;\n const nh = (theta + 360) % 360;\n const ns = (clampedR / radius) * 100;\n setH(nh); setS(ns);\n notify(nh, ns, l, a);\n },\n [l, a, notify]\n );\n\n const handleDiscPointerDown = useCallback(\n (e: React.PointerEvent<HTMLCanvasElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateDisc(e.clientX, e.clientY, e.currentTarget.getBoundingClientRect());\n },\n [updateDisc]\n );\n\n const handleDiscPointerMove = useCallback(\n (e: React.PointerEvent<HTMLCanvasElement>) => {\n if (e.buttons === 0) return;\n updateDisc(e.clientX, e.clientY, e.currentTarget.getBoundingClientRect());\n },\n [updateDisc]\n );\n\n // Lightness slider (horizontal)\n const updateL = useCallback(\n (clientX: number, rect: DOMRect) => {\n const nl = Math.max(0, Math.min(100, ((clientX - rect.left) / rect.width) * 100));\n setL(nl);\n notify(h, s, nl, a);\n },\n [h, s, a, notify]\n );\n\n const handleLPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateL(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateL]\n );\n\n const handleLPointerMove = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.buttons === 0) return;\n updateL(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateL]\n );\n\n // Alpha slider (horizontal)\n const updateA = useCallback(\n (clientX: number, rect: DOMRect) => {\n const na = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n setA(na);\n notify(h, s, l, na);\n },\n [h, s, l, notify]\n );\n\n const handleAPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateA(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateA]\n );\n\n const handleAPointerMove = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.buttons === 0) return;\n updateA(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateA]\n );\n\n // Computed\n const { r: rr, g: gg, b: bb } = hslToRgb(h, s, l);\n const hexStr = hslToHex(h, s, l);\n const rgbStr = `rgb(${rr}, ${gg}, ${bb})`;\n const colorValue = buildColorValue(h, s, l, a);\n\n // Dot position on canvas (canvas coords → CSS px)\n const dotX = DISC / 2 + (s / 100) * (DISC / 2) * Math.cos((h * Math.PI) / 180);\n const dotY = DISC / 2 + (s / 100) * (DISC / 2) * Math.sin((h * Math.PI) / 180);\n\n // L slider gradient\n const lGradient = `linear-gradient(to right,\n hsl(${h}, ${s}%, 5%),\n hsl(${h}, ${s}%, 50%),\n hsl(${h}, ${s}%, 95%))`;\n\n // Alpha gradient\n const alphaGradient = `linear-gradient(to right, transparent, ${rgbStr})`;\n\n // EyeDropper\n const handleEyeDropper = async () => {\n if (!window.EyeDropper) return;\n try {\n const result = await new window.EyeDropper().open();\n const [nh, ns, nl] = hexToHsl(result.sRGBHex);\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n } catch {\n // user cancelled\n }\n };\n\n // Copy\n const handleCopy = () => {\n const text =\n mode === \"hex\" ? colorValue.hexa :\n mode === \"hsl\" ? colorValue.hsla :\n colorValue.rgba;\n navigator.clipboard.writeText(text).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n });\n };\n\n // Swatch click\n const handleSwatch = (color: string) => {\n const [nh, ns, nl] = hexToHsl(color);\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n };\n\n // Accent vars\n const accentVars = accent ? accentToCssVars(deriveAccent(accent), \"colorpicker\") : {};\n\n const displayValue =\n mode === \"hex\" ? colorValue.hexa :\n mode === \"hsl\" ? colorValue.hsla :\n colorValue.rgba;\n\n return (\n <div\n className={[styles.colorPicker, className ?? \"\"].filter(Boolean).join(\" \")}\n style={accentVars as React.CSSProperties}\n >\n {/* Disc */}\n <div className={styles.topRow}>\n <div className={styles.discWrapper}>\n <canvas\n ref={canvasRef}\n width={DISC}\n height={DISC}\n className={styles.disc}\n onPointerDown={handleDiscPointerDown}\n onPointerMove={handleDiscPointerMove}\n />\n <div\n className={styles.dot}\n style={{\n left: dotX,\n top: dotY,\n borderColor: l > 55 ? \"rgba(0,0,0,0.5)\" : \"rgba(255,255,255,0.85)\",\n }}\n />\n </div>\n </div>\n\n {/* Lightness slider */}\n <div\n className={styles.lSlider}\n style={{ backgroundImage: lGradient }}\n onPointerDown={handleLPointerDown}\n onPointerMove={handleLPointerMove}\n >\n <div\n className={styles.lThumb}\n style={{ left: `${l}%` }}\n />\n </div>\n\n {/* Alpha slider */}\n {showAlpha && (\n <div\n className={styles.alphaSlider}\n style={{ backgroundImage: alphaGradient }}\n onPointerDown={handleAPointerDown}\n onPointerMove={handleAPointerMove}\n >\n <div\n className={styles.alphaThumb}\n style={{ left: `${a * 100}%` }}\n />\n </div>\n )}\n\n {/* Preview swatch */}\n <div\n className={styles.previewSwatch}\n style={{ background: showAlpha ? colorValue.rgba : hexStr }}\n >\n {hasEyeDropper && (\n <button className={styles.eyedropperBtn} onClick={handleEyeDropper} title=\"Pick color\">\n <EyedropperIcon />\n </button>\n )}\n </div>\n\n {/* Mode tabs + inputs */}\n <div className={styles.inputSection}>\n <div className={styles.tabs}>\n {([\"hex\", \"hsl\", \"rgb\"] as const).map((m) => (\n <button\n key={m}\n className={[styles.tab, mode === m ? styles.tabActive : \"\"].filter(Boolean).join(\" \")}\n onClick={() => setMode(m)}\n >\n {m.toUpperCase()}\n </button>\n ))}\n </div>\n\n <ColorInput\n mode={mode}\n h={h} s={s} l={l}\n r={rr} g={gg} b={bb}\n hex={hexStr}\n onChange={(nh, ns, nl) => {\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n }}\n onCopy={handleCopy}\n copied={copied}\n />\n </div>\n\n {/* Recent colors */}\n {recentColors.length > 0 && (\n <div className={styles.recents}>\n <span className={styles.recentsLabel}>Recent</span>\n <div className={styles.swatches}>\n {recentColors.slice(0, 8).map((c, i) => (\n <button\n key={i}\n className={styles.recentSwatch}\n style={{ background: c }}\n onClick={() => handleSwatch(c)}\n title={c}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/Button/Button.module.scss","../src/components/Button/Button.tsx","../src/components/Input/Input.module.scss","../src/components/Input/Input.tsx","../src/components/Badge/Badge.module.scss","../src/components/Badge/Badge.tsx","../src/components/RainCanvas/RainCanvas.module.scss","../src/components/RainCanvas/RainCanvas.tsx","../src/components/Timeline/Timeline.module.scss","../src/utils/color.ts","../src/components/Timeline/Timeline.tsx","../src/components/ColorPicker/ColorPicker.module.scss","../src/components/ColorPicker/ColorPicker.tsx"],"names":["button","primary","secondary","danger","ghost","sm","md","lg","fullWidth","loading","spinner","spin","wrapper","label","inputWrapper","input","error","adornment","adornmentEnd","withStart","withEnd","helperText","errorText","React","jsxs","jsx","badge","default","success","warning","dotIndicator","trailCanvas","content","dropContainer","filterId","timeline","vertical","item","track","connector","last","horizontal","dot","iconSlot","completed","dotIn","active","pulse","pending","title","description","connectorHidden","connectorDone","colorPicker","topRow","discWrapper","disc","lSlider","lThumb","alphaSlider","alphaThumb","previewSwatch","eyedropperBtn","inputSection","tabs","tab","tabActive","inputAddon","inputCopyBtn","recents","recentsLabel","swatches","recentSwatch","CheckIcon","useEffect","useRef","rr","gg","bb"],"mappings":"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","file":"index.js","sourcesContent":["@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2);\n font-family: var(--font-family-base);\n font-weight: 500;\n letter-spacing: -0.01em;\n border: 1px solid transparent;\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);\n white-space: nowrap;\n text-decoration: none;\n outline-offset: 2px;\n}\n\n.button:focus-visible {\n outline: 2px solid var(--color-primary-500);\n}\n\n.button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Variants */\n.primary {\n background-color: var(--color-primary-600);\n color: var(--color-neutral-0);\n}\n\n.primary:hover:not(:disabled) {\n background-color: var(--color-primary-700);\n}\n\n.secondary {\n background-color: var(--color-neutral-0);\n color: var(--color-neutral-900);\n border-color: var(--color-neutral-200);\n box-shadow: var(--shadow-sm);\n}\n\n.secondary:hover:not(:disabled) {\n background-color: var(--color-neutral-100);\n}\n\n.danger {\n background-color: var(--color-danger-500);\n color: var(--color-neutral-0);\n}\n\n.danger:hover:not(:disabled) {\n background-color: var(--color-danger-600);\n}\n\n.ghost {\n background-color: transparent;\n color: var(--color-neutral-600);\n}\n\n.ghost:hover:not(:disabled) {\n background-color: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n/* Sizes */\n.sm {\n font-size: var(--font-size-xs);\n padding: var(--spacing-1) var(--spacing-3);\n height: 2rem;\n}\n\n.md {\n font-size: var(--font-size-sm);\n padding: var(--spacing-2) var(--spacing-4);\n height: 2.5rem;\n}\n\n.lg {\n font-size: var(--font-size-md);\n padding: var(--spacing-3) var(--spacing-4);\n height: 3rem;\n}\n\n.fullWidth {\n width: 100%;\n}\n\n/* Loading */\n.loading {\n position: relative;\n}\n\n.spinner {\n width: 1em;\n height: 1em;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: var(--radius-full);\n animation: spin 0.6s linear infinite;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIkJ1dHRvbi5tb2R1bGUuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFUTtBQUtSO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBR0E7RUFHQTtFQUNBOzs7QUFRRjtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUNBO0VBSUE7RUFHQTtFQUNBOzs7QUNqR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBOzs7QUFFRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFFRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUVGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTs7O0FBRUY7RUFDRTtFQUNBOzs7QUFHRjtBQUNBO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0FBQ0E7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7SUFDRSIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgXCJzYXNzOmNvbG9yXCI7XG5cbkBpbXBvcnQgdXJsKFwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDQwMDs1MDA7NjAwJmRpc3BsYXk9c3dhcFwiKTtcblxuLy8gQWNjZW50IGRpIGRlZmF1bHQg4oCUIGNhbWJpYSBxdWkgcGVyIGFnZ2lvcm5hcmUgdHV0dGEgbGEgbGlicmVyaWFcbiRhY2NlbnQ6ICMzYjgyZjY7XG5cbjpyb290IHtcbiAgLy8gQWNjZW50IHNjYWxlIOKAlCBkZXJpdmF0YSBkYSAkYWNjZW50IGEgY29tcGlsZSB0aW1lXG4gIC0tYWNjZW50OiAgICAgICAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtZG90OiAgICAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDEyJSl9O1xuICAtLWFjY2VudC10cmFjazogICN7JGFjY2VudH07XG4gIC0tYWNjZW50LXJpbmc6ICAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtZ2xvdzogICAje2NvbG9yLmNoYW5nZSgkYWNjZW50LCAkYWxwaGE6IDAuMyl9O1xuICAtLWFjY2VudC1saWdodDogICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDUlLCAkc2F0dXJhdGlvbjogLTIwJSl9O1xuXG4gIC8vIFByaW1hcnkgc2NhbGUgKG1hbnRlbnV0YSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCBjb24gQnV0dG9uLCBCYWRnZSwgSW5wdXQpXG4gIC0tY29sb3ItcHJpbWFyeS01MDogICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDklLCAkc2F0dXJhdGlvbjogLTMwJSl9O1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDQyJSwgJHNhdHVyYXRpb246IC0xNSUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTQwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAxMiUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTUwMDogI3skYWNjZW50fTtcbiAgLS1jb2xvci1wcmltYXJ5LTYwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAtMTAlKX07XG4gIC0tY29sb3ItcHJpbWFyeS03MDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogLTIwJSl9O1xuXG4gIC8vIE5ldXRyYWxcbiAgLS1jb2xvci1uZXV0cmFsLTA6ICAgI2ZmZmZmZjtcbiAgLS1jb2xvci1uZXV0cmFsLTEwMDogI2YzZjRmNjtcbiAgLS1jb2xvci1uZXV0cmFsLTIwMDogI2U1ZTdlYjtcbiAgLS1jb2xvci1uZXV0cmFsLTQwMDogIzljYTNhZjtcbiAgLS1jb2xvci1uZXV0cmFsLTYwMDogIzRiNTU2MztcbiAgLS1jb2xvci1uZXV0cmFsLTkwMDogIzExMTgyNztcblxuICAvLyBTZW1hbnRpY1xuICAtLWNvbG9yLXN1Y2Nlc3MtNTAwOiAjMjJjNTVlO1xuICAtLWNvbG9yLXN1Y2Nlc3MtNjAwOiAjMTZhMzRhO1xuICAtLWNvbG9yLWRhbmdlci01MDA6ICAjZWY0NDQ0O1xuICAtLWNvbG9yLWRhbmdlci02MDA6ICAjZGMyNjI2O1xuICAtLWNvbG9yLXdhcm5pbmctNTAwOiAjZjU5ZTBiO1xuICAtLWNvbG9yLXdhcm5pbmctNjAwOiAjZDk3NzA2O1xuXG4gIC8vIFR5cG9ncmFwaHlcbiAgLS1mb250LWZhbWlseS1iYXNlOiBcIkludGVyXCIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjtcbiAgLS1mb250LXNpemUteHM6IDAuNzVyZW07XG4gIC0tZm9udC1zaXplLXNtOiAwLjg3NXJlbTtcbiAgLS1mb250LXNpemUtbWQ6IDFyZW07XG4gIC0tZm9udC1zaXplLWxnOiAxLjEyNXJlbTtcblxuICAvLyBTcGFjaW5nXG4gIC0tc3BhY2luZy0xOiAwLjI1cmVtO1xuICAtLXNwYWNpbmctMjogMC41cmVtO1xuICAtLXNwYWNpbmctMzogMC43NXJlbTtcbiAgLS1zcGFjaW5nLTQ6IDFyZW07XG5cbiAgLy8gUmFkaXVzXG4gIC0tcmFkaXVzLXNtOiAgIDAuMjVyZW07XG4gIC0tcmFkaXVzLW1kOiAgIDAuMzc1cmVtO1xuICAtLXJhZGl1cy1sZzogICAwLjVyZW07XG4gIC0tcmFkaXVzLWZ1bGw6IDk5OTlweDtcblxuICAvLyBTaGFkb3dzXG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuMSk7XG5cbiAgLy8gVHJhbnNpdGlvbnNcbiAgLS10cmFuc2l0aW9uLWZhc3Q6IDE1MG1zIGVhc2U7XG5cbiAgLy8gU3VyZmFjZSAoYmFja2dyb3VuZCBkaSBjYXJkL3BhbmVsKVxuICAtLWNvbG9yLXN1cmZhY2U6ICAgICAgICAgICNmZmZmZmY7XG4gIC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZDogI2ZmZmZmZjtcbn1cblxuLy8g4pSA4pSA4pSAIERhcmsgdGhlbWUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBBcHBsaWNhdG8gdmlhIGRhdGEtdGhlbWU9XCJkYXJrXCIgc3VsbCdlbGVtZW50byByb290IChnZXN0aXRvIGRhIFN0b3J5Ym9vayBkZWNvcmF0b3Jcbi8vIGUgZGFsbCdhcHAgY29uc3VtZXIpLiBJIGNvbXBvbmVudGkgbm9uIGRldm9ubyBmYXJlIG51bGxhIGRpIHNwZWNpYWxlOiBiYXN0YSBjaGVcbi8vIHVzaW5vIGkgdG9rZW4gdmFyKCkgZSByaWNldmVyYW5ubyBhdXRvbWF0aWNhbWVudGUgaSB2YWxvcmkgZGFyay5cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIHtcbiAgLy8gTmV1dHJhbCAoc2NhbGEgaW52ZXJ0aXRhKVxuICAtLWNvbG9yLW5ldXRyYWwtMDogICAjMGYxNzJhO1xuICAtLWNvbG9yLW5ldXRyYWwtMTAwOiAjMWUyOTNiO1xuICAtLWNvbG9yLW5ldXRyYWwtMjAwOiAjMzM0MTU1O1xuICAtLWNvbG9yLW5ldXRyYWwtNDAwOiAjOTRhM2I4O1xuICAtLWNvbG9yLW5ldXRyYWwtNjAwOiAjY2JkNWUxO1xuICAtLWNvbG9yLW5ldXRyYWwtOTAwOiAjZjhmYWZjO1xuXG4gIC8vIFN1cmZhY2VcbiAgLS1jb2xvci1zdXJmYWNlOiAgICAgICAgICAjMWUyOTNiO1xuICAtLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQ6ICMyNzM1NDk7XG5cbiAgLy8gUHJpbWFyeSBzY2FsZSBkYXJrIChwZXIgaWwgZGVmYXVsdCBhY2NlbnQgYmx1IOKAlCBsZSBzZnVtYXR1cmUgY2hpYXJlIGRpdmVudGFubyBzY3VyZSlcbiAgLS1jb2xvci1wcmltYXJ5LTUwOiAgIzE3MjU1NDtcbiAgLS1jb2xvci1wcmltYXJ5LTEwMDogIzFlM2E4YTtcbiAgLy8gNDAwIC8gNTAwIC8gNjAwIC8gNzAwIHJpbWFuZ29ubyBpbnZhcmlhdGkgKGFiYmFzdGFuemEgc2F0dXJpIHN1IGJnIHNjdXJvKVxuXG4gIC8vIEFjY2VudCBsaWdodDogdmFyaWFudGUgc2N1cmFcbiAgLS1hY2NlbnQtbGlnaHQ6ICMxNzI1NTQ7XG5cbiAgLy8gU2hhZG93cyAocGnDuSBmb3J0aSBzdSBiZyBzY3VybylcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuNCk7XG4gIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAwLjUpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAwLjQpO1xufVxuIiwiQGltcG9ydCBcIi4uLy4uL3N0eWxlcy90b2tlbnMuc2Nzc1wiO1xuXG4uYnV0dG9uIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNpbmctMik7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1iYXNlKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSxcbiAgICBib3JkZXItY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSwgY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSxcbiAgICBib3gtc2hhZG93IHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLmJ1dHRvbjpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktNTAwKTtcbn1cblxuLmJ1dHRvbjpkaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLyogVmFyaWFudHMgKi9cbi5wcmltYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS02MDApO1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0wKTtcbn1cbi5wcmltYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS03MDApO1xufVxuXG4uc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0wKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG59XG4uc2Vjb25kYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0xMDApO1xufVxuXG4uZGFuZ2VyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZGFuZ2VyLTUwMCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTApO1xufVxuLmRhbmdlcjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWRhbmdlci02MDApO1xufVxuXG4uZ2hvc3Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNjAwKTtcbn1cbi5naG9zdDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbn1cblxuLyogU2l6ZXMgKi9cbi5zbSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0xKSB2YXIoLS1zcGFjaW5nLTMpO1xuICBoZWlnaHQ6IDJyZW07XG59XG5cbi5tZCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0yKSB2YXIoLS1zcGFjaW5nLTQpO1xuICBoZWlnaHQ6IDIuNXJlbTtcbn1cblxuLmxnIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbWQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTMpIHZhcigtLXNwYWNpbmctNCk7XG4gIGhlaWdodDogM3JlbTtcbn1cblxuLmZ1bGxXaWR0aCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBMb2FkaW5nICovXG4ubG9hZGluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnNwaW5uZXIge1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICBhbmltYXRpb246IHNwaW4gMC42cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgc3BpbiB7XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG4iXX0= */","import React from \"react\";\nimport styles from \"./Button.module.scss\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"danger\" | \"ghost\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n loading?: boolean;\n fullWidth?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = \"primary\",\n size = \"md\",\n loading = false,\n fullWidth = false,\n disabled,\n children,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n disabled={disabled || loading}\n className={[\n styles.button,\n styles[variant],\n styles[size],\n fullWidth ? styles.fullWidth : \"\",\n loading ? styles.loading : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {loading && <span className={styles.spinner} aria-hidden=\"true\" />}\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.wrapper {\n display: inline-flex;\n flex-direction: column;\n gap: var(--spacing-1);\n}\n\n.fullWidth {\n width: 100%;\n}\n\n.label {\n font-family: var(--font-family-base);\n font-size: var(--font-size-sm);\n font-weight: 500;\n color: var(--color-neutral-900);\n letter-spacing: -0.01em;\n}\n\n.inputWrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.input {\n width: 100%;\n font-family: var(--font-family-base);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-md);\n background-color: var(--color-neutral-0);\n color: var(--color-neutral-900);\n outline: none;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n\n.input::placeholder {\n color: var(--color-neutral-400);\n}\n\n.input:focus {\n border-color: var(--color-primary-500);\n box-shadow: 0 0 0 3px var(--color-primary-100);\n}\n\n.input:disabled {\n background-color: var(--color-neutral-100);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.input.error {\n border-color: var(--color-danger-500);\n}\n\n.input.error:focus {\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15);\n}\n\n/* Sizes */\n.sm .input {\n font-size: var(--font-size-xs);\n padding: var(--spacing-1) var(--spacing-2);\n height: 2rem;\n}\n\n.md .input {\n font-size: var(--font-size-sm);\n padding: var(--spacing-2) var(--spacing-3);\n height: 2.5rem;\n}\n\n.lg .input {\n font-size: var(--font-size-md);\n padding: var(--spacing-3) var(--spacing-4);\n height: 3rem;\n}\n\n/* Adornments */\n.adornment {\n position: absolute;\n left: var(--spacing-3);\n display: flex;\n align-items: center;\n color: var(--color-neutral-400);\n pointer-events: none;\n}\n\n.adornmentEnd {\n left: unset;\n right: var(--spacing-3);\n}\n\n.sm .withStart {\n padding-left: 2rem;\n}\n\n.md .withStart {\n padding-left: 2.25rem;\n}\n\n.lg .withStart {\n padding-left: 2.5rem;\n}\n\n.sm .withEnd {\n padding-right: 2rem;\n}\n\n.md .withEnd {\n padding-right: 2.25rem;\n}\n\n.lg .withEnd {\n padding-right: 2.5rem;\n}\n\n.helperText {\n font-family: var(--font-family-base);\n font-size: var(--font-size-xs);\n color: var(--color-neutral-400);\n}\n\n.errorText {\n font-family: var(--font-family-base);\n font-size: var(--font-size-xs);\n color: var(--color-danger-500);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIklucHV0Lm1vZHVsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVRO0FBS1I7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7OztBQVFGO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFJQTtFQUdBO0VBQ0E7OztBQ2pHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtBQUNBO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFBaUI7OztBQUNqQjtFQUFpQjs7O0FBQ2pCO0VBQWlCOzs7QUFFakI7RUFBZTs7O0FBQ2Y7RUFBZTs7O0FBQ2Y7RUFBZTs7O0FBRWY7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSBcInNhc3M6Y29sb3JcIjtcblxuQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDAmZGlzcGxheT1zd2FwXCIpO1xuXG4vLyBBY2NlbnQgZGkgZGVmYXVsdCDigJQgY2FtYmlhIHF1aSBwZXIgYWdnaW9ybmFyZSB0dXR0YSBsYSBsaWJyZXJpYVxuJGFjY2VudDogIzNiODJmNjtcblxuOnJvb3Qge1xuICAvLyBBY2NlbnQgc2NhbGUg4oCUIGRlcml2YXRhIGRhICRhY2NlbnQgYSBjb21waWxlIHRpbWVcbiAgLS1hY2NlbnQ6ICAgICAgICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1kb3Q6ICAgICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogMTIlKX07XG4gIC0tYWNjZW50LXRyYWNrOiAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtcmluZzogICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1nbG93OiAgICN7Y29sb3IuY2hhbmdlKCRhY2NlbnQsICRhbHBoYTogMC4zKX07XG4gIC0tYWNjZW50LWxpZ2h0OiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0NSUsICRzYXR1cmF0aW9uOiAtMjAlKX07XG5cbiAgLy8gUHJpbWFyeSBzY2FsZSAobWFudGVudXRhIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIGNvbiBCdXR0b24sIEJhZGdlLCBJbnB1dClcbiAgLS1jb2xvci1wcmltYXJ5LTUwOiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0OSUsICRzYXR1cmF0aW9uOiAtMzAlKX07XG4gIC0tY29sb3ItcHJpbWFyeS0xMDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDIlLCAkc2F0dXJhdGlvbjogLTE1JSl9O1xuICAtLWNvbG9yLXByaW1hcnktNDAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDEyJSl9O1xuICAtLWNvbG9yLXByaW1hcnktNTAwOiAjeyRhY2NlbnR9O1xuICAtLWNvbG9yLXByaW1hcnktNjAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IC0xMCUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTcwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAtMjAlKX07XG5cbiAgLy8gTmV1dHJhbFxuICAtLWNvbG9yLW5ldXRyYWwtMDogICAjZmZmZmZmO1xuICAtLWNvbG9yLW5ldXRyYWwtMTAwOiAjZjNmNGY2O1xuICAtLWNvbG9yLW5ldXRyYWwtMjAwOiAjZTVlN2ViO1xuICAtLWNvbG9yLW5ldXRyYWwtNDAwOiAjOWNhM2FmO1xuICAtLWNvbG9yLW5ldXRyYWwtNjAwOiAjNGI1NTYzO1xuICAtLWNvbG9yLW5ldXRyYWwtOTAwOiAjMTExODI3O1xuXG4gIC8vIFNlbWFudGljXG4gIC0tY29sb3Itc3VjY2Vzcy01MDA6ICMyMmM1NWU7XG4gIC0tY29sb3Itc3VjY2Vzcy02MDA6ICMxNmEzNGE7XG4gIC0tY29sb3ItZGFuZ2VyLTUwMDogICNlZjQ0NDQ7XG4gIC0tY29sb3ItZGFuZ2VyLTYwMDogICNkYzI2MjY7XG4gIC0tY29sb3Itd2FybmluZy01MDA6ICNmNTllMGI7XG4gIC0tY29sb3Itd2FybmluZy02MDA6ICNkOTc3MDY7XG5cbiAgLy8gVHlwb2dyYXBoeVxuICAtLWZvbnQtZmFtaWx5LWJhc2U6IFwiSW50ZXJcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xuICAtLWZvbnQtc2l6ZS14czogMC43NXJlbTtcbiAgLS1mb250LXNpemUtc206IDAuODc1cmVtO1xuICAtLWZvbnQtc2l6ZS1tZDogMXJlbTtcbiAgLS1mb250LXNpemUtbGc6IDEuMTI1cmVtO1xuXG4gIC8vIFNwYWNpbmdcbiAgLS1zcGFjaW5nLTE6IDAuMjVyZW07XG4gIC0tc3BhY2luZy0yOiAwLjVyZW07XG4gIC0tc3BhY2luZy0zOiAwLjc1cmVtO1xuICAtLXNwYWNpbmctNDogMXJlbTtcblxuICAvLyBSYWRpdXNcbiAgLS1yYWRpdXMtc206ICAgMC4yNXJlbTtcbiAgLS1yYWRpdXMtbWQ6ICAgMC4zNzVyZW07XG4gIC0tcmFkaXVzLWxnOiAgIDAuNXJlbTtcbiAgLS1yYWRpdXMtZnVsbDogOTk5OXB4O1xuXG4gIC8vIFNoYWRvd3NcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC4xKTtcblxuICAvLyBUcmFuc2l0aW9uc1xuICAtLXRyYW5zaXRpb24tZmFzdDogMTUwbXMgZWFzZTtcblxuICAvLyBTdXJmYWNlIChiYWNrZ3JvdW5kIGRpIGNhcmQvcGFuZWwpXG4gIC0tY29sb3Itc3VyZmFjZTogICAgICAgICAgI2ZmZmZmZjtcbiAgLS1jb2xvci1zdXJmYWNlLWVsZXZhdGVkOiAjZmZmZmZmO1xufVxuXG4vLyDilIDilIDilIAgRGFyayB0aGVtZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEFwcGxpY2F0byB2aWEgZGF0YS10aGVtZT1cImRhcmtcIiBzdWxsJ2VsZW1lbnRvIHJvb3QgKGdlc3RpdG8gZGEgU3Rvcnlib29rIGRlY29yYXRvclxuLy8gZSBkYWxsJ2FwcCBjb25zdW1lcikuIEkgY29tcG9uZW50aSBub24gZGV2b25vIGZhcmUgbnVsbGEgZGkgc3BlY2lhbGU6IGJhc3RhIGNoZVxuLy8gdXNpbm8gaSB0b2tlbiB2YXIoKSBlIHJpY2V2ZXJhbm5vIGF1dG9tYXRpY2FtZW50ZSBpIHZhbG9yaSBkYXJrLlxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0ge1xuICAvLyBOZXV0cmFsIChzY2FsYSBpbnZlcnRpdGEpXG4gIC0tY29sb3ItbmV1dHJhbC0wOiAgICMwZjE3MmE7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICMxZTI5M2I7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICMzMzQxNTU7XG4gIC0tY29sb3ItbmV1dHJhbC00MDA6ICM5NGEzYjg7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICNjYmQ1ZTE7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICNmOGZhZmM7XG5cbiAgLy8gU3VyZmFjZVxuICAtLWNvbG9yLXN1cmZhY2U6ICAgICAgICAgICMxZTI5M2I7XG4gIC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZDogIzI3MzU0OTtcblxuICAvLyBQcmltYXJ5IHNjYWxlIGRhcmsgKHBlciBpbCBkZWZhdWx0IGFjY2VudCBibHUg4oCUIGxlIHNmdW1hdHVyZSBjaGlhcmUgZGl2ZW50YW5vIHNjdXJlKVxuICAtLWNvbG9yLXByaW1hcnktNTA6ICAjMTcyNTU0O1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAjMWUzYThhO1xuICAvLyA0MDAgLyA1MDAgLyA2MDAgLyA3MDAgcmltYW5nb25vIGludmFyaWF0aSAoYWJiYXN0YW56YSBzYXR1cmkgc3UgYmcgc2N1cm8pXG5cbiAgLy8gQWNjZW50IGxpZ2h0OiB2YXJpYW50ZSBzY3VyYVxuICAtLWFjY2VudC1saWdodDogIzE3MjU1NDtcblxuICAvLyBTaGFkb3dzIChwacO5IGZvcnRpIHN1IGJnIHNjdXJvKVxuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC40KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuNSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuNCk7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2Vucy5zY3NzXCI7XG5cbi53cmFwcGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2luZy0xKTtcbn1cblxuLmZ1bGxXaWR0aCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubGFiZWwge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktYmFzZSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG59XG5cbi5pbnB1dFdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5pbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktYmFzZSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0wKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXRyYW5zaXRpb24tZmFzdCksIGJveC1zaGFkb3cgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmlucHV0OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG59XG5cbi5pbnB1dDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS01MDApO1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggdmFyKC0tY29sb3ItcHJpbWFyeS0xMDApO1xufVxuXG4uaW5wdXQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTEwMCk7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLmlucHV0LmVycm9yIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1kYW5nZXItNTAwKTtcbn1cblxuLmlucHV0LmVycm9yOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYigyMzkgNjggNjggLyAwLjE1KTtcbn1cblxuLyogU2l6ZXMgKi9cbi5zbSAuaW5wdXQge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14cyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMSkgdmFyKC0tc3BhY2luZy0yKTtcbiAgaGVpZ2h0OiAycmVtO1xufVxuXG4ubWQgLmlucHV0IHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLXNwYWNpbmctMyk7XG4gIGhlaWdodDogMi41cmVtO1xufVxuXG4ubGcgLmlucHV0IHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbWQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTMpIHZhcigtLXNwYWNpbmctNCk7XG4gIGhlaWdodDogM3JlbTtcbn1cblxuLyogQWRvcm5tZW50cyAqL1xuLmFkb3JubWVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogdmFyKC0tc3BhY2luZy0zKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNDAwKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5hZG9ybm1lbnRFbmQge1xuICBsZWZ0OiB1bnNldDtcbiAgcmlnaHQ6IHZhcigtLXNwYWNpbmctMyk7XG59XG5cbi5zbSAud2l0aFN0YXJ0IHsgcGFkZGluZy1sZWZ0OiAycmVtOyB9XG4ubWQgLndpdGhTdGFydCB7IHBhZGRpbmctbGVmdDogMi4yNXJlbTsgfVxuLmxnIC53aXRoU3RhcnQgeyBwYWRkaW5nLWxlZnQ6IDIuNXJlbTsgfVxuXG4uc20gLndpdGhFbmQgeyBwYWRkaW5nLXJpZ2h0OiAycmVtOyB9XG4ubWQgLndpdGhFbmQgeyBwYWRkaW5nLXJpZ2h0OiAyLjI1cmVtOyB9XG4ubGcgLndpdGhFbmQgeyBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07IH1cblxuLmhlbHBlclRleHQge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktYmFzZSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNDAwKTtcbn1cblxuLmVycm9yVGV4dCB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1iYXNlKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZGFuZ2VyLTUwMCk7XG59XG4iXX0= */","import React from \"react\";\nimport styles from \"./Input.module.scss\";\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n size?: InputSize;\n fullWidth?: boolean;\n startAdornment?: React.ReactNode;\n endAdornment?: React.ReactNode;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n label,\n helperText,\n errorText,\n size = \"md\",\n fullWidth = false,\n startAdornment,\n endAdornment,\n id,\n className,\n ...props\n },\n ref\n ) => {\n const inputId = id ?? (label ? label.toLowerCase().replace(/\\s+/g, \"-\") : undefined);\n const hasError = Boolean(errorText);\n\n return (\n <div\n className={[\n styles.wrapper,\n fullWidth ? styles.fullWidth : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {label && (\n <label htmlFor={inputId} className={styles.label}>\n {label}\n </label>\n )}\n <div className={[styles.inputWrapper, styles[size]].join(\" \")}>\n {startAdornment && (\n <span className={styles.adornment}>{startAdornment}</span>\n )}\n <input\n ref={ref}\n id={inputId}\n className={[\n styles.input,\n hasError ? styles.error : \"\",\n startAdornment ? styles.withStart : \"\",\n endAdornment ? styles.withEnd : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-invalid={hasError}\n aria-describedby={\n errorText\n ? `${inputId}-error`\n : helperText\n ? `${inputId}-helper`\n : undefined\n }\n {...props}\n />\n {endAdornment && (\n <span className={[styles.adornment, styles.adornmentEnd].join(\" \")}>\n {endAdornment}\n </span>\n )}\n </div>\n {errorText && (\n <span id={`${inputId}-error`} className={styles.errorText}>\n {errorText}\n </span>\n )}\n {helperText && !errorText && (\n <span id={`${inputId}-helper`} className={styles.helperText}>\n {helperText}\n </span>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n","@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-1);\n font-family: var(--font-family-base);\n font-weight: 500;\n letter-spacing: 0.01em;\n border-radius: var(--radius-full);\n white-space: nowrap;\n}\n\n/* Sizes */\n.sm {\n font-size: var(--font-size-xs);\n padding: 0.1rem var(--spacing-2);\n}\n\n.md {\n font-size: var(--font-size-xs);\n padding: var(--spacing-1) var(--spacing-3);\n}\n\n/* Variants */\n.default {\n background-color: var(--color-neutral-100);\n color: var(--color-neutral-600);\n}\n\n.primary {\n background-color: var(--color-primary-50);\n color: var(--color-primary-700);\n}\n\n.success {\n background-color: #f0fdf4;\n color: var(--color-success-600);\n}\n\n.warning {\n background-color: #fffbeb;\n color: var(--color-warning-600);\n}\n\n.danger {\n background-color: #fef2f2;\n color: var(--color-danger-600);\n}\n\n/* Dot indicator */\n.dotIndicator {\n width: 0.5rem;\n height: 0.5rem;\n border-radius: var(--radius-full);\n background-color: currentColor;\n flex-shrink: 0;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIkJhZGdlLm1vZHVsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVRO0FBS1I7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7OztBQVFGO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFJQTtFQUdBO0VBQ0E7OztBQ2pHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSBcInNhc3M6Y29sb3JcIjtcblxuQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDAmZGlzcGxheT1zd2FwXCIpO1xuXG4vLyBBY2NlbnQgZGkgZGVmYXVsdCDigJQgY2FtYmlhIHF1aSBwZXIgYWdnaW9ybmFyZSB0dXR0YSBsYSBsaWJyZXJpYVxuJGFjY2VudDogIzNiODJmNjtcblxuOnJvb3Qge1xuICAvLyBBY2NlbnQgc2NhbGUg4oCUIGRlcml2YXRhIGRhICRhY2NlbnQgYSBjb21waWxlIHRpbWVcbiAgLS1hY2NlbnQ6ICAgICAgICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1kb3Q6ICAgICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogMTIlKX07XG4gIC0tYWNjZW50LXRyYWNrOiAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtcmluZzogICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1nbG93OiAgICN7Y29sb3IuY2hhbmdlKCRhY2NlbnQsICRhbHBoYTogMC4zKX07XG4gIC0tYWNjZW50LWxpZ2h0OiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0NSUsICRzYXR1cmF0aW9uOiAtMjAlKX07XG5cbiAgLy8gUHJpbWFyeSBzY2FsZSAobWFudGVudXRhIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIGNvbiBCdXR0b24sIEJhZGdlLCBJbnB1dClcbiAgLS1jb2xvci1wcmltYXJ5LTUwOiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0OSUsICRzYXR1cmF0aW9uOiAtMzAlKX07XG4gIC0tY29sb3ItcHJpbWFyeS0xMDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDIlLCAkc2F0dXJhdGlvbjogLTE1JSl9O1xuICAtLWNvbG9yLXByaW1hcnktNDAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDEyJSl9O1xuICAtLWNvbG9yLXByaW1hcnktNTAwOiAjeyRhY2NlbnR9O1xuICAtLWNvbG9yLXByaW1hcnktNjAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IC0xMCUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTcwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAtMjAlKX07XG5cbiAgLy8gTmV1dHJhbFxuICAtLWNvbG9yLW5ldXRyYWwtMDogICAjZmZmZmZmO1xuICAtLWNvbG9yLW5ldXRyYWwtMTAwOiAjZjNmNGY2O1xuICAtLWNvbG9yLW5ldXRyYWwtMjAwOiAjZTVlN2ViO1xuICAtLWNvbG9yLW5ldXRyYWwtNDAwOiAjOWNhM2FmO1xuICAtLWNvbG9yLW5ldXRyYWwtNjAwOiAjNGI1NTYzO1xuICAtLWNvbG9yLW5ldXRyYWwtOTAwOiAjMTExODI3O1xuXG4gIC8vIFNlbWFudGljXG4gIC0tY29sb3Itc3VjY2Vzcy01MDA6ICMyMmM1NWU7XG4gIC0tY29sb3Itc3VjY2Vzcy02MDA6ICMxNmEzNGE7XG4gIC0tY29sb3ItZGFuZ2VyLTUwMDogICNlZjQ0NDQ7XG4gIC0tY29sb3ItZGFuZ2VyLTYwMDogICNkYzI2MjY7XG4gIC0tY29sb3Itd2FybmluZy01MDA6ICNmNTllMGI7XG4gIC0tY29sb3Itd2FybmluZy02MDA6ICNkOTc3MDY7XG5cbiAgLy8gVHlwb2dyYXBoeVxuICAtLWZvbnQtZmFtaWx5LWJhc2U6IFwiSW50ZXJcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xuICAtLWZvbnQtc2l6ZS14czogMC43NXJlbTtcbiAgLS1mb250LXNpemUtc206IDAuODc1cmVtO1xuICAtLWZvbnQtc2l6ZS1tZDogMXJlbTtcbiAgLS1mb250LXNpemUtbGc6IDEuMTI1cmVtO1xuXG4gIC8vIFNwYWNpbmdcbiAgLS1zcGFjaW5nLTE6IDAuMjVyZW07XG4gIC0tc3BhY2luZy0yOiAwLjVyZW07XG4gIC0tc3BhY2luZy0zOiAwLjc1cmVtO1xuICAtLXNwYWNpbmctNDogMXJlbTtcblxuICAvLyBSYWRpdXNcbiAgLS1yYWRpdXMtc206ICAgMC4yNXJlbTtcbiAgLS1yYWRpdXMtbWQ6ICAgMC4zNzVyZW07XG4gIC0tcmFkaXVzLWxnOiAgIDAuNXJlbTtcbiAgLS1yYWRpdXMtZnVsbDogOTk5OXB4O1xuXG4gIC8vIFNoYWRvd3NcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC4xKTtcblxuICAvLyBUcmFuc2l0aW9uc1xuICAtLXRyYW5zaXRpb24tZmFzdDogMTUwbXMgZWFzZTtcblxuICAvLyBTdXJmYWNlIChiYWNrZ3JvdW5kIGRpIGNhcmQvcGFuZWwpXG4gIC0tY29sb3Itc3VyZmFjZTogICAgICAgICAgI2ZmZmZmZjtcbiAgLS1jb2xvci1zdXJmYWNlLWVsZXZhdGVkOiAjZmZmZmZmO1xufVxuXG4vLyDilIDilIDilIAgRGFyayB0aGVtZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEFwcGxpY2F0byB2aWEgZGF0YS10aGVtZT1cImRhcmtcIiBzdWxsJ2VsZW1lbnRvIHJvb3QgKGdlc3RpdG8gZGEgU3Rvcnlib29rIGRlY29yYXRvclxuLy8gZSBkYWxsJ2FwcCBjb25zdW1lcikuIEkgY29tcG9uZW50aSBub24gZGV2b25vIGZhcmUgbnVsbGEgZGkgc3BlY2lhbGU6IGJhc3RhIGNoZVxuLy8gdXNpbm8gaSB0b2tlbiB2YXIoKSBlIHJpY2V2ZXJhbm5vIGF1dG9tYXRpY2FtZW50ZSBpIHZhbG9yaSBkYXJrLlxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0ge1xuICAvLyBOZXV0cmFsIChzY2FsYSBpbnZlcnRpdGEpXG4gIC0tY29sb3ItbmV1dHJhbC0wOiAgICMwZjE3MmE7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICMxZTI5M2I7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICMzMzQxNTU7XG4gIC0tY29sb3ItbmV1dHJhbC00MDA6ICM5NGEzYjg7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICNjYmQ1ZTE7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICNmOGZhZmM7XG5cbiAgLy8gU3VyZmFjZVxuICAtLWNvbG9yLXN1cmZhY2U6ICAgICAgICAgICMxZTI5M2I7XG4gIC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZDogIzI3MzU0OTtcblxuICAvLyBQcmltYXJ5IHNjYWxlIGRhcmsgKHBlciBpbCBkZWZhdWx0IGFjY2VudCBibHUg4oCUIGxlIHNmdW1hdHVyZSBjaGlhcmUgZGl2ZW50YW5vIHNjdXJlKVxuICAtLWNvbG9yLXByaW1hcnktNTA6ICAjMTcyNTU0O1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAjMWUzYThhO1xuICAvLyA0MDAgLyA1MDAgLyA2MDAgLyA3MDAgcmltYW5nb25vIGludmFyaWF0aSAoYWJiYXN0YW56YSBzYXR1cmkgc3UgYmcgc2N1cm8pXG5cbiAgLy8gQWNjZW50IGxpZ2h0OiB2YXJpYW50ZSBzY3VyYVxuICAtLWFjY2VudC1saWdodDogIzE3MjU1NDtcblxuICAvLyBTaGFkb3dzIChwacO5IGZvcnRpIHN1IGJnIHNjdXJvKVxuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC40KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuNSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuNCk7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2Vucy5zY3NzXCI7XG5cbi5iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNpbmctMSk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1iYXNlKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vKiBTaXplcyAqL1xuLnNtIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBwYWRkaW5nOiAwLjFyZW0gdmFyKC0tc3BhY2luZy0yKTtcbn1cblxuLm1kIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTEpIHZhcigtLXNwYWNpbmctMyk7XG59XG5cbi8qIFZhcmlhbnRzICovXG4uZGVmYXVsdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNjAwKTtcbn1cblxuLnByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LTUwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktNzAwKTtcbn1cblxuLnN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmZGY0O1xuICBjb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcy02MDApO1xufVxuXG4ud2FybmluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZiZWI7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci13YXJuaW5nLTYwMCk7XG59XG5cbi5kYW5nZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmMmYyO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZGFuZ2VyLTYwMCk7XG59XG5cbi8qIERvdCBpbmRpY2F0b3IgKi9cbi5kb3RJbmRpY2F0b3Ige1xuICB3aWR0aDogMC41cmVtO1xuICBoZWlnaHQ6IDAuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuIl19 */","import React from \"react\";\nimport styles from \"./Badge.module.scss\";\n\nexport type BadgeVariant = \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\";\nexport type BadgeSize = \"sm\" | \"md\";\n\nexport interface BadgeProps {\n variant?: BadgeVariant;\n size?: BadgeSize;\n dot?: boolean;\n children: React.ReactNode;\n className?: string;\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = \"default\",\n size = \"md\",\n dot = false,\n children,\n className,\n}) => {\n return (\n <span\n className={[\n styles.badge,\n styles[variant],\n styles[size],\n dot ? styles.dot : \"\",\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {dot && <span className={styles.dotIndicator} aria-hidden=\"true\" />}\n {children}\n </span>\n );\n};\n","@charset \"UTF-8\";\n.wrapper {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\n\n/* Scie umide — sotto il contenuto */\n.trailCanvas {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n display: block;\n z-index: 1;\n pointer-events: none;\n}\n\n/* Form e contenuto — sopra le scie */\n.content {\n position: absolute;\n inset: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Le gocce DOM stanno sopra tutto, ma pointer-events: none (impostato inline) */\n.dropContainer {\n position: absolute;\n inset: 0;\n z-index: 3;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJhaW5DYW52YXMubW9kdWxlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFDQTtFQUNFO0VBQ0E7RUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi53cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4vKiBTY2llIHVtaWRlIOKAlCBzb3R0byBpbCBjb250ZW51dG8gKi9cbi50cmFpbENhbnZhcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB6LWluZGV4OiAxO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLyogRm9ybSBlIGNvbnRlbnV0byDigJQgc29wcmEgbGUgc2NpZSAqL1xuLmNvbnRlbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICB6LWluZGV4OiAyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLyogTGUgZ29jY2UgRE9NIHN0YW5ubyBzb3ByYSB0dXR0bywgbWEgcG9pbnRlci1ldmVudHM6IG5vbmUgKGltcG9zdGF0byBpbmxpbmUpICovXG4uZHJvcENvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHotaW5kZXg6IDM7XG59XG4iXX0= */","import React, { useEffect, useRef } from \"react\";\nimport styles from \"./RainCanvas.module.scss\";\n\n// --- Tipi ---\n\ninterface Drop {\n id: number;\n kind: \"static\" | \"sliding\";\n x: number;\n y: number;\n radius: number;\n age: number;\n maxAge: number;\n speed: number;\n trail: { x: number; y: number }[];\n}\n\n// --- Helpers ---\n\nlet _nextId = 0;\n\nfunction randomBetween(a: number, b: number) {\n return a + Math.random() * (b - a);\n}\n\nfunction createStaticDrop(width: number, height: number): Drop {\n return {\n id: _nextId++,\n kind: \"static\",\n x: randomBetween(10, width - 10),\n y: randomBetween(10, height - 10),\n radius: randomBetween(4, 11),\n age: 0,\n maxAge: randomBetween(120, 400),\n speed: 0,\n trail: [],\n };\n}\n\n// --- Componente ---\n\nexport interface RainCanvasProps {\n dropCount?: number;\n background?: string;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const RainCanvas: React.FC<RainCanvasProps> = ({\n dropCount = 55,\n background = \"linear-gradient(160deg, #0f172a 0%, #1e3a5f 60%, #0f2a4a 100%)\",\n children,\n className,\n style,\n}) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const trailCanvasRef = useRef<HTMLCanvasElement>(null);\n const dropContainerRef = useRef<HTMLDivElement>(null);\n const dropsRef = useRef<Drop[]>([]);\n const nodeMapRef = useRef<Map<number, HTMLDivElement>>(new Map());\n const rafRef = useRef<number>(0);\n // Unique id per istanza per evitare conflitti se ci sono più RainCanvas nella pagina\n const filterIdRef = useRef(`rnf-${Math.random().toString(36).slice(2, 7)}`);\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n const trailCanvas = trailCanvasRef.current;\n const dropContainer = dropContainerRef.current;\n if (!wrapper || !trailCanvas || !dropContainer) return;\n\n const trailCtx = trailCanvas.getContext(\"2d\");\n if (!trailCtx) return;\n\n const filterId = filterIdRef.current;\n\n const resize = () => {\n const w = wrapper.offsetWidth;\n const h = wrapper.offsetHeight;\n trailCanvas.width = w;\n trailCanvas.height = h;\n dropsRef.current = Array.from({ length: dropCount }, () =>\n createStaticDrop(w, h)\n );\n };\n\n resize();\n const ro = new ResizeObserver(resize);\n ro.observe(wrapper);\n\n // Crea un nodo DOM per una goccia e lo aggiunge al container\n function getOrCreateNode(drop: Drop): HTMLDivElement {\n let node = nodeMapRef.current.get(drop.id);\n if (!node) {\n node = document.createElement(\"div\");\n // backdrop-filter: url(#id) applica il filtro SVG al contenuto DOM sottostante\n // Questo è ciò che crea la vera distorsione del contenuto reale\n node.style.cssText = `\n position: absolute;\n backdrop-filter: url(#${filterId}) brightness(1.12);\n -webkit-backdrop-filter: url(#${filterId}) brightness(1.12);\n box-shadow:\n inset 0 0 0 1px rgba(255,255,255,0.4),\n inset -2px -3px 6px rgba(255,255,255,0.18),\n inset 2px 2px 4px rgba(0, 40, 120, 0.15);\n background: radial-gradient(\n circle at 32% 30%,\n rgba(255,255,255,0.30) 0%,\n rgba(255,255,255,0.05) 45%,\n transparent 65%\n );\n pointer-events: none;\n will-change: transform;\n `;\n dropContainer!.appendChild(node);\n nodeMapRef.current.set(drop.id, node);\n }\n return node;\n }\n\n function removeNode(id: number) {\n const node = nodeMapRef.current.get(id);\n if (node) {\n node.remove();\n nodeMapRef.current.delete(id);\n }\n }\n\n function syncNode(drop: Drop) {\n const node = getOrCreateNode(drop);\n const isSliding = drop.kind === \"sliding\";\n const h = isSliding ? drop.radius * 2.4 : drop.radius * 2;\n const br = isSliding ? \"50% 50% 55% 55%\" : \"50%\";\n node.style.left = `${drop.x - drop.radius}px`;\n node.style.top = `${drop.y - drop.radius}px`;\n node.style.width = `${drop.radius * 2}px`;\n node.style.height = `${h}px`;\n node.style.borderRadius = br;\n }\n\n const tick = () => {\n const { width, height } = trailCanvas;\n\n // Fade della scia: riempiamo con un nero semi-trasparente ogni frame\n trailCtx.fillStyle = \"rgba(0,0,0,0.04)\";\n trailCtx.fillRect(0, 0, width, height);\n\n const next: Drop[] = [];\n\n for (const drop of dropsRef.current) {\n if (drop.kind === \"static\") {\n drop.age++;\n syncNode(drop);\n\n if (drop.age >= drop.maxAge) {\n // Diventa scorrevole: rimuovo il vecchio nodo e creo uno nuovo\n removeNode(drop.id);\n next.push({\n ...drop,\n id: _nextId++,\n kind: \"sliding\",\n speed: randomBetween(1.5, 3.5),\n trail: [],\n });\n } else {\n next.push(drop);\n }\n } else {\n // Aggiorna scia\n drop.trail.push({ x: drop.x, y: drop.y });\n if (drop.trail.length > 24) drop.trail.shift();\n\n // Disegna scia umida sul canvas\n if (drop.trail.length > 1) {\n trailCtx.beginPath();\n trailCtx.moveTo(drop.trail[0].x, drop.trail[0].y);\n for (let i = 1; i < drop.trail.length; i++) {\n trailCtx.lineTo(drop.trail[i].x, drop.trail[i].y);\n }\n trailCtx.strokeStyle = \"rgba(160, 200, 255, 0.18)\";\n trailCtx.lineWidth = drop.radius * 0.7;\n trailCtx.lineCap = \"round\";\n trailCtx.stroke();\n }\n\n drop.y += drop.speed;\n drop.speed += 0.06;\n syncNode(drop);\n\n if (drop.y - drop.radius > height) {\n removeNode(drop.id);\n next.push(createStaticDrop(width, height));\n } else {\n next.push(drop);\n }\n }\n }\n\n dropsRef.current = next;\n rafRef.current = requestAnimationFrame(tick);\n };\n\n rafRef.current = requestAnimationFrame(tick);\n\n return () => {\n cancelAnimationFrame(rafRef.current);\n ro.disconnect();\n // Pulizia nodi DOM\n nodeMapRef.current.forEach((node) => node.remove());\n nodeMapRef.current.clear();\n };\n }, [dropCount]);\n\n const filterId = filterIdRef.current;\n\n return (\n <div\n ref={wrapperRef}\n className={[styles.wrapper, className ?? \"\"].filter(Boolean).join(\" \")}\n style={{ background, ...style }}\n >\n {/*\n Definizione del filtro SVG:\n - feTurbulence genera rumore procedurale (pattern d'acqua)\n - feDisplacementMap usa quel rumore per spostare i pixel del backdrop\n L'animazione del seed fa \"muovere\" l'acqua nel tempo\n */}\n <svg width=\"0\" height=\"0\" style={{ position: \"absolute\" }}>\n <defs>\n <filter\n id={filterId}\n x=\"-20%\"\n y=\"-20%\"\n width=\"140%\"\n height=\"140%\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feTurbulence\n type=\"turbulence\"\n baseFrequency=\"0.07 0.04\"\n numOctaves=\"2\"\n result=\"noise\"\n >\n <animate\n attributeName=\"seed\"\n values=\"1;20;1\"\n dur=\"5s\"\n repeatCount=\"indefinite\"\n />\n </feTurbulence>\n <feDisplacementMap\n in=\"SourceGraphic\"\n in2=\"noise\"\n scale=\"22\"\n xChannelSelector=\"R\"\n yChannelSelector=\"G\"\n />\n </filter>\n </defs>\n </svg>\n\n {/* Canvas per le scie umide (z-index basso) */}\n <canvas ref={trailCanvasRef} className={styles.trailCanvas} />\n\n {/* Contenuto (form, ecc.) */}\n <div className={styles.content}>{children}</div>\n\n {/* Container delle gocce DOM — sopra il contenuto, pointer-events none */}\n <div ref={dropContainerRef} className={styles.dropContainer} />\n </div>\n );\n};\n","@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.timeline {\n list-style: none;\n margin: 0;\n padding: 0;\n font-family: var(--font-family-base);\n}\n\n.vertical {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n.vertical .item {\n display: grid;\n grid-template-columns: 1.25rem 1fr;\n column-gap: 1rem;\n align-items: stretch;\n}\n.vertical .track {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 1.25rem;\n}\n.vertical .connector {\n flex: 1;\n width: 0;\n min-height: 0.5rem;\n border-left: 2px dashed var(--color-neutral-200);\n transition: border-color 0.3s ease;\n}\n.vertical .content {\n padding-bottom: 1.75rem;\n padding-top: 0.1rem;\n}\n.vertical .item.last .content {\n padding-bottom: 0;\n}\n\n.horizontal {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n}\n.horizontal .item {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex: 1;\n min-width: 0;\n}\n.horizontal .track {\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 100%;\n}\n.horizontal .connector {\n flex: 1;\n height: 0;\n min-width: 1rem;\n border-top: 2px dashed var(--color-neutral-200);\n transition: border-color 0.3s ease;\n}\n.horizontal .content {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding-top: 0.75rem;\n padding-inline: 0.5rem;\n}\n\n.dot {\n width: 1.25rem;\n height: 1.25rem;\n border-radius: 50%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.6rem;\n position: relative;\n z-index: 1;\n transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;\n background-color: var(--color-neutral-0);\n border: 2px solid var(--color-neutral-200);\n color: var(--color-neutral-400);\n}\n\n.iconSlot {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.65rem;\n line-height: 1;\n}\n\n.completed .dot {\n background-color: var(--timeline-accent-dot, var(--accent-dot));\n border-color: var(--timeline-accent-dot, var(--accent-dot));\n color: var(--color-neutral-0);\n box-shadow: 0 0 0 3px var(--timeline-accent-ring, var(--accent-ring));\n animation: dotIn 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) both;\n animation-delay: var(--dot-delay, 0s);\n}\n\n.active .dot {\n background-color: var(--color-neutral-0);\n border-color: var(--timeline-accent-track, var(--accent-track));\n border-width: 2px;\n box-shadow: 0 0 0 3px var(--timeline-accent-ring, var(--accent-ring));\n animation: pulse 2s ease-in-out infinite;\n}\n\n.pending .dot {\n box-shadow: 0 0 0 3px var(--color-neutral-200);\n}\n\n.label {\n display: block;\n font-size: var(--font-size-xs);\n color: var(--color-neutral-400);\n margin-bottom: 0.2rem;\n letter-spacing: 0.01em;\n}\n\n.title {\n display: block;\n font-size: var(--font-size-sm);\n font-weight: 600;\n color: var(--color-neutral-900);\n letter-spacing: -0.01em;\n}\n\n.description {\n margin: 0.35rem 0 0;\n font-size: var(--font-size-xs);\n color: var(--color-neutral-600);\n line-height: 1.5;\n}\n\n.pending .title {\n color: var(--color-neutral-400);\n font-weight: 500;\n}\n\n.connectorHidden {\n border-color: transparent !important;\n}\n\n.connectorDone {\n border-color: var(--timeline-accent-track, var(--accent-track)) !important;\n border-style: solid !important;\n}\n\n@keyframes dotIn {\n 0% {\n transform: scale(0.5);\n background-color: var(--color-neutral-0);\n border-color: var(--color-neutral-200);\n box-shadow: 0 0 0 3px var(--color-neutral-200);\n color: transparent;\n }\n 40% {\n background-color: var(--timeline-accent-dot, var(--accent-dot));\n border-color: var(--timeline-accent-dot, var(--accent-dot));\n box-shadow: 0 0 0 3px var(--timeline-accent-ring, var(--accent-ring));\n color: var(--color-neutral-0);\n }\n 50% {\n transform: scale(1.06);\n }\n 70% {\n transform: scale(0.97);\n }\n 85% {\n transform: scale(1.02);\n }\n 100% {\n transform: scale(1);\n }\n}\n@keyframes pulse {\n 0%, 100% {\n box-shadow: 0 0 0 3px var(--timeline-accent-ring, var(--accent-ring));\n }\n 50% {\n box-shadow: 0 0 0 3px var(--timeline-accent-ring, var(--accent-ring)), 0 0 0 6px var(--timeline-accent-glow, var(--accent-glow));\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIlRpbWVsaW5lLm1vZHVsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVRO0FBS1I7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7OztBQVFGO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFJQTtFQUdBO0VBQ0E7OztBQ3JGRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFNRjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsT0FwQ087O0FBdUNUO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTs7O0FBT0o7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUtGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFPSjtFQUNFLE9BekdTO0VBMEdULFFBMUdTO0VBMkdUO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFPQTtFQUNFLGtCQXBJVztFQXFJWCxjQXJJVztFQXNJWDtFQUNBO0VBQ0E7RUFDQTs7O0FBS0Y7RUFDRTtFQUNBLGNBL0lXO0VBZ0pYO0VBQ0E7RUFDQTs7O0FBS0Y7RUFDRTs7O0FBT0o7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUlGO0VBQ0U7RUFDQTs7O0FBSUY7RUFDRTs7O0FBSUY7RUFDRTtFQUNBOzs7QUFNRjtFQUNFO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7RUFFRjtJQUNFLGtCQXBOVztJQXFOWCxjQXJOVztJQXNOWDtJQUNBOztFQUVGO0lBQU87O0VBQ1A7SUFBTzs7RUFDUDtJQUFPOztFQUNQO0lBQU87OztBQUdUO0VBQ0U7SUFBVzs7RUFDWDtJQUFZIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSBcInNhc3M6Y29sb3JcIjtcblxuQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDAmZGlzcGxheT1zd2FwXCIpO1xuXG4vLyBBY2NlbnQgZGkgZGVmYXVsdCDigJQgY2FtYmlhIHF1aSBwZXIgYWdnaW9ybmFyZSB0dXR0YSBsYSBsaWJyZXJpYVxuJGFjY2VudDogIzNiODJmNjtcblxuOnJvb3Qge1xuICAvLyBBY2NlbnQgc2NhbGUg4oCUIGRlcml2YXRhIGRhICRhY2NlbnQgYSBjb21waWxlIHRpbWVcbiAgLS1hY2NlbnQ6ICAgICAgICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1kb3Q6ICAgICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogMTIlKX07XG4gIC0tYWNjZW50LXRyYWNrOiAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtcmluZzogICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1nbG93OiAgICN7Y29sb3IuY2hhbmdlKCRhY2NlbnQsICRhbHBoYTogMC4zKX07XG4gIC0tYWNjZW50LWxpZ2h0OiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0NSUsICRzYXR1cmF0aW9uOiAtMjAlKX07XG5cbiAgLy8gUHJpbWFyeSBzY2FsZSAobWFudGVudXRhIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIGNvbiBCdXR0b24sIEJhZGdlLCBJbnB1dClcbiAgLS1jb2xvci1wcmltYXJ5LTUwOiAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0OSUsICRzYXR1cmF0aW9uOiAtMzAlKX07XG4gIC0tY29sb3ItcHJpbWFyeS0xMDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDIlLCAkc2F0dXJhdGlvbjogLTE1JSl9O1xuICAtLWNvbG9yLXByaW1hcnktNDAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDEyJSl9O1xuICAtLWNvbG9yLXByaW1hcnktNTAwOiAjeyRhY2NlbnR9O1xuICAtLWNvbG9yLXByaW1hcnktNjAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IC0xMCUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTcwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAtMjAlKX07XG5cbiAgLy8gTmV1dHJhbFxuICAtLWNvbG9yLW5ldXRyYWwtMDogICAjZmZmZmZmO1xuICAtLWNvbG9yLW5ldXRyYWwtMTAwOiAjZjNmNGY2O1xuICAtLWNvbG9yLW5ldXRyYWwtMjAwOiAjZTVlN2ViO1xuICAtLWNvbG9yLW5ldXRyYWwtNDAwOiAjOWNhM2FmO1xuICAtLWNvbG9yLW5ldXRyYWwtNjAwOiAjNGI1NTYzO1xuICAtLWNvbG9yLW5ldXRyYWwtOTAwOiAjMTExODI3O1xuXG4gIC8vIFNlbWFudGljXG4gIC0tY29sb3Itc3VjY2Vzcy01MDA6ICMyMmM1NWU7XG4gIC0tY29sb3Itc3VjY2Vzcy02MDA6ICMxNmEzNGE7XG4gIC0tY29sb3ItZGFuZ2VyLTUwMDogICNlZjQ0NDQ7XG4gIC0tY29sb3ItZGFuZ2VyLTYwMDogICNkYzI2MjY7XG4gIC0tY29sb3Itd2FybmluZy01MDA6ICNmNTllMGI7XG4gIC0tY29sb3Itd2FybmluZy02MDA6ICNkOTc3MDY7XG5cbiAgLy8gVHlwb2dyYXBoeVxuICAtLWZvbnQtZmFtaWx5LWJhc2U6IFwiSW50ZXJcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xuICAtLWZvbnQtc2l6ZS14czogMC43NXJlbTtcbiAgLS1mb250LXNpemUtc206IDAuODc1cmVtO1xuICAtLWZvbnQtc2l6ZS1tZDogMXJlbTtcbiAgLS1mb250LXNpemUtbGc6IDEuMTI1cmVtO1xuXG4gIC8vIFNwYWNpbmdcbiAgLS1zcGFjaW5nLTE6IDAuMjVyZW07XG4gIC0tc3BhY2luZy0yOiAwLjVyZW07XG4gIC0tc3BhY2luZy0zOiAwLjc1cmVtO1xuICAtLXNwYWNpbmctNDogMXJlbTtcblxuICAvLyBSYWRpdXNcbiAgLS1yYWRpdXMtc206ICAgMC4yNXJlbTtcbiAgLS1yYWRpdXMtbWQ6ICAgMC4zNzVyZW07XG4gIC0tcmFkaXVzLWxnOiAgIDAuNXJlbTtcbiAgLS1yYWRpdXMtZnVsbDogOTk5OXB4O1xuXG4gIC8vIFNoYWRvd3NcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC4xKTtcblxuICAvLyBUcmFuc2l0aW9uc1xuICAtLXRyYW5zaXRpb24tZmFzdDogMTUwbXMgZWFzZTtcblxuICAvLyBTdXJmYWNlIChiYWNrZ3JvdW5kIGRpIGNhcmQvcGFuZWwpXG4gIC0tY29sb3Itc3VyZmFjZTogICAgICAgICAgI2ZmZmZmZjtcbiAgLS1jb2xvci1zdXJmYWNlLWVsZXZhdGVkOiAjZmZmZmZmO1xufVxuXG4vLyDilIDilIDilIAgRGFyayB0aGVtZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEFwcGxpY2F0byB2aWEgZGF0YS10aGVtZT1cImRhcmtcIiBzdWxsJ2VsZW1lbnRvIHJvb3QgKGdlc3RpdG8gZGEgU3Rvcnlib29rIGRlY29yYXRvclxuLy8gZSBkYWxsJ2FwcCBjb25zdW1lcikuIEkgY29tcG9uZW50aSBub24gZGV2b25vIGZhcmUgbnVsbGEgZGkgc3BlY2lhbGU6IGJhc3RhIGNoZVxuLy8gdXNpbm8gaSB0b2tlbiB2YXIoKSBlIHJpY2V2ZXJhbm5vIGF1dG9tYXRpY2FtZW50ZSBpIHZhbG9yaSBkYXJrLlxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0ge1xuICAvLyBOZXV0cmFsIChzY2FsYSBpbnZlcnRpdGEpXG4gIC0tY29sb3ItbmV1dHJhbC0wOiAgICMwZjE3MmE7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICMxZTI5M2I7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICMzMzQxNTU7XG4gIC0tY29sb3ItbmV1dHJhbC00MDA6ICM5NGEzYjg7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICNjYmQ1ZTE7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICNmOGZhZmM7XG5cbiAgLy8gU3VyZmFjZVxuICAtLWNvbG9yLXN1cmZhY2U6ICAgICAgICAgICMxZTI5M2I7XG4gIC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZDogIzI3MzU0OTtcblxuICAvLyBQcmltYXJ5IHNjYWxlIGRhcmsgKHBlciBpbCBkZWZhdWx0IGFjY2VudCBibHUg4oCUIGxlIHNmdW1hdHVyZSBjaGlhcmUgZGl2ZW50YW5vIHNjdXJlKVxuICAtLWNvbG9yLXByaW1hcnktNTA6ICAjMTcyNTU0O1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAjMWUzYThhO1xuICAvLyA0MDAgLyA1MDAgLyA2MDAgLyA3MDAgcmltYW5nb25vIGludmFyaWF0aSAoYWJiYXN0YW56YSBzYXR1cmkgc3UgYmcgc2N1cm8pXG5cbiAgLy8gQWNjZW50IGxpZ2h0OiB2YXJpYW50ZSBzY3VyYVxuICAtLWFjY2VudC1saWdodDogIzE3MjU1NDtcblxuICAvLyBTaGFkb3dzIChwacO5IGZvcnRpIHN1IGJnIHNjdXJvKVxuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC40KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuNSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuNCk7XG59XG4iLCJAdXNlIFwiLi4vLi4vc3R5bGVzL3Rva2Vuc1wiIGFzICo7XG5cbi8vIC0tLSBUb2tlbnMgbG9jYWxpIC0tLVxuLy8gVXNhIC0tdGltZWxpbmUtYWNjZW50LSogc2UgcGFzc2F0byB2aWEgcHJvcCwgYWx0cmltZW50aSBmYWxsYmFjayBhaSB0b2tlbiBnbG9iYWxpXG4kZG90LXNpemU6IDEuMjVyZW07XG4kY29ubmVjdG9yLXRoaWNrbmVzczogMnB4O1xuJGNvbG9yLXBlbmRpbmc6IHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcblxuJGFjY2VudC1kb3Q6ICAgdmFyKC0tdGltZWxpbmUtYWNjZW50LWRvdCwgICB2YXIoLS1hY2NlbnQtZG90KSk7XG4kYWNjZW50LXRyYWNrOiB2YXIoLS10aW1lbGluZS1hY2NlbnQtdHJhY2ssIHZhcigtLWFjY2VudC10cmFjaykpO1xuJGFjY2VudC1yaW5nOiAgdmFyKC0tdGltZWxpbmUtYWNjZW50LXJpbmcsICB2YXIoLS1hY2NlbnQtcmluZykpO1xuJGFjY2VudC1nbG93OiAgdmFyKC0tdGltZWxpbmUtYWNjZW50LWdsb3csICB2YXIoLS1hY2NlbnQtZ2xvdykpO1xuXG4vLyAtLS0gUmVzZXQgbGlzdGEgLS0tXG4udGltZWxpbmUge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1iYXNlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09XG4vLyBWRVJUSUNBTEUgKGRlZmF1bHQpXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cbi52ZXJ0aWNhbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMDtcblxuICAuaXRlbSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRkb3Qtc2l6ZSAxZnI7XG4gICAgY29sdW1uLWdhcDogMXJlbTtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgfVxuXG4gIC50cmFjayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6ICRkb3Qtc2l6ZTtcbiAgfVxuXG4gIC5jb25uZWN0b3Ige1xuICAgIGZsZXg6IDE7XG4gICAgd2lkdGg6IDA7XG4gICAgbWluLWhlaWdodDogMC41cmVtO1xuICAgIGJvcmRlci1sZWZ0OiAkY29ubmVjdG9yLXRoaWNrbmVzcyBkYXNoZWQgJGNvbG9yLXBlbmRpbmc7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuM3MgZWFzZTtcbiAgfVxuXG4gIC5jb250ZW50IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS43NXJlbTtcbiAgICBwYWRkaW5nLXRvcDogMC4xcmVtO1xuICB9XG5cbiAgLml0ZW0ubGFzdCAuY29udGVudCB7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9SSVpaT05UQUxFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PVxuLmhvcml6b250YWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAuaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG5cbiAgfVxuXG4gIC50cmFjayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAuY29ubmVjdG9yIHtcbiAgICBmbGV4OiAxO1xuICAgIGhlaWdodDogMDtcbiAgICBtaW4td2lkdGg6IDFyZW07XG4gICAgYm9yZGVyLXRvcDogJGNvbm5lY3Rvci10aGlja25lc3MgZGFzaGVkICRjb2xvci1wZW5kaW5nO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjNzIGVhc2U7XG4gIH1cblxuXG5cbiAgLmNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogMC43NXJlbTtcbiAgICBwYWRkaW5nLWlubGluZTogMC41cmVtO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PVxuLy8gRE9UXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cbi5kb3Qge1xuICB3aWR0aDogJGRvdC1zaXplO1xuICBoZWlnaHQ6ICRkb3Qtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBmbGV4LXNocmluazogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMC42cmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlLCBib3JkZXItY29sb3IgMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZTtcblxuICAvLyBwZW5kaW5nXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMCk7XG4gIGJvcmRlcjogJGNvbm5lY3Rvci10aGlja25lc3Mgc29saWQgJGNvbG9yLXBlbmRpbmc7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG59XG5cbi5pY29uU2xvdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250LXNpemU6IDAuNjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUQVRVU1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG4uY29tcGxldGVkIHtcbiAgLmRvdCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudC1kb3Q7XG4gICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LWRvdDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0wKTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJGFjY2VudC1yaW5nO1xuICAgIGFuaW1hdGlvbjogZG90SW4gMC40cyBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxLjI3NSkgYm90aDtcbiAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWRvdC1kZWxheSwgMHMpO1xuICB9XG59XG5cbi5hY3RpdmUge1xuICAuZG90IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTApO1xuICAgIGJvcmRlci1jb2xvcjogJGFjY2VudC10cmFjaztcbiAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJGFjY2VudC1yaW5nO1xuICAgIGFuaW1hdGlvbjogcHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gIH1cbn1cblxuLnBlbmRpbmcge1xuICAuZG90IHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggdmFyKC0tY29sb3ItbmV1dHJhbC0yMDApO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09OVEVOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09XG4ubGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC00MDApO1xuICBtYXJnaW4tYm90dG9tOiAwLjJyZW07XG4gIGxldHRlci1zcGFjaW5nOiAwLjAxZW07XG59XG5cbi50aXRsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTkwMCk7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xufVxuXG4uZGVzY3JpcHRpb24ge1xuICBtYXJnaW46IDAuMzVyZW0gMCAwO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14cyk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTYwMCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi8vIFN0YXR1czogdGl0b2xvIHBpw7kgc2JpYWRpdG8gcGVyIHBlbmRpbmdcbi5wZW5kaW5nIC50aXRsZSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi8vIENvbm5ldHRvcmUgaW52aXNpYmlsZSDigJQgdGllbmUgbG8gc3BhemlvIG1hIG5vbiBtb3N0cmEgbGEgbGluZWFcbi5jb25uZWN0b3JIaWRkZW4ge1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG5cbi8vIENvbm5ldHRvcmUgY29tcGxldGF0byDigJQgc292cmFzY3JpdmUgZGFzaGVkIGNvbiBzb2xpZCArIGNvbG9yZSBhY2NlbnRcbi5jb25uZWN0b3JEb25lIHtcbiAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LXRyYWNrICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1zdHlsZTogc29saWQgIWltcG9ydGFudDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09XG4vLyBBTklNQVpJT05JXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cbkBrZXlmcmFtZXMgZG90SW4ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbiAgNDAlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50LWRvdDtcbiAgICBib3JkZXItY29sb3I6ICRhY2NlbnQtZG90O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAkYWNjZW50LXJpbmc7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMCk7XG4gIH1cbiAgNTAlICB7IHRyYW5zZm9ybTogc2NhbGUoMS4wNik7IH1cbiAgNzAlICB7IHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7IH1cbiAgODUlICB7IHRyYW5zZm9ybTogc2NhbGUoMS4wMik7IH1cbiAgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH1cbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlLCAxMDAlIHsgYm94LXNoYWRvdzogMCAwIDAgM3B4ICRhY2NlbnQtcmluZzsgfVxuICA1MCUgICAgICAgeyBib3gtc2hhZG93OiAwIDAgMCAzcHggJGFjY2VudC1yaW5nLCAwIDAgMCA2cHggJGFjY2VudC1nbG93OyB9XG59XG4iXX0= */","export function hexToHsl(hex: string): [number, number, number] {\n const r = parseInt(hex.slice(1, 3), 16) / 255;\n const g = parseInt(hex.slice(3, 5), 16) / 255;\n const b = parseInt(hex.slice(5, 7), 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;\n case g: h = ((b - r) / d + 2) / 6; break;\n case b: h = ((r - g) / d + 4) / 6; break;\n }\n }\n\n return [h * 360, s * 100, l * 100];\n}\n\nexport function hslToHex(h: number, s: number, l: number): string {\n const sl = s / 100;\n const ll = l / 100;\n const a = sl * Math.min(ll, 1 - ll);\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n const color = ll - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return Math.round(255 * color).toString(16).padStart(2, \"0\");\n };\n return `#${f(0)}${f(8)}${f(4)}`;\n}\n\nexport function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n const sl = s / 100;\n const ll = l / 100;\n const a = sl * Math.min(ll, 1 - ll);\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n return Math.round(255 * (ll - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)));\n };\n return { r: f(0), g: f(8), b: f(4) };\n}\n\nexport function rgbToHsl(r: number, g: number, b: number): [number, number, number] {\n const rr = r / 255, gg = g / 255, bb = b / 255;\n const max = Math.max(rr, gg, bb);\n const min = Math.min(rr, gg, bb);\n const l = (max + min) / 2;\n let h = 0, s = 0;\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rr: h = ((gg - bb) / d + (gg < bb ? 6 : 0)) / 6; break;\n case gg: h = ((bb - rr) / d + 2) / 6; break;\n case bb: h = ((rr - gg) / d + 4) / 6; break;\n }\n }\n return [h * 360, s * 100, l * 100];\n}\n\nfunction hslToRgba(h: number, s: number, l: number, alpha: number): string {\n const { r, g, b } = hslToRgb(h, s, l);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\nexport interface AccentTokens {\n base: string;\n dot: string;\n track: string;\n ring: string;\n glow: string;\n light: string;\n}\n\nexport interface ColorValue {\n hex: string;\n hexa: string;\n hsl: string;\n hsla: string;\n rgb: string;\n rgba: string;\n h: number;\n s: number;\n l: number;\n a: number;\n}\n\nexport function buildColorValue(h: number, s: number, l: number, a: number): ColorValue {\n const { r, g, b } = hslToRgb(h, s, l);\n const hex = hslToHex(h, s, l);\n const alphaHex = Math.round(a * 255).toString(16).padStart(2, \"0\");\n const hR = Math.round(h), sR = Math.round(s), lR = Math.round(l);\n const aR = Math.round(a * 100) / 100;\n return {\n hex,\n hexa: `${hex}${alphaHex}`,\n hsl: `hsl(${hR}, ${sR}%, ${lR}%)`,\n hsla: `hsla(${hR}, ${sR}%, ${lR}%, ${aR})`,\n rgb: `rgb(${r}, ${g}, ${b})`,\n rgba: `rgba(${r}, ${g}, ${b}, ${aR})`,\n h, s, l, a,\n };\n}\n\nexport function deriveAccent(hex: string): AccentTokens {\n const [h, s, l] = hexToHsl(hex);\n return {\n base: hex,\n dot: hslToHex(h, s, Math.min(l + 12, 95)),\n track: hex,\n ring: hex,\n glow: hslToRgba(h, s, l, 0.3),\n light: hslToHex(h, Math.max(s - 20, 0), Math.min(l + 45, 96)),\n };\n}\n\nexport function accentToCssVars(\n tokens: AccentTokens,\n prefix: string\n): Record<string, string> {\n return {\n [`--${prefix}-accent`]: tokens.base,\n [`--${prefix}-accent-dot`]: tokens.dot,\n [`--${prefix}-accent-track`]: tokens.track,\n [`--${prefix}-accent-ring`]: tokens.ring,\n [`--${prefix}-accent-glow`]: tokens.glow,\n [`--${prefix}-accent-light`]: tokens.light,\n };\n}\n","import React from \"react\";\nimport styles from \"./Timeline.module.scss\";\nimport { deriveAccent, accentToCssVars } from \"../../utils/color\";\n\nexport type TimelineStatus = \"completed\" | \"active\" | \"pending\";\nexport type TimelineOrientation = \"vertical\" | \"horizontal\";\n\nexport interface TimelineItem {\n id: string | number;\n title: string;\n description?: string;\n label?: string;\n status?: TimelineStatus;\n icon?: React.ReactNode;\n}\n\nexport interface TimelineProps {\n items: TimelineItem[];\n orientation?: TimelineOrientation;\n /** Colore accent custom — sovrascrive il tema globale per questa istanza */\n accent?: string;\n className?: string;\n}\n\nconst CheckIcon = () => (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path\n d=\"M1.5 5L4 7.5L8.5 2.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const Timeline: React.FC<TimelineProps> = ({\n items,\n orientation = \"vertical\",\n accent,\n className,\n}) => {\n const accentVars = accent\n ? accentToCssVars(deriveAccent(accent), \"timeline\")\n : {};\n\n return (\n <ol\n className={[\n styles.timeline,\n styles[orientation],\n className ?? \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n style={accentVars as React.CSSProperties}\n >\n {items.map((item, index) => {\n const status = item.status ?? \"pending\";\n const isLast = index === items.length - 1;\n\n return (\n <li\n key={item.id}\n className={[styles.item, styles[status], isLast ? styles.last : \"\"]\n .filter(Boolean)\n .join(\" \")}\n style={{ \"--dot-delay\": `${index * 0.08}s` } as React.CSSProperties}\n >\n {/* Colonna sinistra (verticale) o riga superiore (orizzontale): dot + connettore */}\n <div className={styles.track}>\n {/* Connettore sinistro — orizzontale: sempre, invisibile sul primo */}\n {orientation === \"horizontal\" && (\n <div className={[\n styles.connector,\n index === 0 ? styles.connectorHidden : \"\",\n index > 0 && items[index - 1].status === \"completed\" ? styles.connectorDone : \"\",\n ].filter(Boolean).join(\" \")} />\n )}\n\n <div className={styles.dot}>\n {status === \"completed\" && (\n item.icon\n ? <span className={styles.iconSlot}>{item.icon}</span>\n : <CheckIcon />\n )}\n </div>\n\n {/* Connettore destro — verticale: non sull'ultimo; orizzontale: sempre, invisibile sull'ultimo */}\n {(orientation === \"horizontal\" || !isLast) && (\n <div className={[\n styles.connector,\n orientation === \"horizontal\" && isLast ? styles.connectorHidden : \"\",\n status === \"completed\" ? styles.connectorDone : \"\",\n ].filter(Boolean).join(\" \")} />\n )}\n </div>\n\n {/* Contenuto */}\n <div className={styles.content}>\n {item.label && (\n <span className={styles.label}>{item.label}</span>\n )}\n <span className={styles.title}>{item.title}</span>\n {item.description && (\n <p className={styles.description}>{item.description}</p>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n );\n};\n","@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.colorPicker[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.colorPicker {\n display: inline-flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 1rem;\n background: var(--color-surface);\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md), 0 0 0 1px rgba(0, 0, 0, 0.04);\n font-family: var(--font-family-base);\n width: calc(200px + 2rem);\n box-sizing: border-box;\n user-select: none;\n}\n\n.topRow {\n display: flex;\n justify-content: center;\n}\n\n.discWrapper {\n position: relative;\n width: 200px;\n height: 200px;\n flex-shrink: 0;\n border-radius: 50%;\n box-shadow: 0 0 0 1.5px var(--color-neutral-200);\n}\n\n.disc {\n display: block;\n width: 200px;\n height: 200px;\n cursor: crosshair;\n border-radius: 50%;\n}\n\n.dot {\n position: absolute;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid;\n transform: translate(-50%, -50%);\n pointer-events: none;\n box-shadow: 0 0 0 1.5px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.2);\n background: transparent;\n}\n\n.lSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.lThumb {\n position: absolute;\n top: 50%;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n.alphaSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.alphaThumb {\n position: absolute;\n top: 50%;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n.previewSwatch {\n width: 100%;\n height: 48px;\n border-radius: var(--radius-md);\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 0 0.5rem;\n box-sizing: border-box;\n}\n\n.eyedropperBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: var(--radius-sm);\n background: rgba(255, 255, 255, 0.25);\n color: rgba(255, 255, 255, 0.9);\n cursor: pointer;\n backdrop-filter: blur(4px);\n transition: background var(--transition-fast);\n}\n.eyedropperBtn:hover {\n background: rgba(255, 255, 255, 0.4);\n}\n\n.inputSection {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.tabs {\n display: flex;\n background: var(--color-neutral-100);\n border-radius: var(--radius-sm);\n padding: 2px;\n gap: 2px;\n}\n\n.tab {\n flex: 1;\n padding: 0.2rem 0;\n font-size: 0.65rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n border: none;\n border-radius: calc(var(--radius-sm) - 1px);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n}\n.tab:hover:not(.tabActive) {\n color: var(--color-neutral-600);\n}\n\n.tabActive {\n background: var(--colorpicker-accent, var(--accent));\n color: #fff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.inputWrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.inputAddon {\n position: absolute;\n left: 0.5rem;\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-400);\n pointer-events: none;\n line-height: 1;\n}\n\n.input {\n width: 100%;\n box-sizing: border-box;\n padding: 0.4rem 2rem;\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-sm);\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-900);\n background: var(--color-neutral-0);\n outline: none;\n text-align: center;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n.input:focus {\n border-color: var(--colorpicker-accent, var(--accent));\n box-shadow: 0 0 0 2px var(--colorpicker-accent-glow, var(--accent-glow));\n}\n\n.inputCopyBtn {\n position: absolute;\n right: 0.35rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border: none;\n border-radius: var(--radius-sm);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n}\n.inputCopyBtn:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.recents {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding-top: 0.25rem;\n border-top: 1px solid var(--color-neutral-100);\n overflow: hidden;\n}\n\n.recentsLabel {\n font-size: 0.6rem;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-neutral-400);\n flex-shrink: 0;\n}\n\n.swatches {\n display: flex;\n gap: 0.35rem;\n flex-wrap: nowrap;\n overflow: hidden;\n}\n\n.recentSwatch {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 1.5px solid rgba(0, 0, 0, 0.1);\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIkNvbG9yUGlja2VyLm1vZHVsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVRO0FBS1I7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7OztBQVFGO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFJQTtFQUdBO0VBQ0E7OztBQ3BGRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBS0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFLRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQSxPQWhESztFQWlETCxRQWpESztFQWtETDtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQSxPQXpESztFQTBETCxRQTFESztFQTJETDtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBS0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsT0F4Rlc7RUF5RlgsUUF6Rlc7RUEwRlg7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFLRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxPQWxIVztFQW1IWCxRQW5IVztFQW9IWDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUtGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7O0FBTUo7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7OztBQUlKO0VBQ0UsWUF6TWE7RUEwTWI7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0UsY0E3T1c7RUE4T1g7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBOzs7QUFPSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlIFwic2Fzczpjb2xvclwiO1xuXG5AaW1wb3J0IHVybChcImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW50ZXI6d2dodEA0MDA7NTAwOzYwMCZkaXNwbGF5PXN3YXBcIik7XG5cbi8vIEFjY2VudCBkaSBkZWZhdWx0IOKAlCBjYW1iaWEgcXVpIHBlciBhZ2dpb3JuYXJlIHR1dHRhIGxhIGxpYnJlcmlhXG4kYWNjZW50OiAjM2I4MmY2O1xuXG46cm9vdCB7XG4gIC8vIEFjY2VudCBzY2FsZSDigJQgZGVyaXZhdGEgZGEgJGFjY2VudCBhIGNvbXBpbGUgdGltZVxuICAtLWFjY2VudDogICAgICAgICN7JGFjY2VudH07XG4gIC0tYWNjZW50LWRvdDogICAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAxMiUpfTtcbiAgLS1hY2NlbnQtdHJhY2s6ICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1yaW5nOiAgICN7JGFjY2VudH07XG4gIC0tYWNjZW50LWdsb3c6ICAgI3tjb2xvci5jaGFuZ2UoJGFjY2VudCwgJGFscGhhOiAwLjMpfTtcbiAgLS1hY2NlbnQtbGlnaHQ6ICAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDQ1JSwgJHNhdHVyYXRpb246IC0yMCUpfTtcblxuICAvLyBQcmltYXJ5IHNjYWxlIChtYW50ZW51dGEgcGVyIHJldHJvY29tcGF0aWJpbGl0w6AgY29uIEJ1dHRvbiwgQmFkZ2UsIElucHV0KVxuICAtLWNvbG9yLXByaW1hcnktNTA6ICAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDQ5JSwgJHNhdHVyYXRpb246IC0zMCUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTEwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0MiUsICRzYXR1cmF0aW9uOiAtMTUlKX07XG4gIC0tY29sb3ItcHJpbWFyeS00MDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogMTIlKX07XG4gIC0tY29sb3ItcHJpbWFyeS01MDA6ICN7JGFjY2VudH07XG4gIC0tY29sb3ItcHJpbWFyeS02MDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogLTEwJSl9O1xuICAtLWNvbG9yLXByaW1hcnktNzAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IC0yMCUpfTtcblxuICAvLyBOZXV0cmFsXG4gIC0tY29sb3ItbmV1dHJhbC0wOiAgICNmZmZmZmY7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICNmM2Y0ZjY7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICNlNWU3ZWI7XG4gIC0tY29sb3ItbmV1dHJhbC00MDA6ICM5Y2EzYWY7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICM0YjU1NjM7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICMxMTE4Mjc7XG5cbiAgLy8gU2VtYW50aWNcbiAgLS1jb2xvci1zdWNjZXNzLTUwMDogIzIyYzU1ZTtcbiAgLS1jb2xvci1zdWNjZXNzLTYwMDogIzE2YTM0YTtcbiAgLS1jb2xvci1kYW5nZXItNTAwOiAgI2VmNDQ0NDtcbiAgLS1jb2xvci1kYW5nZXItNjAwOiAgI2RjMjYyNjtcbiAgLS1jb2xvci13YXJuaW5nLTUwMDogI2Y1OWUwYjtcbiAgLS1jb2xvci13YXJuaW5nLTYwMDogI2Q5NzcwNjtcblxuICAvLyBUeXBvZ3JhcGh5XG4gIC0tZm9udC1mYW1pbHktYmFzZTogXCJJbnRlclwiLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWY7XG4gIC0tZm9udC1zaXplLXhzOiAwLjc1cmVtO1xuICAtLWZvbnQtc2l6ZS1zbTogMC44NzVyZW07XG4gIC0tZm9udC1zaXplLW1kOiAxcmVtO1xuICAtLWZvbnQtc2l6ZS1sZzogMS4xMjVyZW07XG5cbiAgLy8gU3BhY2luZ1xuICAtLXNwYWNpbmctMTogMC4yNXJlbTtcbiAgLS1zcGFjaW5nLTI6IDAuNXJlbTtcbiAgLS1zcGFjaW5nLTM6IDAuNzVyZW07XG4gIC0tc3BhY2luZy00OiAxcmVtO1xuXG4gIC8vIFJhZGl1c1xuICAtLXJhZGl1cy1zbTogICAwLjI1cmVtO1xuICAtLXJhZGl1cy1tZDogICAwLjM3NXJlbTtcbiAgLS1yYWRpdXMtbGc6ICAgMC41cmVtO1xuICAtLXJhZGl1cy1mdWxsOiA5OTk5cHg7XG5cbiAgLy8gU2hhZG93c1xuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC4wNSk7XG4gIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAwLjEpO1xuXG4gIC8vIFRyYW5zaXRpb25zXG4gIC0tdHJhbnNpdGlvbi1mYXN0OiAxNTBtcyBlYXNlO1xuXG4gIC8vIFN1cmZhY2UgKGJhY2tncm91bmQgZGkgY2FyZC9wYW5lbClcbiAgLS1jb2xvci1zdXJmYWNlOiAgICAgICAgICAjZmZmZmZmO1xuICAtLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQ6ICNmZmZmZmY7XG59XG5cbi8vIOKUgOKUgOKUgCBEYXJrIHRoZW1lIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gQXBwbGljYXRvIHZpYSBkYXRhLXRoZW1lPVwiZGFya1wiIHN1bGwnZWxlbWVudG8gcm9vdCAoZ2VzdGl0byBkYSBTdG9yeWJvb2sgZGVjb3JhdG9yXG4vLyBlIGRhbGwnYXBwIGNvbnN1bWVyKS4gSSBjb21wb25lbnRpIG5vbiBkZXZvbm8gZmFyZSBudWxsYSBkaSBzcGVjaWFsZTogYmFzdGEgY2hlXG4vLyB1c2lubyBpIHRva2VuIHZhcigpIGUgcmljZXZlcmFubm8gYXV0b21hdGljYW1lbnRlIGkgdmFsb3JpIGRhcmsuXG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSB7XG4gIC8vIE5ldXRyYWwgKHNjYWxhIGludmVydGl0YSlcbiAgLS1jb2xvci1uZXV0cmFsLTA6ICAgIzBmMTcyYTtcbiAgLS1jb2xvci1uZXV0cmFsLTEwMDogIzFlMjkzYjtcbiAgLS1jb2xvci1uZXV0cmFsLTIwMDogIzMzNDE1NTtcbiAgLS1jb2xvci1uZXV0cmFsLTQwMDogIzk0YTNiODtcbiAgLS1jb2xvci1uZXV0cmFsLTYwMDogI2NiZDVlMTtcbiAgLS1jb2xvci1uZXV0cmFsLTkwMDogI2Y4ZmFmYztcblxuICAvLyBTdXJmYWNlXG4gIC0tY29sb3Itc3VyZmFjZTogICAgICAgICAgIzFlMjkzYjtcbiAgLS1jb2xvci1zdXJmYWNlLWVsZXZhdGVkOiAjMjczNTQ5O1xuXG4gIC8vIFByaW1hcnkgc2NhbGUgZGFyayAocGVyIGlsIGRlZmF1bHQgYWNjZW50IGJsdSDigJQgbGUgc2Z1bWF0dXJlIGNoaWFyZSBkaXZlbnRhbm8gc2N1cmUpXG4gIC0tY29sb3ItcHJpbWFyeS01MDogICMxNzI1NTQ7XG4gIC0tY29sb3ItcHJpbWFyeS0xMDA6ICMxZTNhOGE7XG4gIC8vIDQwMCAvIDUwMCAvIDYwMCAvIDcwMCByaW1hbmdvbm8gaW52YXJpYXRpIChhYmJhc3RhbnphIHNhdHVyaSBzdSBiZyBzY3VybylcblxuICAvLyBBY2NlbnQgbGlnaHQ6IHZhcmlhbnRlIHNjdXJhXG4gIC0tYWNjZW50LWxpZ2h0OiAjMTcyNTU0O1xuXG4gIC8vIFNoYWRvd3MgKHBpw7kgZm9ydGkgc3UgYmcgc2N1cm8pXG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjQpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC41KSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC40KTtcbn1cbiIsIkB1c2UgXCIuLi8uLi9zdHlsZXMvdG9rZW5zXCIgYXMgKjtcblxuJGFjY2VudC1iYXNlOiAgdmFyKC0tY29sb3JwaWNrZXItYWNjZW50LCAgICAgICB2YXIoLS1hY2NlbnQpKTtcbiRhY2NlbnQtcmluZzogIHZhcigtLWNvbG9ycGlja2VyLWFjY2VudC1yaW5nLCAgdmFyKC0tYWNjZW50LXJpbmcpKTtcbiRhY2NlbnQtZ2xvdzogIHZhcigtLWNvbG9ycGlja2VyLWFjY2VudC1nbG93LCAgdmFyKC0tYWNjZW50LWdsb3cpKTtcbiRhY2NlbnQtbGlnaHQ6IHZhcigtLWNvbG9ycGlja2VyLWFjY2VudC1saWdodCwgdmFyKC0tYWNjZW50LWxpZ2h0KSk7XG5cbiRkaXNjOiAyMDBweDtcbiRzbGlkZXItdzogMjBweDtcbiR0aHVtYi1zaXplOiAyMHB4O1xuJGdhcDogMC41cmVtO1xuXG4vLyDilIDilIDilIAgRGFyayB0aGVtZSBzY29wZWQgc3VsbCdlbGVtZW50byAocHJvcCB0aGVtZT1cImRhcmtcIikg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTb3ZyYXNjcml2ZSBpIHRva2VuIGdsb2JhbGkgbG9jYWxtZW50ZSDigJQgbm9uIGRpcGVuZGUgZGFsIGRhdGEtdGhlbWUgZGVsbCdhcHAuXG5cbi5jb2xvclBpY2tlcltkYXRhLXRoZW1lPVwiZGFya1wiXSB7XG4gIC0tY29sb3ItbmV1dHJhbC0wOiAgICMwZjE3MmE7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICMxZTI5M2I7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICMzMzQxNTU7XG4gIC0tY29sb3ItbmV1dHJhbC00MDA6ICM5NGEzYjg7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICNjYmQ1ZTE7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICNmOGZhZmM7XG4gIC0tY29sb3Itc3VyZmFjZTogICAgICMxZTI5M2I7XG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjQpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC41KSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC40KTtcbn1cblxuLy8g4pSA4pSA4pSAIENhcmQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi5jb2xvclBpY2tlciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTZweCk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE2cHgpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCksIDAgMCAwIDFweCByZ2JhKDAsMCwwLDAuMDQpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktYmFzZSk7XG4gIHdpZHRoOiBjYWxjKCN7JGRpc2N9ICsgMnJlbSk7IC8vIGRpc2MgKyBjYXJkIHBhZGRpbmcgKDFyZW0gw5cgMiBzaWRlcylcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi8vIOKUgOKUgOKUgCBEaXNjICsgTCBzbGlkZXIgcm93IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4udG9wUm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5kaXNjV3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6ICRkaXNjO1xuICBoZWlnaHQ6ICRkaXNjO1xuICBmbGV4LXNocmluazogMDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3gtc2hhZG93OiAwIDAgMCAxLjVweCB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG59XG5cbi5kaXNjIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAkZGlzYztcbiAgaGVpZ2h0OiAkZGlzYztcbiAgY3Vyc29yOiBjcm9zc2hhaXI7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cblxuLmRvdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDE0cHg7XG4gIGhlaWdodDogMTRweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDJweCBzb2xpZDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBib3gtc2hhZG93OiAwIDAgMCAxLjVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4vLyDilIDilIDilIAgTGlnaHRuZXNzIHNsaWRlciAoaG9yaXpvbnRhbCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi5sU2xpZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgY3Vyc29yOiBldy1yZXNpemU7XG4gIG1hcmdpbi1ibG9jazogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi5sVGh1bWIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB3aWR0aDogJHRodW1iLXNpemU7XG4gIGhlaWdodDogJHRodW1iLXNpemU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLy8g4pSA4pSA4pSAIEFscGhhIHNsaWRlciAoaG9yaXpvbnRhbCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi5hbHBoYVNsaWRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMHB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGN1cnNvcjogZXctcmVzaXplO1xuICBtYXJnaW4tYmxvY2s6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0yMDApO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG5cbi5hbHBoYVRodW1iIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgd2lkdGg6ICR0aHVtYi1zaXplO1xuICBoZWlnaHQ6ICR0aHVtYi1zaXplO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8vIOKUgOKUgOKUgCBQcmV2aWV3IHN3YXRjaCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLnByZXZpZXdTd2F0Y2gge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0OHB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgcGFkZGluZzogMCAwLjVyZW07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5leWVkcm9wcGVyQnRuIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAyOHB4O1xuICBoZWlnaHQ6IDI4cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgfVxufVxuXG4vLyDilIDilIDilIAgSW5wdXRzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4uaW5wdXRTZWN0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjVyZW07XG59XG5cbi50YWJzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItbmV1dHJhbC0xMDApO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICBwYWRkaW5nOiAycHg7XG4gIGdhcDogMnB4O1xufVxuXG4udGFiIHtcbiAgZmxleDogMTtcbiAgcGFkZGluZzogMC4ycmVtIDA7XG4gIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiBjYWxjKHZhcigtLXJhZGl1cy1zbSkgLSAxcHgpO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNDAwKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXRyYW5zaXRpb24tZmFzdCksIGNvbG9yIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgJjpob3Zlcjpub3QoLnRhYkFjdGl2ZSkge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTYwMCk7XG4gIH1cbn1cblxuLnRhYkFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICRhY2NlbnQtYmFzZTtcbiAgY29sb3I6ICNmZmY7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuXG4uaW5wdXRXcmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaW5wdXRBZGRvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMC41cmVtO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14cyk7XG4gIGZvbnQtZmFtaWx5OiBcIlNGIE1vbm9cIiwgXCJGaXJhIENvZGVcIiwgXCJDb25zb2xhc1wiLCBtb25vc3BhY2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLmlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDAuNHJlbSAycmVtOyAvLyBzeW1tZXRyaWM6IHJvb20gZm9yICMgb24gbGVmdCBhbmQgY29weSBpY29uIG9uIHJpZ2h0XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBmb250LWZhbWlseTogXCJTRiBNb25vXCIsIFwiRmlyYSBDb2RlXCIsIFwiQ29uc29sYXNcIiwgbW9ub3NwYWNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC05MDApO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1uZXV0cmFsLTApO1xuICBvdXRsaW5lOiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpLCBib3gtc2hhZG93IHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgJjpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LWJhc2U7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICRhY2NlbnQtZ2xvdztcbiAgfVxufVxuXG4uaW5wdXRDb3B5QnRuIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMC4zNXJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAyMnB4O1xuICBoZWlnaHQ6IDIycHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpLCBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC05MDApO1xuICB9XG59XG5cblxuLy8g4pSA4pSA4pSAIFJlY2VudCBjb2xvcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi5yZWNlbnRzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItbmV1dHJhbC0xMDApO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucmVjZW50c0xhYmVsIHtcbiAgZm9udC1zaXplOiAwLjZyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc3dhdGNoZXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDAuMzVyZW07XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucmVjZW50U3dhdGNoIHtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDEuNXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiAwO1xuICBmbGV4LXNocmluazogMDtcbn1cbiJdfQ== */","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport styles from \"./ColorPicker.module.scss\";\nimport {\n accentToCssVars,\n buildColorValue,\n deriveAccent,\n hexToHsl,\n hslToHex,\n hslToRgb,\n rgbToHsl,\n} from \"../../utils/color\";\nimport type { ColorValue } from \"../../utils/color\";\n\ndeclare global {\n interface Window {\n EyeDropper?: new () => { open(): Promise<{ sRGBHex: string }> };\n }\n}\n\nconst DISC = 200;\n\n// ─── Icons ────────────────────────────────────────────────────────────────────\n\nconst CopyIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"7\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.4\" />\n <path d=\"M2 9V2.5A.5.5 0 0 1 2.5 2H9\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst CheckIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M2.5 7L5.5 10L11.5 4\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst EyedropperIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M9.5 2.5L11.5 4.5L6 10L3 11L4 8L9.5 2.5Z\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" />\n <path d=\"M8 4L10 6\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n <circle cx=\"2.5\" cy=\"11.5\" r=\"1\" fill=\"currentColor\" />\n </svg>\n);\n\n// ─── Input sub-component ──────────────────────────────────────────────────────\n\ntype InputMode = \"hex\" | \"hsl\" | \"rgb\";\n\ninterface ColorInputProps {\n mode: InputMode;\n h: number; s: number; l: number;\n r: number; g: number; b: number;\n hex: string;\n onChange: (h: number, s: number, l: number) => void;\n onCopy: () => void;\n copied: boolean;\n}\n\nfunction formatValue(mode: InputMode, h: number, s: number, l: number, r: number, g: number, b: number, hex: string): string {\n if (mode === \"hex\") return hex.replace(\"#\", \"\");\n if (mode === \"hsl\") return `${Math.round(h)} ${Math.round(s)} ${Math.round(l)}`;\n return `${r} ${g} ${b}`;\n}\n\nfunction parseValue(mode: InputMode, raw: string): [number, number, number] | null {\n if (mode === \"hex\") {\n const clean = raw.replace(/^#/, \"\");\n if (!/^[0-9a-fA-F]{6}$/.test(clean)) return null;\n const [h, s, l] = hexToHsl(`#${clean}`);\n return [h, s, l];\n }\n const parts = raw.trim().split(/[\\s,]+/).map(Number);\n if (parts.length !== 3 || parts.some(isNaN)) return null;\n if (mode === \"hsl\") {\n const [h, s, l] = parts;\n if (h < 0 || h > 360 || s < 0 || s > 100 || l < 0 || l > 100) return null;\n return [h, s, l];\n }\n // rgb\n const [r, g, b] = parts;\n if ([r, g, b].some((v) => v < 0 || v > 255)) return null;\n return rgbToHsl(r, g, b);\n}\n\nconst ColorInput: React.FC<ColorInputProps> = ({ mode, h, s, l, r, g, b, hex, onChange, onCopy, copied }) => {\n const [draft, setDraft] = useState(() => formatValue(mode, h, s, l, r, g, b, hex));\n const [focused, setFocused] = useState(false);\n\n // sync from outside only when not focused\n useEffect(() => {\n if (!focused) setDraft(formatValue(mode, h, s, l, r, g, b, hex));\n }, [focused, mode, h, s, l, r, g, b, hex]);\n\n const placeholder = mode === \"hex\" ? \"3b82f6\" : mode === \"hsl\" ? \"217 91 60\" : \"59 130 246\";\n\n return (\n <div className={styles.inputWrapper}>\n {mode === \"hex\" && <span className={styles.inputAddon}>#</span>}\n <input\n className={styles.input}\n value={draft}\n placeholder={placeholder}\n spellCheck={false}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n onChange={(e) => {\n const raw = e.target.value;\n setDraft(raw);\n const result = parseValue(mode, raw);\n if (result) onChange(...result);\n }}\n />\n <button className={styles.inputCopyBtn} onClick={onCopy} tabIndex={-1} title=\"Copia\">\n {copied ? <CheckIcon /> : <CopyIcon />}\n </button>\n </div>\n );\n};\n\n// ─── Main component ────────────────────────────────────────────────────────────\n\nexport interface ColorPickerProps {\n value?: string;\n onChange?: (color: ColorValue) => void;\n showAlpha?: boolean;\n recentColors?: string[];\n accent?: string;\n className?: string;\n theme?: \"light\" | \"dark\";\n}\n\nfunction parseInitial(value?: string): [number, number, number, number] {\n if (value?.startsWith(\"#\")) {\n const [h, s, l] = hexToHsl(value);\n return [h, s, l, 1];\n }\n return [217, 91, 60, 1];\n}\n\nexport const ColorPicker: React.FC<ColorPickerProps> = ({\n value,\n onChange,\n showAlpha = true,\n recentColors = [],\n accent,\n className,\n theme,\n}) => {\n const init = parseInitial(value);\n const [h, setH] = useState(init[0]);\n const [s, setS] = useState(init[1]);\n const [l, setL] = useState(init[2]);\n const [a, setA] = useState(init[3]);\n const [mode, setMode] = useState<\"hex\" | \"hsl\" | \"rgb\">(\"hex\");\n const [copied, setCopied] = useState(false);\n const [hasEyeDropper, setHasEyeDropper] = useState(false);\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n setHasEyeDropper(typeof window !== \"undefined\" && \"EyeDropper\" in window);\n }, []);\n\n // Sync from value prop (controlled)\n useEffect(() => {\n if (value?.startsWith(\"#\")) {\n const [nh, ns, nl] = hexToHsl(value);\n setH(nh); setS(ns); setL(nl);\n }\n }, [value]);\n\n // Render disc canvas via ImageData\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n const img = ctx.createImageData(DISC, DISC);\n const data = img.data;\n const cx = DISC / 2;\n const cy = DISC / 2;\n const radius = DISC / 2;\n\n for (let py = 0; py < DISC; py++) {\n for (let px = 0; px < DISC; px++) {\n const dx = px - cx;\n const dy = py - cy;\n const r = Math.sqrt(dx * dx + dy * dy);\n const idx = (py * DISC + px) * 4;\n if (r > radius) { data[idx + 3] = 0; continue; }\n const theta = (Math.atan2(dy, dx) * 180) / Math.PI;\n const hue = (theta + 360) % 360;\n const sat = (r / radius) * 100;\n const { r: rr, g: gg, b: bb } = hslToRgb(hue, sat, l);\n data[idx] = rr;\n data[idx + 1] = gg;\n data[idx + 2] = bb;\n // soft edge anti-alias\n data[idx + 3] = r > radius - 1 ? Math.round(255 * (radius - r)) : 255;\n }\n }\n ctx.putImageData(img, 0, 0);\n }, [l]);\n\n const notify = useCallback(\n (nh: number, ns: number, nl: number, na: number) => {\n onChange?.(buildColorValue(nh, ns, nl, na));\n },\n [onChange]\n );\n\n // Disc drag\n const updateDisc = useCallback(\n (clientX: number, clientY: number, rect: DOMRect) => {\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n const dx = clientX - cx;\n const dy = clientY - cy;\n const r = Math.sqrt(dx * dx + dy * dy);\n const radius = rect.width / 2;\n const clampedR = Math.min(r, radius);\n const theta = (Math.atan2(dy, dx) * 180) / Math.PI;\n const nh = (theta + 360) % 360;\n const ns = (clampedR / radius) * 100;\n setH(nh); setS(ns);\n notify(nh, ns, l, a);\n },\n [l, a, notify]\n );\n\n const handleDiscPointerDown = useCallback(\n (e: React.PointerEvent<HTMLCanvasElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateDisc(e.clientX, e.clientY, e.currentTarget.getBoundingClientRect());\n },\n [updateDisc]\n );\n\n const handleDiscPointerMove = useCallback(\n (e: React.PointerEvent<HTMLCanvasElement>) => {\n if (e.buttons === 0) return;\n updateDisc(e.clientX, e.clientY, e.currentTarget.getBoundingClientRect());\n },\n [updateDisc]\n );\n\n // Lightness slider (horizontal)\n const updateL = useCallback(\n (clientX: number, rect: DOMRect) => {\n const nl = Math.max(0, Math.min(100, ((clientX - rect.left) / rect.width) * 100));\n setL(nl);\n notify(h, s, nl, a);\n },\n [h, s, a, notify]\n );\n\n const handleLPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateL(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateL]\n );\n\n const handleLPointerMove = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.buttons === 0) return;\n updateL(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateL]\n );\n\n // Alpha slider (horizontal)\n const updateA = useCallback(\n (clientX: number, rect: DOMRect) => {\n const na = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n setA(na);\n notify(h, s, l, na);\n },\n [h, s, l, notify]\n );\n\n const handleAPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateA(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateA]\n );\n\n const handleAPointerMove = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.buttons === 0) return;\n updateA(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateA]\n );\n\n // Computed\n const { r: rr, g: gg, b: bb } = hslToRgb(h, s, l);\n const hexStr = hslToHex(h, s, l);\n const rgbStr = `rgb(${rr}, ${gg}, ${bb})`;\n const colorValue = buildColorValue(h, s, l, a);\n\n // Dot position on canvas (canvas coords → CSS px)\n const dotX = DISC / 2 + (s / 100) * (DISC / 2) * Math.cos((h * Math.PI) / 180);\n const dotY = DISC / 2 + (s / 100) * (DISC / 2) * Math.sin((h * Math.PI) / 180);\n\n // L slider gradient\n const lGradient = `linear-gradient(to right,\n hsl(${h}, ${s}%, 5%),\n hsl(${h}, ${s}%, 50%),\n hsl(${h}, ${s}%, 95%))`;\n\n // Alpha gradient\n const alphaGradient = `linear-gradient(to right, transparent, ${rgbStr})`;\n\n // EyeDropper\n const handleEyeDropper = async () => {\n if (!window.EyeDropper) return;\n try {\n const result = await new window.EyeDropper().open();\n const [nh, ns, nl] = hexToHsl(result.sRGBHex);\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n } catch {\n // user cancelled\n }\n };\n\n // Copy\n const handleCopy = () => {\n const text =\n mode === \"hex\" ? colorValue.hexa :\n mode === \"hsl\" ? colorValue.hsla :\n colorValue.rgba;\n navigator.clipboard.writeText(text).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n });\n };\n\n // Swatch click\n const handleSwatch = (color: string) => {\n const [nh, ns, nl] = hexToHsl(color);\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n };\n\n // Accent vars\n const accentVars = accent ? accentToCssVars(deriveAccent(accent), \"colorpicker\") : {};\n\n const displayValue =\n mode === \"hex\" ? colorValue.hexa :\n mode === \"hsl\" ? colorValue.hsla :\n colorValue.rgba;\n\n return (\n <div\n className={[styles.colorPicker, className ?? \"\"].filter(Boolean).join(\" \")}\n data-theme={theme}\n style={accentVars as React.CSSProperties}\n >\n {/* Disc */}\n <div className={styles.topRow}>\n <div className={styles.discWrapper}>\n <canvas\n ref={canvasRef}\n width={DISC}\n height={DISC}\n className={styles.disc}\n onPointerDown={handleDiscPointerDown}\n onPointerMove={handleDiscPointerMove}\n />\n <div\n className={styles.dot}\n style={{\n left: dotX,\n top: dotY,\n borderColor: l > 55 ? \"rgba(0,0,0,0.5)\" : \"rgba(255,255,255,0.85)\",\n }}\n />\n </div>\n </div>\n\n {/* Lightness slider */}\n <div\n className={styles.lSlider}\n style={{ backgroundImage: lGradient }}\n onPointerDown={handleLPointerDown}\n onPointerMove={handleLPointerMove}\n >\n <div\n className={styles.lThumb}\n style={{ left: `${l}%` }}\n />\n </div>\n\n {/* Alpha slider */}\n {showAlpha && (\n <div\n className={styles.alphaSlider}\n style={{ backgroundImage: alphaGradient }}\n onPointerDown={handleAPointerDown}\n onPointerMove={handleAPointerMove}\n >\n <div\n className={styles.alphaThumb}\n style={{ left: `${a * 100}%` }}\n />\n </div>\n )}\n\n {/* Preview swatch */}\n <div\n className={styles.previewSwatch}\n style={{ background: showAlpha ? colorValue.rgba : hexStr }}\n >\n {hasEyeDropper && (\n <button className={styles.eyedropperBtn} onClick={handleEyeDropper} title=\"Pick color\">\n <EyedropperIcon />\n </button>\n )}\n </div>\n\n {/* Mode tabs + inputs */}\n <div className={styles.inputSection}>\n <div className={styles.tabs}>\n {([\"hex\", \"hsl\", \"rgb\"] as const).map((m) => (\n <button\n key={m}\n className={[styles.tab, mode === m ? styles.tabActive : \"\"].filter(Boolean).join(\" \")}\n onClick={() => setMode(m)}\n >\n {m.toUpperCase()}\n </button>\n ))}\n </div>\n\n <ColorInput\n mode={mode}\n h={h} s={s} l={l}\n r={rr} g={gg} b={bb}\n hex={hexStr}\n onChange={(nh, ns, nl) => {\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n }}\n onCopy={handleCopy}\n copied={copied}\n />\n </div>\n\n {/* Recent colors */}\n {recentColors.length > 0 && (\n <div className={styles.recents}>\n <span className={styles.recentsLabel}>Recent</span>\n <div className={styles.swatches}>\n {recentColors.slice(0, 8).map((c, i) => (\n <button\n key={i}\n className={styles.recentSwatch}\n style={{ background: c }}\n onClick={() => handleSwatch(c)}\n title={c}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n};\n"]}