@aitronos/freddy-plugins 0.4.24 → 0.4.27

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.
@@ -1 +1 @@
1
- :root{--freddy-text-primary: #FFFFFF;--freddy-text-secondary: #000000;--freddy-text-tertiary: #CBD6E3;--freddy-text-quaternary: #1D2E47;--freddy-text-disabled: #85888E;--freddy-text-disabled-subtitle: #6E7075;--freddy-text-gray: #717680;--freddy-text-action: #7BABEF;--freddy-text-placeholder: #85888E;--freddy-text-orange-700: #B93815;--freddy-text-blue-light-700: #026AA2;--freddy-text-green-700: #067647;--freddy-text-blue-700: #175CD3;--freddy-text-indigo-700: #3538CD;--freddy-text-gray-700: #414651;--freddy-text-purple-700: #5925DC;--freddy-text-pink-700: #C11574;--freddy-text-red-600: #D92D20;--freddy-text-dark-gray: #85888E;--freddy-text-error-primary: #F97066;--freddy-text-error-primary-hover: #FDA29B;--freddy-text-error-primary-2: #F97066;--freddy-text-action-button: #031525;--freddy-text-light-blue: #A1C9EF;--freddy-text-light-green: #68C57C;--freddy-text-yellow: #ECF2A6;--freddy-text-orange: #E89533;--freddy-text-red: #F14D4D;--freddy-base-white: #FFFFFF;--freddy-base-black: #000000;--freddy-fg-primary: #D7D3D0;--freddy-fg-primary-hover: #C8C4C0;--freddy-fg-primary-active: #B5B1AD;--freddy-fg-primary-focus: #E0DCDA;--freddy-fg-primary-disabled: #A0A0A0;--freddy-fg-secondary: #CBD6E3;--freddy-fg-secondary-hover: #B5C2D6;--freddy-fg-secondary-active: #9FAEC9;--freddy-fg-secondary-focus: #E0E8F0;--freddy-fg-secondary-disabled: #A0A0A0;--freddy-fg-tertiary: #94979C;--freddy-fg-tertiary-hover: #7F8286;--freddy-fg-tertiary-active: #6C6E72;--freddy-fg-tertiary-focus: #B2B4B8;--freddy-fg-tertiary-disabled: #A0A0A0;--freddy-fg-quaternary: #61656C;--freddy-fg-quaternary-hover: #55585E;--freddy-fg-quaternary-active: #494C52;--freddy-fg-quaternary-focus: #7A7D83;--freddy-fg-quaternary-disabled: #A0A0A0;--freddy-fg-white: #FFFFFF;--freddy-fg-black: #000000;--freddy-fg-disabled: #85888E;--freddy-fg-disabled-subtle: #61656C;--freddy-fg-purple-primary: #9B8AFB;--freddy-fg-error-primary: #F04438;--freddy-fg-error-secondary: #F97066;--freddy-fg-warning-primary: #F79009;--freddy-fg-warning-secondary: #FDB022;--freddy-fg-success-primary: #17B26A;--freddy-fg-success-secondary: #47CD89;--freddy-fg-action: #A1C9EF;--freddy-fg-action-hover: #CBD6E3;--freddy-bg-primary: #031525;--freddy-bg-primary-hover: rgba(42, 57, 71, .73);--freddy-bg-primary-active: rgba(33, 64, 79, .56);--freddy-bg-secondary: #071A2B;--freddy-bg-tertiary: #1D2E47;--freddy-bg-quinary-transparent: rgba(255, 255, 255, .4);--freddy-bg-quinary: #FFFFFF;--freddy-bg-gray: #535862;--freddy-bg-purple: #7A5AF8;--freddy-bg-purple-hover: #5925DC;--freddy-bg-red: #D92D20;--freddy-bg-black: #000000;--freddy-bg-disabled: #13161B;--freddy-bg-error-primary: #55160C;--freddy-bg-action: #7BABEF;--freddy-bg-action-hover: #A7D0F8;--freddy-bg-action-selected-hover: #11385B;--freddy-bg-transparent-grey: #555555;--freddy-bg-overlay: #22262F;--freddy-bg-success-primary: #079455;--freddy-bg-white-10: rgba(255, 255, 255, .1);--freddy-bg-lightblue-30: rgba(167, 208, 248, .3);--freddy-border-primary: #717680;--freddy-border-secondary: #35414B;--freddy-border-disabled: #535862;--freddy-border-tertiary: #FFFFFF;--freddy-border-error-subtle: #F04438;--freddy-border-grey-primary: #D1D3D5;--freddy-border-purple: #9B8AFB;--freddy-border-action: #7BABEF;--freddy-border-lightblue: #A1C9EF;--freddy-border-lightgreen: #68C57C;--freddy-border-yellow: #ECF2A6;--freddy-border-orange: #E89533;--freddy-border-red: #F14D4D;--freddy-utility-black: #000000;--freddy-utility-gray-50: #FAFAFA;--freddy-utility-gray-300: #D5D7DA;--freddy-utility-gray-400: #A4A7AE;--freddy-utility-gray-500: #717680;--freddy-utility-gray-600: #535862;--freddy-utility-gray-700: #414651;--freddy-utility-gray-blue-100: #EAECF5;--freddy-utility-gray-blue-200: #D5D9EB;--freddy-utility-gray-blue-300: #B3B8DB;--freddy-utility-gray-blue-400: #717BBC;--freddy-utility-gray-blue-500: #4E5BA6;--freddy-utility-gray-blue-600: #3E4784;--freddy-utility-gray-blue-700: #363F72;--freddy-utility-indigo-100: #E0EAFF;--freddy-utility-indigo-200: #C7D7FE;--freddy-utility-indigo-300: #A4BCFD;--freddy-utility-indigo-400: #8098F9;--freddy-utility-indigo-500: #6172F3;--freddy-utility-indigo-600: #444CE7;--freddy-utility-indigo-700: #3538CD;--freddy-utility-purple-100: #EBE9FE;--freddy-utility-purple-200: #D9D6FE;--freddy-utility-purple-300: #BDB4FE;--freddy-utility-purple-400: #9B8AFB;--freddy-utility-purple-500: #7A5AF8;--freddy-utility-purple-600: #6938EF;--freddy-utility-purple-700: #5925DC;--freddy-utility-pink-100: #FCE7F6;--freddy-utility-pink-200: #FCCEEE;--freddy-utility-pink-300: #FAA7E0;--freddy-utility-pink-400: #F670C7;--freddy-utility-pink-500: #EE46BC;--freddy-utility-pink-600: #DD2590;--freddy-utility-pink-700: #C11574;--freddy-utility-error-100: #FEE4E2;--freddy-utility-red-200: #FECDCA;--freddy-utility-red-400: #F97066;--freddy-utility-red-500: #F04438;--freddy-utility-red-600: #D92D20;--freddy-destructive-primary-icon: #FDA29B;--freddy-utility-yellow-100: #FEF0C7;--freddy-utility-yellow-200: #FEDF89;--freddy-utility-yellow-300: #FEC84B;--freddy-utility-yellow-400: #FDB022;--freddy-utility-yellow-500: #F79009;--freddy-utility-orange-100: #FDEAD7;--freddy-utility-orange-200: #F9DBAF;--freddy-utility-orange-300: #F7B27A;--freddy-utility-orange-400: #F38744;--freddy-utility-orange-500: #EF6820;--freddy-utility-orange-600: #E04F16;--freddy-utility-orange-700: #B93815;--freddy-utility-warning-200: #FEDF89;--freddy-utility-warning-400: #FDB022;--freddy-utility-warning-500: #F79009;--freddy-utility-success-50: #ECFDF3;--freddy-utility-success-100: #DCFAE6;--freddy-utility-success-200: #ABEFc6;--freddy-utility-success-300: #75E0A7;--freddy-utility-success-400: #47CDB9;--freddy-utility-success-500: #17B26A;--freddy-utility-success-600: #079455;--freddy-utility-success-700: #067647;--freddy-utility-blue-100: #D1E9FF;--freddy-utility-blue-200: #B2DDFF;--freddy-utility-blue-300: #84CAFF;--freddy-utility-blue-400: #53B1FD;--freddy-utility-blue-500: #2E90FA;--freddy-utility-blue-600: #1570EF;--freddy-utility-blue-700: #175CD3;--freddy-utility-blue-light-400: #36BFFA;--freddy-utility-blue-light-500: #0BA5EC;--freddy-utility-blue-light-600: #0086C9;--freddy-utility-blue-light-700: #026AA2;--freddy-utility-green-100: #DCFAE6;--freddy-utility-green-200: #ABEFc6;--freddy-utility-green-300: #75E0A7;--freddy-utility-green-400: #47CDB9;--freddy-utility-green-500: #17B26A;--freddy-utility-green-600: #079455;--freddy-utility-green-700: #067647;--freddy-border-color: var(--freddy-border-primary);--freddy-border-hover: var(--freddy-border-secondary);--freddy-border-focus: var(--freddy-border-tertiary);--freddy-primary-color: #7BA8EF;--freddy-primary-hover: #6B96E5;--freddy-primary-active: #5B84DB;--freddy-primary-alpha: rgba(123, 168, 239, .1);--freddy-success-color: var(--freddy-utility-success-500);--freddy-success-hover: var(--freddy-utility-success-600);--freddy-success-active: var(--freddy-utility-success-700);--freddy-success-alpha: rgba(16, 185, 129, .25);--freddy-warning-color: var(--freddy-utility-warning-500);--freddy-warning-hover: var(--freddy-utility-warning-600);--freddy-warning-active: var(--freddy-utility-warning-700);--freddy-warning-alpha: rgba(245, 158, 11, .25);--freddy-error-color: var(--freddy-utility-red-500);--freddy-error-hover: var(--freddy-utility-red-600);--freddy-error-active: var(--freddy-utility-red-700);--freddy-error-alpha: rgba(239, 68, 68, .25);--freddy-info-color: var(--freddy-utility-blue-500);--freddy-info-hover: var(--freddy-utility-blue-600);--freddy-info-active: var(--freddy-utility-blue-700);--freddy-info-alpha: rgba(59, 130, 246, .25);--freddy-spacing-xs: .25rem;--freddy-spacing-sm: .5rem;--freddy-spacing-md: 1rem;--freddy-spacing-lg: 1.5rem;--freddy-spacing-xl: 2rem;--freddy-font-size-xs: .75rem;--freddy-font-size-sm: .875rem;--freddy-font-size-md: 1rem;--freddy-font-size-lg: 1.125rem;--freddy-font-size-xl: 1.25rem;--freddy-font-weight-normal: 400;--freddy-font-weight-medium: 500;--freddy-font-weight-semibold: 600;--freddy-font-weight-bold: 700;--freddy-radius-sm: .25rem;--freddy-radius-md: .375rem;--freddy-radius-lg: .5rem;--freddy-radius-xl: .75rem;--freddy-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--freddy-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--freddy-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--freddy-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--freddy-button-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--freddy-button-transition: all .2s ease;--freddy-button-focus-ring: 0 0 0 2px var(--freddy-bg-primary), 0 0 0 4px var(--freddy-primary-color);--freddy-button-text-primary: #FFFFFF;--freddy-button-text-secondary: var(--freddy-primary-color);--freddy-button-text-tertiary: var(--freddy-text-primary);--freddy-button-text-disabled: var(--freddy-text-tertiary);--freddy-button-bg-primary: var(--freddy-primary-color);--freddy-button-bg-secondary: transparent;--freddy-button-bg-tertiary: transparent;--freddy-button-bg-disabled: var(--freddy-bg-secondary);--freddy-button-height-xs: 20px;--freddy-button-height-sm: 28px;--freddy-button-height-md: 44px;--freddy-button-height-lg: 44px;--freddy-button-height-xl: 48px;--freddy-button-padding-xs: 0 var(--freddy-spacing-sm);--freddy-button-padding-sm: 0 var(--freddy-spacing-sm);--freddy-button-padding-md: 0 var(--freddy-spacing-md);--freddy-button-padding-lg: 0 var(--freddy-spacing-lg);--freddy-button-padding-xl: 0 var(--freddy-spacing-xl);font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:var(--freddy-text-primary);background-color:var(--freddy-bg-primary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background-color:var(--freddy-bg-primary);color:var(--freddy-text-primary);margin:0;min-width:320px;min-height:100vh;font-family:Inter,sans-serif}a{font-weight:500;color:var(--freddy-primary-color);text-decoration:inherit}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:2px solid var(--freddy-border-color);padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--freddy-bg-secondary);color:var(--freddy-text-primary);cursor:pointer;transition:border-color .25s}::selection{background:color-mix(in oklab,var(--freddy-primary-color) 30%,var(--freddy-bg-primary));color:var(--freddy-text-primary)}.card{padding:2em}@media (prefers-color-scheme: light){:root:not([data-theme-loaded]){color:#213547;background-color:#fff}}.BaseIcon{width:40px;height:40px}.MediumIcon{width:80px;height:80px}.red{color:red}.green{color:green}.black{color:#000}.white{color:#fff}.stroke-2{stroke-width:2}.stroke-1-25{stroke-width:1.25}.stroke-1-3{stroke-width:1.3}.stroke-1{stroke-width:1}.stroke-3{stroke-width:3}.stroke-6{stroke-width:6}.base-fallback-style{width:16px;height:16px;stroke-width:1.5}.icon-linear,.icon-progress-complete,.icon-progress-going,.icon-radio,.icon-radio-fill{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;font-size:14px;color:#b1a8a8}.freddy-plugins-user-avatar-base{width:100px;height:20px;object-fit:cover}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spaceman-logo{animation:float 3s ease-in-out infinite}.spaceman-logo #planet{animation:rotate 20s linear infinite}.spaceman-logo #stars{animation:float 4s ease-in-out infinite reverse}.freddy-plugin-spinner{width:20px;height:20px;border:2px solid #f3f3f3;border-top-color:transparent;border-radius:50%;animation:freddy-plugin-spin 1s linear infinite}.tooltip-wrapper{display:inline-block;position:relative}.tooltip-content{position:absolute;z-index:1000;background:#212529;color:#fff;font-size:13px;padding:8px 12px;border-radius:6px;white-space:normal;max-width:300px;pointer-events:none;opacity:.95;box-shadow:0 4px 12px var(--freddy-border-color);left:50%;transform:translate(-50%);bottom:120%;line-height:1.4;min-width:200px;word-wrap:break-word;word-break:break-word}.tooltip-content.bottom{top:120%;bottom:auto}.tooltip-content.left{left:auto;right:120%;top:50%;bottom:auto;transform:translateY(-50%)}.tooltip-content.right{left:120%;top:50%;bottom:auto;transform:translateY(-50%)}.tooltip-content.force-bottom{top:120%;bottom:auto}.fade-enter-active,.fade-leave-active{transition:opacity .15s}.fade-enter-from,.fade-leave-to{opacity:0}.freddy-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;cursor:pointer;transition:all .2s ease;box-sizing:border-box;color:var(--text-900, var(--freddy-bg-primary));border:2px solid var(--border-200, #e5e7eb);--button-height: 44px}.freddy-button.freddy-button--primary{background:var(--color-primary-500, #7ba8ef)!important;color:var(--text-inverse)!important;border:2px solid var(--color-primary-500, #7ba8ef)!important}.freddy-button.freddy-button--primary.freddy-button--destructive{background:var( --color-destructive-500, var(--freddy-error-color) )!important;color:var(--text-inverse)!important;border:2px solid var(--color-destructive-500, var(--freddy-error-color))!important}.freddy-button.freddy-button--primary:hover:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--freddy-primary-hover);border-color:var(--freddy-primary-hover)}.freddy-button.freddy-button--primary.freddy-button--destructive:hover:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--freddy-error-hover);border-color:var(--freddy-error-hover)}.freddy-button.freddy-button--primary:active:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--color-primary-700, #1742af);border-color:var(--color-primary-700, #1742af)}.freddy-button.freddy-button--primary.freddy-button--destructive:active:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--color-destructive-700, #b91c1c);border-color:var(--color-destructive-700, #b91c1c)}.freddy-button.freddy-button--secondary{background:transparent!important;color:var(--color-primary-500, #7ba8ef)!important;border:2px solid var(--color-primary-500, #7ba8ef)!important}.freddy-button.freddy-button--secondary.freddy-button--destructive{background:transparent!important;color:var(--color-destructive-500, var(--freddy-error-color))!important;border:2px solid var(--color-destructive-500, var(--freddy-error-color))!important}.freddy-button.freddy-button--secondary:hover:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--freddy-bg-primary-hover)}.freddy-button.freddy-button--secondary.freddy-button--destructive:hover:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--freddy-error-alpha)}.freddy-button.freddy-button--secondary:active:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--color-primary-100, #c7d2fe)}.freddy-button.freddy-button--secondary.freddy-button--destructive:active:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--color-destructive-100, #fee2e2)}.freddy-button.freddy-button--tertiary{background:transparent!important;color:var(--freddy-text-primary)!important;border:1.2px solid var(--freddy-border-secondary)!important}.freddy-button.freddy-button--tertiary.freddy-button--destructive{background:transparent!important;color:var(--color-destructive-500, var(--freddy-error-color))!important;border:2px solid var(--color-destructive-500, var(--freddy-error-color))!important}.freddy-button.freddy-button--tertiary:hover:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--freddy-bg-primary-hover)}.freddy-button.freddy-button--tertiary.freddy-button--destructive:hover:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--freddy-error-alpha)}.freddy-button.freddy-button--tertiary:active:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--bg-200, #e5e7eb)}.freddy-button.freddy-button--tertiary.freddy-button--destructive:active:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--color-destructive-100, #fee2e2)}.freddy-button.freddy-button--text{background:none!important;color:var(--color-primary-600, var(--freddy-primary-color))!important;border:none!important;box-shadow:none!important;padding:0!important;margin:0!important;min-width:0!important;min-height:0!important;gap:4px}.freddy-button.freddy-button--text.freddy-button--destructive{color:var(--color-destructive-500, var(--freddy-error-color))!important}.freddy-button.freddy-button--text:hover:not(.freddy-button--disabled):not(.freddy-button--loading),.freddy-button.freddy-button--text.freddy-button--destructive:hover:not(.freddy-button--disabled):not(.freddy-button--loading),.freddy-button.freddy-button--text:active:not(.freddy-button--disabled):not(.freddy-button--loading),.freddy-button.freddy-button--text.freddy-button--destructive:active:not(.freddy-button--disabled):not(.freddy-button--loading){background:none!important;border:none!important}.freddy-button.freddy-button--success{background:var(--color-success-500, #22c55e)!important;color:var(--text-inverse)!important;border:2px solid var(--color-success-500, #22c55e)!important}.freddy-button.freddy-button--success.freddy-button--destructive{background:var(--text-inverse)!important;color:var(--color-destructive-500, var(--freddy-error-color))!important;border:2px solid var(--color-destructive-500, var(--freddy-error-color))!important}.freddy-button.freddy-button--success:hover:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--freddy-success-hover);border-color:var(--freddy-success-hover)}.freddy-button.freddy-button--success.freddy-button--destructive:hover:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--color-destructive-50, #fef2f2)}.freddy-button.freddy-button--success:active:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--color-success-700, #15803d);border-color:var(--color-success-700, #15803d)}.freddy-button.freddy-button--success.freddy-button--destructive:active:not(.freddy-button--disabled):not(.freddy-button--loading){background:#fee2e2}.freddy-button--s{height:20px;min-width:20px;font-size:14px;font-weight:600;gap:4px;border-radius:4px;padding:0 8px;--button-height: 20px}.freddy-button--sm{height:28px;min-width:28px;font-size:16px;font-weight:600;gap:6px;border-radius:8px;padding:0 12px;--button-height: 28px}.freddy-button--md{height:44px;min-width:44px;font-size:16px;font-weight:600;gap:8px;border-radius:8px;padding:0 16px;--button-height: 44px}.freddy-button--lg{height:44px;min-width:44px;font-size:16px;font-weight:600;gap:8px;border-radius:8px;padding:0 20px;--button-height: 44px}.freddy-button--xl{height:48px;min-width:48px;font-size:16px;font-weight:600;gap:10px;border-radius:8px;padding:0 24px;--button-height: 48px}.freddy-button:hover:not(.freddy-button--disabled):not(.freddy-button--loading){background:var(--freddy-bg-primary-hover);border-color:var(--freddy-border-hover);transform:translateY(-1px);box-shadow:0 2px 4px var(--border-light)}.freddy-button:focus-visible{outline:none;box-shadow:0 0 0 2px var(--text-inverse),0 0 0 4px var(--color-primary-500, var(--freddy-primary-color));background:var(--color-primary-50, #f0f9ff)}.freddy-button.freddy-button--text:focus-visible{box-shadow:0 0 0 2px var(--text-inverse),0 0 0 4px var(--color-primary-600, var(--freddy-primary-color))}.freddy-button.freddy-button--destructive:focus-visible{box-shadow:0 0 0 2px var(--text-inverse),0 0 0 4px var(--color-destructive-500, var(--freddy-error-color))}.freddy-button.freddy-button--success:focus-visible{box-shadow:0 0 0 2px var(--text-inverse),0 0 0 4px var(--color-success-500, #22c55e)}.freddy-button:active:not(.freddy-button--disabled):not(.freddy-button--loading){transform:translateY(0);box-shadow:0 1px 2px var(--border-light);background:var(--color-primary-100, #e0f2fe)}.freddy-button--disabled{opacity:.6;cursor:not-allowed;transform:none!important;box-shadow:none!important;background:var(--bg-100, #f3f4f6);color:var(--text-400, #9ca3af);border-color:var(--border-200, #e5e7eb)}.freddy-button--disabled:hover{transform:none!important;box-shadow:none!important;background:var(--bg-100, #f3f4f6);border-color:var(--border-200, #e5e7eb)}.freddy-button--loading{cursor:wait;position:relative}.freddy-button--loading:hover{transform:none!important;box-shadow:none!important;background:var(--bg-50, var(--freddy-bg-primary));border-color:var(--border-200, #e5e7eb)}.button-icon{flex-shrink:0;color:currentColor;display:flex;align-items:center;justify-content:center}.button-hover-icon{cursor:pointer;transition:color .2s ease;display:flex!important;align-items:center!important;justify-content:center!important}.button-hover-icon:hover{color:var(--freddy-error-color)}.freddy-button--s .button-hover-icon{width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;padding:3px!important;box-sizing:border-box!important}.freddy-button--s .button-hover-icon svg{width:10px!important;height:10px!important}.freddy-button--sm .button-hover-icon{width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;padding:3px!important;box-sizing:border-box!important}.freddy-button--sm .button-hover-icon svg{width:14px!important;height:14px!important}.freddy-button--s .button-icon{width:16px;height:16px}.freddy-button--s .button-icon svg{width:16px;height:16px}.freddy-button--sm .button-icon{width:20px;height:20px}.freddy-button--sm .button-icon svg{width:20px;height:20px}.freddy-button--md .button-icon{width:20px;height:20px}.freddy-button--md .button-icon svg{width:20px;height:20px}.freddy-button--lg .button-icon{width:20px;height:20px}.freddy-button--lg .button-icon svg{width:20px;height:20px}.freddy-button--xl .button-icon{width:22px;height:22px}.freddy-button--xl .button-icon svg{width:22px;height:22px}.button-label{display:flex;align-items:center;white-space:nowrap}.button-spinner{display:inline-block;width:1em;height:1em;min-width:16px;min-height:16px;border:2px solid rgba(0,0,0,.08);border-top:2px solid var(--color-primary-700, #1a237e);border-radius:50%;animation:freddy-plugin-spin 1s linear infinite;margin-right:8px;vertical-align:middle;background:#00000008}.freddy-button--icon-only{justify-content:center;align-items:center;padding:0;gap:0;width:var(--button-height)!important;min-width:var(--button-height)!important;aspect-ratio:1}.button-icon-center{margin:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.button-custom-content{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.api-interaction{position:relative;width:100%}.api-interaction--sm{font-size:.875rem}.api-interaction--lg{font-size:1.125rem}.api-interaction--card{background:var(--freddy-bg-secondary);border:2px solid var(--freddy-border-color);border-radius:.5rem;padding:1rem;box-shadow:0 1px 3px 0 var(--border-light)}.api-interaction--minimal{padding:0}.api-loading{display:flex;align-items:center;gap:.75rem;padding:1rem;justify-content:center}.api-loading .loading-text{color:var(--freddy-text-secondary);font-weight:500}.api-error{display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:#fef2f2;border:2px solid #fecaca;border-radius:.375rem;color:#dc2626}.api-error .error-icon{flex-shrink:0;width:1.25rem;height:1.25rem;color:#dc2626}.api-error .error-content{flex:1}.api-error .error-content .error-title{margin:0 0 .25rem;font-weight:600;font-size:.875rem}.api-error .error-content .error-message{margin:0 0 .75rem;font-size:.875rem;line-height:1.25}.api-success{display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:#f0fdf4;border:2px solid #bbf7d0;border-radius:.375rem;color:#166534}.api-success .success-icon{flex-shrink:0;width:1.25rem;height:1.25rem;color:#166534}.api-success .success-content{flex:1}.api-success .success-content .success-title{margin:0 0 .25rem;font-weight:600;font-size:.875rem}.api-success .success-content .success-message{margin:0;font-size:.875rem;line-height:1.25}.api-content{width:100%}.text-content{font-size:inherit;outline:none;color:var(--freddy-text-primary)}.text-content:focus-visible{outline:2px solid var(--freddy-primary-color);outline-offset:2px;border-radius:4px}.text-content--user{color:var(--freddy-text-primary)}.text-content--assistant,.text-content--assistant *{color:var(--freddy-text-primary)!important}.text-content--system,.text-content--system *{color:#fff!important}.text-content--user :deep(a){color:#e0e7ff;text-decoration:underline;transition:color .2s ease}.text-content--user :deep(a:hover){color:var(--freddy-bg-primary)}.text-content--user :deep(a:focus-visible){outline:2px solid var(--freddy-bg-primary);outline-offset:2px;border-radius:2px}.text-content--user :deep(code){background:var(--border-light);color:var(--freddy-bg-primary);border-radius:4px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.9em}.text-content--user :deep(.inline-code){background:var(--border-light);color:var(--freddy-bg-primary);border-radius:3px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.9em}.text-content--user :deep(pre){background:var(--bg-surface);border-radius:8px;overflow-x:auto;margin:8px 0}.text-content--user :deep(pre code){background:transparent;color:var(--freddy-bg-primary)}.text-content--assistant :deep(a){color:var(--freddy-primary-color);text-decoration:underline;transition:color .2s ease}.text-content--assistant :deep(a:hover){color:var(--freddy-primary-color)}.text-content--assistant :deep(a:focus-visible){outline:2px solid var(--freddy-primary-color);outline-offset:2px;border-radius:2px}.text-content--assistant :deep(code){background:var(--freddy-bg-secondary);color:var(--freddy-bg-primary);border-radius:4px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.9em}.text-content--assistant :deep(.inline-code){background:var(--freddy-bg-secondary);color:var(--freddy-bg-primary);border-radius:3px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.9em}.text-content--assistant :deep(pre){background:var(--bg-surface);border-radius:8px;overflow-x:auto;margin:8px 0;border:2px solid var(--freddy-border-color)}.text-content--assistant :deep(pre code){background:transparent;color:var(--freddy-bg-primary)}.text-content--system :deep(a){color:#d97706;text-decoration:underline;transition:color .2s ease}.text-content--system :deep(a:hover){color:#b45309}.text-content--system :deep(a:focus-visible){outline:2px solid #d97706;outline-offset:2px;border-radius:2px}.text-content--system :deep(code){background:#f59e0b33;color:#92400e;border-radius:4px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.9em}.text-content--system :deep(.inline-code){background:#f59e0b33;color:#92400e;border-radius:3px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.9em}.text-content--system :deep(pre){background:#f59e0b1a;border-radius:8px;overflow-x:auto;margin:8px 0;border:2px solid rgba(245,158,11,.3)}.text-content--system :deep(pre code){background:transparent;color:#92400e}.text-content :deep(p){margin:0 0 12px;line-height:1.6}.text-content :deep(p:last-child){margin-bottom:0}.text-content :deep(.hljs){background:#1e293b!important;color:#e2e8f0!important;padding:12px!important;border-radius:8px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.5;overflow-x:auto}.text-content :deep(pre){margin:12px 0;border-radius:12px;overflow:hidden}.text-content :deep(pre code){padding:0!important;background:transparent!important}.text-content :deep(.copy-btn){cursor:pointer;transition:opacity .2s ease}.text-content :deep(.copy-btn:hover){opacity:.7}.text-content :deep(h1),.text-content :deep(h2),.text-content :deep(h3),.text-content :deep(h4),.text-content :deep(h5),.text-content :deep(h6){font-weight:600}.text-content :deep(blockquote){border-left:4px solid;font-style:italic}.text-content--user :deep(blockquote){border-left-color:#ffffff4d;background:var(--bg-surface)}.text-content--assistant :deep(blockquote){border-left-color:var(--freddy-border-color);background:var(--bg-surface)}.text-content--system :deep(blockquote){border-left-color:#f59e0b80;background:#f59e0b1a}.text-content :deep(strong){font-weight:600}.text-content :deep(em){font-style:italic}@media (prefers-color-scheme: dark){.text-content--assistant{color:var(--bg-surface)!important}.text-content--assistant :deep(a){color:#60a5fa}.text-content--assistant :deep(a:hover){color:#93c5fd}.text-content--assistant :deep(code){background:var(--freddy-text-primary);color:var(--bg-surface)}.text-content--assistant :deep(.inline-code){background:var(--freddy-text-primary);color:var(--bg-surface)}.text-content--assistant :deep(pre){background:var(--freddy-bg-primary);border-color:#4b5563}.text-content--assistant :deep(pre code){color:var(--bg-surface)}.text-content--assistant :deep(blockquote){background:var(--freddy-bg-primary);border-left-color:var(--freddy-text-secondary)}}.text-content--s{font-size:12px}.text-content--sm{font-size:13px}.text-content--md{font-size:14px}.text-content--lg{font-size:16px}.text-content--xl{font-size:18px}pre,code,.shiki{background:transparent!important}pre{font-family:Fira Mono,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:14px;line-height:1.6;padding:16px;border-radius:8px;overflow-x:auto}.code-snippet{border-radius:8px;overflow:hidden;margin:16px 0;box-shadow:0 2px 8px var(--border-light)}.code-snippet--user{background:var(--bg-surface);border:2px solid var(--border-light)}.code-snippet--assistant{background:var(--freddy-bg-primary);border:2px solid #334155}.code-snippet--system{background:#f59e0b1a;border:2px solid rgba(245,158,11,.3)}.code-header{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;border-bottom:1px solid}.code-snippet--user .code-header{background:#ffffff26;border-bottom-color:var(--border-light)}.code-snippet--assistant .code-header{background:#334155;border-bottom-color:#475569}.code-snippet--system .code-header{background:#f59e0b33;border-bottom-color:#f59e0b66}.language-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.code-snippet--user .language-label{color:#fffc}.code-snippet--assistant .language-label{color:var(--text-muted)}.code-snippet--system .language-label{color:#92400e}.copy-button{width:28px;height:28px;border-radius:4px;border:2px solid}.code-snippet--user .copy-button{border-color:var(--border-light)}.code-snippet--user .copy-button :deep(.button-icon){color:#fffc}.code-snippet--assistant .copy-button{border-color:#475569}.code-snippet--assistant .copy-button :deep(.button-icon){color:var(--text-muted)}.code-snippet--system .copy-button{border-color:#f59e0b66}.code-snippet--system .copy-button :deep(.button-icon){color:#92400e}.code-content{padding:16px;overflow-x:auto}.code-content pre{margin:0;padding:0;background:transparent;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.5}.code-snippet--user .code-content pre{color:var(--freddy-bg-primary)}.code-snippet--assistant .code-content pre{color:var(--freddy-bg-secondary)}.code-snippet--system .code-content pre{color:#92400e}.code-content code{background:transparent;padding:0;border-radius:0;font-family:inherit;font-size:inherit;color:inherit}.code-snippet--user :deep(.token.comment),.code-snippet--assistant :deep(.token.comment),.code-snippet--system :deep(.token.comment){color:#6a9955!important;font-style:italic}.code-snippet--user :deep(.token.keyword),.code-snippet--assistant :deep(.token.keyword),.code-snippet--system :deep(.token.keyword){color:#569cd6!important;font-weight:600}.code-snippet--user :deep(.token.string),.code-snippet--assistant :deep(.token.string),.code-snippet--system :deep(.token.string){color:#ce9178!important}.code-snippet--user :deep(.token.function),.code-snippet--assistant :deep(.token.function),.code-snippet--system :deep(.token.function){color:#dcdcaa!important}.code-snippet--user :deep(.token.class-name),.code-snippet--assistant :deep(.token.class-name),.code-snippet--system :deep(.token.class-name){color:#4ec9b0!important}.code-snippet--user :deep(.token.variable),.code-snippet--assistant :deep(.token.variable),.code-snippet--system :deep(.token.variable){color:#9cdcfe!important}.code-snippet--user :deep(.token.property),.code-snippet--assistant :deep(.token.property),.code-snippet--system :deep(.token.property){color:#9cdcfe!important}.code-snippet--system :deep(.token.keyword){color:#dc2626}.code-snippet--system :deep(.token.string){color:#059669}.code-snippet--system :deep(.token.number){color:#d97706}.code-snippet--system :deep(.token.function){color:var(--freddy-primary-color)}.code-snippet--system :deep(.token.class-name){color:#059669}.code-snippet--system :deep(.token.operator){color:#dc2626}.code-snippet--system :deep(.token.punctuation){color:#92400e}@media (prefers-color-scheme: dark){.code-snippet--assistant{background:var(--freddy-bg-primary);border-color:var(--freddy-bg-primary)}.code-snippet--assistant .code-header{background:var(--freddy-bg-primary);border-bottom-color:#334155}.code-snippet--assistant .code-content pre{color:#f1f5f9}}.error-boundary{padding:16px;border-radius:8px;background:#fef2f2;border:2px solid #fecaca;margin:8px 0}.error-content{text-align:center;color:#991b1b}.error-icon{font-size:24px;margin-bottom:8px}.error-title{font-size:16px;font-weight:600;margin:0 0 8px;color:#991b1b}.error-message{font-size:14px;margin:0 0 16px;color:#7f1d1d;line-height:1.5}.error-retry-button{background:#dc2626;color:#fff;border:none;padding:8px 16px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.error-retry-button:hover{background:#b91c1c}.error-retry-button:focus-visible{outline:2px solid #dc2626;outline-offset:2px}@media (prefers-color-scheme: dark){.error-boundary{background:var(--freddy-bg-primary);border-color:var(--freddy-text-primary)}.error-content,.error-title{color:#fca5a5}.error-message{color:#fecaca}.error-retry-button{background:var(--freddy-error-color)}.error-retry-button:hover{background:#dc2626}}.switch{position:relative;border:none;background:none;padding:0;cursor:pointer;outline:none;display:inline-flex;align-items:center;transition:opacity .2s}.switch--s{width:28px;height:16px}.switch--sm{width:32px;height:18px}.switch--md{width:40px;height:22px}.switch--lg{width:48px;height:26px}.switch--xl{width:56px;height:30px}.switch--disabled{opacity:.5;cursor:not-allowed}.switch__track{position:absolute;left:0;top:0;width:100%;height:100%;background:var(--freddy-border-color);border-radius:999px;transition:background .2s}.switch--on .switch__track{background:var(--freddy-primary-color)}.switch__thumb{position:absolute;background:var(--text-50, var(--text-inverse));border-radius:50%;box-shadow:0 1px 3px var(--freddy-border-color);transition:left .2s}.switch--s .switch__thumb{top:1px;left:1px;width:14px;height:14px}.switch--s.switch--on .switch__thumb{left:13px}.switch--sm .switch__thumb{top:1px;left:1px;width:16px;height:16px}.switch--sm.switch--on .switch__thumb{left:15px}.switch--md .switch__thumb{top:2px;left:2px;width:18px;height:18px}.switch--md.switch--on .switch__thumb{left:20px}.switch--lg .switch__thumb{top:2px;left:2px;width:22px;height:22px}.switch--lg.switch--on .switch__thumb{left:24px}.switch--xl .switch__thumb{top:3px;left:3px;width:24px;height:24px}.switch--xl.switch--on .switch__thumb{left:29px}.dropdown-wrapper{position:relative;display:inline-block}.dropdown-chevron{width:16px;height:16px}.dropdown-menu{position:absolute;left:0;min-width:200px;width:fit-content;max-width:360px;border:2px solid var(--freddy-border-color);border-radius:8px;box-shadow:0 2px 8px #00000014;z-index:1000;padding:4px 0;overflow:visible;background:var(--freddy-bg-secondary);pointer-events:auto}.dropdown-menu--down{top:100%;margin-top:4px}.dropdown-menu--up{bottom:100%;margin-bottom:4px}.dropdown-search-bar{width:100%;max-width:100%;box-sizing:border-box;padding:4px 8px;border-bottom:1px solid var(--freddy-border-secondary)}.dropdown-search-input{width:100%;max-width:100%;box-sizing:border-box;padding:4px 6px;border:2px solid var(--freddy-border-color);border-radius:4px;font-size:13px;background:var(--freddy-bg-primary);color:var(--freddy-text-primary)}.dropdown-options{list-style:none;margin:0;padding:0;max-height:280px;overflow-y:auto}.dropdown-option{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 12px;cursor:pointer;font-size:14px;border-radius:4px;transition:all .2s ease;background:var(--freddy-bg-secondary)!important;pointer-events:auto;-webkit-user-select:none;user-select:none;color:var(--freddy-text-primary);border:2px solid transparent}.dropdown-option-label{display:flex;align-items:center;gap:6px;flex:1 1 0;min-width:0;white-space:normal;word-break:break-word}.dropdown-option-icon{width:16px;height:16px;flex-shrink:0}.dropdown-option-icon--right{margin-left:auto}.dropdown-option-shortcut{margin-left:auto;font-size:12px;color:var(--freddy-text-tertiary);background:var(--freddy-bg-tertiary);border-radius:4px;padding:1px 6px;font-family:monospace}.dropdown-option:hover{background:var(--freddy-bg-tertiary)!important;border-color:var(--freddy-border-secondary);box-shadow:0 1px 3px #0003;transform:translateY(-1px)}.dropdown-no-options{padding:8px 12px;color:var(--freddy-text-tertiary);font-size:13px}.dropdown-toggle-checkbox{width:16px;height:16px;border:2px solid var(--freddy-border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer}.dropdown-toggle-inner{width:12px;height:12px;background-color:var(--freddy-bg-primary);border-radius:2px}.checked{background-color:var(--freddy-primary-color);border-color:var(--freddy-primary-color)}.checked .dropdown-toggle-inner{display:none}.dropdown-option>.switch{flex-shrink:0}.context-item{display:inline-block;flex-shrink:0;max-width:100%;overflow:visible}.context-item-preview{display:flex;flex-direction:column;gap:8px;min-width:0}.context-item-preview-button{align-self:flex-start;max-width:200px;overflow:visible}.context-item-preview-button :deep(.button-label){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:deep(.dropdown-trigger .button-icon){color:var(--freddy-text-primary)!important}:deep(.dropdown-trigger .button-icon svg){color:var(--freddy-text-primary)!important;stroke:var(--freddy-text-primary)!important}:deep(.context-item-preview-button){min-width:fit-content!important}:deep(.tooltip-content){color:#fff!important;font-size:13px;line-height:1.4}:deep(.tooltip-content p){margin:0;padding:0}:deep(.tooltip-content p:not(:last-child)){margin-bottom:4px}.context-manager{display:flex;gap:16px;align-items:flex-start;padding:0;width:100%;min-width:0}.context-manager-left{flex:0 0 auto}.context-manager-right{flex:1 1 auto;min-width:0;overflow:visible}.context-manager-grid{display:flex;flex-wrap:wrap;gap:8px;max-width:100%;min-width:0;overflow:visible}.context-manager-preview{display:flex;flex-shrink:0}:deep(.button-icon){color:var(--freddy-text-primary)!important}:deep(.button-icon svg){color:var(--freddy-text-primary)!important;stroke:var(--freddy-text-primary)!important}:deep(.dropdown-option-icon){color:var(--freddy-text-primary)!important}:deep(.dropdown-option-icon svg){color:var(--freddy-text-primary)!important;stroke:var(--freddy-text-primary)!important}.chat-message{display:flex;flex-direction:column;margin:20px 0;width:100%;max-width:100%}.chat-message--user{align-items:flex-end}.chat-message--assistant{align-items:flex-start}.chat-message--system{align-items:center}.chat-message__bubble{border-radius:16px;padding:8px;font-size:14px;word-break:break-word;box-sizing:border-box;box-shadow:0 1px 3px #00000012;transition:all .2s ease}.chat-message--user .chat-message__bubble{background:var(--freddy-bg-secondary);border:1.5px solid var(--freddy-border-color);text-align:left;border-bottom-right-radius:4px;box-shadow:0 2px 8px #1f29370f;display:inline-block;width:auto;max-width:70%}.chat-message--user .chat-message__bubble:hover{box-shadow:0 4px 12px #1f29371a;transform:translateY(-1px)}.chat-message--assistant .chat-message__bubble{background:none;border:none;text-align:left;border-radius:0;box-shadow:none;width:100%;max-width:100%}.chat-message--system .chat-message__bubble{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e;font-style:normal;text-align:center;border:2px solid var(--freddy-warning-color);border-radius:20px;font-size:13px;font-weight:500;max-width:70%;box-shadow:0 2px 8px #f59e0b33}.chat-message__context-section{margin-bottom:8px;width:100%;padding-bottom:8px;border-bottom:1px solid rgba(209,213,219,.3)}.chat-message__content{width:100%}.chat-message__content-item+.chat-message__content-item{margin-top:16px}@media (max-width: 768px){.chat-message__bubble{max-width:100%;padding:10px 6px;font-size:13px}.chat-message--assistant .chat-message__bubble{max-width:100%}.chat-message--system .chat-message__bubble{max-width:100%;font-size:12px}.chat-message__context-section{margin-bottom:6px;padding-bottom:6px}}.chat-messages{display:flex;flex-direction:column;flex:1;overflow-y:auto;padding:32px 40px;min-height:400px;max-height:600px;background:var(--text-inverse);color:#111;position:relative;scroll-behavior:smooth}.chat-messages__fade{position:sticky;top:0;left:0;right:0;height:40px;background:linear-gradient(to bottom,#f8fafcf2 80%,#f8fafc00);z-index:1;pointer-events:none}.message-container{margin-bottom:20px}.message-container:last-child{margin-bottom:0}@media (max-width: 768px){.chat-messages{padding:20px 8px;min-height:200px;max-height:60vh}.chat-messages__fade{height:24px}}.chat-bar-send-btn{background:var(--color-primary-500, var(--freddy-primary-color));border:none;padding:0;margin-bottom:4px;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-inverse);transition:color .2s,background .2s}.chat-bar-send-btn--s{width:24px;height:24px}.chat-bar-send-btn--sm{width:28px;height:28px}.chat-bar-send-btn--md{width:32px;height:32px}.chat-bar-send-btn--lg{width:36px;height:36px}.chat-bar-send-btn--xl{width:40px;height:40px}.chat-bar-send-btn.active{color:var(--text-300, #cbd6e3)}.chat-bar-send-btn:disabled{background:var(--bg-300, var(--freddy-border-color));cursor:not-allowed;color:var(--text-400, var(--text-muted))}.chat-bar-send-btn--s .chat-bar-send-icon{width:14px;height:14px}.chat-bar-send-btn--sm .chat-bar-send-icon{width:16px;height:16px}.chat-bar-send-btn--lg .chat-bar-send-icon{width:22px;height:22px}.chat-bar-send-btn--xl .chat-bar-send-icon{width:24px;height:24px}.chat-bar-container{display:flex;flex-direction:column;border:2px solid var(--freddy-border-secondary);background-color:var(--freddy-bg-primary);border-radius:16px;padding:8px;gap:12px;width:100%;box-sizing:border-box;overflow:visible}.chat-bar-top-row{display:flex;align-items:center;gap:12px;overflow:visible}.chat-bar-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover}.chat-bar-context-icon{width:16px;height:16px}.chat-bar-context-row{width:100%;overflow:visible;min-height:20px}.chat-bar-main-input-container{flex:1;height:100%}.chat-bar-main{flex:1 1 auto;display:flex;flex-direction:column;gap:12px;overflow:visible}.chat-bar-textarea{width:100%;resize:none;border:none;outline:none;font-weight:400;background:transparent;padding:0;margin:0;color:var(--freddy-text-primary);line-height:1.4;overflow-y:auto}.chat-bar-container--s .chat-bar-textarea{min-height:28px;max-height:182px;font-size:13px}.chat-bar-container--sm .chat-bar-textarea{min-height:32px;max-height:196px;font-size:14px}.chat-bar-container--md .chat-bar-textarea{min-height:36px;max-height:210px;font-size:15px}.chat-bar-container--lg .chat-bar-textarea{min-height:40px;max-height:224px;font-size:16px}.chat-bar-container--xl .chat-bar-textarea{min-height:44px;max-height:238px;font-size:17px}.chat-bar-bottom-row{display:flex;justify-content:space-between;align-items:center;width:100%;overflow:visible;gap:16px}.chat-bar-dropdown{display:flex;align-items:center;border-radius:8px;padding:2px 8px;font-size:13px;font-weight:500;border:2px solid var(--freddy-border-color);gap:4px;cursor:pointer}.chat-bar-dropdown-icon,.chat-bar-dropdown-chevron{width:16px;height:16px}.chat-bar-upload-btn{background:none;border:none;padding:0;margin-bottom:4px;cursor:pointer}.chat-bar-upload-icon{width:22px;height:22px}.chat-bar-send-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:none;background:var(--freddy-primary-color);color:#fff;cursor:pointer;transition:background .2s}.chat-bar-send-btn--disabled{background:var(--freddy-border-color);cursor:not-allowed;opacity:.6}.chat-bar-send-icon{width:18px;height:18px}.chat-bar-assistants-btn{font-weight:600;letter-spacing:.01em}.chat-bar-auto-toggle{margin-left:auto}.chat-bar-auto-btn{display:flex;align-items:center;gap:8px;background:none;border:2px solid var(--freddy-border-color);border-radius:6px;padding:6px 12px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s}.chat-bar-auto-btn:hover{background:var(--freddy-bg-secondary)}.chat-bar-auto-btn.active{background:var(--freddy-primary-color);color:#fff;border-color:var(--freddy-primary-color)}.chat-bar-auto-indicator{width:12px;height:12px;border-radius:50%;background:var(--freddy-border-color);transition:all .2s}.chat-bar-auto-indicator.active{background:var(--freddy-text-primary)}.chat-bar-send-btn{background:var(--freddy-primary-color);border:none;padding:0;margin-bottom:4px;cursor:pointer;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center}.chat-bar-selectors-left{display:flex;align-items:center;gap:8px;overflow:visible}.chat-bar-send-icon{width:20px;height:20px}.error-banner{background-color:var(--error-bg, #fef2f2);border:1px solid var(--error-border, #fecaca);border-radius:8px;margin-bottom:8px;animation:slideDown .3s ease-out}.error-content{display:flex;align-items:center;padding:8px 12px;gap:8px}.error-icon{font-size:16px;flex-shrink:0}.error-text{flex:1;font-size:14px;color:var(--error-text, #dc2626);font-weight:500}.error-close{background:none;border:none;font-size:18px;color:var(--error-text, #dc2626);cursor:pointer;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;flex-shrink:0}.error-close:hover{background-color:var(--error-hover, #fee2e2)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#c678dd}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string{color:#98c379}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#d19a66}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-title.class_,.hljs-class .hljs-title{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}.chat-interface{display:flex;flex-direction:column;height:100%;width:100%;background:var(--freddy-bg-primary);border-radius:12px;box-shadow:0 4px 6px -1px var(--border-light);overflow:visible;position:relative}.chat-interface__debug-panel{background:#1f2937;color:#f9fafb;border-bottom:2px solid #374151;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:11px;max-height:200px;overflow-y:auto}.chat-interface__debug-header{background:#111827;padding:8px 12px;font-weight:700;border-bottom:1px solid #374151}.chat-interface__debug-content{padding:8px 12px;line-height:1.4}.chat-interface__debug-content>div{margin-bottom:4px}.chat-interface__debug-messages{margin-top:8px;padding-top:8px;border-top:1px solid #374151;max-height:100px;overflow-y:auto}.chat-interface__debug-message{font-size:10px;margin-bottom:2px;color:#d1d5db}.chat-interface__debug-timing{margin-top:8px;padding-top:8px;border-top:1px solid #374151;font-size:10px;line-height:1.3}.chat-interface__debug-timing>div{margin-bottom:2px}.chat-interface__thread-indicator{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#f0f9ff;border-bottom:1px solid #bae6fd;font-size:12px;color:#0369a1}.chat-interface__thread-icon{font-size:14px}.chat-interface__thread-text{font-weight:500}.chat-interface__loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:24px;color:#6b7280;font-size:14px}.chat-interface__loading-spinner{width:20px;height:20px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:freddy-plugin-spin 1s linear infinite}.chat-interface__loading-text{font-weight:500}.chat-interface__welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center;color:#6b7280}.chat-interface__welcome-icon{font-size:48px;margin-bottom:16px;display:flex;justify-content:center;align-items:center}.welcome-icon-image{width:48px;height:48px;max-width:64px;max-height:64px;min-width:24px;min-height:24px;object-fit:contain;border-radius:8px}.welcome-icon-component{width:48px;height:48px;max-width:64px;max-height:64px;min-width:24px;min-height:24px;color:var(--freddy-text-primary, #374151)}.welcome-icon-emoji{font-size:48px;line-height:1;max-width:64px;max-height:64px;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center}.chat-interface__welcome-title{font-size:20px;font-weight:600;color:#374151;margin:0 0 8px}.chat-interface__welcome-text{font-size:14px;margin:0;line-height:1.5}.chat-interface__messages{flex:1;overflow-y:auto;overflow-x:visible;padding:32px;min-height:400px}@media (max-width: 768px){.chat-interface__messages{padding:20px 8px}}.chat-interface__message-container{margin-bottom:20px}.chat-interface__message-container:last-child{margin-bottom:0}.chat-interface__input-bar{padding:0 24px 12px;background:transparent!important;overflow:visible}.freddy-plugin-color-comparison{padding:2rem;max-width:1400px;margin:0 auto}.freddy-plugin-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px}.freddy-plugin-spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;animation:freddy-plugin-spin 1s linear infinite;margin-bottom:16px}.freddy-plugin-error{background:#fee;border:2px solid #fcc;border-radius:8px;padding:20px;text-align:center}.error h3{color:#c33;margin-bottom:8px}.color-comparison__selection-controls{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;padding:1.5rem;background:var(--freddy-bg-secondary);border-radius:12px;flex-wrap:wrap}.freddy-plugin-control-group{display:flex;flex-direction:column;gap:.5rem;min-width:200px}.freddy-plugin-control-group label{font-weight:600;color:var(--freddy-text-primary);font-size:.9rem}.freddy-plugin-control-group select{padding:.75rem;border:2px solid var(--freddy-border-color);border-radius:6px;background:var(--freddy-bg-primary);color:var(--freddy-text-primary);font-size:.9rem}.freddy-plugin-control-group select:disabled{opacity:.6;cursor:not-allowed}.color-comparison__vs-divider{font-weight:700;font-size:1.2rem;color:var(--freddy-text-secondary);padding:0 1rem}.color-comparison__section-filter{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;padding:1rem;background:var(--freddy-bg-secondary);border-radius:8px}.color-comparison__section-filter label{font-weight:600;color:var(--freddy-text-primary)}.color-comparison__section-filter select{padding:.5rem;border:2px solid var(--freddy-border-color);border-radius:4px;background:var(--freddy-bg-primary);color:var(--freddy-text-primary);min-width:200px}.color-comparison__grid{background:var(--freddy-bg-primary);border:2px solid var(--freddy-border-color);border-radius:12px;overflow:hidden}.color-comparison__header-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:1rem;padding:1rem;background:var(--freddy-bg-secondary);font-weight:600;color:var(--freddy-text-primary);border-bottom:1px solid var(--freddy-border-color)}.color-comparison__row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:1rem;padding:1rem;border-bottom:1px solid var(--freddy-border-color);align-items:center}.color-comparison__row:last-child{border-bottom:none}.color-comparison__color-name{font-weight:600;color:var(--freddy-text-primary)}.color-comparison__color-display{display:flex;flex-direction:column;align-items:center;gap:.5rem}.color-comparison__color-swatch{width:60px;height:40px;border-radius:6px;border:2px solid var(--freddy-border-color);cursor:pointer;transition:transform .2s ease}.color-comparison__color-swatch:hover{transform:scale(1.05)}.color-comparison__color-value{font-size:.8rem;color:var(--freddy-text-secondary);text-align:center;word-break:break-all}.color-comparison__difference-indicator{display:flex;justify-content:center}.color-comparison__difference-badge{padding:.25rem .75rem;border-radius:12px;font-size:.8rem;font-weight:600}.color-comparison__difference-badge.same{background:#d1fae5;color:#065f46}.color-comparison__difference-badge.different{background:#fef3c7;color:#92400e}.color-comparison__no-comparison{color:var(--freddy-text-secondary);font-style:italic}.color-comparison__no-comparison-message{text-align:center;padding:3rem;color:var(--freddy-text-secondary)}.color-comparison__selection-prompt{text-align:center;padding:4rem 2rem;color:var(--freddy-text-secondary)}.color-comparison__prompt-icon{font-size:4rem;margin-bottom:1rem}.color-comparison__selection-prompt h3{font-size:1.5rem;font-weight:600;margin-bottom:1rem;color:var(--freddy-text-primary)}@media (max-width: 768px){.freddy-plugin-color-comparison{padding:1rem}.color-comparison__selection-controls{flex-direction:column;align-items:stretch}.color-comparison__vs-divider{text-align:center;padding:.5rem 0}.color-comparison__header-row,.color-comparison__row{grid-template-columns:1fr;gap:.5rem}.color-comparison__header-row{display:none}.color-comparison__row{border:2px solid var(--freddy-border-color);border-radius:8px;margin-bottom:1rem}.color-comparison__color-name{font-weight:700;text-align:center;padding-bottom:.5rem;border-bottom:1px solid var(--freddy-border-color)}}.freddy-plugin-color-validation{background:var(--freddy-bg-primary);color:var(--freddy-text-primary);border:2px solid var(--freddy-border-color);border-radius:12px;padding:1rem}.freddy-plugin-header h3{margin:0 0 .25rem}.freddy-plugin-header p{margin:0 0 .5rem;color:var(--freddy-text-secondary)}.freddy-plugin-summary{display:flex;align-items:center;gap:.75rem}.freddy-plugin-badge{padding:.2rem .5rem;border-radius:8px;font-weight:600;font-size:.85rem}.freddy-plugin-badge.freddy-plugin-pass{background:var(--success-color, #22c55e);color:#fff}.freddy-plugin-badge.freddy-plugin-fail{background:var(--error-color, #ef4444);color:#fff}.freddy-plugin-meta{color:var(--freddy-text-secondary)}.freddy-plugin-empty{padding:1rem;color:var(--freddy-text-secondary)}.freddy-plugin-category{border:2px solid var(--freddy-border-color);border-radius:10px;margin-top:1rem;overflow:hidden}.freddy-plugin-category-header{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--freddy-bg-secondary);cursor:pointer}.freddy-plugin-category-header .freddy-plugin-title{font-weight:600}.freddy-plugin-category-header .freddy-plugin-count{margin-left:auto;font-weight:600}.freddy-plugin-category-header .freddy-plugin-count.freddy-plugin-pass{color:var(--success-color, #22c55e)}.freddy-plugin-category-header .freddy-plugin-count.freddy-plugin-fail{color:var(--error-color, #ef4444)}.freddy-plugin-items{border-top:1px solid var(--freddy-border-color)}.freddy-plugin-item{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.75rem;padding:.5rem 1rem;border-top:1px solid var(--border-light)}.freddy-plugin-item:first-child{border-top:none}.freddy-plugin-item.freddy-plugin-pass{background:color-mix(in oklab,var(--success-color, #22c55e) 8%,transparent)}.freddy-plugin-item.freddy-plugin-fail{background:color-mix(in oklab,var(--error-color, #ef4444) 8%,transparent)}.freddy-plugin-swatches{display:flex;gap:.25rem}.freddy-plugin-swatch{width:28px;height:20px;border:2px solid var(--freddy-border-color);border-radius:4px}.freddy-plugin-info .freddy-plugin-name{font-weight:600}.freddy-plugin-info .freddy-plugin-var{font-family:Monaco,Menlo,monospace;font-size:.8rem;color:var(--freddy-text-secondary)}.freddy-plugin-values{text-align:right;font-family:Monaco,Menlo,monospace;font-size:.85rem}.freddy-plugin-status{width:60px;text-align:right;font-weight:700}.freddy-plugin-compatibility-intro{padding:1rem;background:var(--freddy-bg-secondary);border-bottom:1px solid var(--freddy-border-color)}.compatibility-intro p{margin:0;color:var(--freddy-text-secondary);font-size:.9rem}.freddy-plugin-compatibility-test{border-bottom:1px solid var(--border-light);padding:1rem}.freddy-plugin-compatibility-test:last-child{border-bottom:none}.compatibility-test.freddy-plugin-pass{background:color-mix(in oklab,var(--success-color, #22c55e) 4%,transparent)}.compatibility-test.freddy-plugin-fail{background:color-mix(in oklab,var(--error-color, #ef4444) 4%,transparent)}.freddy-plugin-test-header{display:flex;align-items:center;gap:1rem;margin-bottom:.75rem}.freddy-plugin-test-name{font-weight:600;flex:1}.freddy-plugin-test-contrast{font-family:Monaco,Menlo,monospace;font-size:.85rem;color:var(--freddy-text-secondary)}.freddy-plugin-test-status{font-weight:700;font-size:.85rem;padding:.2rem .5rem;border-radius:4px;min-width:50px;text-align:center}.compatibility-test.pass .freddy-plugin-test-status{background:var(--success-color, #22c55e);color:#fff}.compatibility-test.fail .freddy-plugin-test-status{background:var(--error-color, #ef4444);color:#fff}.freddy-plugin-test-preview{padding:1rem;border-radius:8px;margin-bottom:.75rem;border:2px solid var(--freddy-border-color)}.freddy-plugin-preview-text{display:flex;flex-direction:column;gap:.5rem}.preview-text .freddy-plugin-large-text{font-size:1.25rem;font-weight:600}.preview-text .freddy-plugin-normal-text{font-size:1rem}.preview-text .freddy-plugin-small-text{font-size:.875rem}.freddy-plugin-test-details{display:flex;gap:1rem;align-items:center}.freddy-plugin-color-info{display:flex;align-items:center;gap:.5rem}.freddy-plugin-color-swatch{width:24px;height:24px;border-radius:4px;border:2px solid var(--freddy-border-color)}.freddy-plugin-color-value{font-family:Monaco,Menlo,monospace;font-size:.85rem;color:var(--freddy-text-secondary)}.color-dashboard{font-family:Arial,sans-serif;margin:0;padding:20px;background-color:var(--bg-primary, #ffffff);color:var(--text-primary, #000000);transition:all .3s ease}.dashboard-header{text-align:center;margin-bottom:30px;padding:20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:12px}.dashboard-header h1{margin:0 0 10px;font-size:2.5em}.dashboard-header p{margin:0;font-size:1.1em;opacity:.9}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:15px;margin-bottom:30px}.stat-card{background:var(--bg-secondary, #f8f9fa);border:2px solid var(--border-color, #ddd);border-radius:8px;padding:20px;text-align:center}.stat-number{font-size:2.5em;font-weight:700;color:var(--primary-color, #007bff);margin-bottom:5px}.stat-label{font-size:.9em;color:var(--text-secondary, #666);text-transform:uppercase;letter-spacing:.5px}.brand-section{margin-bottom:40px;border:2px solid var(--border-color, #ddd);border-radius:12px;overflow:hidden}.brand-header{background:var(--bg-secondary, #f8f9fa);padding:20px;border-bottom:1px solid var(--border-color, #ddd)}.brand-title{font-size:1.5em;font-weight:700;margin-bottom:10px;color:var(--text-primary, #333)}.brand-info{display:flex;gap:20px;flex-wrap:wrap}.brand-stat{background:var(--bg-primary, #fff);padding:10px 15px;border-radius:6px;border:2px solid var(--border-color, #ddd)}.brand-stat-label{font-size:.8em;color:var(--text-secondary, #666);text-transform:uppercase}.brand-stat-value{font-weight:700;color:var(--text-primary, #333)}.modes-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:20px;padding:20px}.mode-card{border:2px solid var(--border-color, #ddd);border-radius:8px;overflow:hidden;background:var(--bg-primary, #fff)}.mode-header{background:var(--bg-secondary, #f8f9fa);padding:15px;border-bottom:1px solid var(--border-color, #ddd)}.mode-title{font-size:1.2em;font-weight:700;margin-bottom:5px;color:var(--text-primary, #333)}.mode-id{font-size:.8em;color:var(--text-secondary, #666);font-family:Monaco,Menlo,monospace}.color-categories{padding:15px}.category-section{margin-bottom:20px;border:2px solid var(--border-color, #ddd);border-radius:8px;overflow:hidden}.category-title{font-size:1em;font-weight:700;padding:15px;margin-bottom:0;color:var(--text-primary, #333);display:flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s ease;background:var(--bg-secondary, #f8f9fa);border-bottom:1px solid var(--border-color, #ddd)}.category-title:hover{color:var(--primary-color, #007bff)}.category-toggle{font-size:1.2em;transition:transform .2s ease;color:var(--text-secondary, #666)}.category-toggle.expanded{transform:rotate(90deg)}.category-content{overflow:hidden;transition:max-height .3s ease;max-height:0;padding:0 15px}.category-content.expanded{max-height:2000px}.category-count{background:var(--primary-color, #007bff);color:#fff;padding:2px 8px;border-radius:12px;font-size:.8em;font-weight:700}.color-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;padding:15px 0}.color-item{border:2px solid var(--border-color, #ddd);border-radius:6px;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}.color-item:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.color-preview{height:60px;display:flex;align-items:center;justify-content:center;position:relative;cursor:pointer}.color-preview:hover .color-overlay{opacity:1}.color-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#000c;color:#fff;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;font-size:.9em;font-weight:700}.color-info{padding:10px}.color-name{font-weight:700;margin-bottom:5px;color:var(--text-primary, #333)}.color-value{font-family:Monaco,Menlo,monospace;font-size:.8em;color:var(--text-secondary, #666);word-break:break-all}@media (prefers-color-scheme: dark){.color-dashboard{background-color:var(--bg-primary, #1a1a1a);color:var(--text-primary, #ffffff)}.stat-card{background:var(--bg-secondary, #2d2d2d);border-color:var(--border-color, #404040)}.stat-label{color:var(--text-secondary, #cccccc)}.brand-section{border-color:var(--border-color, #404040)}.brand-header{background:var(--bg-secondary, #2d2d2d);border-bottom-color:var(--border-color, #404040)}.brand-title{color:var(--text-primary, #ffffff)}.brand-stat{background:var(--bg-primary, #1a1a1a);border-color:var(--border-color, #404040)}.brand-stat-label{color:var(--text-secondary, #cccccc)}.brand-stat-value{color:var(--text-primary, #ffffff)}.mode-card{border-color:var(--border-color, #404040);background:var(--bg-primary, #1a1a1a)}.mode-header{background:var(--bg-secondary, #2d2d2d);border-bottom-color:var(--border-color, #404040)}.mode-title{color:var(--text-primary, #ffffff)}.mode-id{color:var(--text-secondary, #cccccc)}.category-section{border-color:var(--border-color, #404040)}.category-title{color:var(--text-primary, #ffffff);background:var(--bg-secondary, #2d2d2d);border-bottom-color:var(--border-color, #404040)}.category-toggle{color:var(--text-secondary, #cccccc)}.color-item{border-color:var(--border-color, #404040)}.color-name{color:var(--text-primary, #ffffff)}.color-value{color:var(--text-secondary, #cccccc)}}@media (max-width: 768px){.color-dashboard{padding:10px}.stats-grid{grid-template-columns:1fr}.modes-container{grid-template-columns:1fr;padding:10px}.color-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.brand-info{flex-direction:column;gap:10px}}.base-checkbox{position:relative;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;border:2px solid currentColor;cursor:pointer;transition:background-color .15s ease-in-out,border-color .15s ease-in-out;-webkit-user-select:none;user-select:none}.checked{background-color:var(--freddy-text-primary);border-color:transparent}.checked-blue{background-color:#7ba8ef;border-color:transparent}.not-checked{background-color:transparent;border-color:currentColor}.checkbox-input{position:absolute;opacity:0;pointer-events:none}.checkbox-dash{width:8px;height:2px;background-color:var(--freddy-text-primary);border-radius:1px}.checkbox-icon{width:16px;height:16px;pointer-events:none}.is-disabled{opacity:.5;cursor:not-allowed}.email-verification{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.verification-container{max-width:400px;width:100%;text-align:center}.verification-header{margin-bottom:2rem}.verification-title{font-size:1.5rem;font-weight:600;margin-bottom:.5rem}.verification-subtitle{color:var(--text-500, var(--freddy-text-secondary));font-size:.875rem}.verification-form{display:flex;flex-direction:column;gap:1.5rem}.code-input-container{display:flex;justify-content:center}.code-inputs{display:flex;gap:.75rem}.code-input{width:3rem;height:3rem;text-align:center;font-size:1.25rem;font-weight:600;border:2px solid var(--freddy-border-color);border-radius:.5rem;background:transparent;transition:all .2s ease}.code-input:focus{outline:none;border-color:var(--color-primary-500, var(--freddy-primary-color));box-shadow:0 0 0 3px #3b82f61a}.code-input:disabled{opacity:.6;cursor:not-allowed}.code-input:-webkit-autofill,.code-input:-webkit-autofill:hover,.code-input:-webkit-autofill:focus,.code-input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px transparent inset!important;-webkit-text-fill-color:inherit!important;transition:background-color 5000s ease-in-out 0s;background-color:transparent!important;background-image:none!important}.code-input:-moz-autofill,.code-input:-moz-autofill:focus{background-color:transparent!important;color:inherit!important;border:none!important;box-shadow:none!important}.code-input:-ms-autofill,.code-input:-ms-autofill:focus{background-color:transparent!important;color:inherit!important;border:none!important;box-shadow:none!important}.code-input--contentplate{border-color:var(--color-purple-500, var(--freddy-primary-color))}.code-input--contentplate:focus{border-color:var(--color-purple-600, var(--freddy-primary-color));box-shadow:0 0 0 3px #7c3aed1a}.code-input--flowplate{border-color:var(--color-indigo-500, var(--freddy-primary-color));background:#6366f10d}.code-input--flowplate:focus{border-color:var(--color-indigo-600, #4f46e5);box-shadow:0 0 0 3px #4f46e51a}.code-input--freddy{border-color:var(--freddy-primary-color)}.code-input--freddy:focus{border-color:var(--color-primary-600, #0099cc);box-shadow:0 0 0 3px #00aeef1a}.verification-actions{display:flex;justify-content:center}.verify-button{min-width:200px}.error-message{color:var(--color-destructive-500, var(--freddy-error-color));font-size:.875rem;margin-top:.5rem}.verification-footer{margin-top:1rem}.resend-text{font-size:.875rem;color:var(--text-500, var(--freddy-text-secondary))}.resend-button{background:none;border:none;color:var(--color-primary-500, var(--freddy-primary-color));cursor:pointer;font-size:.875rem;text-decoration:underline}.resend-button:hover:not(:disabled){color:var(--color-primary-600, var(--freddy-primary-color))}.resend-button:disabled{color:var(--border-300, #9ca3af);cursor:not-allowed;text-decoration:none}.verify-button--contentplate{background:var(--color-purple-500, var(--freddy-primary-color))!important;border-color:var(--color-purple-500, var(--freddy-primary-color))!important}.verify-button--flowplate{background:var(--color-indigo-500, var(--freddy-primary-color))!important;border-color:var(--color-indigo-500, var(--freddy-primary-color))!important}.verify-button--freddy{background:var(--freddy-primary-color)!important;border-color:var(--freddy-primary-color)!important}.input-field-wrapper{display:flex;flex-direction:column;gap:.5rem;width:100%}.input-field-label{font-size:.875rem;font-weight:500;line-height:1.25rem}.input-field-label--freddy{color:var(--text-300, var(--text-muted))}.input-field-label--contentplate{color:var(--text-700, var(--freddy-text-primary))}.required-asterisk{color:var(--color-destructive-500, var(--freddy-error-color));margin-left:.125rem}.input-field-container{position:relative;display:flex;align-items:center;transition:all .2s cubic-bezier(.4,0,.2,1);cursor:text;overflow:hidden}.input-field-container--freddy{background-color:var(--bg-800, var(--freddy-bg-primary));border:2px solid var(--border-600, #475569);box-shadow:0 1px 2px #0000000d}.input-field-container--freddy:hover:not(.input-field-container--disabled){border-color:var(--freddy-text-secondary);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transform:translateY(-1px)}.input-field-container--freddy.input-field-container--focused{border-color:var(--freddy-primary-color);box-shadow:0 0 0 3px #3b82f61a,0 4px 6px -1px #0000001a;transform:translateY(-1px)}.input-field-container--freddy.input-field-container--destructive{border-color:var(--freddy-error-color)}.input-field-container--freddy.input-field-container--destructive:hover{border-color:#f87171}.input-field-container--contentplate{background-color:var(--bg-50, var(--freddy-bg-primary));border:2px solid var(--border-200, var(--freddy-border-color));box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f}.input-field-container--contentplate:hover:not(.input-field-container--disabled){border-color:var(--border-300, #9ca3af);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transform:translateY(-1px)}.input-field-container--contentplate.input-field-container--focused{border-color:var(--color-primary-500, var(--freddy-primary-color));box-shadow:0 0 0 3px #3b82f61a,0 10px 15px -3px #0000001a;transform:translateY(-1px)}.input-field-container--contentplate.input-field-container--destructive{border-color:var(--color-destructive-500, var(--freddy-error-color))}.input-field-container--contentplate.input-field-container--destructive:hover{border-color:var(--color-destructive-400, #f87171)}.input-field-container:hover:not(.input-field-container--disabled){border-color:var(--border-400, var(--freddy-text-secondary))}.input-field-container--focused{border-color:var(--color-primary-500, var(--freddy-primary-color));box-shadow:0 0 0 1px var(--color-primary-500, var(--freddy-primary-color))}.input-field-container--destructive{border-color:var(--color-destructive-500, var(--freddy-error-color))}.input-field-container--destructive:hover{border-color:var(--color-destructive-400, #f87171)}.input-field-container--disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.input-field-container--sm{height:40px;border-radius:8px;font-size:.875rem}.input-field-container--md{height:44px;border-radius:12px;font-size:.875rem}.input-field-container--lg{height:48px;border-radius:16px;font-size:1rem}.input-leading-dropdown,.input-leading-text{display:flex;align-items:center;gap:.25rem;padding:0 .75rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative}.input-leading-dropdown--freddy,.input-leading-text--freddy{border-right:1px solid var(--border-600, #475569);color:var(--text-400, var(--text-muted))}.input-leading-dropdown--contentplate,.input-leading-text--contentplate{border-right:1px solid var(--border-200, var(--freddy-border-color));color:var(--text-500, var(--freddy-text-secondary))}.input-leading-dropdown--freddy:hover{color:var(--text-300, var(--text-muted));transform:scale(1.02)}.input-leading-dropdown--contentplate:hover{color:var(--text-700, var(--freddy-text-primary));transform:scale(1.02)}.dropdown-text{font-size:.875rem;font-weight:500}.dropdown-icon{width:1rem;height:1rem;stroke:currentColor}.input-leading-icon{width:1.25rem;height:1.25rem;margin-left:.75rem}.input-leading-icon--freddy{stroke:var(--text-muted)}.input-leading-icon--contentplate{stroke:var(--freddy-text-secondary)}.input-leading-text--freddy{color:var(--text-muted)}.input-leading-text--contentplate{color:var(--freddy-text-secondary)}.input-field{flex:1;background:transparent;border:none;outline:none;font-size:.875rem;font-weight:500;line-height:1.25rem;padding:0 .75rem;height:100%;transition:all .2s cubic-bezier(.4,0,.2,1)}.input-field:-webkit-autofill,.input-field:-webkit-autofill:hover,.input-field:-webkit-autofill:focus,.input-field:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px transparent inset!important;-webkit-text-fill-color:inherit!important;transition:background-color 5000s ease-in-out 0s;background-color:transparent!important;background-image:none!important}.input-field:-moz-autofill,.input-field:-moz-autofill:focus{background-color:transparent!important;color:inherit!important;border:none!important;box-shadow:none!important}.input-field:-ms-autofill,.input-field:-ms-autofill:focus{background-color:transparent!important;color:inherit!important;border:none!important;box-shadow:none!important}.input-field--freddy{color:var(--text-300, var(--text-muted))}.input-field--freddy:-webkit-autofill,.input-field--freddy:-webkit-autofill:hover,.input-field--freddy:-webkit-autofill:focus,.input-field--freddy:-webkit-autofill:active{-webkit-text-fill-color:var(--text-300, var(--text-muted))!important}.input-field--contentplate{color:var(--text-700, var(--freddy-text-primary))}.input-field--contentplate:-webkit-autofill,.input-field--contentplate:-webkit-autofill:hover,.input-field--contentplate:-webkit-autofill:focus,.input-field--contentplate:-webkit-autofill:active{-webkit-text-fill-color:var(--freddy-text-primary)!important}.input-field--freddy::placeholder{color:var(--text-muted);opacity:.7}.input-field--contentplate::placeholder{color:#9ca3af;opacity:.7}.input-field--disabled{cursor:not-allowed}.input-field--freddy.input-field--destructive{color:var(--freddy-error-color)}.input-field--freddy.input-field--destructive::placeholder{color:#f87171}.input-field--contentplate.input-field--destructive{color:var(--freddy-error-color)}.input-field--contentplate.input-field--destructive::placeholder{color:#f87171}.input-trailing-dropdown{display:flex;align-items:center;gap:.25rem;padding:0 .75rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative}.input-trailing-dropdown--freddy{border-left:1px solid #475569;color:var(--text-muted)}.input-trailing-dropdown--contentplate{border-left:1px solid var(--freddy-border-color);color:var(--freddy-text-secondary)}.input-trailing-dropdown--freddy:hover{color:var(--text-muted);transform:scale(1.02)}.input-trailing-dropdown--contentplate:hover{color:var(--freddy-text-primary);transform:scale(1.02)}.input-trailing-button{display:flex;align-items:center;padding:0 .75rem;background:transparent;color:var(--freddy-primary-color);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative}.input-trailing-button--freddy{border-left:1px solid #475569}.input-trailing-button--contentplate{border-left:1px solid var(--freddy-border-color)}.input-trailing-button:hover{color:#60a5fa;transform:scale(1.02)}.input-clear-button{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin-right:.5rem;background:transparent;border:none;cursor:pointer;border-radius:.25rem;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative}.input-clear-button--freddy{color:var(--text-muted)}.input-clear-button--contentplate{color:var(--freddy-text-secondary)}.input-clear-button--freddy:hover{background-color:var(--freddy-text-primary);color:var(--text-muted);transform:scale(1.1)}.input-clear-button--contentplate:hover{background-color:var(--freddy-bg-secondary);color:var(--freddy-text-primary);transform:scale(1.1)}.clear-icon{width:1rem;height:1rem;stroke:currentColor}.input-help-icon{width:1.25rem;height:1.25rem;margin-right:.75rem;cursor:help;transition:all .2s cubic-bezier(.4,0,.2,1)}.input-help-icon--freddy{stroke:var(--text-muted)}.input-help-icon--contentplate{stroke:var(--freddy-text-secondary)}.input-help-icon--freddy:hover{stroke:var(--text-muted);transform:scale(1.1)}.input-help-icon--contentplate:hover{stroke:var(--freddy-text-primary);transform:scale(1.1)}.input-hint-text{font-size:.75rem;line-height:1rem;margin:0}.input-hint-text--freddy{color:var(--text-muted)}.input-hint-text--contentplate{color:var(--freddy-text-secondary)}.input-field-container--payment .input-field{font-family:Courier New,monospace;letter-spacing:.05em}.input-field:focus{outline:none}.input-field-container--loading{position:relative}.input-field-container--loading:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);animation:shimmer 1.5s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.input-field-container--success{border-color:#10b981!important}.input-field-container--success.input-field-container--focused{box-shadow:0 0 0 3px #10b9811a!important}.input-field-container--destructive{animation:shake .5s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}.input-field-container--freddy-input{background-color:var(--freddy-bg-primary);border-color:#334155}.input-field-container--freddy-input .input-field{color:#f1f5f9}.input-field-container--freddy-input .input-field::placeholder{color:var(--freddy-text-secondary)}.auth-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem}.auth-container--contentplate{background:var(--freddy-bg-secondary)}.auth-container--flowplate{background:linear-gradient(135deg,var(--freddy-bg-primary) 0%,var(--freddy-bg-primary) 100%);position:relative;overflow:hidden}.auth-container--flowplate:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,var(--color-primary-100, rgba(99, 102, 241, .1)) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(139,92,246,.1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(99,102,241,.05) 0%,transparent 50%);pointer-events:none}.auth-container--freddy{background:var(--freddy-bg-primary)}.auth-card{padding:2rem;width:100%;max-width:400px;margin:0 auto}.auth-card--contentplate{background:var(--bg-50, white);border-radius:8px;box-shadow:0 4px 6px var(--border-light)}.auth-card--flowplate{background:#1e293bcc;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:2px solid var(--color-primary-200, rgba(99, 102, 241, .2));border-radius:16px;box-shadow:0 25px 50px -12px #00000080,0 0 0 1px var(--color-primary-100, rgba(99, 102, 241, .1));position:relative;z-index:1}.auth-card--flowplate:before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background:linear-gradient(135deg,var(--color-primary-500, var(--freddy-primary-color)),var(--color-purple-500, var(--freddy-primary-color)),var(--color-primary-500, var(--freddy-primary-color)));border-radius:16px;z-index:-1;opacity:.3}.auth-card--freddy{background:var(--bg-800, var(--freddy-bg-primary));border:2px solid var(--border-600, #475569);border-radius:8px;box-shadow:0 4px 6px var(--text-muted)}.logo-container{display:flex;align-items:center;gap:.75rem}.logo-container--sm{gap:.5rem}.logo-container--lg{gap:1rem}.logo-image{object-fit:contain;height:auto}.logo-image--sm{width:64px;height:64px}.logo-image--md{width:96px;height:96px}.logo-image--lg{width:128px;height:128px}.logo-image--brand-no-title.logo-image--lg{width:180px;height:54px}.logo-image{max-width:100%;height:auto;aspect-ratio:200/60}.logo-title{margin:0;font-weight:600;color:#374151}.logo-title--sm{font-size:1rem}.logo-title--md{font-size:1.25rem}.logo-title--lg{font-size:1.5rem}.login-form-container{display:flex;flex-direction:column;align-items:center;width:100%;max-width:400px;margin:0 auto}.login-form{width:100%;display:flex;flex-direction:column;gap:1.5rem;margin-top:2rem}.login-button{width:100%}.login-button--flowplate{background:linear-gradient(135deg,var(--color-primary-500, var(--freddy-primary-color)),var(--color-purple-500, var(--freddy-primary-color)))!important;border:none!important;box-shadow:0 4px 12px var(--color-primary-300, rgba(99, 102, 241, .3));transition:all .3s ease}.login-button--flowplate:hover:not(:disabled){background:linear-gradient(135deg,var(--color-primary-600, var(--freddy-primary-color)),var(--color-purple-600, var(--freddy-primary-color)))!important;transform:translateY(-1px);box-shadow:0 6px 16px var(--color-primary-400, rgba(99, 102, 241, .4))}.login-button--contentplate{background:var(--color-primary-500, var(--freddy-primary-color))!important;border:none!important;box-shadow:0 4px 12px var(--color-primary-300, rgba(124, 58, 237, .3));transition:all .3s ease}.login-button--contentplate:hover:not(:disabled){background:var(--color-primary-600, var(--freddy-primary-color))!important;transform:translateY(-1px);box-shadow:0 6px 16px var(--color-primary-400, rgba(124, 58, 237, .4))}.login-button--freddy{background:var(--color-primary-500, var(--freddy-primary-color))!important;border:none!important;box-shadow:0 4px 12px var(--color-primary-300, rgba(0, 174, 239, .3));transition:all .3s ease}.login-button--freddy:hover:not(:disabled){background:var(--color-primary-600, var(--freddy-primary-color))!important;transform:translateY(-1px);box-shadow:0 6px 16px var(--color-primary-400, rgba(0, 174, 239, .4))}.login-form-container--contentplate .error-message{color:var(--color-destructive-500, var(--freddy-error-color))}.login-form-container--flowplate .error-message{background:var(--color-destructive-50, rgba(239, 68, 68, .1));padding:.75rem;border-radius:8px;border:2px solid var(--color-destructive-200, rgba(239, 68, 68, .2))}.login-form-container--freddy .error-message{color:var(--color-destructive-500, var(--freddy-error-color))}.signup-link{text-align:center;font-size:.875rem;color:var(--text-500, var(--freddy-text-secondary));margin-top:1rem}.login-form-container--contentplate .signup-link{color:var(--text-500, var(--freddy-text-secondary))}.login-form-container--flowplate .signup-link,.login-form-container--freddy .signup-link{color:var(--text-400, var(--text-muted))}.login-form-container--contentplate .link-button,.login-form-container--flowplate .link-button,.login-form-container--freddy .link-button{color:var(--color-primary-500, var(--freddy-primary-color));transition:color .2s ease}.login-form-container--flowplate .link-button:hover,.login-form-container--contentplate .link-button:hover,.login-form-container--freddy .link-button:hover{color:var(--color-primary-600, var(--freddy-primary-color))}.login-form{animation:slideInUp .6s ease-out}.form-group:nth-child(1){animation-delay:.1s}.form-group:nth-child(2){animation-delay:.2s}.form-actions{animation:fadeInUp .6s ease-out;animation-delay:.3s;animation-fill-mode:both}.signup-link{animation:fadeInUp .6s ease-out;animation-delay:.4s;animation-fill-mode:both}.register-form-container{display:flex;flex-direction:column;align-items:center;width:100%;max-width:400px;margin:0 auto}.form-title{margin:2rem 0 0;font-size:1.5rem;font-weight:700;text-align:center;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.register-form-container--contentplate .form-title{color:var(--freddy-text-primary)}.register-form-container--flowplate .form-title{color:var(--text-inverse);text-shadow:0 2px 4px var(--text-muted)}.register-form-container--freddy .form-title{color:var(--text-muted)}.register-form{width:100%;display:flex;flex-direction:column;gap:1.5rem;margin-top:2rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-actions{margin-top:.5rem}.register-button{width:100%}.register-button--flowplate{background:linear-gradient(135deg,var(--color-primary-500, var(--freddy-primary-color)),var(--color-purple-500, var(--freddy-primary-color)))!important;border:none!important;box-shadow:0 4px 12px var(--color-primary-300, rgba(99, 102, 241, .3));transition:all .3s ease}.register-button--flowplate:hover:not(:disabled){background:linear-gradient(135deg,var(--color-primary-600, var(--freddy-primary-color)),var(--color-purple-600, var(--freddy-primary-color)))!important;transform:translateY(-1px);box-shadow:0 6px 16px var(--color-primary-400, rgba(99, 102, 241, .4))}.error-message{color:var(--color-destructive-500, var(--freddy-error-color));font-size:.875rem;text-align:center;margin:0}.register-form-container--contentplate .error-message{color:var(--color-destructive-500, var(--freddy-error-color))}.register-form-container--flowplate .error-message{background:var(--color-destructive-50, rgba(239, 68, 68, .1));padding:.75rem;border-radius:8px;border:2px solid var(--color-destructive-200, rgba(239, 68, 68, .2))}.register-form-container--freddy .error-message{color:var(--color-destructive-500, var(--freddy-error-color))}.login-link{text-align:center;font-size:.875rem;color:var(--text-500, var(--freddy-text-secondary));margin-top:1rem}.register-form-container--contentplate .login-link{color:var(--text-500, var(--freddy-text-secondary))}.register-form-container--flowplate .login-link,.register-form-container--freddy .login-link{color:var(--text-400, var(--text-muted))}.link-button{background:none;border:none;color:var(--color-primary-500, var(--freddy-primary-color));font-size:.875rem;cursor:pointer;padding:0;margin:0;text-decoration:none}.register-form-container--contentplate .link-button,.register-form-container--flowplate .link-button,.register-form-container--freddy .link-button{color:var(--color-primary-500, var(--freddy-primary-color));transition:color .2s ease}.link-button:hover{text-decoration:underline}.register-form-container--flowplate .link-button:hover{color:var(--color-primary-600, var(--freddy-primary-color))}.register-form{animation:slideInUp .6s ease-out}.form-title{animation:fadeInUp .6s ease-out;animation-delay:.1s;animation-fill-mode:both}@keyframes slideInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.form-group{animation:fadeInUp .6s ease-out;animation-fill-mode:both}.form-group:nth-child(1){animation-delay:.2s}.form-group:nth-child(2){animation-delay:.3s}.form-group:nth-child(3){animation-delay:.4s}.form-actions{animation:fadeInUp .6s ease-out;animation-delay:.5s;animation-fill-mode:both}.login-link{animation:fadeInUp .6s ease-out;animation-delay:.6s;animation-fill-mode:both}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.auth-manager{width:100%;height:100vh;overflow:hidden;position:relative}.api-warning{position:absolute;top:0;left:0;right:0;z-index:100;background:#ffc1071a;border-bottom:2px solid #ffc107;padding:12px 20px}.api-warning__content{display:flex;align-items:center;gap:12px;max-width:600px;margin:0 auto}.api-warning__icon{font-size:20px;flex-shrink:0}.api-warning__text h3{margin:0 0 4px;font-size:14px;font-weight:600;color:#d97706}.api-warning__text p{margin:0;font-size:12px;color:#92400e;line-height:1.4}.auth-manager--contentplate{background:var(--freddy-bg-secondary)}.auth-manager--flowplate{background:linear-gradient(135deg,var(--freddy-bg-primary) 0%,var(--freddy-bg-primary) 100%)}.auth-manager--freddy{background:var(--freddy-bg-primary)}.auth-slide-enter-active,.auth-slide-leave-active{transition:all .6s cubic-bezier(.4,0,.2,1)}.auth-slide-enter-from{opacity:0;transform:scale(.95) translateY(20px)}.auth-slide-leave-to{opacity:0;transform:scale(.95) translateY(-20px)}.auth-slide-enter-to,.auth-slide-leave-from{opacity:1;transform:scale(1) translateY(0)}.auth-manager--contentplate .auth-slide-enter-active,.auth-manager--contentplate .auth-slide-leave-active{transition:all .5s ease-in-out}.auth-manager--flowplate .auth-slide-enter-active,.auth-manager--flowplate .auth-slide-leave-active{transition:all .7s cubic-bezier(.4,0,.2,1)}.auth-manager--freddy .auth-slide-enter-active,.auth-manager--freddy .auth-slide-leave-active{transition:all .6s ease-out}.bg-modalBackgroundBlur{background-color:#1d2e47e6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.bg-background{background-color:#0f172a}.freddy-modal-container{background-color:var(--bg-900, var(--freddy-bg-primary));padding:2rem;border-radius:2.5rem;overflow:hidden;color:#fff}.modal-header:last-child,.modal-body:last-child,.modal-footer:last-child{margin-bottom:0}.modal-enter-active,.modal-leave-active{transition:all .3s ease}.modal-enter-from,.modal-leave-to{opacity:0;transform:scale(.9)}.modal-enter-to,.modal-leave-from{opacity:1;transform:scale(1)}@media (min-width: 1280px){.modal-container-large{width:56.25rem}}@media (max-width: 1279px) and (min-width: 1024px){.modal-container-large{width:56.25rem}}@media (max-width: 1023px) and (min-width: 768px){.modal-container-large{width:56.25rem}}@media (max-width: 767px) and (min-width: 640px){.modal-container-large{width:45.625rem}}@media (max-width: 639px) and (min-width: 480px){.modal-container-large{width:31.25rem}}@media (max-width: 479px){.modal-container-large{width:auto;max-width:90%}}.freddy-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background-color:#031525c4;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;overflow:auto}.freddy-modal-content{background-color:var(--text-900, var(--freddy-bg-primary));border-radius:40px;box-shadow:0 0 10px 2px #ffffff40;padding:30px;position:relative;margin:auto;min-width:370px;max-width:90%;width:auto}.freddy-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;gap:8px}.freddy-modal-title{font-size:29px;line-height:35px;font-weight:600;margin:0}.freddy-modal-close{background:none;border:none;font-size:35px;font-weight:400;color:#fff;padding:0;line-height:1;cursor:pointer}.freddy-modal-close-icon{width:16px;height:16px;stroke-width:2px}.freddy-pagination-nav{width:100%;display:flex;gap:.25rem;justify-content:space-between}.freddy-pagination-number-button{display:flex;align-items:center;justify-content:center;border-radius:4px;color:var(--text-500, var(--freddy-text-secondary));cursor:pointer;padding:.5rem .75rem;height:auto;background:transparent;border:none;transition:background-color .2s,color .2s}.freddy-pagination-number-button.active,.freddy-pagination-number-button.bg-white{background-color:var(--bg-surface);color:#fff}.freddy-pagination-dynamic-container{display:flex;gap:.25rem}.freddy-pagination-end-button{margin-left:16px;display:flex;align-items:center;justify-content:center;padding:0 1rem;height:2.5rem;margin-inline-start:0;line-height:1.25rem;color:var(--text-500, var(--freddy-text-secondary));background-color:var(--text-900, var(--freddy-bg-primary));border:2px solid var(--border-light);border-radius:.5rem;cursor:pointer;transition:background-color .2s,color .2s}.freddy-pagination-hover-enabled:hover{background-color:var(--bg-surface);color:var(--text-300, var(--text-muted));cursor:pointer}.freddy-search-wrapper{display:flex;box-sizing:border-box;align-items:flex-start;gap:.5rem;height:37px;width:100%;border:2px solid var(--freddy-border-color);padding-left:.875rem;padding-right:.875rem;border-radius:.5rem;cursor:text}.freddy-search-icon{flex-shrink:0;width:1.25rem;height:1.25rem;align-self:center;stroke:var(--text-muted)}.freddy-search-input{flex:1 1 auto;width:100%;font-size:14px;font-weight:500;line-height:16px;background:transparent;border:none;outline:none;color:var(--text-300, var(--text-muted));align-self:center}.freddy-search-input::placeholder{color:var(--text-muted);opacity:.7}.freddy-search-input:-webkit-autofill,.freddy-search-input:-webkit-autofill:hover,.freddy-search-input:-webkit-autofill:focus,.freddy-search-input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px transparent inset!important;-webkit-text-fill-color:var(--text-300, var(--text-muted))!important;transition:background-color 5000s ease-in-out 0s;background-color:transparent!important;background-image:none!important}.freddy-search-input:-moz-autofill,.freddy-search-input:-moz-autofill:focus{background-color:transparent!important;color:var(--text-300, var(--text-muted))!important;border:none!important;box-shadow:none!important}.freddy-search-input:-ms-autofill,.freddy-search-input:-ms-autofill:focus{background-color:transparent!important;color:var(--text-300, var(--text-muted))!important;border:none!important;box-shadow:none!important}.freddy-search-spinner{width:21px!important;align-self:center}.freddy-search-close{width:12px;height:12p;align-self:center;color:var(--freddy-text-quaternary)}.skeleton-card{background-color:var(--freddy-bg-primary)a8;padding:1rem;border:2px solid var(--text-50, var(--text-inverse))fff0a;border-radius:.5rem;box-shadow:4px 7px 27px -13px #fdfdff0f;display:flex;flex-direction:column;gap:1rem}.skeleton-paragraph,.skeleton-single-box,.skeleton-single-paragraph{padding:1rem;border:2px solid var(--text-50, var(--text-inverse))fff0a;border-radius:.75rem;background-color:var(--freddy-bg-primary)a8;box-shadow:4px 7px 27px -13px #fdfdff0f;display:flex;flex-direction:column;gap:.5rem}.skeleton-single-box{padding:8px}.skeleton-table{background-color:var(--freddy-bg-primary)a8;padding:1rem;border:2px solid var(--text-50, var(--text-inverse))fff0a;border-radius:.5rem;overflow:hidden;box-shadow:4px 7px 27px -13px #fdfdff0f;display:flex;flex-direction:column;gap:1rem}.skeleton-wave{position:relative;overflow:hidden;background-color:var(--text-900, var(--freddy-bg-primary))}.skeleton-wave:after{content:"";position:absolute;top:0;left:-150%;height:100%;width:150%;background:linear-gradient(90deg,#fff0,#ffffffb3,#fff0);animation:wave 3s ease-in-out infinite}@keyframes wave{0%{left:-150%}50%{left:100%}to{left:100%}}.skeleton-line{background-color:var(--text-50, var(--text-inverse))fff17;border-radius:.25rem}.skeleton-h-4{height:1rem}.skeleton-h-6{height:1.5rem}.skeleton-h-8{height:2rem}.skeleton-w-full{width:100%}.skeleton-w-5-6{width:83.333333%}.skeleton-w-3-4{width:75%}.skeleton-w-40{width:10rem}.skeleton-w-32{width:8rem}.table-full{min-width:100%;border-collapse:collapse}.td-padding{padding:.5rem 1.5rem}@keyframes fade-in-right{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.freddy-plugin-snackbar-container{position:fixed;right:1.25rem;bottom:.5rem;padding-bottom:17px;z-index:50}.freddy-plugin-snackbar-container--side70{width:78%}.freddy-plugin-snackbar-container--half{width:50%}.freddy-plugin-snackbar-container--full{width:100%;padding-left:2.5rem}.freddy-plugin-snackbar{margin-top:.75rem;padding:1rem;border-radius:1.5rem;background-color:var(--text-900, var(--freddy-bg-primary));animation:fade-in-right .5s ease-out}.freddy-plugin-snackbar--info{border:2px solid var(--text-50, var(--text-inverse))fff;box-shadow:0 0 0 1px var(--text-50, var(--text-inverse))}.freddy-plugin-snackbar--danger{border:2px solid var(--color-warning-500, var(--freddy-warning-color));box-shadow:0 0 0 1px var(--color-warning-500, var(--freddy-warning-color))}.freddy-plugin-snackbar--success{border:2px solid var(--color-success-500, var(--freddy-success-color));box-shadow:0 0 0 1px var(--color-success-500, var(--freddy-success-color))}.freddy-plugin-snackbar-content{display:flex;justify-content:space-between;align-items:center;position:relative}.freddy-plugin-snackbar-left{display:flex;gap:1rem}.freddy-plugin-snackbar-icon{height:16px;width:16px;stroke-width:2;color:var(--text-50, var(--text-inverse))fff;border-radius:9999px;padding:.25rem;border:4px solid transparent;box-sizing:content-box}.freddy-plugin-snackbar-icon--info{border-color:var(--text-50, var(--text-inverse))fff33;background-color:var(--text-50, var(--text-inverse))fff17}.freddy-plugin-snackbar-icon--danger{border-color:var(--color-warning-500, var(--freddy-warning-color));background-color:var(--color-warning-500, var(--freddy-warning-color))}.freddy-plugin-snackbar-icon--success{border-color:var(--color-success-500, var(--freddy-success-color));background-color:var(--color-success-400, var(--freddy-success-color))}.freddy-plugin-snackbar-text{display:flex;flex-direction:column;gap:.375rem;color:var(--text-50, var(--text-inverse))fff}.freddy-plugin-snackbar-title{font-size:.875rem;font-weight:600;margin:0;color:var(--text-50, var(--text-inverse))fff}.freddy-plugin-snackbar-message{font-size:.875rem;font-weight:500;line-height:normal;margin:0;color:var(--text-50, var(--text-inverse))fff}.freddy-plugin-snackbar-close-btn{position:absolute;right:.5rem;top:0;background:none;border:none;cursor:pointer}.freddy-plugin-snackbar-close-icon{height:10px;width:10px;stroke-width:1.67;color:#fff}.freddy-plugin-nav-bar{display:flex;width:100%;gap:24px;border-bottom:1px solid rgba(255,255,255,.09);padding-right:10px;font-family:Inter,sans-serif;font-size:.875rem;font-weight:600}.freddy-plugin-menu-button{all:unset;display:flex;flex-direction:column;padding-top:8px;cursor:pointer}.freddy-plugin-active-tab{width:100%;background-color:var(--text-50, var(--text-inverse))fff;height:2px;border-top-left-radius:.375rem;border-top-right-radius:.375rem}.theme-switcher{max-width:1200px;margin:0 auto;padding:0}.theme-switcher-header{background:var(--freddy-bg-primary);border-bottom:1px solid var(--freddy-border-color);padding:1.5rem 2rem;margin-bottom:2rem}.header-content{display:flex;justify-content:space-between;align-items:center}.header-left h2{font-size:1.8rem;font-weight:700;margin:0 0 .25rem;color:var(--freddy-text-primary)}.header-left p{font-size:.95rem;color:var(--freddy-text-secondary);margin:0}.status-indicator{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:20px;background:var(--freddy-bg-secondary);border:2px solid var(--freddy-border-color)}.status-indicator.active{background:var(--freddy-success-color);border-color:var(--freddy-success-color);color:var(--text-inverse)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--freddy-text-secondary)}.status-indicator.active .status-dot{background:var(--freddy-success-color)}.status-text{font-size:.85rem;font-weight:500}.loading-container{display:flex;justify-content:center;align-items:center;min-height:400px}.loading-content{text-align:center}.loading-spinner{position:relative;width:60px;height:60px;margin:0 auto 1.5rem}.spinner-ring{position:absolute;width:100%;height:100%;border:3px solid transparent;border-top:3px solid var(--freddy-primary-color);border-radius:50%;animation:freddy-plugin-spin 1s linear infinite}.spinner-ring:nth-child(2){width:80%;height:80%;top:10%;left:10%;animation-delay:.2s}.spinner-ring:nth-child(3){width:60%;height:60%;top:20%;left:20%;animation-delay:.4s}@keyframes freddy-plugin-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-content h3{font-size:1.3rem;font-weight:600;margin-bottom:.5rem;color:var(--freddy-text-primary)}.loading-content p{color:var(--freddy-text-secondary);margin:0}.error-container{display:flex;justify-content:center;align-items:center;min-height:400px}.error-content{text-align:center;max-width:400px}.error-icon{font-size:3rem;margin-bottom:1rem}.error-content h3{font-size:1.3rem;font-weight:600;margin-bottom:.5rem;color:var(--freddy-text-primary)}.error-content p{color:var(--freddy-text-secondary);margin-bottom:1.5rem}.retry-button{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:var(--freddy-primary-color);color:#fff;border:none;border-radius:8px;font-weight:500;cursor:pointer;transition:all .2s ease}.retry-button:hover{opacity:.9;transform:translateY(-1px)}.theme-switcher-main{display:grid;grid-template-columns:1fr 2fr;gap:2rem;padding:0 2rem}.current-theme-section{position:sticky;top:2rem;height:fit-content}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.section-header h3{font-size:1.2rem;font-weight:600;margin:0;color:var(--freddy-text-primary)}.theme-badge{padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:uppercase}.theme-badge.active{background:var(--freddy-success-color);color:var(--text-inverse)}.theme-badge.inactive{background:var(--freddy-error-color);color:var(--text-inverse)}.current-theme-card{background:var(--freddy-bg-primary);border:2px solid var(--freddy-border-color);border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px var(--border-light)}.theme-info{margin-bottom:1.5rem}.theme-brand-info,.theme-mode-info{display:flex;align-items:center;gap:.75rem;padding:.75rem 0;border-bottom:1px solid var(--freddy-border-color)}.theme-mode-info{border-bottom:none}.brand-icon,.mode-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--freddy-bg-secondary);border-radius:8px;overflow:hidden}.mode-icon-text{font-size:1.5rem}.brand-details h4,.mode-details h4{font-size:1rem;font-weight:600;margin:0 0 .25rem;color:var(--freddy-text-primary)}.brand-version,.mode-key{font-size:.8rem;color:var(--freddy-text-secondary)}.enhanced-color-preview h4{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--freddy-text-primary)}.color-preview-description{font-size:.85rem;color:var(--freddy-text-secondary);margin-bottom:.75rem}.primary-color-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-top:.75rem}.primary-color-item{height:100px;border-radius:12px;border:2px solid transparent;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden;box-shadow:0 2px 8px var(--border-light)}.color-text-sample{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.9rem;font-weight:500;opacity:.8;pointer-events:none}.primary-color-item:hover .color-text-sample{opacity:.6}.primary-color-item:hover{transform:scale(1.02);border-color:var(--freddy-primary-color);box-shadow:0 6px 16px var(--freddy-border-color)}.color-overlay{position:absolute;bottom:0;left:0;right:0;background:#000c;color:#fff;padding:.75rem;transform:translateY(100%);transition:transform .3s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.primary-color-item:hover .color-overlay{transform:translateY(0)}.color-label{font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;display:block;margin-bottom:.25rem}.color-description{font-size:.65rem;opacity:.8;margin-bottom:.5rem;display:block;line-height:1.2}.color-value{font-size:.7rem;font-family:Monaco,Menlo,monospace;opacity:.9;background:var(--bg-surface);padding:.2rem .4rem;border-radius:4px;display:inline-block}.theme-controls-section{display:flex;flex-direction:column;gap:1.5rem}.control-card{background:var(--freddy-bg-primary);border:2px solid var(--freddy-border-color);border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px var(--border-light)}.card-header{margin-bottom:1.5rem}.card-header h3{font-size:1.1rem;font-weight:600;margin:0 0 .25rem;color:var(--freddy-text-primary)}.card-subtitle{font-size:.85rem;color:var(--freddy-text-secondary)}.brand-selection{display:grid;gap:1rem}.brand-option{display:flex;align-items:center;gap:1rem;padding:1rem;border:2px solid var(--freddy-border-color);border-radius:8px;cursor:pointer;transition:all .2s ease;background:transparent}.brand-option:hover{border-color:var(--freddy-primary-color);background:var(--freddy-bg-secondary)}.brand-option.active{border-color:var(--freddy-primary-color);background:var(--freddy-primary-color);color:#fff}.brand-visual{position:relative}.brand-logo{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:8px;overflow:hidden}.brand-option.active .brand-logo{background:var(--border-light)}.brand-option.active .brand-logo :deep(.logo-image){filter:brightness(0) invert(1)}.brand-option.active{background:var(--freddy-bg-secondary);border-color:var(--freddy-primary-color);color:var(--freddy-text-primary)}.brand-option.active .brand-logo{background:var(--freddy-bg-primary)}.brand-status{position:absolute;top:-4px;right:-4px;width:20px;height:20px;background:var(--freddy-success-color);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:.7rem;font-weight:700}.brand-content h4{font-size:1rem;font-weight:600;margin:0 0 .25rem}.brand-version{font-size:.8rem;opacity:.7}.mode-selection{display:grid;gap:1rem}.mode-option{display:flex;align-items:center;gap:1rem;padding:1rem;border:2px solid var(--freddy-border-color);border-radius:8px;cursor:pointer;transition:all .2s ease;background:transparent}.mode-option:hover{border-color:var(--freddy-primary-color);background:var(--freddy-bg-secondary)}.mode-option.active{border-color:var(--freddy-primary-color);background:var(--freddy-bg-secondary);color:var(--freddy-text-primary)}.mode-option.active .mode-preview{background:var(--freddy-bg-primary)}.mode-visual{position:relative}.mode-preview{width:60px;height:40px;border-radius:6px;border:2px solid var(--freddy-border-color);overflow:hidden;position:relative;background:transparent}.color-palette-preview{display:flex;flex-wrap:wrap;gap:2px;padding:4px;height:100%;align-items:center;justify-content:center}.color-dot{width:8px;height:8px;border-radius:50%;border:2px solid var(--border-light);flex-shrink:0}.mode-status{position:absolute;top:-4px;right:-4px;width:20px;height:20px;background:var(--freddy-success-color);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:.7rem;font-weight:700}.mode-content{flex:1}.mode-content h4{font-size:1rem;font-weight:600;margin:0 0 .25rem}.mode-key{font-size:.8rem;opacity:.7;margin-bottom:.25rem;display:block}.default-indicator{display:inline-block;background:var(--freddy-warning-color);color:#fff;font-size:.7rem;padding:.2rem .4rem;border-radius:4px;font-weight:600}.debug-section{background:var(--freddy-bg-primary);border:2px solid var(--freddy-border-color);border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px var(--border-light);margin-top:1.5rem}.debug-content{display:flex;flex-direction:column;gap:.75rem}.debug-item{font-size:.9rem;color:var(--freddy-text-secondary)}.debug-item strong{color:var(--freddy-text-primary);font-weight:500}.debug-colors h4,.debug-css-vars h4{font-size:1rem;font-weight:600;margin-bottom:.75rem;color:var(--freddy-text-primary)}.debug-colors div{margin-bottom:.5rem;font-size:.85rem;color:var(--freddy-text-secondary)}.debug-colors strong{color:var(--freddy-text-primary);font-weight:500}.css-var{font-size:.85rem;color:var(--freddy-text-secondary);margin-bottom:.25rem;font-family:Courier New,monospace}.css-var strong{color:var(--freddy-text-primary);font-weight:500}.debug-colors,.debug-css-vars{background:var(--freddy-bg-secondary);border:2px solid var(--border-light);border-radius:8px;padding:1rem;margin-top:.5rem}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.stat-item{display:flex;align-items:center;gap:.75rem;padding:1rem;background:var(--freddy-bg-secondary);border-radius:8px}.stat-icon{font-size:1.5rem;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--freddy-bg-primary);border-radius:8px}.stat-content{flex:1}.stat-value{display:block;font-size:1.5rem;font-weight:700;color:var(--freddy-text-primary);line-height:1}.stat-label{font-size:.8rem;color:var(--freddy-text-secondary)}@media (max-width: 1024px){.theme-switcher-main{grid-template-columns:1fr;gap:1.5rem}.current-theme-section{position:static}}@media (max-width: 768px){.theme-switcher{padding:0 1rem}.theme-switcher-header{padding:1rem}.header-content{flex-direction:column;gap:1rem;text-align:center}.theme-switcher-main{padding:0 1rem}.stats-grid,.primary-color-grid{grid-template-columns:1fr}}@media (max-width: 480px){.brand-option,.mode-option{flex-direction:column;text-align:center}}.themable{padding:0 2rem 2rem;max-width:1400px;margin:0 auto;background:var(--bg-primary, #ffffff);color:var(--text-primary, #111111);min-height:100vh}@media (prefers-color-scheme: dark){.themable{background:var(--bg-primary, #1a1a1a);color:var(--text-primary, #ffffff)}}.themable-header{text-align:center;margin-bottom:2rem}.themable-header h1{font-size:2.5rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary, #111111)}.themable-header p{font-size:1.1rem;color:var(--text-secondary, #666666)}@media (prefers-color-scheme: dark){.themable-header h1{color:var(--text-primary, #ffffff)}.themable-header p{color:var(--text-secondary, #cccccc)}}.status-indicator{background:var(--bg-secondary, #f8f9fa);border:2px solid var(--border-color, #e9ecef);border-radius:8px;padding:1rem;margin-bottom:2rem}.status-content p{margin:.5rem 0;font-family:monospace;color:var(--text-secondary, #666666)}@media (prefers-color-scheme: dark){.status-indicator{background:var(--bg-secondary, #2a2a2a);border-color:var(--border-color, #444444)}.status-content p{color:var(--text-secondary, #cccccc)}}.tab-navigation{display:flex;gap:1rem;margin-bottom:2rem;border-bottom:1px solid var(--freddy-border-color)}.tab-button{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;border:none;background:none;color:var(--text-secondary, #666666);cursor:pointer;border-bottom:2px solid transparent;transition:all .2s ease}.tab-button:hover{color:var(--text-primary, #111111);background-color:var(--bg-secondary, #f8f9fa)}.tab-button.active{color:var(--text-primary, #111111);border-bottom-color:var(--primary-color, #007bff);background-color:var(--bg-secondary, #f8f9fa)}@media (prefers-color-scheme: dark){.tab-button{color:var(--text-secondary, #cccccc)}.tab-button:hover,.tab-button.active{color:var(--text-primary, #ffffff);background-color:var(--bg-secondary, #2a2a2a)}}.tab-icon{font-size:1.2rem}.tab-label{font-weight:500}.tab-content{min-height:600px}.tab-panel{animation:fadeIn .3s ease}.panel-header{margin-bottom:2rem}.panel-header h2{font-size:1.8rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary, #111111)}.panel-header p{font-size:1rem;color:var(--text-secondary, #666666)}@media (prefers-color-scheme: dark){.panel-header h2{color:var(--text-primary, #ffffff)}.panel-header p{color:var(--text-secondary, #cccccc)}}@media (max-width: 768px){.themable{padding:1rem}.tab-navigation{flex-direction:column;gap:.5rem}.tab-button{justify-content:center}}.themable-overview-dashboard{padding:2rem;max-width:1200px;margin:0 auto}.dashboard-header{margin-bottom:2rem;text-align:center}.dashboard-header h1{font-size:2.5rem;font-weight:600;margin-bottom:.5rem;color:var(--freddy-text-primary)}.dashboard-header p{font-size:1.1rem;color:var(--freddy-text-secondary);margin:0}.toast-wrapper{position:fixed;right:10px;bottom:10px;display:flex;flex-direction:column;gap:.5rem}.toast-item{display:flex;align-items:center;padding:.625rem;gap:.625rem;border-radius:10px;box-shadow:0 1px 3px var(--border-light);animation:fadeIn .3s ease}.toast-success{background-color:var(--color-success-500, var(--freddy-success-color));--toast-icon-color: var(--color-success-500, var(--freddy-success-color))}.toast-danger{background-color:var(--color-destructive-500, var(--freddy-error-color));--toast-icon-color: var(--color-destructive-500, var(--freddy-error-color))}.toast-info{background-color:var(--color-primary-500, var(--freddy-primary-color));--toast-icon-color: var(--color-primary-500, var(--freddy-primary-color))}.toast-icon-wrapper{width:1.25rem;height:1.25rem;background-color:var(--freddy-bg-secondary);border-radius:9999px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.toast-icon{width:100%;height:100%;padding:.25rem;color:var(--toast-icon-color)}.toast-message{min-width:16rem;max-width:420px;flex:1 1 auto;font-size:1rem;font-weight:500;color:#fff}.toast-close-button{width:1rem;height:1rem;background:transparent;border:none;display:flex;align-items:center;justify-content:center;flex-shrink:0}.toast-close-icon{width:100%;height:100%;padding:.125rem;color:#fff}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
1
+ pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#c678dd}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string{color:#98c379}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#d19a66}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-title.class_,.hljs-class .hljs-title{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
package/dist/index.cjs CHANGED
@@ -73,7 +73,7 @@ const buttonText = ref('Click me')
73
73
 
74
74
  const handleClick = () => {
75
75
  }
76
- <\/script>`,E9=t.defineComponent({__name:"ChatInterface",props:{placeholder:{default:"Type your message..."},messages:{default:void 0},size:{default:"md"},apiKey:{default:void 0},apiBaseUrl:{default:"/freddy-api"},organizationId:{default:void 0},fileSearch:{type:Boolean,default:!1},webSearch:{type:Boolean,default:!1},debugMode:{type:Boolean,default:!1},welcomeTitle:{default:"Start a conversation"},welcomeText:{default:"Type a message below to begin chatting with your AI assistant."},welcomeIcon:{default:"💬"}},emits:["send","sendWithContext"],setup(n,{emit:e}){const r=n,o=e,a=t.ref(""),i=t.ref(null),l=t.ref(null),s=t.ref(!1),c=t.computed(()=>r.welcomeIcon?r.welcomeIcon.startsWith("http")||r.welcomeIcon.startsWith("/")||r.welcomeIcon.includes(".")||r.welcomeIcon.startsWith("data:"):!1),u=t.computed(()=>r.welcomeIcon?r.welcomeIcon.startsWith("Icon"):!1),d=()=>{s.value=!0},_=()=>[{id:"assistant-1",name:"General Assistant",description:"A helpful general-purpose assistant",default:!0},{id:"assistant-2",name:"Code Assistant",description:"Specialized in programming and development"},{id:"assistant-3",name:"Writing Assistant",description:"Focused on writing and content creation"}],m=()=>[{id:"gpt-4",name:"GPT-4",description:"Most capable model",owned_by:"openai"},{id:"gpt-4-turbo",name:"GPT-4 Turbo",description:"Faster and more efficient",owned_by:"openai"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo",description:"Fast and cost-effective",owned_by:"openai"}],g=t.ref([]),p=t.ref([]),f=t.ref(!1),E=t.ref(!1),T=t.ref(null),S=t.ref(null),b=t.computed(()=>r.debugMode),C=t.ref("None"),N=t.ref(!1),h=t.ref({requestSent:0,apiResponseReceived:0,firstStreamObject:0,ourStreamStart:0,apiStreamEnd:0,ourStreamEnd:0}),R=t.ref(new Hs({apiKey:r.apiKey,baseUrl:r.apiBaseUrl}));t.watch([()=>r.apiKey,()=>r.apiBaseUrl],([M,L])=>{R.value=new Hs({apiKey:M,baseUrl:L})},{immediate:!1});const v=async()=>{var M,L;if(!r.apiKey){g.value=_(),f.value=!1;return}f.value=!0,T.value=null;try{const U={"api-key":r.apiKey,"Content-Type":"application/json",accept:"application/json"},V=`${r.apiBaseUrl}/v1/organizations/${r.organizationId}/assistants`,de=new AbortController,ge=setTimeout(()=>de.abort(),1e4),ie=await fetch(V,{method:"GET",headers:U,mode:"cors",signal:de.signal});if(clearTimeout(ge),!ie.ok)throw new Error(`Failed to fetch assistants: ${ie.status} ${ie.statusText}`);const oe=await ie.json(),ne=Array.isArray(oe)?oe:oe.data||[];g.value=ne.map(z=>({id:z.id.toString(),name:z.name||`Assistant ${z.id}`,description:z.description||"",default:z.isDefault||!1})),g.value.length>0&&!g.value.some(z=>z.default)&&(g.value[0].default=!0)}catch(U){const V=U instanceof Error?U.message:"Failed to fetch assistants";T.value=V,U.name!=="AbortError"&&(V.includes("CORS")||V.includes("Access-Control-Allow-Origin")?(M=l.value)==null||M.showErrorBanner("CORS Error: Cannot connect to Freddy API from localhost. Try using the production build or configure CORS."):(L=l.value)==null||L.showErrorBanner(`API Error: ${V}`)),g.value=[]}finally{f.value=!1}},y=async()=>{var M,L;if(!r.apiKey){p.value=m(),E.value=!1;return}E.value=!0,T.value=null;try{const U={"api-key":r.apiKey,"Content-Type":"application/json",accept:"application/json"},V=`${r.apiBaseUrl}/v1/organizations/${r.organizationId}/models`,de=new AbortController,ge=setTimeout(()=>de.abort(),1e4),ie=await fetch(V,{method:"GET",headers:U,mode:"cors",signal:de.signal});if(clearTimeout(ge),!ie.ok)throw new Error(`Failed to fetch models: ${ie.status} ${ie.statusText}`);const oe=await ie.json(),z=(Array.isArray(oe)?oe:oe.data||[]).map(G=>({id:G.id.toString(),name:G.title||G.name||`Model ${G.id}`,description:G.description||"",owned_by:G.owned_by||"freddy",default:!1}));z.length>0&&(z[0].default=!0),p.value=z}catch(U){const V=U instanceof Error?U.message:"Failed to fetch models";T.value=V,U.name!=="AbortError"&&(V.includes("CORS")||V.includes("Access-Control-Allow-Origin")?(M=l.value)==null||M.showErrorBanner("CORS Error: Cannot connect to Freddy API from localhost. Try using the production build or configure CORS."):(L=l.value)==null||L.showErrorBanner(`API Error: ${V}`)),p.value=[]}finally{E.value=!1}},w=async()=>{if(!r.apiKey)return Promise.resolve();try{const M=new AbortController,L=setTimeout(()=>M.abort(),5e3),U=await fetch(`${r.apiBaseUrl}/v1/organizations/${r.organizationId}/models`,{method:"GET",headers:{"api-key":r.apiKey,"Content-Type":"application/json",accept:"application/json"},mode:"cors",signal:M.signal});if(clearTimeout(L),!U.ok){const V=await U.text()}return U.ok}catch{return!1}},O=async(M,L)=>{var ge,ie,oe,ne;if(!r.apiKey||!r.organizationId)return;const U=g.value.find(z=>z.default)||g.value[0];if(!U)return;const V=Date.now().toString()+"_assistant",de={id:V,content:"Thinking...",sender:"assistant",timestamp:new Date,type:"text"};x.value.push(de),C.value=`➕ ADDED assistant message with ID: ${V} at index: ${x.value.length-1}`,i.value&&Rt(i.value);try{const z={organization_id:r.organizationId,assistant_id:U.id,thread_id:(ge=S.value)==null?void 0:ge.toString(),inputs:[{role:"user",texts:[{text:M}],files:[]}],model:"ftg-2.0-mini",tools:{web_search:{is_enabled:typeof r.webSearch=="string"?r.webSearch==="true":r.webSearch},file_search:{is_enabled:typeof r.fileSearch=="string"?r.fileSearch==="true":r.fileSearch}},tool_choice:"auto"};S.value;const G=x.value.findIndex(re=>re.id===V);let se="";C.value=`🔍 INDEX LOOKUP: ${V} -> ${G} (total: ${x.value.length})`,N.value=!0,C.value="Starting stream...",h.value={requestSent:0,apiResponseReceived:0,firstStreamObject:0,ourStreamStart:0,apiStreamEnd:0,ourStreamEnd:0};try{h.value.requestSent=Date.now(),C.value=`📤 Request sent at ${h.value.requestSent}`,C.value="🚀 Calling API...";const re=await fetch(`${r.apiBaseUrl}/v1/model/response`,{method:"POST",headers:{"api-key":r.apiKey,"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify(z)}),Se=re.headers.get("content-type");C.value="📡 Starting real-time streaming...",h.value.apiResponseReceived=Date.now(),h.value.firstStreamObject=Date.now(),h.value.ourStreamStart=Date.now();let _e="",ve=0,Ie="";try{const Q=(ie=re.body)==null?void 0:ie.getReader(),we=new TextDecoder;if(Q){for(;;){const{done:lt,value:ht}=await Q.read();if(lt)break;const ct=we.decode(ht,{stream:!0});Ie+=ct,C.value=`📥 CHUNK RECEIVED: ${ct.length} bytes (buffer: ${Ie.length})`;let We=0,St=[],Je=0,Me=!1;for(let le=0;le<Ie.length;le++){const ye=Ie[le];if(ye==='"'&&(le===0||Ie[le-1]!=="\\"||le>1&&Ie[le-2]==="\\")&&(Me=!Me),!Me&&(ye==="{"?Je++:ye==="}"&&Je--,Je===0)){const et=Ie.slice(We,le+1);We=le+1;try{const tt=JSON.parse(et);St.push(tt)}catch(tt){C.value=`⚠️ JSON PARSE ERROR: ${tt.message}`}}}Ie=Ie.slice(We),St.forEach(le=>{C.value=`📥 REAL-TIME EVENT: ${le.event} | Response: ${le.response?le.response.substring(0,30)+"...":"null"}`,le.event==="response.output_text.delta"&&le.response?(ve++,_e+=le.response,G!==-1&&G<x.value.length&&(x.value[G]={...x.value[G],content:_e},C.value=`⚡ REAL-TIME ${ve}: "${le.response}" (total: ${_e.length} chars)`),i.value&&Rt(i.value)):le.event==="response.completed"&&(le.threadId&&(S.value=le.threadId),le.response&&G!==-1&&G<x.value.length&&(x.value[G]={...x.value[G],content:le.response}),C.value=`🏁 REAL-TIME COMPLETE: Thread ${le.threadId} - ${ve} deltas processed`,N.value=!1,h.value.apiStreamEnd=Date.now(),h.value.ourStreamEnd=Date.now())})}Q.releaseLock()}}catch(Q){C.value=`❌ STREAMING ERROR: ${Q.message}`}h.value.apiStreamEnd=Date.now(),h.value.ourStreamEnd=Date.now(),N.value=!1;return}catch(re){throw C.value=`Service failed: ${(re==null?void 0:re.message)??"Unknown"} (Status: ${(re==null?void 0:re.status)??"N/A"})`,N.value=!1,re}}catch(z){N.value=!1;const G=x.value.findIndex(se=>se.id===V);G!==-1&&(x.value[G]={...x.value[G],content:"Sorry, I encountered an error while processing your message. Please try again."}),(ne=l.value)==null||ne.showErrorBanner(`Failed to send message: ${z instanceof Error?z.message:"Unknown error"}`)}},H=new He({html:!0,linkify:!1,typographer:!0,breaks:!0,highlight:(M,L)=>{let U=M;if(L&&Gd.getLanguage(L))try{U=Gd.highlight(M,{language:L}).value}catch{}else U=H.utils.escapeHtml(M);const V=`code-${Math.random().toString(36).substr(2,9)}`;return`<div class="flex overflow-x-auto flex-col rounded-xl w-fit min-w-[50%] max-w-[100%]">
76
+ <\/script>`,E9=t.defineComponent({__name:"ChatInterface",props:{placeholder:{default:"Type your message..."},messages:{default:void 0},size:{default:"md"},apiKey:{default:void 0},apiBaseUrl:{default:"/freddy-api"},organizationId:{default:void 0},fileSearch:{type:Boolean,default:!1},webSearch:{type:Boolean,default:!1},debugMode:{type:Boolean,default:!1},welcomeTitle:{default:"Start a conversation"},welcomeText:{default:"Type a message below to begin chatting with your AI assistant."},welcomeIcon:{default:"💬"}},emits:["send","sendWithContext"],setup(n,{emit:e}){const r=n,o=e,a=t.ref(""),i=t.ref(null),l=t.ref(null),s=t.ref(!1),c=t.computed(()=>r.welcomeIcon?r.welcomeIcon.startsWith("http")||r.welcomeIcon.startsWith("/")||r.welcomeIcon.includes(".")||r.welcomeIcon.startsWith("data:"):!1),u=t.computed(()=>r.welcomeIcon?r.welcomeIcon.startsWith("Icon"):!1),d=()=>{s.value=!0},_=()=>[{id:"assistant-1",name:"General Assistant",description:"A helpful general-purpose assistant",default:!0},{id:"assistant-2",name:"Code Assistant",description:"Specialized in programming and development"},{id:"assistant-3",name:"Writing Assistant",description:"Focused on writing and content creation"}],m=()=>[{id:"gpt-4",name:"GPT-4",description:"Most capable model",owned_by:"openai"},{id:"gpt-4-turbo",name:"GPT-4 Turbo",description:"Faster and more efficient",owned_by:"openai"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo",description:"Fast and cost-effective",owned_by:"openai"}],g=t.ref([]),p=t.ref([]),f=t.ref(!1),E=t.ref(!1),T=t.ref(null),S=t.ref(null),b=t.computed(()=>r.debugMode),C=t.ref("None"),N=t.ref(!1),h=t.ref({requestSent:0,apiResponseReceived:0,firstStreamObject:0,ourStreamStart:0,apiStreamEnd:0,ourStreamEnd:0}),R=t.ref(new Hs({apiKey:r.apiKey,baseUrl:r.apiBaseUrl}));t.watch([()=>r.apiKey,()=>r.apiBaseUrl],([M,L])=>{R.value=new Hs({apiKey:M,baseUrl:L})},{immediate:!1});const v=async()=>{var M,L;if(!r.apiKey){g.value=_(),f.value=!1;return}f.value=!0,T.value=null;try{const U={"api-key":r.apiKey,"Content-Type":"application/json",accept:"application/json"},V=`${r.apiBaseUrl}/v1/organizations/${r.organizationId}/assistants`,de=new AbortController,ge=setTimeout(()=>de.abort(),1e4),ie=await fetch(V,{method:"GET",headers:U,mode:"cors",signal:de.signal});if(clearTimeout(ge),!ie.ok)throw new Error(`Failed to fetch assistants: ${ie.status} ${ie.statusText}`);const oe=await ie.json(),ne=Array.isArray(oe)?oe:oe.data||[];g.value=ne.map(z=>({id:z.id.toString(),name:z.name||`Assistant ${z.id}`,description:z.description||"",default:z.isDefault||!1})),g.value.length>0&&!g.value.some(z=>z.default)&&(g.value[0].default=!0)}catch(U){const V=U instanceof Error?U.message:"Failed to fetch assistants";T.value=V,U.name!=="AbortError"&&(V.includes("CORS")||V.includes("Access-Control-Allow-Origin")?(M=l.value)==null||M.showErrorBanner("CORS Error: Cannot connect to Freddy API from localhost. Try using the production build or configure CORS."):(L=l.value)==null||L.showErrorBanner(`API Error: ${V}`)),g.value=[]}finally{f.value=!1}},y=async()=>{var M,L;if(!r.apiKey){p.value=m(),E.value=!1;return}E.value=!0,T.value=null;try{const U={"api-key":r.apiKey,"Content-Type":"application/json",accept:"application/json"},V=`${r.apiBaseUrl}/v1/organizations/${r.organizationId}/models`,de=new AbortController,ge=setTimeout(()=>de.abort(),1e4),ie=await fetch(V,{method:"GET",headers:U,mode:"cors",signal:de.signal});if(clearTimeout(ge),!ie.ok)throw new Error(`Failed to fetch models: ${ie.status} ${ie.statusText}`);const oe=await ie.json(),z=(Array.isArray(oe)?oe:oe.data||[]).map(G=>({id:G.id.toString(),name:G.title||G.name||`Model ${G.id}`,description:G.description||"",owned_by:G.owned_by||"freddy",default:!1}));z.length>0&&(z[0].default=!0),p.value=z}catch(U){const V=U instanceof Error?U.message:"Failed to fetch models";T.value=V,U.name!=="AbortError"&&(V.includes("CORS")||V.includes("Access-Control-Allow-Origin")?(M=l.value)==null||M.showErrorBanner("CORS Error: Cannot connect to Freddy API from localhost. Try using the production build or configure CORS."):(L=l.value)==null||L.showErrorBanner(`API Error: ${V}`)),p.value=[]}finally{E.value=!1}},w=async()=>{if(!r.apiKey)return Promise.resolve();try{const M=new AbortController,L=setTimeout(()=>M.abort(),5e3),U=await fetch(`${r.apiBaseUrl}/v1/organizations/${r.organizationId}/models`,{method:"GET",headers:{"api-key":r.apiKey,"Content-Type":"application/json",accept:"application/json"},mode:"cors",signal:M.signal});if(clearTimeout(L),!U.ok){const V=await U.text()}return U.ok}catch{return!1}},O=async(M,L)=>{var ge,ie,oe,ne;if(!r.apiKey||!r.organizationId||!(g.value.find(z=>z.default)||g.value[0]))return;const V=Date.now().toString()+"_assistant",de={id:V,content:"Thinking...",sender:"assistant",timestamp:new Date,type:"text"};x.value.push(de),C.value=`➕ ADDED assistant message with ID: ${V} at index: ${x.value.length-1}`,i.value&&Rt(i.value);try{const z={organization_id:r.organizationId,assistant_id:"221",thread_id:(ge=S.value)==null?void 0:ge.toString(),inputs:[{role:"user",texts:[{text:M}],files:[]}],model:"ftg-2.0",tools:{web_search:{is_enabled:typeof r.webSearch=="string"?r.webSearch==="true":r.webSearch},file_search:{is_enabled:typeof r.fileSearch=="string"?r.fileSearch==="true":r.fileSearch}},tool_choice:"auto"};S.value;const G=x.value.findIndex(re=>re.id===V);let se="";C.value=`🔍 INDEX LOOKUP: ${V} -> ${G} (total: ${x.value.length})`,N.value=!0,C.value="Starting stream...",h.value={requestSent:0,apiResponseReceived:0,firstStreamObject:0,ourStreamStart:0,apiStreamEnd:0,ourStreamEnd:0};try{h.value.requestSent=Date.now(),C.value=`📤 Request sent at ${h.value.requestSent}`,C.value="🚀 Calling API...";const re=await fetch(`${r.apiBaseUrl}/v1/model/response`,{method:"POST",headers:{"api-key":r.apiKey,"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify(z)}),Se=re.headers.get("content-type");C.value="📡 Starting real-time streaming...",h.value.apiResponseReceived=Date.now(),h.value.firstStreamObject=Date.now(),h.value.ourStreamStart=Date.now();let _e="",ve=0,Ie="";try{const Q=(ie=re.body)==null?void 0:ie.getReader(),we=new TextDecoder;if(Q){for(;;){const{done:lt,value:ht}=await Q.read();if(lt)break;const ct=we.decode(ht,{stream:!0});Ie+=ct,C.value=`📥 CHUNK RECEIVED: ${ct.length} bytes (buffer: ${Ie.length})`;let We=0,St=[],Je=0,Me=!1;for(let le=0;le<Ie.length;le++){const ye=Ie[le];if(ye==='"'&&(le===0||Ie[le-1]!=="\\"||le>1&&Ie[le-2]==="\\")&&(Me=!Me),!Me&&(ye==="{"?Je++:ye==="}"&&Je--,Je===0)){const et=Ie.slice(We,le+1);We=le+1;try{const tt=JSON.parse(et);St.push(tt)}catch(tt){C.value=`⚠️ JSON PARSE ERROR: ${tt.message}`}}}Ie=Ie.slice(We),St.forEach(le=>{C.value=`📥 REAL-TIME EVENT: ${le.event} | Response: ${le.response?le.response.substring(0,30)+"...":"null"}`,le.event==="response.output_text.delta"&&le.response?(ve++,_e+=le.response,G!==-1&&G<x.value.length&&(x.value[G]={...x.value[G],content:_e},C.value=`⚡ REAL-TIME ${ve}: "${le.response}" (total: ${_e.length} chars)`),i.value&&Rt(i.value)):le.event==="response.completed"&&(le.threadId&&(S.value=le.threadId),le.response&&G!==-1&&G<x.value.length&&(x.value[G]={...x.value[G],content:le.response}),C.value=`🏁 REAL-TIME COMPLETE: Thread ${le.threadId} - ${ve} deltas processed`,N.value=!1,h.value.apiStreamEnd=Date.now(),h.value.ourStreamEnd=Date.now())})}Q.releaseLock()}}catch(Q){C.value=`❌ STREAMING ERROR: ${Q.message}`}h.value.apiStreamEnd=Date.now(),h.value.ourStreamEnd=Date.now(),N.value=!1;return}catch(re){throw C.value=`Service failed: ${(re==null?void 0:re.message)??"Unknown"} (Status: ${(re==null?void 0:re.status)??"N/A"})`,N.value=!1,re}}catch(z){N.value=!1;const G=x.value.findIndex(se=>se.id===V);G!==-1&&(x.value[G]={...x.value[G],content:"Sorry, I encountered an error while processing your message. Please try again."}),(ne=l.value)==null||ne.showErrorBanner(`Failed to send message: ${z instanceof Error?z.message:"Unknown error"}`)}},H=new He({html:!0,linkify:!1,typographer:!0,breaks:!0,highlight:(M,L)=>{let U=M;if(L&&Gd.getLanguage(L))try{U=Gd.highlight(M,{language:L}).value}catch{}else U=H.utils.escapeHtml(M);const V=`code-${Math.random().toString(36).substr(2,9)}`;return`<div class="flex overflow-x-auto flex-col rounded-xl w-fit min-w-[50%] max-w-[100%]">
77
77
  <div class="flex justify-between items-center p-2.5 bg-slate-900">
78
78
  <div class="text-sm text-gray-300">${L||"plaintext"}</div>
79
79
  <div class="flex gap-2 items-center cursor-pointer">