@ddrinnova/agentsgt-widget 0.1.20 → 0.2.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.
package/README.md CHANGED
@@ -111,6 +111,8 @@ function MyPage() {
111
111
 
112
112
  ## Options
113
113
 
114
+ ### Core
115
+
114
116
  | Option | Type | Default | Description |
115
117
  |:---|:---|:---|:---|
116
118
  | **`runtimeUrl`** | `string` | *required* | Full URL to the agent chat endpoint |
@@ -119,7 +121,29 @@ function MyPage() {
119
121
  | `title` | `string` | Agent name | Header title |
120
122
  | `initialMessage` | `string` | `"Need any help?"` | Greeting shown on first visit |
121
123
  | `identifier` | `string` | — | External user ID for conversation tracking |
122
- | `theme.primaryColor` | `string` | `#FBB76B` | Accent color |
124
+
125
+ ### `theme` (since 0.2.0)
126
+
127
+ | Option | Type | Default | Description |
128
+ |:---|:---|:---|:---|
129
+ | `theme.primaryColor` | `string` | `#FBB76B` | Accent color (CTAs, link hover, focus ring) |
130
+ | `theme.accent` | `string` | derived | Secondary accent |
131
+ | `theme.surface` | `string` | `#ffffff` | Widget background |
132
+ | `theme.textColor` | `string` | `#1f2937` | Primary text color |
133
+ | `theme.radius` | `"sm"` \| `"md"` \| `"lg"` \| `"xl"` \| `number` | `"lg"` | Corner radius preset, or px value |
134
+ | `theme.shadow` | `"none"` \| `"sm"` \| `"md"` \| `"lg"` | `"md"` | Drop-shadow strength |
135
+ | `theme.mode` | `"light"` \| `"dark"` \| `"auto"` | `"light"` | `"auto"` follows the user's `prefers-color-scheme` |
136
+ | `theme.fontFamily` | `string` | system stack | Custom font family |
137
+
138
+ ### `branding` (since 0.2.0)
139
+
140
+ | Option | Type | Default | Description |
141
+ |:---|:---|:---|:---|
142
+ | `branding.title` | `string` | — | Header title (overrides top-level `title`) |
143
+ | `branding.avatarUrl` | `string` | letter circle | Header avatar image |
144
+ | `branding.logoUrl` | `string` | chat icon | Image inside the launcher button |
145
+ | `branding.poweredBy` | `boolean` | `true` | Show the "Powered by AgentsGT" footer |
146
+ | `branding.suggestedPrompts` | `string[]` | — | Chip row above the input on the empty state (max 6 shown) |
123
147
 
124
148
  ---
125
149
 
@@ -146,20 +170,31 @@ Inline chat that fills its parent container. Use when **embedding directly into
146
170
 
147
171
  ### Full control — via CSS custom properties
148
172
 
173
+ The widget defines its CSS variables on its own wrappers (`.agt-popup`, `.agt-sidebar`, `.agt-trigger`, `.agt-widget`), so they never leak onto the host page. Override them by targeting the same selectors:
174
+
149
175
  ```css
150
- :root {
151
- --agt-primary: #FBB76B; /* Accent color */
152
- --agt-bg: #ffffff; /* Widget background */
153
- --agt-text: #1f2937; /* Primary text */
154
- --agt-text-secondary: #6b7280; /* Muted text */
155
- --agt-border: #e5e7eb; /* Borders */
156
- --agt-muted: #f3f4f6; /* Subtle backgrounds */
157
- --agt-user-bg: rgba(251, 183, 107, 0.1); /* User bubble */
158
- --agt-assistant-bg: #f3f4f6; /* Assistant bubble */
159
- --agt-radius: 1rem; /* Border radius */
176
+ .agt-popup,
177
+ .agt-sidebar,
178
+ .agt-trigger,
179
+ .agt-widget {
180
+ --agt-primary: #FBB76B;
181
+ --agt-accent: #f59e3a;
182
+ --agt-bg: #ffffff;
183
+ --agt-surface: #ffffff;
184
+ --agt-text: #1f2937;
185
+ --agt-text-secondary: #6b7280;
186
+ --agt-text-on-primary: #1f2937;
187
+ --agt-border: #e5e7eb;
188
+ --agt-muted: #f3f4f6;
189
+ --agt-user-bg: rgba(251, 183, 107, 0.14);
190
+ --agt-assistant-bg: #f3f4f6;
191
+ --agt-radius: 1rem;
192
+ --agt-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1);
160
193
  }
161
194
  ```
162
195
 
196
+ Dark mode uses the same vars under `[data-agt-theme="dark"]`. Set `theme.mode: "auto"` to follow the user's system preference.
197
+
163
198
  ---
164
199
 
165
200
  ## API Keys
@@ -181,11 +216,30 @@ cd agentsgt-widget
181
216
  npm install
182
217
  npm run dev # Start dev server at localhost:5173
183
218
  npm run build # Production build → dist/
184
- npm run release # Bump patch version + publish to npm
185
- npm run release:minor # Bump minor version + publish
186
- npm run release:quick # Bump + publish without git tag
219
+ npm run lint
220
+ ```
221
+
222
+ ## Releasing
223
+
224
+ Releases are published to npm by **GitHub Actions** on tag push — no local `npm publish`.
225
+
226
+ ```bash
227
+ # 1. Bump the version in package.json (patch / minor / major as appropriate)
228
+ npm version patch # writes 0.2.x → 0.2.(x+1), creates a v0.2.(x+1) git tag
229
+
230
+ # 2. Push the commit and the tag
231
+ git push origin main --follow-tags
187
232
  ```
188
233
 
234
+ The workflow at `.github/workflows/publish.yml` runs on tags matching `v*.*.*`:
235
+
236
+ 1. Installs dependencies, lints, builds.
237
+ 2. Verifies `package.json` `version` matches the pushed tag (fails the run otherwise).
238
+ 3. Publishes with `npm publish --access public --provenance`.
239
+ 4. Creates a GitHub Release with auto-generated notes.
240
+
241
+ **One-time setup:** add an `NPM_TOKEN` repo secret with publish rights to `@ddrinnova/agentsgt-widget`.
242
+
189
243
  ---
190
244
 
191
245
  <div align="center">
package/dist/widget.css CHANGED
@@ -1 +1 @@
1
- :root{--agt-primary: #FBB76B;--agt-bg: #ffffff;--agt-text: #1f2937;--agt-text-secondary: #6b7280;--agt-border: #e5e7eb;--agt-muted: #f3f4f6;--agt-user-bg: rgba(251, 183, 107, .1);--agt-assistant-bg: #f3f4f6;--agt-error-bg: #fef2f2;--agt-error-text: #b91c1c;--agt-radius: 1rem;--agt-shadow: 0 10px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1)}.agt-widget,.agt-popup,.agt-sidebar,.agt-trigger{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}.agt-widget *,.agt-popup *,.agt-sidebar *,.agt-trigger *{box-sizing:border-box;margin:0;padding:0}.agt-widget button,.agt-popup button,.agt-sidebar button,.agt-trigger{-moz-appearance:none;appearance:none;-webkit-appearance:none;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0;margin:0;font:inherit;color:inherit;text-decoration:none;text-transform:none;letter-spacing:inherit;line-height:inherit;outline:none;box-shadow:none}.agt-widget textarea,.agt-popup textarea,.agt-sidebar textarea{-moz-appearance:none;appearance:none;-webkit-appearance:none;box-sizing:border-box;border:none;background:transparent;padding:0;margin:0;font:inherit;color:inherit;outline:none;box-shadow:none;resize:none}.agt-widget svg,.agt-popup svg,.agt-sidebar svg,.agt-trigger svg{display:block;flex-shrink:0}.agt-widget{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden;background:var(--agt-bg);color:var(--agt-text);font-size:14px;line-height:1.5}.agt-popup{position:fixed;bottom:24px;right:24px;z-index:9999;width:400px;height:520px;border-radius:var(--agt-radius);box-shadow:var(--agt-shadow);background:var(--agt-bg);border:1px solid var(--agt-border);display:flex;flex-direction:column;overflow:hidden;animation:agt-slide-up .3s ease-out}@media (max-width: 480px){.agt-popup{bottom:0;right:0;width:100%;height:100%;border-radius:0}}.agt-sidebar{position:fixed;top:0;right:0;z-index:9999;width:380px;height:100%;background:var(--agt-bg);border-left:1px solid var(--agt-border);box-shadow:-4px 0 16px #00000014;display:flex;flex-direction:column;animation:agt-slide-in-right .3s ease-out}@media (max-width: 480px){.agt-sidebar{width:100%}}.agt-trigger{position:fixed;bottom:24px;right:24px;z-index:9998;width:56px;height:56px;border-radius:50%;background:var(--agt-primary);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000026;transition:transform .2s ease,box-shadow .2s ease;animation:agt-scale-in .3s ease-out}.agt-trigger:hover{transform:scale(1.08);box-shadow:0 6px 16px #0003}.agt-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--agt-border);background:var(--agt-bg);flex-shrink:0}.agt-header__title{font-weight:600;font-size:14px;color:var(--agt-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agt-header__actions{display:flex;align-items:center;gap:4px}.agt-header__btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;border-radius:6px;cursor:pointer;color:var(--agt-text-secondary);transition:background-color .15s,color .15s}.agt-header__btn:hover{background:var(--agt-muted);color:var(--agt-text)}.agt-footer{padding:6px 16px;text-align:center;font-size:10px;color:var(--agt-text-secondary);border-top:1px solid var(--agt-border);flex-shrink:0}.agt-messages{flex:1;overflow-y:auto;padding:16px}.agt-messages__inner{display:flex;flex-direction:column;gap:12px}.agt-message{display:flex;width:100%}.agt-message--user{justify-content:flex-end}.agt-message--assistant{justify-content:flex-start}.agt-message__content{max-width:78%;border-radius:var(--agt-radius);padding:8px 12px;font-size:14px;line-height:1.5;word-break:break-word}.agt-message--user .agt-message__content{background:var(--agt-user-bg);color:var(--agt-text);border-bottom-right-radius:4px}.agt-message--assistant .agt-message__content{background:var(--agt-assistant-bg);color:var(--agt-text);border-bottom-left-radius:4px}.agt-message__content--error{background:var(--agt-error-bg)!important;color:var(--agt-error-text)!important;display:flex;align-items:flex-start;gap:8px;border:1px solid rgba(185,28,28,.15)}.agt-message__typing{display:flex;align-items:center;gap:4px;padding:4px 0}.agt-message__typing span{width:6px;height:6px;border-radius:50%;background:var(--agt-text-secondary);animation:agt-bounce 1.4s infinite ease-in-out both}.agt-message__typing span:nth-child(1){animation-delay:-.32s}.agt-message__typing span:nth-child(2){animation-delay:-.16s}.agt-input{padding:8px 16px 12px;flex-shrink:0}.agt-input__container{display:flex;align-items:flex-end;gap:8px;border:1px solid var(--agt-border);border-radius:var(--agt-radius);padding:8px 12px;background:var(--agt-bg);transition:border-color .15s}.agt-input__container:focus-within{border-color:var(--agt-primary)}.agt-input__textarea{flex:1;border:none;outline:none;background:transparent;font-size:14px;font-family:inherit;color:var(--agt-text);line-height:1.5;min-height:24px;padding:0}.agt-input__textarea::-moz-placeholder{color:var(--agt-text-secondary);opacity:.6}.agt-input__textarea::placeholder{color:var(--agt-text-secondary);opacity:.6}.agt-input__send{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:var(--agt-text);color:var(--agt-bg);cursor:pointer;flex-shrink:0;transition:opacity .15s}.agt-input__send:disabled{opacity:.3;cursor:default}.agt-input__send:not(:disabled):hover{opacity:.8}.agt-tool{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--agt-muted);border-radius:8px;margin:8px 0;font-size:13px;color:var(--agt-text-secondary)}.agt-tool--error{background:var(--agt-error-bg);color:var(--agt-error-text)}.agt-tool--sources{padding:6px 10px;font-size:13px;margin:6px 0;background:#00000008;border:1px solid rgba(0,0,0,.06);border-radius:8px}.agt-tool__label{color:var(--agt-text-secondary);font-weight:500;margin-right:4px}.agt-tool--sources a{color:var(--agt-primary);text-decoration:none}.agt-tool--sources a:hover{text-decoration:underline}.agt-tool__separator{color:var(--agt-text-secondary);margin:0 6px}.agt-tool__image{margin:8px 0}.agt-tool__image img{border-radius:8px;max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.agt-spinner{display:inline-flex;align-items:center;gap:4px}.agt-spinner__dot{width:6px;height:6px;border-radius:50%;background:var(--agt-text-secondary);animation:agt-bounce 1.4s infinite ease-in-out both}.agt-spinner__dot:nth-child(1){animation-delay:-.32s}.agt-spinner__dot:nth-child(2){animation-delay:-.16s}.agt-markdown p{margin:.25em 0;line-height:1.6}.agt-markdown p:first-child{margin-top:0}.agt-markdown p:last-child{margin-bottom:0}.agt-markdown strong{font-weight:600}.agt-markdown em{font-style:italic}.agt-markdown code{background:#0000000f;padding:.1em .35em;border-radius:4px;font-size:.85em;font-family:SF Mono,Monaco,Cascadia Code,monospace}.agt-markdown pre{background:#0000000f;padding:12px;border-radius:8px;overflow-x:auto;margin:8px 0;font-size:13px}.agt-markdown pre code{background:none;padding:0;border-radius:0;font-size:inherit}.agt-markdown ul{list-style:disc;padding-left:1.25em;margin:.25em 0}.agt-markdown ol{list-style:decimal;padding-left:1.25em;margin:.25em 0}.agt-markdown li{margin:.1em 0}.agt-markdown a{color:var(--agt-primary);text-decoration:underline;text-decoration-color:#fbb76b66;text-underline-offset:2px}.agt-markdown a:hover{text-decoration-color:var(--agt-primary)}.agt-markdown table{width:100%;border-collapse:collapse;margin:8px 0;font-size:13px}.agt-markdown th,.agt-markdown td{padding:6px 10px;border:1px solid var(--agt-border);text-align:left}.agt-markdown th{background:var(--agt-muted);font-weight:600;font-size:12px;color:var(--agt-text-secondary)}.agt-markdown hr{border:none;border-top:1px solid var(--agt-border);margin:12px 0}.agt-markdown blockquote{border-left:3px solid var(--agt-border);margin:8px 0;padding:4px 12px;color:var(--agt-text-secondary)}@keyframes agt-slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes agt-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes agt-scale-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes agt-bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.agt-messages::-webkit-scrollbar{width:6px}.agt-messages::-webkit-scrollbar-track{background:transparent}.agt-messages::-webkit-scrollbar-thumb{background:#00000026;border-radius:3px}.agt-messages::-webkit-scrollbar-thumb:hover{background:#00000040}
1
+ .agt-popup,.agt-sidebar,.agt-trigger,.agt-widget{--agt-primary: #FBB76B;--agt-accent: #f59e3a;--agt-bg: #ffffff;--agt-surface: #ffffff;--agt-text: #1f2937;--agt-text-secondary: #6b7280;--agt-text-on-primary: #1f2937;--agt-border: #e5e7eb;--agt-muted: #f3f4f6;--agt-user-bg: rgba(251, 183, 107, .14);--agt-assistant-bg: #f3f4f6;--agt-error-bg: #fef2f2;--agt-error-text: #b91c1c;--agt-radius: 1rem;--agt-radius-sm: .5rem;--agt-radius-md: .75rem;--agt-radius-lg: 1rem;--agt-shadow: 0 10px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .08);--agt-shadow-trigger: 0 8px 24px -6px rgba(0, 0, 0, .22);--agt-scrollbar: rgba(0, 0, 0, .18);--agt-scrollbar-hover: rgba(0, 0, 0, .32);--agt-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--agt-code-bg: rgba(0, 0, 0, .06);--agt-sources-bg: rgba(0, 0, 0, .03);--agt-sources-border: rgba(0, 0, 0, .06)}.agt-popup[data-agt-theme=dark],.agt-sidebar[data-agt-theme=dark],.agt-trigger[data-agt-theme=dark],.agt-widget[data-agt-theme=dark]{--agt-bg: #0f172a;--agt-surface: #0f172a;--agt-text: #f1f5f9;--agt-text-secondary: #94a3b8;--agt-text-on-primary: #0f172a;--agt-border: rgba(255, 255, 255, .08);--agt-muted: rgba(255, 255, 255, .06);--agt-user-bg: rgba(251, 183, 107, .18);--agt-assistant-bg: rgba(255, 255, 255, .06);--agt-error-bg: rgba(220, 38, 38, .12);--agt-error-text: #fca5a5;--agt-shadow: 0 18px 40px -10px rgba(0, 0, 0, .55), 0 10px 14px -8px rgba(0, 0, 0, .45);--agt-shadow-trigger: 0 10px 28px -6px rgba(0, 0, 0, .55);--agt-scrollbar: rgba(255, 255, 255, .18);--agt-scrollbar-hover: rgba(255, 255, 255, .32);--agt-code-bg: rgba(255, 255, 255, .08);--agt-sources-bg: rgba(255, 255, 255, .04);--agt-sources-border: rgba(255, 255, 255, .08)}.agt-widget,.agt-popup,.agt-sidebar,.agt-trigger{box-sizing:border-box;font-family:var(--agt-font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}.agt-widget *,.agt-popup *,.agt-sidebar *,.agt-trigger *{box-sizing:border-box;margin:0;padding:0}.agt-widget button,.agt-popup button,.agt-sidebar button,.agt-trigger{-moz-appearance:none;appearance:none;-webkit-appearance:none;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0;margin:0;font:inherit;color:inherit;text-decoration:none;text-transform:none;letter-spacing:inherit;line-height:inherit;outline:none;box-shadow:none}.agt-widget textarea,.agt-popup textarea,.agt-sidebar textarea{-moz-appearance:none;appearance:none;-webkit-appearance:none;box-sizing:border-box;border:none;background:transparent;padding:0;margin:0;font:inherit;color:inherit;outline:none;box-shadow:none;resize:none}.agt-widget svg,.agt-popup svg,.agt-sidebar svg,.agt-trigger svg{display:block;flex-shrink:0}.agt-widget{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden;background:var(--agt-bg);color:var(--agt-text);font-size:14px;line-height:1.5}.agt-popup{position:fixed;bottom:24px;right:24px;z-index:9999;width:400px;height:560px;border-radius:var(--agt-radius);box-shadow:var(--agt-shadow);background:var(--agt-bg);color:var(--agt-text);border:1px solid var(--agt-border);display:flex;flex-direction:column;overflow:hidden;animation:agt-pop-in .22s cubic-bezier(.16,1,.3,1);transform-origin:bottom right}@media (max-width: 480px){.agt-popup{bottom:0;right:0;width:100%;height:100%;border-radius:0}}.agt-sidebar{position:fixed;top:0;right:0;z-index:9999;width:380px;height:100%;background:var(--agt-bg);color:var(--agt-text);border-left:1px solid var(--agt-border);box-shadow:-4px 0 16px #00000014;display:flex;flex-direction:column;animation:agt-slide-in-right .24s cubic-bezier(.16,1,.3,1)}@media (max-width: 480px){.agt-sidebar{width:100%}}.agt-trigger{position:fixed;bottom:24px;right:24px;z-index:9998;width:56px;height:56px;border-radius:50%;background:var(--agt-primary);color:var(--agt-text-on-primary);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--agt-shadow-trigger);transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s ease;animation:agt-scale-in .24s cubic-bezier(.16,1,.3,1)}.agt-trigger:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 12px 28px -8px #00000047}.agt-trigger:active{transform:scale(.96)}.agt-trigger__logo{width:28px;height:28px;border-radius:50%;-o-object-fit:cover;object-fit:cover}.agt-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--agt-border);background:linear-gradient(180deg,color-mix(in srgb,var(--agt-primary) 6%,var(--agt-bg)) 0%,var(--agt-bg) 100%);flex-shrink:0}.agt-header__brand{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.agt-header__avatar{width:28px;height:28px;border-radius:50%;background:var(--agt-primary);color:var(--agt-text-on-primary);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0;-o-object-fit:cover;object-fit:cover;overflow:hidden}.agt-header__avatar--fallback{letter-spacing:.02em}.agt-header__title{font-weight:600;font-size:14px;color:var(--agt-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.agt-header__actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.agt-header__btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;border-radius:6px;cursor:pointer;color:var(--agt-text-secondary);transition:background-color .15s ease,color .15s ease,transform .15s ease}.agt-header__btn:hover{background:var(--agt-muted);color:var(--agt-text)}.agt-header__btn:active{transform:scale(.92)}.agt-footer{padding:6px 16px;text-align:center;font-size:10px;color:var(--agt-text-secondary);border-top:1px solid var(--agt-border);flex-shrink:0;letter-spacing:.02em}.agt-messages{flex:1;overflow-y:auto;padding:16px}.agt-messages__inner{display:flex;flex-direction:column;gap:12px}.agt-message{display:flex;width:100%;animation:agt-message-in .18s cubic-bezier(.16,1,.3,1)}.agt-message--user{justify-content:flex-end}.agt-message--assistant{justify-content:flex-start}.agt-message__content{max-width:78%;border-radius:var(--agt-radius);padding:8px 12px;font-size:14px;line-height:1.5;word-break:break-word}.agt-message--user .agt-message__content{background:var(--agt-user-bg);color:var(--agt-text);border-bottom-right-radius:4px}.agt-message--assistant .agt-message__content{background:var(--agt-assistant-bg);color:var(--agt-text);border-bottom-left-radius:4px}.agt-message__content--error{background:var(--agt-error-bg)!important;color:var(--agt-error-text)!important;display:flex;align-items:flex-start;gap:8px;border:1px solid color-mix(in srgb,var(--agt-error-text) 25%,transparent)}.agt-message__typing{display:flex;align-items:center;gap:4px;padding:4px 0}.agt-message__typing span{width:6px;height:6px;border-radius:50%;background:var(--agt-text-secondary);animation:agt-bounce 1.4s infinite ease-in-out both}.agt-message__typing span:nth-child(1){animation-delay:-.32s}.agt-message__typing span:nth-child(2){animation-delay:-.16s}.agt-prompts{display:flex;gap:6px;padding:0 16px 6px;overflow-x:auto;scrollbar-width:none;flex-shrink:0}.agt-prompts::-webkit-scrollbar{display:none}.agt-prompts__chip{display:inline-flex;align-items:center;flex-shrink:0;padding:6px 12px;font-size:12.5px;font-weight:500;background:var(--agt-muted);color:var(--agt-text);border:1px solid var(--agt-border);border-radius:999px;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease;white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}.agt-prompts__chip:hover:not(:disabled){background:color-mix(in srgb,var(--agt-primary) 14%,var(--agt-muted));border-color:color-mix(in srgb,var(--agt-primary) 40%,var(--agt-border))}.agt-prompts__chip:active:not(:disabled){transform:scale(.97)}.agt-prompts__chip:disabled{opacity:.5;cursor:default}.agt-input{padding:8px 16px 12px;flex-shrink:0}.agt-input__container{display:flex;align-items:flex-end;gap:8px;border:1px solid var(--agt-border);border-radius:var(--agt-radius);padding:8px 12px;background:var(--agt-bg);transition:border-color .15s ease,box-shadow .15s ease}.agt-input__container:focus-within{border-color:var(--agt-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--agt-primary) 22%,transparent)}.agt-input__textarea{flex:1;border:none;outline:none;background:transparent;font-size:14px;font-family:inherit;color:var(--agt-text);line-height:1.5;min-height:24px;padding:0}.agt-input__textarea::-moz-placeholder{color:var(--agt-text-secondary);opacity:.6}.agt-input__textarea::placeholder{color:var(--agt-text-secondary);opacity:.6}.agt-input__send{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:50%;background:var(--agt-primary);color:var(--agt-text-on-primary);cursor:pointer;flex-shrink:0;transition:opacity .15s ease,transform .15s ease,background .15s ease}.agt-input__send:disabled{opacity:.3;cursor:default;background:var(--agt-text-secondary);color:var(--agt-bg)}.agt-input__send:not(:disabled):hover{transform:scale(1.06)}.agt-input__send:not(:disabled):active{transform:scale(.94)}.agt-tool{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--agt-muted);border-radius:8px;margin:8px 0;font-size:13px;color:var(--agt-text-secondary)}.agt-tool--error{background:var(--agt-error-bg);color:var(--agt-error-text)}.agt-tool--sources{padding:6px 10px;font-size:13px;margin:6px 0;background:var(--agt-sources-bg);border:1px solid var(--agt-sources-border);border-radius:8px}.agt-tool__label{color:var(--agt-text-secondary);font-weight:500;margin-right:4px}.agt-tool--sources a{color:var(--agt-primary);text-decoration:none}.agt-tool--sources a:hover{text-decoration:underline}.agt-tool__separator{color:var(--agt-text-secondary);margin:0 6px}.agt-tool__image{margin:8px 0}.agt-tool__image img{border-radius:8px;max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.agt-spinner{display:inline-flex;align-items:center;gap:4px}.agt-spinner__dot{width:6px;height:6px;border-radius:50%;background:var(--agt-text-secondary);animation:agt-bounce 1.4s infinite ease-in-out both}.agt-spinner__dot:nth-child(1){animation-delay:-.32s}.agt-spinner__dot:nth-child(2){animation-delay:-.16s}.agt-markdown p{margin:.25em 0;line-height:1.6}.agt-markdown p:first-child{margin-top:0}.agt-markdown p:last-child{margin-bottom:0}.agt-markdown strong{font-weight:600}.agt-markdown em{font-style:italic}.agt-markdown code{background:var(--agt-code-bg);padding:.1em .35em;border-radius:4px;font-size:.85em;font-family:SF Mono,Monaco,Cascadia Code,monospace}.agt-markdown pre{background:var(--agt-code-bg);padding:12px;border-radius:8px;overflow-x:auto;margin:8px 0;font-size:13px}.agt-markdown pre code{background:none;padding:0;border-radius:0;font-size:inherit}.agt-markdown ul{list-style:disc;padding-left:1.25em;margin:.25em 0}.agt-markdown ol{list-style:decimal;padding-left:1.25em;margin:.25em 0}.agt-markdown li{margin:.1em 0}.agt-markdown a{color:var(--agt-primary);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--agt-primary) 40%,transparent);text-underline-offset:2px}.agt-markdown a:hover{text-decoration-color:var(--agt-primary)}.agt-markdown table{width:100%;border-collapse:collapse;margin:8px 0;font-size:13px}.agt-markdown th,.agt-markdown td{padding:6px 10px;border:1px solid var(--agt-border);text-align:left}.agt-markdown th{background:var(--agt-muted);font-weight:600;font-size:12px;color:var(--agt-text-secondary)}.agt-markdown hr{border:none;border-top:1px solid var(--agt-border);margin:12px 0}.agt-markdown blockquote{border-left:3px solid var(--agt-border);margin:8px 0;padding:4px 12px;color:var(--agt-text-secondary)}@keyframes agt-pop-in{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes agt-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes agt-scale-in{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.04)}to{opacity:1;transform:scale(1)}}@keyframes agt-bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}@keyframes agt-message-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.agt-messages::-webkit-scrollbar{width:6px}.agt-messages::-webkit-scrollbar-track{background:transparent}.agt-messages::-webkit-scrollbar-thumb{background:var(--agt-scrollbar);border-radius:3px}.agt-messages::-webkit-scrollbar-thumb:hover{background:var(--agt-scrollbar-hover)}@media (prefers-reduced-motion: reduce){.agt-popup,.agt-sidebar,.agt-trigger,.agt-widget,.agt-message,.agt-prompts__chip,.agt-input__send,.agt-trigger:hover,.agt-trigger:active,.agt-header__btn{animation:none!important;transition:none!important}.agt-message__typing span,.agt-spinner__dot{animation-duration:0s!important}}