pixelon 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +54 -0
  2. package/dist/App.d.ts +3 -0
  3. package/dist/App.js +6 -0
  4. package/dist/assets/output-BpGRJPjR.css +1 -0
  5. package/dist/assets/output-DGLCW84k.css +1 -0
  6. package/dist/components/atoms/AttachmentPreview/AttachmentPreview.d.ts +8 -0
  7. package/dist/components/atoms/AttachmentPreview/AttachmentPreview.js +44 -0
  8. package/dist/components/atoms/Avatar/Avatar.d.ts +10 -0
  9. package/dist/components/atoms/Avatar/Avatar.js +28 -0
  10. package/dist/components/atoms/Button/Button.d.ts +10 -0
  11. package/dist/components/atoms/Button/Button.js +137 -0
  12. package/dist/components/atoms/DateDivider/DateDivider.d.ts +7 -0
  13. package/dist/components/atoms/DateDivider/DateDivider.js +40 -0
  14. package/dist/components/atoms/DateDivider/index.d.ts +2 -0
  15. package/dist/components/atoms/DateDivider/index.js +1 -0
  16. package/dist/components/atoms/Input/Input.d.ts +10 -0
  17. package/dist/components/atoms/Input/Input.js +111 -0
  18. package/dist/components/atoms/Link/Link.d.ts +14 -0
  19. package/dist/components/atoms/Link/Link.js +16 -0
  20. package/dist/components/atoms/SelectMenu/SelectMenu.d.ts +9 -0
  21. package/dist/components/atoms/SelectMenu/SelectMenu.js +23 -0
  22. package/dist/components/atoms/Text/Text.d.ts +11 -0
  23. package/dist/components/atoms/Text/Text.js +93 -0
  24. package/dist/components/atoms/Textarea/Textarea.d.ts +6 -0
  25. package/dist/components/atoms/Textarea/Textarea.js +5 -0
  26. package/dist/components/atoms/logo/Logo.d.ts +6 -0
  27. package/dist/components/atoms/logo/Logo.js +5 -0
  28. package/dist/components/molecules/chat/AssistantMessage/AssistantMessage.d.ts +7 -0
  29. package/dist/components/molecules/chat/AssistantMessage/AssistantMessage.js +10 -0
  30. package/dist/components/molecules/chat/AssistantThinkingIndicator/AssistantThinkingIndicator.d.ts +3 -0
  31. package/dist/components/molecules/chat/AssistantThinkingIndicator/AssistantThinkingIndicator.js +36 -0
  32. package/dist/components/molecules/chat/ChatHeader/ChatHeader.d.ts +6 -0
  33. package/dist/components/molecules/chat/ChatHeader/ChatHeader.js +6 -0
  34. package/dist/components/molecules/chat/ChatInput/ChatInput.d.ts +17 -0
  35. package/dist/components/molecules/chat/ChatInput/ChatInput.js +56 -0
  36. package/dist/components/molecules/chat/FileViewer/FileViewer.d.ts +7 -0
  37. package/dist/components/molecules/chat/FileViewer/FileViewer.js +41 -0
  38. package/dist/components/molecules/chat/FullscreenViewer/FullscreenViewer.d.ts +10 -0
  39. package/dist/components/molecules/chat/FullscreenViewer/FullscreenViewer.js +65 -0
  40. package/dist/components/molecules/chat/MessageStatus/MessageStatus.d.ts +9 -0
  41. package/dist/components/molecules/chat/MessageStatus/MessageStatus.js +14 -0
  42. package/dist/components/molecules/chat/Modal/Modal.d.ts +12 -0
  43. package/dist/components/molecules/chat/Modal/Modal.js +29 -0
  44. package/dist/components/molecules/chat/UserAttachments/UserAttachments.d.ts +6 -0
  45. package/dist/components/molecules/chat/UserAttachments/UserAttachments.js +8 -0
  46. package/dist/components/molecules/chat/UserMessage/UserMessage.d.ts +11 -0
  47. package/dist/components/molecules/chat/UserMessage/UserMessage.js +8 -0
  48. package/dist/components/organisms/chat/Chat.d.ts +21 -0
  49. package/dist/components/organisms/chat/Chat.js +278 -0
  50. package/dist/components/organisms/chat/index.d.ts +1 -0
  51. package/dist/components/organisms/chat/index.js +1 -0
  52. package/dist/index.d.ts +171 -0
  53. package/dist/index.esm.js +21664 -0
  54. package/dist/index.esm.js.map +1 -0
  55. package/dist/index.js +21666 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/main.d.ts +1 -0
  58. package/dist/main.js +6 -0
  59. package/dist/styles.css +1 -0
  60. package/dist/styles.css.map +1 -0
  61. package/dist/test/setup.d.ts +1 -0
  62. package/dist/test/setup.js +20 -0
  63. package/package.json +95 -0
  64. package/src/styles/_variables.scss +84 -0
  65. package/src/styles/global.scss +58 -0
  66. package/src/styles/index.scss +30 -0
package/README.md ADDED
@@ -0,0 +1,54 @@
1
+ # React + TypeScript + Vite
2
+
3
+ This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4
+
5
+ Currently, two official plugins are available:
6
+
7
+ - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh
8
+ - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
9
+
10
+ ## Expanding the ESLint configuration
11
+
12
+ If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
13
+
14
+ ```js
15
+ export default tseslint.config({
16
+ extends: [
17
+ // Remove ...tseslint.configs.recommended and replace with this
18
+ ...tseslint.configs.recommendedTypeChecked,
19
+ // Alternatively, use this for stricter rules
20
+ ...tseslint.configs.strictTypeChecked,
21
+ // Optionally, add this for stylistic rules
22
+ ...tseslint.configs.stylisticTypeChecked,
23
+ ],
24
+ languageOptions: {
25
+ // other options...
26
+ parserOptions: {
27
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
28
+ tsconfigRootDir: import.meta.dirname,
29
+ },
30
+ },
31
+ })
32
+ ```
33
+
34
+ You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
35
+
36
+ ```js
37
+ // eslint.config.js
38
+ import reactX from 'eslint-plugin-react-x'
39
+ import reactDom from 'eslint-plugin-react-dom'
40
+
41
+ export default tseslint.config({
42
+ plugins: {
43
+ // Add the react-x and react-dom plugins
44
+ 'react-x': reactX,
45
+ 'react-dom': reactDom,
46
+ },
47
+ rules: {
48
+ // other rules...
49
+ // Enable its recommended typescript rules
50
+ ...reactX.configs['recommended-typescript'].rules,
51
+ ...reactDom.configs.recommended.rules,
52
+ },
53
+ })
54
+ ```
package/dist/App.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import './App.css';
2
+ declare function App(): import("react/jsx-runtime").JSX.Element;
3
+ export default App;
package/dist/App.js ADDED
@@ -0,0 +1,6 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import './App.css';
3
+ function App() {
4
+ return (_jsx(_Fragment, { children: "hola" }));
5
+ }
6
+ export default App;
@@ -0,0 +1 @@
1
+ :root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:400;src:url(./files/inter-cyrillic-ext-400-normal.woff2) format("woff2"),url(./files/inter-cyrillic-ext-400-normal.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:400;src:url(./files/inter-cyrillic-400-normal.woff2) format("woff2"),url(./files/inter-cyrillic-400-normal.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:400;src:url(./files/inter-greek-ext-400-normal.woff2) format("woff2"),url(./files/inter-greek-ext-400-normal.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:400;src:url(./files/inter-greek-400-normal.woff2) format("woff2"),url(./files/inter-greek-400-normal.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:400;src:url(./files/inter-vietnamese-400-normal.woff2) format("woff2"),url(./files/inter-vietnamese-400-normal.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:400;src:url(./files/inter-latin-ext-400-normal.woff2) format("woff2"),url(./files/inter-latin-ext-400-normal.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:400;src:url(./files/inter-latin-400-normal.woff2) format("woff2"),url(./files/inter-latin-400-normal.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-text-secondary)}.bg-primary{background-color:var(--color-primary)}.bg-secondary{background-color:var(--color-background-alt)}.transition-all{transition:all .2s ease-in-out}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--border-radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);border:none;border-radius:var(--border-radius-md);font-family:var(--font-family-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all .2s ease-in-out;position:relative}.button--primary{background-color:var(--color-primary);color:var(--color-white)}.button--primary:hover:not(:disabled){opacity:.9}.button--primary:active:not(:disabled){opacity:.8}.button--secondary{background-color:var(--color-background-alt);color:var(--color-text)}.button--secondary:hover:not(:disabled){background-color:var(--color-border)}.button--ghost{background-color:rgba(0,0,0,0);color:var(--color-text)}.button--ghost:hover:not(:disabled){background-color:var(--color-background-alt)}.button--icon{padding:var(--spacing-sm);border-radius:var(--border-radius-full);background-color:rgba(0,0,0,0);color:var(--color-text)}.button--icon:hover:not(:disabled){background-color:var(--color-background-alt)}.button--small{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm)}.button--medium{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base)}.button--large{padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-lg)}.button:disabled{opacity:.5;cursor:not-allowed}.button--full-width{width:100%}.button--loading{cursor:wait}.button--loading .button__text{visibility:hidden}.button__loader{position:absolute;width:16px;height:16px;border:2px solid var(--color-white);border-radius:50%;border-top-color:rgba(0,0,0,0);animation:button-spin .8s linear infinite}.button__icon{display:flex;align-items:center;justify-content:center}@keyframes button-spin{to{transform:rotate(360deg)}}.button--circle{background:var(--color-black) !important;color:var(--color-white);border-radius:50% !important;width:32px !important;height:32px !important;min-width:32px !important;min-height:32px !important;padding:0 !important;display:flex;align-items:center;justify-content:center;box-shadow:none;border:none;transition:background .2s}.button--circle:hover,.button--circle:focus{background:#222 !important}.button--circle .button__icon{color:var(--color-white);display:flex;align-items:center;justify-content:center}.input-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xs)}.input-wrapper--full-width{width:100%}.input-wrapper--error .input{border-color:var(--color-error)}.input-wrapper--error .input:focus{border-color:var(--color-error);box-shadow:0 0 0 2px rgba(239,68,68,.1)}.input-wrapper--chat .input{background-color:var(--color-chat-input-bg);border:1px solid var(--color-chat-input-border);border-radius:var(--border-radius-lg);padding:0 var(--spacing-lg);font-size:var(--font-size-base);line-height:var(--line-height-relaxed);height:40px;min-height:40px;box-sizing:border-box;display:flex;align-items:center}.input-wrapper--chat .input:focus{border-color:var(--color-chat-input-focus);box-shadow:0 0 0 2px rgba(0,0,0,.1)}.input-wrapper__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text)}.input-wrapper__container{position:relative;display:flex;align-items:center}.input-wrapper__icon{position:absolute;left:var(--spacing-md);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary)}.input-wrapper__error{font-size:var(--font-size-sm);color:var(--color-error)}.input{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius-md);transition:all .2s ease-in-out}.input--with-icon{padding-left:calc(var(--spacing-md)*2 + 16px)}.input::placeholder{color:var(--color-text-secondary)}.input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(0,0,0,.1)}.input:disabled{background-color:var(--color-background-alt);cursor:not-allowed}.text{margin:0;font-family:var(--font-family-base)}.text--h1{font-size:var(--font-size-2xl);line-height:var(--line-height-tight);font-weight:var(--font-weight-bold)}.text--h2{font-size:var(--font-size-xl);line-height:var(--line-height-tight);font-weight:var(--font-weight-semibold)}.text--h3{font-size:var(--font-size-lg);line-height:var(--line-height-tight);font-weight:var(--font-weight-semibold)}.text--h4{font-size:var(--font-size-base);line-height:var(--line-height-normal);font-weight:var(--font-weight-semibold)}.text--body{font-size:var(--font-size-base);line-height:var(--line-height-normal)}.text--small{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.text--caption{font-size:var(--font-size-xs);line-height:var(--line-height-normal)}.text--normal{font-weight:var(--font-weight-normal)}.text--medium{font-weight:var(--font-weight-medium)}.text--semibold{font-weight:var(--font-weight-semibold)}.text--bold{font-weight:var(--font-weight-bold)}.text--primary{color:var(--color-text)}.text--secondary{color:var(--color-text-secondary)}.text--inherit{color:inherit}.text--left{text-align:left}.text--center{text-align:center}.text--right{text-align:right}.textarea{width:100%;border:none;outline:none;background:rgba(0,0,0,0);font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);resize:none;min-height:32px;max-height:120px;line-height:1.5;padding:0}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.link{display:inline-flex;align-items:center;gap:.25rem;text-decoration:none;transition:all .2s ease-in-out;font-family:var(--font-family-base);cursor:pointer}.link--primary{color:var(--color-primary)}.link--primary:hover{color:var(--color-primary-dark)}.link--secondary{color:var(--color-secondary)}.link--secondary:hover{color:var(--color-secondary-dark)}.link--accent{color:var(--color-accent)}.link--accent:hover{color:var(--color-accent-dark)}.link--small{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.link--medium{font-size:var(--font-size-base);line-height:var(--line-height-normal)}.link--large{font-size:var(--font-size-lg);line-height:var(--line-height-normal)}.link--normal{font-weight:var(--font-weight-normal)}.link--medium{font-weight:var(--font-weight-medium)}.link--semibold{font-weight:var(--font-weight-semibold)}.link--bold{font-weight:var(--font-weight-bold)}.link--underline{text-decoration:underline;text-decoration-color:currentColor;text-decoration-thickness:1px;text-underline-offset:2px}.link--underline:hover{text-decoration-thickness:2px}.link--external .link__external-icon{opacity:.7;transition:opacity .2s ease-in-out}.link--external:hover .link__external-icon{opacity:1}.link:hover{transform:translateY(-1px)}.link:active{transform:translateY(0)}.link:focus{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:4px}.link__external-icon{flex-shrink:0}.avatar{position:relative;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius-full);overflow:hidden;background-color:var(--color-background-alt)}.avatar--small{width:24px;height:24px;font-size:var(--font-size-xs)}.avatar--medium{width:32px;height:32px;font-size:var(--font-size-sm)}.avatar--large{width:40px;height:40px;font-size:var(--font-size-base)}.avatar--user{background-color:var(--color-primary);color:var(--color-white)}.avatar--assistant{background-color:var(--color-background-alt);color:var(--color-text)}.avatar__image{width:100%;height:100%;object-fit:cover}.avatar__fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-weight:var(--font-weight-medium)}.avatar__assistant-icon{width:60%;height:60%}.avatar__assistant-icon svg{width:100%;height:100%}.avatar--fallback .avatar__fallback{display:flex}.attachment-preview{display:flex;align-items:center;gap:.75rem;padding:.75rem;border:1px solid var(--color-border);border-radius:var(--border-radius-md);background:var(--color-background-secondary);position:relative;transition:all .2s ease;font-family:var(--font-family-base)}.attachment-preview--clickable{cursor:pointer}.attachment-preview--clickable:hover,.attachment-preview--clickable:focus{border-color:#111;outline:none}.attachment-preview__thumb{width:48px;height:48px;object-fit:cover;border-radius:var(--border-radius-sm);flex-shrink:0}.attachment-preview__icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--color-background);border-radius:var(--border-radius-sm);flex-shrink:0}.attachment-preview__pdf-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--color-error);color:#fff;border-radius:var(--border-radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);flex-shrink:0}.attachment-preview__info{flex:1;min-width:0}.attachment-preview__name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:.25rem;word-break:break-word;line-height:1.2}.attachment-preview__type{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.attachment-preview__remove{position:absolute;top:-0.5rem;right:-0.5rem;width:24px;height:24px;min-width:24px;min-height:24px;border:2px solid rgba(0,0,0,0);background:#111;color:#fff;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);transition:all .2s ease;z-index:1;box-sizing:border-box;padding:0}.attachment-preview__remove svg{width:12px;height:12px;display:block}.attachment-preview__remove:hover,.attachment-preview__remove:focus{background:#111;border:2px solid #111;color:#fff;outline:none;transform:scale(1.1)}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.select-menu__backdrop{position:fixed;inset:0;z-index:999;background:rgba(0,0,0,0)}.select-menu{background:var(--color-background, #fff);border-radius:.5rem;box-shadow:0 4px 24px rgba(0,0,0,.12);padding:.5rem 0;min-width:180px;display:flex;flex-direction:column;gap:.25rem}.select-menu__item{background:none;border:none;width:100%;text-align:left;padding:.75rem 1.25rem;font-size:var(--font-size-base);color:var(--color-primary);cursor:pointer;border-radius:.25rem;transition:background .15s;font-family:var(--font-family-base);font-weight:var(--font-weight-medium)}.select-menu__item:hover,.select-menu__item:focus{background:var(--color-background-secondary, #f5f5f5);outline:none}.date-divider{display:flex;align-items:center;justify-content:center;margin:1.5rem 0;padding:0;position:relative}.date-divider::before,.date-divider::after{content:"";flex:1;height:1px;background-color:var(--color-border);max-width:100px}.date-divider::before{margin-right:1rem}.date-divider::after{margin-left:1rem}.date-divider__text{font-family:var(--font-family-base);font-size:.75rem;font-weight:700;color:#6b7280;letter-spacing:.05em;white-space:nowrap}.logo{display:inline-flex;align-items:center;justify-content:center}.logo svg{display:block}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.assistant-message{display:flex;gap:1rem;padding:1rem 0rem 1rem 0rem;width:100%;flex-direction:row;animation:fadeInAndSlideUp .4s cubic-bezier(0.25, 0.1, 0.25, 1) forwards}.assistant-message__content{display:flex;flex-direction:column;gap:.25rem;max-width:100%;min-width:0;box-sizing:border-box;align-items:flex-start}.assistant-message__bubble{padding:0;border-radius:1.25rem;background-color:rgba(0,0,0,0);display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;max-width:420px;min-width:0;word-break:break-word;overflow-wrap:break-word;box-sizing:border-box}.assistant-message__role{font-weight:600;margin-bottom:.25rem;text-transform:capitalize;color:var(--color-secondary)}.assistant-message__markdown{color:var(--color-primary);line-height:var(--line-height-normal);font-family:var(--font-family-base);font-size:var(--font-size-base)}.assistant-message__markdown p{margin:0 0 1rem 0;font-size:var(--font-size-base);line-height:var(--line-height-normal);font-family:var(--font-family-base)}.assistant-message__markdown p:last-child{margin-bottom:0}.assistant-message__markdown h1,.assistant-message__markdown h2,.assistant-message__markdown h3,.assistant-message__markdown h4,.assistant-message__markdown h5,.assistant-message__markdown h6{margin:1.5rem 0 .5rem 0;font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);font-family:var(--font-family-base)}.assistant-message__markdown h1:first-child,.assistant-message__markdown h2:first-child,.assistant-message__markdown h3:first-child,.assistant-message__markdown h4:first-child,.assistant-message__markdown h5:first-child,.assistant-message__markdown h6:first-child{margin-top:0}.assistant-message__markdown h1{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold)}.assistant-message__markdown h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold)}.assistant-message__markdown h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.assistant-message__markdown ul,.assistant-message__markdown ol{margin:.5rem 0;padding-left:1.5rem;font-size:var(--font-size-base);line-height:var(--line-height-normal);font-family:var(--font-family-base)}.assistant-message__markdown li{margin:.25rem 0;font-size:var(--font-size-base);line-height:var(--line-height-normal);font-family:var(--font-family-base)}.assistant-message__markdown code{background-color:var(--color-background-secondary);padding:.125rem .25rem;border-radius:.25rem;font-family:"Monaco","Menlo","Ubuntu Mono",monospace;font-size:var(--font-size-sm)}.assistant-message__markdown pre{background-color:var(--color-background-secondary);padding:1rem;border-radius:.5rem;overflow-x:auto;margin:1rem 0}.assistant-message__markdown pre code{background:none;padding:0;border-radius:0;font-size:var(--font-size-sm)}.assistant-message__markdown strong{font-weight:var(--font-weight-semibold);font-family:var(--font-family-base)}.assistant-message__markdown em{font-style:italic;font-family:var(--font-family-base)}.assistant-message__markdown blockquote{border-left:3px solid var(--color-secondary);padding-left:1rem;margin:1rem 0;font-style:italic;color:var(--color-secondary);font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal)}.assistant-message__markdown table{border-collapse:collapse;width:100%;margin:1rem 0;font-family:var(--font-family-base);font-size:var(--font-size-base)}.assistant-message__markdown th,.assistant-message__markdown td{border:1px solid var(--color-border);padding:.5rem;text-align:left;font-family:var(--font-family-base);font-size:var(--font-size-base)}.assistant-message__markdown th{background-color:var(--color-background-secondary);font-weight:var(--font-weight-semibold)}.assistant-message__timestamp{opacity:.7;text-align:right}@keyframes fadeInAndSlideUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@media(max-width: 700px){.assistant-message__content{max-width:100%}.assistant-message__bubble{max-width:95vw}}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.assistant-thinking-indicator{display:flex;gap:1rem;padding:1rem 0rem 0rem 0rem;width:100%;flex-direction:row}.assistant-thinking-indicator__content{display:flex;flex-direction:column;gap:.25rem;max-width:100%;min-width:0;box-sizing:border-box;align-items:flex-start}.assistant-thinking-indicator__bubble{border-radius:1.25rem;background-color:var(--color-background-secondary);display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;max-width:420px;min-width:0;overflow-wrap:break-word;box-sizing:border-box}.assistant-thinking-indicator__role{font-weight:600;margin-bottom:.25rem;text-transform:capitalize;color:var(--color-secondary)}.assistant-thinking-indicator__text-container{display:flex;align-items:center}.assistant-thinking-indicator__wave-text span{display:inline-block;animation:pulse-animation 1.8s ease-in-out infinite}@keyframes pulse-animation{0%,100%{opacity:1}50%{opacity:.4}}@media(max-width: 700px){.assistant-thinking-indicator__bubble{max-width:95vw}}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.chat-header{display:flex;align-items:center;justify-content:center;padding:.75rem;background-color:var(--color-background)}.chat-header__content{display:flex;align-items:center;gap:.3rem}.chat-header__logo{flex-shrink:0}.chat-header__title{margin:0;font-family:var(--font-family-base);font-size:1.125rem;font-weight:600;color:var(--color-text)}.chat__input{padding:1rem 1.5rem;background:none;border-top:none;box-shadow:none;width:100vw;max-width:100vw;box-sizing:border-box}.chat__input-stack{display:flex;flex-direction:column;gap:.5rem;background:var(--color-chat-input-bg);border:1px solid var(--color-chat-input-border);border-radius:var(--border-radius-lg);padding:.5rem 1rem .5rem 1rem}.chat__textarea{width:100%;border:none;outline:none;background:rgba(0,0,0,0);font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);resize:none;min-height:32px;max-height:120px;line-height:1.5;padding:0}.chat__actions{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.chat__actions-left{display:flex;align-items:center;gap:.5rem}.chat__actions-right{display:flex;align-items:center;gap:.5rem}.chat__icon-btn{background:none;border:none;padding:0;margin:0 .25rem 0 0;border-radius:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);cursor:pointer;transition:color .2s}.chat__icon-btn:last-child{margin-right:0}.chat__icon-btn:hover,.chat__icon-btn:focus{background:none;color:var(--color-primary)}.chat__attachments{display:flex;flex-direction:row;gap:12px;overflow-x:auto;padding:8px 0 4px 0;margin-bottom:0;scrollbar-width:none;scrollbar-color:var(--color-border) var(--color-background-secondary);width:100%;max-width:100%;white-space:nowrap}.chat__attachments::-webkit-scrollbar{display:none}.chat__attachments::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.chat__attachments::-webkit-scrollbar-track{background:var(--color-background-secondary);border-radius:4px}.chat__attachments>*{flex-shrink:0}.chat__attachments-wrapper{position:relative;padding-bottom:22px}.chat__attachments-count{position:absolute;right:0;bottom:0;color:var(--color-text-secondary, #888);font-size:var(--font-size-xs);padding:0;background:none;border-radius:0;box-shadow:none;pointer-events:none;z-index:3;font-family:var(--font-family-base);font-weight:var(--font-weight-medium)}.file-viewer__grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(120px, 1fr));gap:.75rem;margin-bottom:1rem}.file-viewer__item{cursor:pointer;border-radius:var(--border-radius-md);overflow:hidden;transition:all .2s ease;border:1px solid var(--color-border)}.file-viewer__item:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-primary)}.file-viewer__item:focus{outline:2px solid var(--color-primary);outline-offset:2px}.file-viewer__image-container{position:relative;aspect-ratio:1;overflow:hidden}.file-viewer__image-container:hover .file-viewer__overlay{opacity:1}.file-viewer__image{width:100%;height:100%;object-fit:cover;transition:transform .2s ease}.file-viewer__item:hover .file-viewer__image{transform:scale(1.05)}.file-viewer__overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;color:#fff}.file-viewer__file-container{padding:1rem;text-align:center;background:var(--color-background-secondary);min-height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem}.file-viewer__file-icon{color:var(--color-text-secondary);display:flex;flex-direction:column;align-items:center;gap:.25rem}.file-viewer__pdf-icon{display:flex;flex-direction:column;align-items:center;gap:.25rem}.file-viewer__pdf-icon span{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-error)}.file-viewer__file-info{text-align:center}.file-viewer__file-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:.25rem;word-break:break-word;line-height:1.2}.file-viewer__file-type{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.file-viewer__navigation{position:fixed;bottom:2rem;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:1rem;background:rgba(0,0,0,.8);padding:.75rem 1.5rem;border-radius:var(--border-radius-lg);z-index:1001}.file-viewer__nav-btn{background:rgba(0,0,0,0);border:none;color:#fff;padding:.5rem;border-radius:var(--border-radius-sm);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.file-viewer__nav-btn:hover{background:hsla(0,0%,100%,.1)}.file-viewer__nav-btn:focus{outline:2px solid #fff;outline-offset:2px}.file-viewer__counter{color:#fff;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);min-width:60px;text-align:center}.fullscreen-viewer{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0;width:100vw;height:100vh;background:var(--color-background);position:relative;font-family:var(--font-family-base)}.fullscreen-viewer__image-container{position:absolute;top:0;left:0;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-background);z-index:1}.fullscreen-viewer__image{max-width:100vw;max-height:100vh;width:100vw;height:100vh;object-fit:contain;border-radius:0;opacity:0;transition:opacity .3s ease;background:var(--color-background)}.fullscreen-viewer__image--loaded{opacity:1}.fullscreen-viewer__loading,.fullscreen-viewer__error{position:absolute;left:0;right:0;top:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--color-text-secondary);gap:1rem;background:var(--color-background);z-index:2}.fullscreen-viewer__video-container{width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:center;background:var(--color-background)}.fullscreen-viewer__video{max-width:100vw;max-height:100%;border-radius:0;background:var(--color-background)}.fullscreen-viewer__file-container{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2rem;padding:2rem;width:100vw;height:100vh;background:var(--color-background)}.fullscreen-viewer__file-icon{color:var(--color-text-secondary);display:flex;flex-direction:column;align-items:center;gap:.5rem}.fullscreen-viewer__pdf-icon{display:flex;flex-direction:column;align-items:center;gap:.5rem}.fullscreen-viewer__pdf-icon span{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-error)}.fullscreen-viewer__file-info{display:flex;flex-direction:column;align-items:center;gap:1rem}.fullscreen-viewer__file-name{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);word-break:break-word;max-width:400px}.fullscreen-viewer__file-details{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.fullscreen-viewer__download-btn{margin-top:1rem}.fullscreen-viewer__arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:10;background:var(--color-background);box-shadow:0 2px 8px rgba(0,0,0,.1);opacity:.95;transition:background .2s,box-shadow .2s;border:none;outline:none}.fullscreen-viewer__arrow:hover,.fullscreen-viewer__arrow:focus{background:var(--color-background-hover, #f0f0f0);box-shadow:0 4px 12px rgba(0,0,0,.15)}.fullscreen-viewer__arrow--left{left:2rem}.fullscreen-viewer__arrow--right{right:2rem}.fullscreen-viewer__counter{position:absolute;bottom:3.5rem;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.7);color:#fff;padding:.5rem 1rem;border-radius:1rem;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);z-index:10;pointer-events:none}.fullscreen-viewer__floating-header{position:absolute;top:0;left:0;width:100vw;display:flex;align-items:flex-start;justify-content:flex-start;padding:1.2rem 0 0 1.5rem;background:rgba(0,0,0,0);z-index:20;box-shadow:none;backdrop-filter:none}.fullscreen-viewer__floating-title{color:#fff;font-size:1.15rem;font-weight:600;text-shadow:0 1px 4px rgba(0,0,0,.25);max-width:80vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:3.5rem}.fullscreen-viewer__floating-close{position:absolute;top:1.2rem;right:2.5rem;background:#111;border:none;border-radius:50%;padding:.12rem;width:32px;height:32px;min-width:32px;min-height:32px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,border .2s;box-shadow:0 2px 8px rgba(0,0,0,.1);border:2px solid rgba(0,0,0,0);z-index:30}.fullscreen-viewer__floating-close:hover,.fullscreen-viewer__floating-close:focus{background:#fff;border:2px solid #111}.fullscreen-viewer__floating-close svg{width:18px;height:18px;stroke:#fff;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;display:block}.fullscreen-viewer__floating-close:hover svg,.fullscreen-viewer__floating-close:focus svg{stroke:#111}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.message-status{display:inline-block}.message-status--failed{color:#ff3b30 !important}.message-status__retry{text-decoration:underline;cursor:pointer;color:#ff3b30;font-weight:600}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:1000;padding:0;width:100vw;height:100vh}.modal{background:var(--color-background);border-radius:0;box-shadow:var(--shadow-xl);max-width:100vw;max-height:100vh;width:100vw;height:100vh;display:flex;flex-direction:column;overflow:hidden;animation:modalFadeIn .2s ease-out;font-family:var(--font-family-base)}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:var(--color-background-secondary);flex-shrink:0}.modal__title{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.modal__close-btn{background:rgba(0,0,0,0);border:none;color:var(--color-text-secondary);padding:.5rem;border-radius:var(--border-radius-sm);cursor:pointer;transition:all .2s ease}.modal__close-btn:hover{background:var(--color-background-hover);color:var(--color-text-primary)}.modal__content{flex:1;min-height:0;overflow:hidden;padding:0;display:flex;align-items:center;justify-content:center;height:100%;width:100%}@keyframes modalFadeIn{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}.user-attachments{display:flex;flex-direction:row;gap:12px;overflow-x:auto;padding:0 0 4px 0;margin-bottom:.5rem;scrollbar-width:none;width:100%;max-width:100%;white-space:nowrap}.user-attachments::-webkit-scrollbar{display:none}.user-attachments>*{flex-shrink:0}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.user-message{display:flex;gap:1rem;padding:1rem 0rem 1rem 0rem;width:100%;flex-direction:row-reverse;font-family:var(--font-family-base)}.user-message__content{display:flex;flex-direction:column;gap:.25rem;max-width:100%;min-width:0;box-sizing:border-box;align-items:flex-end}.user-message__bubble{padding:1rem 1.5rem;border-radius:1.5rem 1.5rem .5rem 1.5rem;background:#f5f6fa;display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;max-width:420px;min-width:0;word-break:break-word;overflow-wrap:break-word;box-sizing:border-box;color:#23272f;font-family:var(--font-family-base)}.user-message__role{font-weight:600;margin-bottom:.25rem;text-transform:capitalize}.user-message__meta{display:flex;align-items:center;justify-content:flex-end;gap:.5rem}.user-message__timestamp{opacity:.7;text-align:right}@media(max-width: 700px){.user-message__content{max-width:100%}.user-message__bubble{max-width:95vw}}.chat-layout{display:grid;grid-template-rows:auto 1fr auto;grid-template-areas:"header" "main" "footer";height:var(--app-height, 100vh);width:100vw;box-sizing:border-box;background-color:var(--color-background);overflow:hidden;margin:0;max-width:none;max-height:none}.chat-header{grid-area:header;height:25px}.chat-main{grid-area:main;flex-grow:1;overflow-y:auto;padding:0 2rem;display:flex;flex-direction:column;gap:.5rem;width:100%;box-sizing:border-box;position:relative;background-color:var(--color-background);-ms-overflow-style:none;scrollbar-width:none}.chat-main::-webkit-scrollbar{display:none}.chat-footer{grid-area:footer;position:relative}.chat__input{padding:1rem 1.5rem;background:none;border-top:none;box-shadow:none}.chat__input-wrapper{position:relative;width:100%;display:flex;align-items:center}.chat__input-wrapper input,.chat__input-wrapper .input{padding-right:4.5rem !important}.chat__send-btn{position:absolute !important;right:8px;top:50%;transform:translateY(-50%);height:40px;min-width:80px;border-radius:var(--border-radius-lg);z-index:2;margin:0}.chat__input-stack{display:flex;flex-direction:column;gap:.5rem;background:var(--color-chat-input-bg);border:1px solid var(--color-chat-input-border);border-radius:var(--border-radius-lg);padding:.5rem 1rem .5rem 1rem}.chat__textarea{width:100%;border:none;outline:none;background:rgba(0,0,0,0);font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);resize:none;min-height:32px;max-height:120px;line-height:1.5;padding:0}.chat__actions{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.chat__actions-left{display:flex;align-items:center;gap:.5rem}.chat__actions-right{display:flex;align-items:center;gap:.5rem}.chat__icon-btn{background:none;border:none;padding:0;margin:0 .25rem 0 0;border-radius:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);cursor:pointer;transition:color .2s}.chat__icon-btn:last-child{margin-right:0}.chat__icon-btn:hover,.chat__icon-btn:focus{background:none;color:var(--color-primary)}.chat__attachments{display:flex;flex-direction:row;gap:12px;overflow-x:auto;padding:8px 0 4px 0;margin-bottom:0;scrollbar-width:none;scrollbar-color:var(--color-border) var(--color-background-alt);width:100%;max-width:100%;white-space:nowrap}.chat__attachments::-webkit-scrollbar{display:none}.chat__attachments::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.chat__attachments::-webkit-scrollbar-track{background:var(--color-background-alt);border-radius:4px}.chat__attachments>*{flex-shrink:0}.chat__attachments-wrapper{position:relative;padding-bottom:22px}.chat__attachments-count{position:absolute;right:0;bottom:0;color:var(--color-text-secondary, #888);font-size:var(--font-size-xs);padding:0;background:none;border-radius:0;box-shadow:none;pointer-events:none;z-index:3;font-family:var(--font-family-base);font-weight:var(--font-weight-medium)}.chat__scroll-to-bottom{position:absolute;left:50%;transform:translateX(-50%);top:-3rem;z-index:10;box-shadow:0 2px 8px rgba(0,0,0,.1);background:var(--color-background);transition:opacity .2s,transform .2s;opacity:.95}@media(max-width: 700px){.chat-layout{max-width:100vw;width:100vw;border-radius:0}.chat-main,.chat__input{padding-left:1rem;padding-right:1rem}.chat__scroll-to-bottom{left:50%;transform:translateX(-50%);top:-2.5rem}}.chat__scroll-to-bottom .button__icon{display:flex;align-items:center;justify-content:center;transform:rotate(180deg)}
@@ -0,0 +1 @@
1
+ :root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-text-secondary)}.bg-primary{background-color:var(--color-primary)}.bg-secondary{background-color:var(--color-background-alt)}.transition-all{transition:all .2s ease-in-out}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--border-radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);border:none;border-radius:var(--border-radius-md);font-family:var(--font-family-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all .2s ease-in-out;position:relative}.button--primary{background-color:var(--color-primary);color:var(--color-white)}.button--primary:hover:not(:disabled){opacity:.9}.button--primary:active:not(:disabled){opacity:.8}.button--secondary{background-color:var(--color-background-alt);color:var(--color-text)}.button--secondary:hover:not(:disabled){background-color:var(--color-border)}.button--ghost{background-color:rgba(0,0,0,0);color:var(--color-text)}.button--ghost:hover:not(:disabled){background-color:var(--color-background-alt)}.button--icon{padding:var(--spacing-sm);border-radius:var(--border-radius-full);background-color:rgba(0,0,0,0);color:var(--color-text)}.button--icon:hover:not(:disabled){background-color:var(--color-background-alt)}.button--small{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm)}.button--medium{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base)}.button--large{padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-lg)}.button:disabled{opacity:.5;cursor:not-allowed}.button--full-width{width:100%}.button--loading{cursor:wait}.button--loading .button__text{visibility:hidden}.button__loader{position:absolute;width:16px;height:16px;border:2px solid var(--color-white);border-radius:50%;border-top-color:rgba(0,0,0,0);animation:button-spin .8s linear infinite}.button__icon{display:flex;align-items:center;justify-content:center}@keyframes button-spin{to{transform:rotate(360deg)}}.button--circle{background:var(--color-black) !important;color:var(--color-white);border-radius:50% !important;width:32px !important;height:32px !important;min-width:32px !important;min-height:32px !important;padding:0 !important;display:flex;align-items:center;justify-content:center;box-shadow:none;border:none;transition:background .2s}.button--circle:hover,.button--circle:focus{background:#222 !important}.button--circle .button__icon{color:var(--color-white);display:flex;align-items:center;justify-content:center}.input-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xs)}.input-wrapper--full-width{width:100%}.input-wrapper--error .input{border-color:var(--color-error)}.input-wrapper--error .input:focus{border-color:var(--color-error);box-shadow:0 0 0 2px rgba(239,68,68,.1)}.input-wrapper--chat .input{background-color:var(--color-chat-input-bg);border:1px solid var(--color-chat-input-border);border-radius:var(--border-radius-lg);padding:0 var(--spacing-lg);font-size:var(--font-size-base);line-height:var(--line-height-relaxed);height:40px;min-height:40px;box-sizing:border-box;display:flex;align-items:center}.input-wrapper--chat .input:focus{border-color:var(--color-chat-input-focus);box-shadow:0 0 0 2px rgba(0,0,0,.1)}.input-wrapper__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text)}.input-wrapper__container{position:relative;display:flex;align-items:center}.input-wrapper__icon{position:absolute;left:var(--spacing-md);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary)}.input-wrapper__error{font-size:var(--font-size-sm);color:var(--color-error)}.input{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius-md);transition:all .2s ease-in-out}.input--with-icon{padding-left:calc(var(--spacing-md)*2 + 16px)}.input::placeholder{color:var(--color-text-secondary)}.input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(0,0,0,.1)}.input:disabled{background-color:var(--color-background-alt);cursor:not-allowed}.text{margin:0;font-family:var(--font-family-base)}.text--h1{font-size:var(--font-size-2xl);line-height:var(--line-height-tight);font-weight:var(--font-weight-bold)}.text--h2{font-size:var(--font-size-xl);line-height:var(--line-height-tight);font-weight:var(--font-weight-semibold)}.text--h3{font-size:var(--font-size-lg);line-height:var(--line-height-tight);font-weight:var(--font-weight-semibold)}.text--h4{font-size:var(--font-size-base);line-height:var(--line-height-normal);font-weight:var(--font-weight-semibold)}.text--body{font-size:var(--font-size-base);line-height:var(--line-height-normal)}.text--small{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.text--caption{font-size:var(--font-size-xs);line-height:var(--line-height-normal)}.text--normal{font-weight:var(--font-weight-normal)}.text--medium{font-weight:var(--font-weight-medium)}.text--semibold{font-weight:var(--font-weight-semibold)}.text--bold{font-weight:var(--font-weight-bold)}.text--primary{color:var(--color-text)}.text--secondary{color:var(--color-text-secondary)}.text--inherit{color:inherit}.text--left{text-align:left}.text--center{text-align:center}.text--right{text-align:right}.textarea{width:100%;border:none;outline:none;background:rgba(0,0,0,0);font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);resize:none;min-height:32px;max-height:120px;line-height:1.5;padding:0}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.link{display:inline-flex;align-items:center;gap:.25rem;text-decoration:none;transition:all .2s ease-in-out;font-family:var(--font-family-base);cursor:pointer}.link--primary{color:var(--color-primary)}.link--primary:hover{color:var(--color-primary-dark)}.link--secondary{color:var(--color-secondary)}.link--secondary:hover{color:var(--color-secondary-dark)}.link--accent{color:var(--color-accent)}.link--accent:hover{color:var(--color-accent-dark)}.link--small{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.link--medium{font-size:var(--font-size-base);line-height:var(--line-height-normal)}.link--large{font-size:var(--font-size-lg);line-height:var(--line-height-normal)}.link--normal{font-weight:var(--font-weight-normal)}.link--medium{font-weight:var(--font-weight-medium)}.link--semibold{font-weight:var(--font-weight-semibold)}.link--bold{font-weight:var(--font-weight-bold)}.link--underline{text-decoration:underline;text-decoration-color:currentColor;text-decoration-thickness:1px;text-underline-offset:2px}.link--underline:hover{text-decoration-thickness:2px}.link--external .link__external-icon{opacity:.7;transition:opacity .2s ease-in-out}.link--external:hover .link__external-icon{opacity:1}.link:hover{transform:translateY(-1px)}.link:active{transform:translateY(0)}.link:focus{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:4px}.link__external-icon{flex-shrink:0}.avatar{position:relative;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius-full);overflow:hidden;background-color:var(--color-background-alt)}.avatar--small{width:24px;height:24px;font-size:var(--font-size-xs)}.avatar--medium{width:32px;height:32px;font-size:var(--font-size-sm)}.avatar--large{width:40px;height:40px;font-size:var(--font-size-base)}.avatar--user{background-color:var(--color-primary);color:var(--color-white)}.avatar--assistant{background-color:var(--color-background-alt);color:var(--color-text)}.avatar__image{width:100%;height:100%;object-fit:cover}.avatar__fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-weight:var(--font-weight-medium)}.avatar__assistant-icon{width:60%;height:60%}.avatar__assistant-icon svg{width:100%;height:100%}.avatar--fallback .avatar__fallback{display:flex}.attachment-preview{display:flex;align-items:center;gap:.75rem;padding:.75rem;border:1px solid var(--color-border);border-radius:var(--border-radius-md);background:var(--color-background-secondary);position:relative;transition:all .2s ease;font-family:var(--font-family-base)}.attachment-preview--clickable{cursor:pointer}.attachment-preview--clickable:hover,.attachment-preview--clickable:focus{border-color:#111;outline:none}.attachment-preview__thumb{width:48px;height:48px;object-fit:cover;border-radius:var(--border-radius-sm);flex-shrink:0}.attachment-preview__icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--color-background);border-radius:var(--border-radius-sm);flex-shrink:0}.attachment-preview__pdf-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--color-error);color:#fff;border-radius:var(--border-radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);flex-shrink:0}.attachment-preview__info{flex:1;min-width:0}.attachment-preview__name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:.25rem;word-break:break-word;line-height:1.2}.attachment-preview__type{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.attachment-preview__remove{position:absolute;top:-0.5rem;right:-0.5rem;width:24px;height:24px;min-width:24px;min-height:24px;border:2px solid rgba(0,0,0,0);background:#111;color:#fff;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);transition:all .2s ease;z-index:1;box-sizing:border-box;padding:0}.attachment-preview__remove svg{width:12px;height:12px;display:block}.attachment-preview__remove:hover,.attachment-preview__remove:focus{background:#111;border:2px solid #111;color:#fff;outline:none;transform:scale(1.1)}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.select-menu__backdrop{position:fixed;inset:0;z-index:999;background:rgba(0,0,0,0)}.select-menu{background:var(--color-background, #fff);border-radius:.5rem;box-shadow:0 4px 24px rgba(0,0,0,.12);padding:.5rem 0;min-width:180px;display:flex;flex-direction:column;gap:.25rem}.select-menu__item{background:none;border:none;width:100%;text-align:left;padding:.75rem 1.25rem;font-size:var(--font-size-base);color:var(--color-primary);cursor:pointer;border-radius:.25rem;transition:background .15s;font-family:var(--font-family-base);font-weight:var(--font-weight-medium)}.select-menu__item:hover,.select-menu__item:focus{background:var(--color-background-secondary, #f5f5f5);outline:none}.date-divider{display:flex;align-items:center;justify-content:center;margin:1.5rem 0;padding:0;position:relative}.date-divider::before,.date-divider::after{content:"";flex:1;height:1px;background-color:var(--color-border);max-width:100px}.date-divider::before{margin-right:1rem}.date-divider::after{margin-left:1rem}.date-divider__text{font-family:var(--font-family-base);font-size:.75rem;font-weight:700;color:#6b7280;letter-spacing:.05em;white-space:nowrap}.logo{display:inline-flex;align-items:center;justify-content:center}.logo svg{display:block}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.assistant-message{display:flex;gap:1rem;padding:1rem 0rem 1rem 0rem;width:100%;flex-direction:row;animation:fadeInAndSlideUp .4s cubic-bezier(0.25, 0.1, 0.25, 1) forwards}.assistant-message__content{display:flex;flex-direction:column;gap:.25rem;max-width:100%;min-width:0;box-sizing:border-box;align-items:flex-start}.assistant-message__bubble{padding:0;border-radius:1.25rem;background-color:rgba(0,0,0,0);display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;max-width:420px;min-width:0;word-break:break-word;overflow-wrap:break-word;box-sizing:border-box}.assistant-message__role{font-weight:600;margin-bottom:.25rem;text-transform:capitalize;color:var(--color-secondary)}.assistant-message__markdown{color:var(--color-primary);line-height:var(--line-height-normal);font-family:var(--font-family-base);font-size:var(--font-size-base)}.assistant-message__markdown p{margin:0 0 1rem 0;font-size:var(--font-size-base);line-height:var(--line-height-normal);font-family:var(--font-family-base)}.assistant-message__markdown p:last-child{margin-bottom:0}.assistant-message__markdown h1,.assistant-message__markdown h2,.assistant-message__markdown h3,.assistant-message__markdown h4,.assistant-message__markdown h5,.assistant-message__markdown h6{margin:1.5rem 0 .5rem 0;font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);font-family:var(--font-family-base)}.assistant-message__markdown h1:first-child,.assistant-message__markdown h2:first-child,.assistant-message__markdown h3:first-child,.assistant-message__markdown h4:first-child,.assistant-message__markdown h5:first-child,.assistant-message__markdown h6:first-child{margin-top:0}.assistant-message__markdown h1{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold)}.assistant-message__markdown h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold)}.assistant-message__markdown h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.assistant-message__markdown ul,.assistant-message__markdown ol{margin:.5rem 0;padding-left:1.5rem;font-size:var(--font-size-base);line-height:var(--line-height-normal);font-family:var(--font-family-base)}.assistant-message__markdown li{margin:.25rem 0;font-size:var(--font-size-base);line-height:var(--line-height-normal);font-family:var(--font-family-base)}.assistant-message__markdown code{background-color:var(--color-background-secondary);padding:.125rem .25rem;border-radius:.25rem;font-family:"Monaco","Menlo","Ubuntu Mono",monospace;font-size:var(--font-size-sm)}.assistant-message__markdown pre{background-color:var(--color-background-secondary);padding:1rem;border-radius:.5rem;overflow-x:auto;margin:1rem 0}.assistant-message__markdown pre code{background:none;padding:0;border-radius:0;font-size:var(--font-size-sm)}.assistant-message__markdown strong{font-weight:var(--font-weight-semibold);font-family:var(--font-family-base)}.assistant-message__markdown em{font-style:italic;font-family:var(--font-family-base)}.assistant-message__markdown blockquote{border-left:3px solid var(--color-secondary);padding-left:1rem;margin:1rem 0;font-style:italic;color:var(--color-secondary);font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal)}.assistant-message__markdown table{border-collapse:collapse;width:100%;margin:1rem 0;font-family:var(--font-family-base);font-size:var(--font-size-base)}.assistant-message__markdown th,.assistant-message__markdown td{border:1px solid var(--color-border);padding:.5rem;text-align:left;font-family:var(--font-family-base);font-size:var(--font-size-base)}.assistant-message__markdown th{background-color:var(--color-background-secondary);font-weight:var(--font-weight-semibold)}.assistant-message__timestamp{opacity:.7;text-align:right}@keyframes fadeInAndSlideUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@media(max-width: 700px){.assistant-message__content{max-width:100%}.assistant-message__bubble{max-width:95vw}}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.assistant-thinking-indicator{display:flex;gap:1rem;padding:1rem 0rem 0rem 0rem;width:100%;flex-direction:row}.assistant-thinking-indicator__content{display:flex;flex-direction:column;gap:.25rem;max-width:100%;min-width:0;box-sizing:border-box;align-items:flex-start}.assistant-thinking-indicator__bubble{border-radius:1.25rem;background-color:var(--color-background-secondary);display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;max-width:420px;min-width:0;overflow-wrap:break-word;box-sizing:border-box}.assistant-thinking-indicator__role{font-weight:600;margin-bottom:.25rem;text-transform:capitalize;color:var(--color-secondary)}.assistant-thinking-indicator__text-container{display:flex;align-items:center}.assistant-thinking-indicator__wave-text span{display:inline-block;animation:pulse-animation 1.8s ease-in-out infinite}@keyframes pulse-animation{0%,100%{opacity:1}50%{opacity:.4}}@media(max-width: 700px){.assistant-thinking-indicator__bubble{max-width:95vw}}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.chat-header{display:flex;align-items:center;justify-content:center;padding:.75rem;background-color:var(--color-background)}.chat-header__content{display:flex;align-items:center;gap:.3rem}.chat-header__logo{flex-shrink:0}.chat-header__title{margin:0;font-family:var(--font-family-base);font-size:1.125rem;font-weight:600;color:var(--color-text)}.chat__input{padding:1rem 1.5rem;background:none;border-top:none;box-shadow:none;width:100vw;max-width:100vw;box-sizing:border-box}.chat__input-stack{display:flex;flex-direction:column;gap:.5rem;background:var(--color-chat-input-bg);border:1px solid var(--color-chat-input-border);border-radius:var(--border-radius-lg);padding:.5rem 1rem .5rem 1rem}.chat__textarea{width:100%;border:none;outline:none;background:rgba(0,0,0,0);font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);resize:none;min-height:32px;max-height:120px;line-height:1.5;padding:0}.chat__actions{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.chat__actions-left{display:flex;align-items:center;gap:.5rem}.chat__actions-right{display:flex;align-items:center;gap:.5rem}.chat__icon-btn{background:none;border:none;padding:0;margin:0 .25rem 0 0;border-radius:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);cursor:pointer;transition:color .2s}.chat__icon-btn:last-child{margin-right:0}.chat__icon-btn:hover,.chat__icon-btn:focus{background:none;color:var(--color-primary)}.chat__attachments{display:flex;flex-direction:row;gap:12px;overflow-x:auto;padding:8px 0 4px 0;margin-bottom:0;scrollbar-width:none;scrollbar-color:var(--color-border) var(--color-background-secondary);width:100%;max-width:100%;white-space:nowrap}.chat__attachments::-webkit-scrollbar{display:none}.chat__attachments::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.chat__attachments::-webkit-scrollbar-track{background:var(--color-background-secondary);border-radius:4px}.chat__attachments>*{flex-shrink:0}.chat__attachments-wrapper{position:relative;padding-bottom:22px}.chat__attachments-count{position:absolute;right:0;bottom:0;color:var(--color-text-secondary, #888);font-size:var(--font-size-xs);padding:0;background:none;border-radius:0;box-shadow:none;pointer-events:none;z-index:3;font-family:var(--font-family-base);font-weight:var(--font-weight-medium)}.file-viewer__grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(120px, 1fr));gap:.75rem;margin-bottom:1rem}.file-viewer__item{cursor:pointer;border-radius:var(--border-radius-md);overflow:hidden;transition:all .2s ease;border:1px solid var(--color-border)}.file-viewer__item:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-primary)}.file-viewer__item:focus{outline:2px solid var(--color-primary);outline-offset:2px}.file-viewer__image-container{position:relative;aspect-ratio:1;overflow:hidden}.file-viewer__image-container:hover .file-viewer__overlay{opacity:1}.file-viewer__image{width:100%;height:100%;object-fit:cover;transition:transform .2s ease}.file-viewer__item:hover .file-viewer__image{transform:scale(1.05)}.file-viewer__overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;color:#fff}.file-viewer__file-container{padding:1rem;text-align:center;background:var(--color-background-secondary);min-height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem}.file-viewer__file-icon{color:var(--color-text-secondary);display:flex;flex-direction:column;align-items:center;gap:.25rem}.file-viewer__pdf-icon{display:flex;flex-direction:column;align-items:center;gap:.25rem}.file-viewer__pdf-icon span{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-error)}.file-viewer__file-info{text-align:center}.file-viewer__file-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:.25rem;word-break:break-word;line-height:1.2}.file-viewer__file-type{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.file-viewer__navigation{position:fixed;bottom:2rem;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:1rem;background:rgba(0,0,0,.8);padding:.75rem 1.5rem;border-radius:var(--border-radius-lg);z-index:1001}.file-viewer__nav-btn{background:rgba(0,0,0,0);border:none;color:#fff;padding:.5rem;border-radius:var(--border-radius-sm);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.file-viewer__nav-btn:hover{background:hsla(0,0%,100%,.1)}.file-viewer__nav-btn:focus{outline:2px solid #fff;outline-offset:2px}.file-viewer__counter{color:#fff;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);min-width:60px;text-align:center}.fullscreen-viewer{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0;width:100vw;height:100vh;background:var(--color-background);position:relative;font-family:var(--font-family-base)}.fullscreen-viewer__image-container{position:absolute;top:0;left:0;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-background);z-index:1}.fullscreen-viewer__image{max-width:100vw;max-height:100vh;width:100vw;height:100vh;object-fit:contain;border-radius:0;opacity:0;transition:opacity .3s ease;background:var(--color-background)}.fullscreen-viewer__image--loaded{opacity:1}.fullscreen-viewer__loading,.fullscreen-viewer__error{position:absolute;left:0;right:0;top:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--color-text-secondary);gap:1rem;background:var(--color-background);z-index:2}.fullscreen-viewer__video-container{width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:center;background:var(--color-background)}.fullscreen-viewer__video{max-width:100vw;max-height:100%;border-radius:0;background:var(--color-background)}.fullscreen-viewer__file-container{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2rem;padding:2rem;width:100vw;height:100vh;background:var(--color-background)}.fullscreen-viewer__file-icon{color:var(--color-text-secondary);display:flex;flex-direction:column;align-items:center;gap:.5rem}.fullscreen-viewer__pdf-icon{display:flex;flex-direction:column;align-items:center;gap:.5rem}.fullscreen-viewer__pdf-icon span{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-error)}.fullscreen-viewer__file-info{display:flex;flex-direction:column;align-items:center;gap:1rem}.fullscreen-viewer__file-name{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);word-break:break-word;max-width:400px}.fullscreen-viewer__file-details{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.fullscreen-viewer__download-btn{margin-top:1rem}.fullscreen-viewer__arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:10;background:var(--color-background);box-shadow:0 2px 8px rgba(0,0,0,.1);opacity:.95;transition:background .2s,box-shadow .2s;border:none;outline:none}.fullscreen-viewer__arrow:hover,.fullscreen-viewer__arrow:focus{background:var(--color-background-hover, #f0f0f0);box-shadow:0 4px 12px rgba(0,0,0,.15)}.fullscreen-viewer__arrow--left{left:2rem}.fullscreen-viewer__arrow--right{right:2rem}.fullscreen-viewer__counter{position:absolute;bottom:3.5rem;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.7);color:#fff;padding:.5rem 1rem;border-radius:1rem;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);z-index:10;pointer-events:none}.fullscreen-viewer__floating-header{position:absolute;top:0;left:0;width:100vw;display:flex;align-items:flex-start;justify-content:flex-start;padding:1.2rem 0 0 1.5rem;background:rgba(0,0,0,0);z-index:20;box-shadow:none;backdrop-filter:none}.fullscreen-viewer__floating-title{color:#fff;font-size:1.15rem;font-weight:600;text-shadow:0 1px 4px rgba(0,0,0,.25);max-width:80vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:3.5rem}.fullscreen-viewer__floating-close{position:absolute;top:1.2rem;right:2.5rem;background:#111;border:none;border-radius:50%;padding:.12rem;width:32px;height:32px;min-width:32px;min-height:32px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,border .2s;box-shadow:0 2px 8px rgba(0,0,0,.1);border:2px solid rgba(0,0,0,0);z-index:30}.fullscreen-viewer__floating-close:hover,.fullscreen-viewer__floating-close:focus{background:#fff;border:2px solid #111}.fullscreen-viewer__floating-close svg{width:18px;height:18px;stroke:#fff;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;display:block}.fullscreen-viewer__floating-close:hover svg,.fullscreen-viewer__floating-close:focus svg{stroke:#111}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.message-status{display:inline-block}.message-status--failed{color:#ff3b30 !important}.message-status__retry{text-decoration:underline;cursor:pointer;color:#ff3b30;font-weight:600}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:1000;padding:0;width:100vw;height:100vh}.modal{background:var(--color-background);border-radius:0;box-shadow:var(--shadow-xl);max-width:100vw;max-height:100vh;width:100vw;height:100vh;display:flex;flex-direction:column;overflow:hidden;animation:modalFadeIn .2s ease-out;font-family:var(--font-family-base)}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:var(--color-background-secondary);flex-shrink:0}.modal__title{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.modal__close-btn{background:rgba(0,0,0,0);border:none;color:var(--color-text-secondary);padding:.5rem;border-radius:var(--border-radius-sm);cursor:pointer;transition:all .2s ease}.modal__close-btn:hover{background:var(--color-background-hover);color:var(--color-text-primary)}.modal__content{flex:1;min-height:0;overflow:hidden;padding:0;display:flex;align-items:center;justify-content:center;height:100%;width:100%}@keyframes modalFadeIn{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}.user-attachments{display:flex;flex-direction:row;gap:12px;overflow-x:auto;padding:0 0 4px 0;margin-bottom:.5rem;scrollbar-width:none;width:100%;max-width:100%;white-space:nowrap}.user-attachments::-webkit-scrollbar{display:none}.user-attachments>*{flex-shrink:0}:root{--color-black: #000000;--color-white: #FFFFFF;--color-primary: var(--color-black);--color-secondary: #343541;--color-background: #FFFFFF;--color-background-alt: #F7F7F8;--color-text: #2D2D2D;--color-text-secondary: #6B7280;--color-text-inverse: #FFFFFF;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--color-chat-user-bg: #F7F7F8;--color-chat-assistant-bg: #FFFFFF;--color-chat-border: #E5E7EB;--color-chat-input-bg: #FFFFFF;--color-chat-input-border: #E5E7EB;--color-chat-input-focus: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);--spacing-xs: 0.25rem;--spacing-sm: 0.5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius-sm: 0.25rem;--border-radius-md: 0.375rem;--border-radius-lg: 0.5rem;--border-radius-full: 9999px;--font-family-base: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-size-xs: 0.75rem;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}[data-theme=dark]{--color-background: #343541;--color-background-alt: #444654;--color-text: #FFFFFF;--color-text-secondary: #9CA3AF;--color-border: #4B5563;--color-chat-user-bg: #444654;--color-chat-assistant-bg: #343541;--color-chat-border: #4B5563;--color-chat-input-bg: #40414F;--color-chat-input-border: #4B5563;--color-chat-input-focus: #FFFFFF}.user-message{display:flex;gap:1rem;padding:1rem 0rem 1rem 0rem;width:100%;flex-direction:row-reverse;font-family:var(--font-family-base)}.user-message__content{display:flex;flex-direction:column;gap:.25rem;max-width:100%;min-width:0;box-sizing:border-box;align-items:flex-end}.user-message__bubble{padding:1rem 1.5rem;border-radius:1.5rem 1.5rem .5rem 1.5rem;background:#f5f6fa;display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;max-width:420px;min-width:0;word-break:break-word;overflow-wrap:break-word;box-sizing:border-box;color:#23272f;font-family:var(--font-family-base)}.user-message__role{font-weight:600;margin-bottom:.25rem;text-transform:capitalize}.user-message__meta{display:flex;align-items:center;justify-content:flex-end;gap:.5rem}.user-message__timestamp{opacity:.7;text-align:right}@media(max-width: 700px){.user-message__content{max-width:100%}.user-message__bubble{max-width:95vw}}.chat-layout{display:grid;grid-template-rows:auto 1fr auto;grid-template-areas:"header" "main" "footer";height:var(--app-height, 100vh);width:100vw;box-sizing:border-box;background-color:var(--color-background);overflow:hidden;margin:0;max-width:none;max-height:none}.chat-header{grid-area:header;height:25px}.chat-main{grid-area:main;flex-grow:1;overflow-y:auto;padding:0 2rem;display:flex;flex-direction:column;gap:.5rem;width:100%;box-sizing:border-box;position:relative;background-color:var(--color-background);-ms-overflow-style:none;scrollbar-width:none}.chat-main::-webkit-scrollbar{display:none}.chat-footer{grid-area:footer;position:relative}.chat__input{padding:1rem 1.5rem;background:none;border-top:none;box-shadow:none}.chat__input-wrapper{position:relative;width:100%;display:flex;align-items:center}.chat__input-wrapper input,.chat__input-wrapper .input{padding-right:4.5rem !important}.chat__send-btn{position:absolute !important;right:8px;top:50%;transform:translateY(-50%);height:40px;min-width:80px;border-radius:var(--border-radius-lg);z-index:2;margin:0}.chat__input-stack{display:flex;flex-direction:column;gap:.5rem;background:var(--color-chat-input-bg);border:1px solid var(--color-chat-input-border);border-radius:var(--border-radius-lg);padding:.5rem 1rem .5rem 1rem}.chat__textarea{width:100%;border:none;outline:none;background:rgba(0,0,0,0);font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);resize:none;min-height:32px;max-height:120px;line-height:1.5;padding:0}.chat__actions{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.chat__actions-left{display:flex;align-items:center;gap:.5rem}.chat__actions-right{display:flex;align-items:center;gap:.5rem}.chat__icon-btn{background:none;border:none;padding:0;margin:0 .25rem 0 0;border-radius:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);cursor:pointer;transition:color .2s}.chat__icon-btn:last-child{margin-right:0}.chat__icon-btn:hover,.chat__icon-btn:focus{background:none;color:var(--color-primary)}.chat__attachments{display:flex;flex-direction:row;gap:12px;overflow-x:auto;padding:8px 0 4px 0;margin-bottom:0;scrollbar-width:none;scrollbar-color:var(--color-border) var(--color-background-alt);width:100%;max-width:100%;white-space:nowrap}.chat__attachments::-webkit-scrollbar{display:none}.chat__attachments::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.chat__attachments::-webkit-scrollbar-track{background:var(--color-background-alt);border-radius:4px}.chat__attachments>*{flex-shrink:0}.chat__attachments-wrapper{position:relative;padding-bottom:22px}.chat__attachments-count{position:absolute;right:0;bottom:0;color:var(--color-text-secondary, #888);font-size:var(--font-size-xs);padding:0;background:none;border-radius:0;box-shadow:none;pointer-events:none;z-index:3;font-family:var(--font-family-base);font-weight:var(--font-weight-medium)}.chat__scroll-to-bottom{position:absolute;left:50%;transform:translateX(-50%);top:-3rem;z-index:10;box-shadow:0 2px 8px rgba(0,0,0,.1);background:var(--color-background);transition:opacity .2s,transform .2s;opacity:.95}@media(max-width: 700px){.chat-layout{max-width:100vw;width:100vw;border-radius:0}.chat-main,.chat__input{padding-left:1rem;padding-right:1rem}.chat__scroll-to-bottom{left:50%;transform:translateX(-50%);top:-2.5rem}}.chat__scroll-to-bottom .button__icon{display:flex;align-items:center;justify-content:center;transform:rotate(180deg)}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export interface AttachmentPreviewProps {
3
+ file: File;
4
+ onRemove?: () => void;
5
+ onClick?: () => void;
6
+ }
7
+ export declare const AttachmentPreview: React.FC<AttachmentPreviewProps>;
8
+ export default AttachmentPreview;
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export const AttachmentPreview = ({ file, onRemove, onClick }) => {
3
+ const isImage = file.type.startsWith('image/');
4
+ const isVideo = file.type.startsWith('video/');
5
+ const isPdf = file.type === 'application/pdf';
6
+ const isDoc = file.type.includes('word') || file.type.includes('officedocument');
7
+ const getIcon = () => {
8
+ if (isImage) {
9
+ return (_jsxs("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: "#e57373", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), _jsx("circle", { cx: "8.5", cy: "8.5", r: "1.5" }), _jsx("path", { d: "M21 15l-5-5L5 21" })] }));
10
+ }
11
+ if (isVideo) {
12
+ return (_jsxs("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: "#64b5f6", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2" }), _jsx("polygon", { points: "10 9 15 12 10 15 10 9" })] }));
13
+ }
14
+ if (isPdf) {
15
+ return (_jsx("div", { className: "attachment-preview__pdf-icon", children: "PDF" }));
16
+ }
17
+ if (isDoc) {
18
+ return (_jsxs("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: "#9575cd", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), _jsx("text", { x: "7", y: "17", fontSize: "8", fill: "#9575cd", children: "DOC" })] }));
19
+ }
20
+ return (_jsxs("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: "#90a4ae", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), _jsx("path", { d: "M8 7h8M8 11h8M8 15h6" })] }));
21
+ };
22
+ const formatSize = (size) => {
23
+ if (size < 1024)
24
+ return `${size} B`;
25
+ if (size < 1024 * 1024)
26
+ return `${(size / 1024).toFixed(1)} KB`;
27
+ return `${(size / (1024 * 1024)).toFixed(1)} MB`;
28
+ };
29
+ const handleClick = (e) => {
30
+ e.stopPropagation();
31
+ onClick?.();
32
+ };
33
+ const handleKeyDown = (e) => {
34
+ if (e.key === 'Enter' || e.key === ' ') {
35
+ e.preventDefault();
36
+ onClick?.();
37
+ }
38
+ };
39
+ return (_jsxs("div", { className: `attachment-preview ${onClick ? 'attachment-preview--clickable' : ''}`, onClick: onClick ? handleClick : undefined, onKeyDown: onClick ? handleKeyDown : undefined, tabIndex: onClick ? 0 : undefined, role: onClick ? 'button' : undefined, "aria-label": onClick ? `Ver ${file.name} en pantalla completa` : undefined, children: [isImage ? (_jsx("img", { src: URL.createObjectURL(file), alt: file.name, className: "attachment-preview__thumb" })) : (_jsx("div", { className: "attachment-preview__icon", children: getIcon() })), _jsxs("div", { className: "attachment-preview__info", children: [_jsx("div", { className: "attachment-preview__name", children: file.name }), _jsxs("div", { className: "attachment-preview__type", children: [file.type || 'Archivo', " \u00B7 ", formatSize(file.size)] })] }), onRemove && (_jsx("button", { className: "attachment-preview__remove", onClick: (e) => {
40
+ e.stopPropagation();
41
+ onRemove();
42
+ }, title: "Eliminar", type: "button", children: _jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M3 6h18" }), _jsx("path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" }), _jsx("path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" })] }) }))] }));
43
+ };
44
+ export default AttachmentPreview;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export interface AvatarProps {
3
+ src?: string;
4
+ alt?: string;
5
+ size?: 'small' | 'medium' | 'large';
6
+ variant?: 'user' | 'assistant';
7
+ className?: string;
8
+ }
9
+ export declare const Avatar: React.FC<AvatarProps>;
10
+ export default Avatar;
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export const Avatar = ({ src, alt = '', size = 'medium', variant = 'user', className = '', }) => {
3
+ const getInitials = (name) => {
4
+ return name
5
+ .split(' ')
6
+ .map(word => word[0])
7
+ .join('')
8
+ .toUpperCase()
9
+ .slice(0, 2);
10
+ };
11
+ const getFallbackContent = () => {
12
+ if (variant === 'assistant') {
13
+ return (_jsx("div", { className: "avatar__assistant-icon", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 20C7.59 20 4 16.41 4 12C4 7.59 7.59 4 12 4C16.41 4 20 7.59 20 12C20 16.41 16.41 20 12 20Z", fill: "currentColor" }), _jsx("path", { d: "M12 6C8.69 6 6 8.69 6 12C6 15.31 8.69 18 12 18C15.31 18 18 15.31 18 12C18 8.69 15.31 6 12 6ZM12 16C9.79 16 8 14.21 8 12C8 9.79 9.79 8 12 8C14.21 8 16 9.79 16 12C16 14.21 14.21 16 12 16Z", fill: "currentColor" })] }) }));
14
+ }
15
+ return getInitials(alt || 'User');
16
+ };
17
+ return (_jsx("div", { className: `
18
+ avatar
19
+ avatar--${size}
20
+ avatar--${variant}
21
+ ${className}
22
+ `, children: src ? (_jsx("img", { src: src, alt: alt, className: "avatar__image", onError: (e) => {
23
+ const target = e.target;
24
+ target.style.display = 'none';
25
+ target.parentElement?.classList.add('avatar--fallback');
26
+ } })) : (_jsx("div", { className: "avatar__fallback", children: getFallbackContent() })) }));
27
+ };
28
+ export default Avatar;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
3
+ variant?: 'primary' | 'secondary' | 'ghost' | 'icon' | 'circle';
4
+ size?: 'small' | 'medium' | 'large';
5
+ isLoading?: boolean;
6
+ fullWidth?: boolean;
7
+ icon?: React.ReactNode;
8
+ }
9
+ export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
10
+ export default Button;
@@ -0,0 +1,137 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ const buttonStyles = {
4
+ base: {
5
+ display: 'inline-flex',
6
+ alignItems: 'center',
7
+ justifyContent: 'center',
8
+ gap: 'var(--spacing-sm)',
9
+ border: 'none',
10
+ borderRadius: 'var(--border-radius-md)',
11
+ fontFamily: 'var(--font-family-base)',
12
+ fontWeight: 'var(--font-weight-medium)',
13
+ cursor: 'pointer',
14
+ transition: 'all 0.2s ease-in-out',
15
+ position: 'relative',
16
+ },
17
+ variants: {
18
+ primary: {
19
+ backgroundColor: 'var(--color-primary)',
20
+ color: 'var(--color-white)',
21
+ '&:hover:not(:disabled)': {
22
+ opacity: 0.9,
23
+ },
24
+ '&:active:not(:disabled)': {
25
+ opacity: 0.8,
26
+ },
27
+ },
28
+ secondary: {
29
+ backgroundColor: 'var(--color-background-alt)',
30
+ color: 'var(--color-text)',
31
+ '&:hover:not(:disabled)': {
32
+ backgroundColor: 'var(--color-border)',
33
+ },
34
+ },
35
+ ghost: {
36
+ backgroundColor: 'transparent',
37
+ color: 'var(--color-text)',
38
+ '&:hover:not(:disabled)': {
39
+ backgroundColor: 'var(--color-background-alt)',
40
+ },
41
+ },
42
+ icon: {
43
+ padding: 'var(--spacing-sm)',
44
+ borderRadius: 'var(--border-radius-full)',
45
+ backgroundColor: 'transparent',
46
+ color: 'var(--color-text)',
47
+ '&:hover:not(:disabled)': {
48
+ backgroundColor: 'var(--color-background-alt)',
49
+ },
50
+ },
51
+ circle: {
52
+ background: 'var(--color-black)',
53
+ color: 'var(--color-white)',
54
+ borderRadius: '50%',
55
+ width: '32px',
56
+ height: '32px',
57
+ minWidth: '32px',
58
+ minHeight: '32px',
59
+ padding: '0',
60
+ display: 'flex',
61
+ alignItems: 'center',
62
+ justifyContent: 'center',
63
+ boxShadow: 'none',
64
+ border: 'none',
65
+ transition: 'background 0.2s',
66
+ '&:hover': {
67
+ background: '#222',
68
+ },
69
+ '&:focus': {
70
+ background: '#222',
71
+ },
72
+ },
73
+ },
74
+ sizes: {
75
+ small: {
76
+ padding: 'var(--spacing-xs) var(--spacing-sm)',
77
+ fontSize: 'var(--font-size-sm)',
78
+ },
79
+ medium: {
80
+ padding: 'var(--spacing-sm) var(--spacing-md)',
81
+ fontSize: 'var(--font-size-base)',
82
+ },
83
+ large: {
84
+ padding: 'var(--spacing-md) var(--spacing-lg)',
85
+ fontSize: 'var(--font-size-lg)',
86
+ },
87
+ },
88
+ states: {
89
+ disabled: {
90
+ opacity: 0.5,
91
+ cursor: 'not-allowed',
92
+ },
93
+ fullWidth: {
94
+ width: '100%',
95
+ },
96
+ loading: {
97
+ cursor: 'wait',
98
+ },
99
+ },
100
+ elements: {
101
+ loader: {
102
+ position: 'absolute',
103
+ width: '16px',
104
+ height: '16px',
105
+ border: '2px solid var(--color-white)',
106
+ borderRadius: '50%',
107
+ borderTopColor: 'transparent',
108
+ animation: 'button-spin 0.8s linear infinite',
109
+ },
110
+ icon: {
111
+ display: 'flex',
112
+ alignItems: 'center',
113
+ justifyContent: 'center',
114
+ color: 'var(--color-white)',
115
+ },
116
+ text: {
117
+ visibility: 'hidden',
118
+ },
119
+ },
120
+ };
121
+ const getButtonStyles = (props) => {
122
+ const { variant = 'primary', size = 'medium', isLoading = false, fullWidth = false, disabled } = props;
123
+ return {
124
+ ...buttonStyles.base,
125
+ ...buttonStyles.variants[variant],
126
+ ...buttonStyles.sizes[size],
127
+ ...(disabled && buttonStyles.states.disabled),
128
+ ...(fullWidth && buttonStyles.states.fullWidth),
129
+ ...(isLoading && buttonStyles.states.loading),
130
+ };
131
+ };
132
+ export const Button = React.forwardRef(({ children, variant = 'primary', size = 'medium', isLoading = false, fullWidth = false, icon, className = '', disabled, ...props }, ref) => {
133
+ const buttonStyle = getButtonStyles({ variant, size, isLoading, fullWidth, disabled });
134
+ return (_jsxs("button", { ref: ref, style: buttonStyle, className: className, disabled: disabled || isLoading, ...props, children: [isLoading && (_jsx("span", { style: buttonStyles.elements.loader })), icon && !isLoading && (_jsx("span", { style: buttonStyles.elements.icon, children: icon })), children && (_jsx("span", { style: isLoading ? buttonStyles.elements.text : undefined, children: children }))] }));
135
+ });
136
+ Button.displayName = 'Button';
137
+ export default Button;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export interface DateDividerProps {
3
+ date: Date;
4
+ className?: string;
5
+ }
6
+ export declare const DateDivider: React.FC<DateDividerProps>;
7
+ export default DateDivider;
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export const DateDivider = ({ date, className = '' }) => {
3
+ const formatDate = (date) => {
4
+ const now = new Date();
5
+ const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
6
+ const yesterday = new Date(today);
7
+ yesterday.setDate(yesterday.getDate() - 1);
8
+ const messageDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
9
+ const currentYear = now.getFullYear();
10
+ const messageYear = date.getFullYear();
11
+ // Comparar fechas
12
+ if (messageDate.getTime() === today.getTime()) {
13
+ return 'Hoy';
14
+ }
15
+ else if (messageDate.getTime() === yesterday.getTime()) {
16
+ return 'Ayer';
17
+ }
18
+ else {
19
+ const dayOfWeek = date.getDay();
20
+ const dayNames = ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'];
21
+ const monthNames = [
22
+ 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio',
23
+ 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'
24
+ ];
25
+ const dayName = dayNames[dayOfWeek];
26
+ const day = date.getDate();
27
+ const month = monthNames[date.getMonth()];
28
+ // Si es del mismo año, mostrar solo día y mes listo
29
+ if (messageYear === currentYear) {
30
+ return `${dayName} ${day} ${month}`;
31
+ }
32
+ else {
33
+ // Si es de otro año, incluir el año
34
+ return `${dayName} ${day} ${month} ${messageYear}`;
35
+ }
36
+ }
37
+ };
38
+ return (_jsx("div", { className: `date-divider ${className}`, children: _jsx("span", { className: "date-divider__text", children: formatDate(date) }) }));
39
+ };
40
+ export default DateDivider;
@@ -0,0 +1,2 @@
1
+ export { DateDivider } from './DateDivider';
2
+ export type { DateDividerProps } from './DateDivider';
@@ -0,0 +1 @@
1
+ export { DateDivider } from './DateDivider';
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
3
+ label?: string;
4
+ error?: string;
5
+ icon?: React.ReactNode;
6
+ fullWidth?: boolean;
7
+ variant?: 'default' | 'chat';
8
+ }
9
+ export declare const Input: React.FC<InputProps>;
10
+ export default Input;