@devicai/ui 0.61.1 → 0.61.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"LiveVoicePanel.js","sources":["../../../../src/components/ChatDrawer/LiveVoicePanel.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type ReactNode } from 'react';\nimport type { UseDevicLiveVoiceResult } from '../../hooks/useDevicLiveVoice';\nimport type { DevicApiClient } from '../../api/client';\nimport type { LiveVoiceRecording } from '../../api/liveVoice.types';\nimport { useTranslations } from '../../i18n';\nimport './LiveVoicePanel.css';\nimport { LiveVoicePrompter } from './LiveVoicePrompter';\n\nexport interface LiveVoicePanelProps {\n voice: UseDevicLiveVoiceResult;\n client: DevicApiClient | null;\n assistantId: string;\n chatUid: string | null;\n canStart: boolean;\n recordSessions?: boolean;\n /** Rendered above the call box while voice is active: the composer's own banners. */\n children?: ReactNode;\n}\n\n/** `m:ss` of a running call, as the dictation timer formats it. */\nfunction formatSeconds(total: number): string {\n const seconds = Math.max(0, Math.floor(total));\n return `${Math.floor(seconds / 60)}:${(seconds % 60).toString().padStart(2, '0')}`;\n}\n\n/**\n * The live voice widget. Idle, it is an invitation card sitting above the\n * composer; once a call starts it takes the composer's place — the same input\n * area, the same rounded surface — with the transcript prompter, one wave per\n * speaker and the call controls where the send button normally sits.\n */\nexport default function LiveVoicePanel({ voice, client, assistantId, chatUid, canStart, recordSessions, children }: LiveVoicePanelProps) {\n const t = useTranslations();\n const [showRecordings, setShowRecordings] = useState(false);\n const [records, setRecords] = useState<LiveVoiceRecording[]>([]);\n const [hasMore, setHasMore] = useState(false);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const [audioUrl, setAudioUrl] = useState<string>();\n const request = useRef(0);\n useEffect(() => { if (voice.active) setAudioUrl(undefined); }, [voice.active]);\n useEffect(() => () => { if (audioUrl) URL.revokeObjectURL(audioUrl); }, [audioUrl]);\n useEffect(() => {\n request.current++; setRecords([]); setShowRecordings(false); setAudioUrl(undefined); setLoading(false); setError('');\n return () => { request.current++; };\n }, [client, assistantId, chatUid]);\n const list = async (offset = 0) => {\n if (!client || !chatUid || loading) return;\n const ticket = ++request.current;\n setLoading(true); setError('');\n try {\n const page = await client.getLiveRecordings(assistantId, chatUid, offset, 20);\n if (ticket !== request.current) return;\n setRecords(previous => offset ? [...previous, ...page] : page); setHasMore(page.length === 20); setShowRecordings(true);\n } catch { if (ticket === request.current) setError(t('Could not load voice recordings.')); }\n finally { if (ticket === request.current) setLoading(false); }\n };\n const playRecording = async (record: LiveVoiceRecording) => {\n if (!client || !chatUid || loading) return;\n const ticket = ++request.current; setLoading(true); setError('');\n try {\n const blob = await client.getLiveRecordingAudio(assistantId, chatUid, record.sessionId);\n if (ticket === request.current) setAudioUrl(URL.createObjectURL(blob));\n } catch { if (ticket === request.current) setError(t('Could not load voice recordings.')); }\n finally { if (ticket === request.current) setLoading(false); }\n };\n\n if (voice.active) {\n const status = voice.state === 'connected' ? t('Live · {time}', { time: formatSeconds(voice.seconds) })\n : voice.state === 'reconnecting' ? t('Restoring voice…') : voice.state === 'closing' ? t('Closing voice…') : t('Connecting voice…');\n return <div className=\"devic-input-area devic-voice-area\" data-voice-state={voice.state}>\n {children}\n <section className=\"devic-voice-box\" aria-label={t('Voice mode')}>\n <LiveVoicePrompter voice={voice} />\n <div className=\"devic-voice-bar\">\n <span className=\"devic-voice-status\" role=\"status\"><i className=\"devic-voice-status-dot\" aria-hidden=\"true\" />{status}</span>\n {voice.playbackBlocked && <button type=\"button\" className=\"devic-voice-text-btn\" onClick={() => void voice.play()}>{t('Enable audio')}</button>}\n {voice.state === 'connecting'\n ? <button type=\"button\" className=\"devic-voice-text-btn\" onClick={() => void voice.stop()}>{t('Cancel')}</button>\n : <>\n <button type=\"button\" className=\"devic-input-btn devic-voice-mute\" aria-pressed={voice.muted} disabled={voice.state !== 'connected'}\n title={voice.muted ? t('Unmute') : t('Mute')} aria-label={voice.muted ? t('Unmute') : t('Mute')} onClick={() => voice.mute(!voice.muted)}>\n {voice.muted ? <MicOffIcon /> : <MicIcon />}\n </button>\n <button type=\"button\" className=\"devic-voice-end\" disabled={voice.state === 'closing'} onClick={() => void voice.stop()}>\n <HangUpIcon />{t('End voice')}\n </button>\n </>}\n </div>\n </section>\n </div>;\n }\n\n return <section className=\"devic-live-voice\" aria-label={t('Voice mode')}>\n <div className=\"devic-voice-card\">\n <span className=\"devic-voice-card-icon\" aria-hidden=\"true\"><MicIcon /></span>\n <div className=\"devic-voice-card-copy\">\n <div className=\"devic-voice-card-title\">{t('Voice mode')}<span className=\"devic-voice-tag\">{t('Included minutes')}</span></div>\n <div className=\"devic-voice-card-subtitle\">\n {t('Talk to the assistant in real time.')}{recordSessions !== false && <> {t('Voice sessions are recorded according to the assistant settings.')}</>}\n </div>\n </div>\n <button className=\"devic-voice-start\" type=\"button\" disabled={!canStart} onClick={() => void voice.start()}><MicIcon />{t('Start voice')}</button>\n </div>\n {voice.error && <div className=\"devic-voice-error\" role=\"alert\">{t(voice.error.message)}</div>}\n {chatUid && <button type=\"button\" className=\"devic-voice-text-btn devic-voice-recordings-toggle\" disabled={loading}\n onClick={() => showRecordings ? setShowRecordings(false) : void list()}>{showRecordings ? t('Hide recordings') : t('Voice recordings')}</button>}\n {showRecordings && <div className=\"devic-voice-recordings\">\n {!records.length && <span className=\"devic-voice-recording\">{t('No voice recordings yet.')}</span>}\n {records.map(record => <div key={record.sessionId} className=\"devic-voice-recording\">\n <i className=\"devic-voice-recording-dot\" aria-hidden=\"true\" />\n <button type=\"button\" className=\"devic-voice-text-btn\" disabled={record.status !== 'ready' || loading} onClick={() => void playRecording(record)}>\n {t('Play recording')} · {new Date(record.startedAt).toLocaleString()}{record.partial ? ` · ${t('Partial')}` : ''}\n </button>\n </div>)}\n {hasMore && <button type=\"button\" className=\"devic-voice-text-btn\" disabled={loading} onClick={() => void list(records.length)}>{t('Load more')}</button>}\n {audioUrl && <div className=\"devic-voice-recording-player\"><audio controls src={audioUrl} /><a href={audioUrl} download={`${chatUid}-voice.wav`}>{t('Download recording')}</a></div>}\n </div>}\n {error && <div className=\"devic-voice-error\" role=\"alert\">{error}</div>}\n </section>;\n}\n\nfunction MicIcon() {\n return <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\" /><path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" /><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\" /><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\" />\n </svg>;\n}\nfunction MicOffIcon() {\n return <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" /><path d=\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\" /><path d=\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\" /><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\" /><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\" />\n </svg>;\n}\nfunction HangUpIcon() {\n return <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M12 9c-1.6 0-3.15.25-4.6.72v3.1c0 .39-.23.74-.56.9-.98.49-1.87 1.12-2.66 1.85-.18.18-.43.28-.7.28-.28 0-.53-.11-.71-.29L.29 13.08a.996.996 0 0 1 0-1.41C3.34 8.78 7.46 7 12 7s8.66 1.78 11.71 4.67c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-2.48 2.48c-.18.18-.43.29-.71.29-.27 0-.52-.11-.7-.28-.79-.74-1.69-1.36-2.67-1.85-.33-.16-.56-.5-.56-.9v-3.1C15.15 9.25 13.6 9 12 9z\" />\n </svg>;\n}\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"LiveVoicePanel.js","sources":["../../../../src/components/ChatDrawer/LiveVoicePanel.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { UseDevicLiveVoiceResult } from '../../hooks/useDevicLiveVoice';\nimport type { LiveVoiceInvitationProps } from './ChatDrawer.types';\nimport { useTranslations } from '../../i18n';\nimport './LiveVoicePanel.css';\nimport { LiveVoicePrompter } from './LiveVoicePrompter';\n\nexport interface LiveVoicePanelProps {\n voice: UseDevicLiveVoiceResult;\n canStart: boolean;\n recordSessions?: boolean;\n /** Close the invitation card; the drawer remembers it per assistant. */\n onDismiss?: () => void;\n /** A host's own invitation, in place of the default card. */\n invitation?: (props: LiveVoiceInvitationProps) => ReactNode;\n /** Rendered above the call box while voice is active: the composer's own banners. */\n children?: ReactNode;\n}\n\n/** `m:ss` of a running call, as the dictation timer formats it. */\nfunction formatSeconds(total: number): string {\n const seconds = Math.max(0, Math.floor(total));\n return `${Math.floor(seconds / 60)}:${(seconds % 60).toString().padStart(2, '0')}`;\n}\n\n/**\n * The live voice widget. Idle, it is an invitation card sitting above the\n * composer of a new conversation; once a call starts it takes the composer's\n * place — the same input area, the same rounded surface — with the transcript\n * prompter, one wave per speaker and the call controls where the send button\n * normally sits.\n */\nexport default function LiveVoicePanel({ voice, canStart, recordSessions, onDismiss, invitation, children }: LiveVoicePanelProps) {\n const t = useTranslations();\n const start = () => { if (canStart) void voice.start(); };\n\n if (voice.active) {\n const status = voice.state === 'connected' ? t('Live · {time}', { time: formatSeconds(voice.seconds) })\n : voice.state === 'reconnecting' ? t('Restoring voice…') : voice.state === 'closing' ? t('Closing voice…') : t('Connecting voice…');\n return <div className=\"devic-input-area devic-voice-area\" data-voice-state={voice.state}>\n {children}\n <section className=\"devic-voice-box\" aria-label={t('Voice mode')}>\n <LiveVoicePrompter voice={voice} />\n <div className=\"devic-voice-bar\">\n <span className=\"devic-voice-status\" role=\"status\"><i className=\"devic-voice-status-dot\" aria-hidden=\"true\" />{status}</span>\n {voice.playbackBlocked && <button type=\"button\" className=\"devic-voice-text-btn\" onClick={() => void voice.play()}>{t('Enable audio')}</button>}\n {voice.state === 'connecting'\n ? <button type=\"button\" className=\"devic-voice-text-btn\" onClick={() => void voice.stop()}>{t('Cancel')}</button>\n : <>\n <button type=\"button\" className=\"devic-input-btn devic-voice-mute\" aria-pressed={voice.muted} disabled={voice.state !== 'connected'}\n title={voice.muted ? t('Unmute') : t('Mute')} aria-label={voice.muted ? t('Unmute') : t('Mute')} onClick={() => voice.mute(!voice.muted)}>\n {voice.muted ? <MicOffIcon /> : <MicIcon />}\n </button>\n <button type=\"button\" className=\"devic-voice-end\" disabled={voice.state === 'closing'} onClick={() => void voice.stop()}>\n <HangUpIcon />{t('End voice')}\n </button>\n </>}\n </div>\n </section>\n </div>;\n }\n\n if (invitation) return <>{invitation({ start, canStart, dismiss: () => onDismiss?.(), recordSessions, error: voice.error })}</>;\n\n return <section className=\"devic-live-voice\" aria-label={t('Voice mode')}>\n <div className=\"devic-voice-card\">\n <span className=\"devic-voice-card-icon\" aria-hidden=\"true\"><MicIcon /></span>\n <div className=\"devic-voice-card-copy\">\n <div className=\"devic-voice-card-title\">{t('Voice mode')}</div>\n <div className=\"devic-voice-card-subtitle\">\n {t('Talk to the assistant in real time.')}{recordSessions !== false && <> {t('Voice sessions are recorded according to the assistant settings.')}</>}\n </div>\n </div>\n <button className=\"devic-voice-start\" type=\"button\" disabled={!canStart} onClick={start}><MicIcon />{t('Start voice')}</button>\n {onDismiss && <button className=\"devic-voice-card-close\" type=\"button\" onClick={onDismiss} title={t('Hide voice mode')} aria-label={t('Hide voice mode')}><CloseIcon /></button>}\n </div>\n {voice.error && <div className=\"devic-voice-error\" role=\"alert\">{t(voice.error.message)}</div>}\n </section>;\n}\n\nfunction MicIcon() {\n return <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\" /><path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" /><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\" /><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\" />\n </svg>;\n}\nfunction MicOffIcon() {\n return <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" /><path d=\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\" /><path d=\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\" /><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\" /><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\" />\n </svg>;\n}\nfunction CloseIcon() {\n return <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>;\n}\nfunction HangUpIcon() {\n return <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M12 9c-1.6 0-3.15.25-4.6.72v3.1c0 .39-.23.74-.56.9-.98.49-1.87 1.12-2.66 1.85-.18.18-.43.28-.7.28-.28 0-.53-.11-.71-.29L.29 13.08a.996.996 0 0 1 0-1.41C3.34 8.78 7.46 7 12 7s8.66 1.78 11.71 4.67c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-2.48 2.48c-.18.18-.43.29-.71.29-.27 0-.52-.11-.7-.28-.79-.74-1.69-1.36-2.67-1.85-.33-.16-.56-.5-.56-.9v-3.1C15.15 9.25 13.6 9 12 9z\" />\n </svg>;\n}\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
@@ -37,3 +37,5 @@ export { generateId, deepMerge, debounce, throttle, formatFileSize, storage, seg
37
37
  export type { ToolGroupSegment } from './utils';
38
38
  export { LiveVoicePrompter } from './components/ChatDrawer/LiveVoicePrompter';
39
39
  export type { LiveVoicePrompterProps } from './components/ChatDrawer/LiveVoicePrompter';
40
+ export type { LiveVoiceInvitationProps } from './components/ChatDrawer/ChatDrawer.types';
41
+ export { isVoiceInvitationHidden, hideVoiceInvitation, showVoiceInvitation } from './utils/voiceInvitation';
package/dist/esm/index.js CHANGED
@@ -49,5 +49,6 @@ export { FeedbackModal } from './components/Feedback/FeedbackModal.js';
49
49
  export { MessageActions } from './components/Feedback/MessageActions.js';
50
50
  export { debounce, deepMerge, formatFileSize, generateId, storage, throttle } from './utils/index.js';
51
51
  export { LiveVoicePrompter } from './components/ChatDrawer/LiveVoicePrompter.js';
52
+ export { hideVoiceInvitation, isVoiceInvitationHidden, showVoiceInvitation } from './utils/voiceInvitation.js';
52
53
  export { segmentToolCalls } from './utils/toolGroups.js';
53
54
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- .devic-voice-area{display:flex;flex-direction:column}.devic-voice-box{background:var(--devic-bg-secondary);border-radius:var(--devic-radius);color:var(--devic-text);min-width:0;padding:10px 12px 8px}.devic-voice-prompter{min-width:0}.devic-voice-prompter-viewport{height:var(--devic-voice-prompter-height,84px);-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 36px);mask-image:linear-gradient(180deg,transparent 0,#000 36px);overflow:hidden}.devic-voice-prompter-text{display:flex;flex-direction:column;gap:4px;justify-content:flex-end;min-height:100%;transition:transform .35s ease-out;will-change:transform}.devic-voice-turn{color:var(--devic-text-secondary);font-size:15px;line-height:1.5;margin:0;overflow-wrap:anywhere}.devic-voice-turn--current{color:var(--devic-text)}.devic-voice-turn--placeholder{color:var(--devic-text-muted);font-style:italic}.devic-voice-turn>span{color:var(--devic-text-muted);display:inline-block;font-size:11px;font-weight:600;letter-spacing:.06em;margin-right:8px;text-transform:uppercase;vertical-align:1px}.devic-voice-waves{border-top:1px solid var(--devic-border);display:flex;flex-direction:column;gap:6px;margin-top:10px;padding-top:10px}.devic-voice-wave-row{align-items:center;display:flex;gap:10px;min-width:0}.devic-voice-wave-row>span{color:var(--devic-text-muted);flex:0 0 var(--devic-voice-label-width,76px);font-size:11px;font-weight:600;letter-spacing:.06em;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.devic-voice-wave-canvas{display:block;flex:1;height:28px;min-width:0;width:100%}.devic-voice-wave-row--user{color:var(--devic-voice-user-color,var(--devic-text-muted))}.devic-voice-wave-row--assistant{color:var(--devic-voice-assistant-color,var(--devic-primary))}.devic-voice-bar{align-items:center;border-top:1px solid var(--devic-border);display:flex;gap:8px;margin-top:10px;min-height:28px;padding-top:8px}.devic-voice-status{align-items:center;color:var(--devic-text-secondary);display:inline-flex;flex:1;font-size:12px;font-variant-numeric:tabular-nums;gap:8px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-voice-status-dot{background:var(--devic-text-muted);border-radius:50%;flex-shrink:0;height:8px;width:8px}[data-voice-state=connected] .devic-voice-status-dot{animation:devic-voice-pulse 1.6s ease-out infinite;background:var(--devic-voice-connected-color,#52c41a)}[data-voice-state=closing] .devic-voice-status-dot,[data-voice-state=connecting] .devic-voice-status-dot,[data-voice-state=reconnecting] .devic-voice-status-dot{animation:devic-voice-blink 1s ease-in-out infinite}.devic-voice-box .devic-voice-mute[aria-pressed=true]{color:var(--devic-error,#ff4d4f)}.devic-voice-end{align-items:center;background:var(--devic-voice-end-color,#cf1322);border:none;border-radius:var(--devic-radius-sm);color:#fff;cursor:pointer;display:inline-flex;flex-shrink:0;font:inherit;font-size:13px;font-weight:500;gap:6px;height:28px;padding:0 10px}.devic-voice-end:hover:not(:disabled){filter:brightness(1.1)}.devic-voice-end:disabled{cursor:default;opacity:.6}.devic-voice-text-btn{background:none;border:none;border-radius:var(--devic-radius-sm);color:var(--devic-primary);cursor:pointer;font:inherit;font-size:12px;padding:4px 6px}.devic-voice-text-btn:disabled{cursor:not-allowed;opacity:.5}.devic-voice-text-btn:hover:not(:disabled){text-decoration:underline}.devic-live-voice{color:var(--devic-text);flex-shrink:0;min-width:0;padding:12px 16px 8px}.devic-voice-card{align-items:center;background:var(--devic-bg-secondary);background:color-mix(in srgb,var(--devic-primary) 7%,var(--devic-bg));border:1px solid var(--devic-border);border-radius:var(--devic-radius);display:flex;flex-wrap:wrap;gap:12px;padding:10px 12px 10px 14px}.devic-voice-card-icon{background:var(--devic-primary);border-radius:50%;color:var(--devic-user-bubble-text,#fff);display:grid;flex-shrink:0;height:36px;place-items:center;width:36px}.devic-voice-card-copy{flex:1 1 180px;min-width:0}.devic-voice-card-title{align-items:center;display:flex;flex-wrap:wrap;font-size:14px;font-weight:600;gap:8px;line-height:1.3}.devic-voice-tag{border:1px solid var(--devic-border);border-radius:999px;color:var(--devic-text-muted);font-size:10px;font-weight:600;letter-spacing:.06em;padding:1px 6px;text-transform:uppercase}.devic-voice-card-subtitle{color:var(--devic-text-muted);font-size:12px;line-height:1.4;margin-top:2px}.devic-voice-start{align-items:center;background:var(--devic-primary);border:none;border-radius:var(--devic-radius-sm);color:var(--devic-user-bubble-text,#fff);cursor:pointer;display:inline-flex;flex-shrink:0;font:inherit;font-size:13px;font-weight:500;gap:6px;height:32px;padding:0 12px}.devic-voice-start:hover:not(:disabled){background:var(--devic-primary-hover)}.devic-voice-start:disabled{cursor:not-allowed;opacity:.5}.devic-voice-error{background:#fff1f0;border:1px solid #ffccc7;border-radius:var(--devic-radius-sm);color:#cf1322;font-size:12px;margin-top:8px;padding:6px 10px}.devic-voice-recordings-toggle{margin:6px 0 0 -6px}.devic-voice-recordings{display:flex;flex-direction:column;gap:4px;max-height:180px;overflow:auto;padding:4px 4px 0}.devic-voice-recording{align-items:center;color:var(--devic-text-muted);display:flex;flex-wrap:wrap;font-size:12px;gap:4px 8px}.devic-voice-recording-dot{background:var(--devic-border);border-radius:50%;flex-shrink:0;height:6px;width:6px}.devic-voice-recording-player{align-items:center;display:flex;flex-wrap:wrap;font-size:12px;gap:12px;padding-top:4px}.devic-voice-recording-player audio{height:32px;max-width:100%}.devic-voice-recording-player a{color:var(--devic-primary)}.devic-live-voice a:focus-visible,.devic-live-voice button:focus-visible,.devic-voice-box button:focus-visible{outline:2px solid var(--devic-primary);outline-offset:2px}@keyframes devic-voice-pulse{0%{box-shadow:0 0 0 0 rgba(82,196,26,.45)}to{box-shadow:0 0 0 8px rgba(82,196,26,0)}}@keyframes devic-voice-blink{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.devic-voice-prompter-text{transition:none}.devic-voice-status-dot{animation:none}}.devic-state-tag{align-items:center;border:1px solid;border-radius:4px;cursor:default;display:inline-flex;font-family:var(--devic-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif);font-size:12px;font-weight:500;gap:6px;line-height:20px;padding:2px 8px;position:relative;white-space:nowrap}.devic-state-tag[data-interactive=true]{cursor:pointer}.devic-state-tag[data-interactive=true]:hover{opacity:.85}.devic-state-tag[data-color=gold]{background:rgba(250,173,20,.15);border-color:rgba(250,173,20,.35);color:#faad14}.devic-state-tag[data-color=processing]{background:rgba(22,119,255,.15);border-color:rgba(22,119,255,.35);color:#4096ff}.devic-state-tag[data-color=success]{background:rgba(82,196,26,.15);border-color:rgba(82,196,26,.35);color:#52c41a}.devic-state-tag[data-color=error]{background:rgba(255,77,79,.15);border-color:rgba(255,77,79,.35);color:#ff4d4f}.devic-state-tag[data-color=default]{background:hsla(0,0%,60%,.15);border-color:hsla(0,0%,60%,.35);color:#999}.devic-state-tag[data-color=purple]{background:rgba(114,46,209,.15);border-color:rgba(114,46,209,.35);color:#b37feb}.devic-state-tag[data-color=blue]{background:rgba(22,119,255,.15);border-color:rgba(22,119,255,.35);color:#4096ff}.devic-state-tag-icon{align-items:center;display:inline-flex;flex-shrink:0}.devic-state-tag-caret{align-items:center;display:inline-flex;margin-left:2px;transition:transform .2s ease}.devic-state-tag[data-dropdown-open=true] .devic-state-tag-caret{transform:rotate(180deg)}.devic-state-spinner{animation:devic-state-spin 1s linear infinite}@keyframes devic-state-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.devic-state-tooltip{background:rgba(0,0,0,.85);border-radius:6px;bottom:calc(100% + 8px);color:#fff;font-family:SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:400;line-height:1.4;max-width:280px;padding:6px 10px;pointer-events:none;white-space:normal;z-index:1060}.devic-state-tooltip,.devic-state-tooltip:after{left:50%;position:absolute;transform:translateX(-50%)}.devic-state-tooltip:after{border:5px solid transparent;border-top-color:rgba(0,0,0,.85);content:"";top:100%}.devic-state-dropdown{animation:devic-dropdownSlide .15s ease-out;background:#fff;border:1px solid #e8e8e8;border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.08),0 3px 6px rgba(0,0,0,.06);min-width:180px;padding:4px 0;position:absolute;right:0;top:calc(100% + 4px);z-index:1050}@keyframes devic-dropdownSlide{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.devic-state-dropdown-item{align-items:center;background:none;border:none;color:#333;cursor:pointer;display:flex;font-family:inherit;font-size:13px;gap:8px;padding:8px 12px;text-align:left;transition:background .15s;width:100%}.devic-state-dropdown-item:hover{background:#f5f5f5}.devic-state-dropdown-item-icon{align-items:center;display:flex;flex-shrink:0;justify-content:center;width:18px}.devic-state-tooltip-portal{background:rgba(0,0,0,.85);border-radius:6px;color:#fff;font-family:SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:400;line-height:1.4;max-width:280px;padding:6px 10px;pointer-events:none;white-space:normal;z-index:99999}.devic-state-dropdown-portal{animation:devic-dropdownSlide .15s ease-out;background:#fff;border:1px solid #e8e8e8;border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.08),0 3px 6px rgba(0,0,0,.06);min-width:180px;padding:4px 0;z-index:99999}.devic-state-modal-overlay{align-items:center;animation:devic-fadeIn .2s ease;background:rgba(0,0,0,.45);display:flex;inset:0;justify-content:center;position:fixed;z-index:1050}@keyframes devic-fadeIn{0%{opacity:0}to{opacity:1}}.devic-state-modal{animation:devic-modalSlide .2s ease-out;background:#fff;border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.08);display:flex;flex-direction:column;max-height:80vh;max-width:520px;width:90%}@keyframes devic-modalSlide{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}.devic-state-modal-header{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:16px 20px}.devic-state-modal-title{align-items:center;display:flex;font-size:16px;font-weight:600;gap:8px;margin:0}.devic-state-modal-close{align-items:center;background:none;border:none;border-radius:4px;color:#999;cursor:pointer;display:flex;padding:4px}.devic-state-modal-close:hover{background:#f5f5f5;color:#333}.devic-state-modal-body{flex:1;overflow-y:auto;padding:20px}.devic-state-modal-footer{border-top:1px solid #f0f0f0;display:flex;gap:8px;justify-content:flex-end;padding:12px 20px}.devic-state-btn{align-items:center;background:#fff;border:1px solid #d9d9d9;border-radius:6px;color:#333;cursor:pointer;display:inline-flex;font-family:inherit;font-size:14px;font-weight:500;gap:6px;justify-content:center;padding:6px 16px;transition:all .2s}.devic-state-btn:hover{border-color:#1677ff;color:#1677ff}.devic-state-btn-primary{background:#1677ff;border-color:#1677ff;color:#fff}.devic-state-btn-primary:hover{background:#4096ff;border-color:#4096ff;color:#fff}.devic-state-btn-danger{background:#ff4d4f;border-color:#ff4d4f;color:#fff}.devic-state-btn-danger:hover{background:#ff7875;border-color:#ff7875;color:#fff}.devic-state-btn-success{background:#52c41a;border-color:#52c41a;color:#fff}.devic-state-btn-success:hover{background:#73d13d;border-color:#73d13d;color:#fff}.devic-state-btn:disabled{cursor:not-allowed;opacity:.5}.devic-explain-content{border:1px solid #e8e8e8;border-radius:8px;font-family:SFMono-Regular,Consolas,monospace;font-size:13px;line-height:1.6;max-height:300px;min-height:150px;overflow-y:auto;padding:12px;white-space:pre-wrap}.devic-typing-cursor{animation:devic-blink 1s step-end infinite}@keyframes devic-blink{0%,to{opacity:1}50%{opacity:0}}.devic-approval-layout{display:flex;gap:16px}.devic-approval-request{background:#fafafa;border:1px solid #e8e8e8;border-radius:8px;flex:1;font-size:13px;line-height:1.6;max-height:250px;overflow-y:auto;padding:12px}.devic-approval-actions{display:flex;flex:1;flex-direction:column;gap:12px}.devic-approval-textarea{border:1px solid #d9d9d9;border-radius:6px;box-sizing:border-box;font-family:inherit;font-size:13px;min-height:80px;outline:none;padding:8px 12px;resize:vertical;width:100%}.devic-approval-textarea:focus{border-color:#1677ff}.devic-approval-buttons{display:flex;flex-direction:column;gap:8px}.devic-completion-select{background:#fff;border:1px solid #d9d9d9;border-radius:6px;cursor:pointer;font-family:inherit;font-size:14px;outline:none;padding:8px 12px;width:100%}.devic-completion-select:focus{border-color:#1677ff}.devic-state-loading{align-items:center;display:flex;justify-content:center;padding:24px}.devic-state-loading-spinner{animation:devic-state-spin .8s linear infinite;border:2px solid #f0f0f0;border-radius:50%;border-top-color:#1677ff;height:24px;width:24px}.devic-state-warning{align-items:flex-start;color:#cf1322;display:flex;font-size:13px;font-weight:500;gap:6px;margin-top:8px}.devic-message-actions{align-items:center;display:flex;gap:4px;opacity:0;transition:opacity .15s ease}.devic-message-actions:focus-within,.devic-message:hover .devic-message-actions{opacity:1}.devic-message-actions:has(.devic-action-btn--active){opacity:1}.devic-action-btn{align-items:center;background:transparent;border:none;border-radius:var(--devic-radius-sm,6px);color:var(--devic-text-muted,#94a3b8);cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;transition:all .15s ease;width:28px}.devic-action-btn:hover:not(:disabled){background:var(--devic-bg-secondary,#f8fafc);color:var(--devic-text-secondary,#64748b)}.devic-action-btn:disabled{cursor:not-allowed;opacity:.5}.devic-action-btn--active{color:var(--devic-primary,#3b82f6)}.devic-action-btn--active.devic-action-btn--positive{color:#22c55e}.devic-action-btn--active.devic-action-btn--negative{color:#ef4444}.devic-feedback-overlay{align-items:center;animation:devic-feedback-fade-in .15s ease;background:rgba(0,0,0,.4);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10001}@keyframes devic-feedback-fade-in{0%{opacity:0}to{opacity:1}}.devic-feedback-modal{animation:devic-feedback-slide-up .2s ease;background:var(--devic-bg,#fff);border-radius:var(--devic-radius,12px);box-shadow:0 20px 60px rgba(0,0,0,.2);margin:16px;max-width:400px;width:100%}@keyframes devic-feedback-slide-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.devic-feedback-modal-header{align-items:center;border-bottom:1px solid var(--devic-border,#e2e8f0);display:flex;gap:10px;padding:16px 16px 12px}.devic-feedback-modal-icon{align-items:center;background:var(--devic-bg-secondary,#f8fafc);border-radius:8px;color:var(--devic-text,#1e293b);display:flex;height:32px;justify-content:center;width:32px}.devic-feedback-modal-title{color:var(--devic-text,#1e293b);flex:1;font-size:15px;font-weight:600}.devic-feedback-modal-close{align-items:center;background:transparent;border:none;border-radius:6px;color:var(--devic-text-muted,#94a3b8);cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;transition:all .15s ease;width:28px}.devic-feedback-modal-close:hover{background:var(--devic-bg-secondary,#f8fafc);color:var(--devic-text-secondary,#64748b)}.devic-feedback-textarea{background:transparent;border:none;border-bottom:1px solid var(--devic-border,#e2e8f0);box-sizing:border-box;color:var(--devic-text,#1e293b);display:block;font-family:inherit;font-size:14px;line-height:1.5;padding:12px 16px;resize:none;width:100%}.devic-feedback-textarea:focus{outline:none}.devic-feedback-textarea::placeholder{color:var(--devic-text-muted,#94a3b8)}.devic-feedback-modal-actions{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px}.devic-feedback-btn{border:none;border-radius:var(--devic-radius-sm,6px);cursor:pointer;font-family:inherit;font-size:14px;font-weight:500;padding:8px 16px;transition:all .15s ease}.devic-feedback-btn:disabled{cursor:not-allowed;opacity:.6}.devic-feedback-btn--secondary{background:var(--devic-bg-secondary,#f8fafc);color:var(--devic-text-secondary,#64748b)}.devic-feedback-btn--secondary:hover:not(:disabled){background:var(--devic-border,#e2e8f0)}.devic-feedback-btn--primary{background:var(--devic-primary,#3b82f6);color:#fff}.devic-feedback-btn--primary:hover:not(:disabled){background:var(--devic-primary-hover,#2563eb)}.devic-cmd-result-actions{border-top:1px solid var(--devic-cmd-border,var(--devic-border,#e5e7eb));margin-top:8px;padding-top:8px}.devic-cmd-result-actions .devic-message-actions{opacity:1;padding-left:10px}.devic-cmd-result-actions .devic-action-btn{opacity:.7}.devic-cmd-result-actions .devic-action-btn--active,.devic-cmd-result-actions .devic-action-btn:hover{opacity:1}.devic-cm-overlay{align-items:center;background:rgba(0,0,0,.45);display:flex;inset:0;justify-content:center;position:fixed;z-index:10000}.devic-cm-modal{background:var(--devic-bg,#fff);border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.22);color:var(--devic-text,#333);display:flex;flex-direction:column;font-size:13px;max-height:min(640px,calc(100vh - 64px));width:min(560px,calc(100vw - 32px))}.devic-cm-header{align-items:center;border-bottom:1px solid var(--devic-border,#e8e8e8);display:flex;justify-content:space-between;padding:14px 16px}.devic-cm-title{align-items:center;display:flex;font-size:15px;font-weight:600;gap:8px;margin:0}.devic-cm-title svg{color:var(--devic-recall-accent,#722ed1)}.devic-cm-close{background:transparent;border:none;border-radius:6px;color:var(--devic-text-muted,#999);cursor:pointer;font-size:20px;line-height:1;padding:2px 6px}.devic-cm-close:hover{background:var(--devic-bg-secondary,#f5f5f5);color:var(--devic-text,#333)}.devic-cm-body{display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:12px 16px}.devic-cm-error{background:rgba(255,77,79,.08);border:1px solid rgba(255,77,79,.4);border-radius:8px;color:#cf1322;font-size:12px;padding:8px 10px}.devic-cm-empty,.devic-cm-loading{color:var(--devic-text-muted,#999);padding:24px 8px;text-align:center}.devic-cm-section-title{color:var(--devic-text-muted,#999);font-size:10px;font-weight:700;letter-spacing:.6px;margin-bottom:6px;text-transform:uppercase}.devic-cm-entry{align-items:flex-start;border:1px solid var(--devic-border,#e8e8e8);border-radius:8px;display:flex;gap:8px;justify-content:space-between;margin-bottom:6px;padding:8px 10px}.devic-cm-entry-content{align-items:flex-start;display:flex;flex:1;gap:6px;white-space:pre-wrap;word-break:break-word}.devic-cm-pin{color:var(--devic-recall-accent,#722ed1);flex-shrink:0;margin-top:2px}.devic-cm-entry-actions{display:flex;flex-shrink:0;gap:4px}.devic-cm-editor{display:flex;flex:1;flex-direction:column;gap:6px}.devic-cm-textarea{background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#d9d9d9);border-radius:8px;box-sizing:border-box;color:inherit;font:inherit;min-height:64px;padding:8px 10px;resize:vertical;width:100%}.devic-cm-textarea:focus{border-color:var(--devic-recall-accent,#722ed1);outline:none}.devic-cm-composer,.devic-cm-editor-actions{display:flex;gap:6px}.devic-cm-composer{flex-direction:column}.devic-cm-composer-row{display:flex;gap:6px}.devic-cm-select{color:inherit;padding:4px 8px}.devic-cm-btn,.devic-cm-select{background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#d9d9d9);border-radius:6px;font:inherit}.devic-cm-btn{color:var(--devic-text,#333);cursor:pointer;font-size:12px;padding:5px 12px}.devic-cm-btn:hover:not(:disabled){border-color:var(--devic-recall-accent,#722ed1);color:var(--devic-recall-accent,#722ed1)}.devic-cm-btn:disabled{cursor:not-allowed;opacity:.5}.devic-cm-btn-primary{background:var(--devic-recall-accent,#722ed1);border-color:var(--devic-recall-accent,#722ed1);color:#fff}.devic-cm-btn-primary:hover:not(:disabled){color:#fff;opacity:.9}.devic-cm-btn-small{font-size:11px;padding:2px 8px}.devic-cm-btn-danger:hover:not(:disabled){border-color:#ff4d4f;color:#ff4d4f}.devic-cm-footer{border-top:1px solid var(--devic-border,#e8e8e8);color:var(--devic-text-muted,#999);font-size:11px;padding:10px 16px}.devic-int-overlay{align-items:center;background:rgba(0,0,0,.45);display:flex;inset:0;justify-content:center;position:fixed;z-index:10000}.devic-int-panel{background:var(--devic-bg,#fff);color:var(--devic-text,#333);display:flex;flex-direction:column;font-size:13px;min-width:0;width:100%}.devic-int-modal{border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.22);max-height:min(660px,calc(100vh - 64px));width:min(620px,calc(100vw - 32px))}.devic-int-header{align-items:center;border-bottom:1px solid var(--devic-border,#e8e8e8);display:flex;justify-content:space-between;padding:14px 16px}.devic-int-title{align-items:center;display:flex;font-size:15px;font-weight:600;gap:8px;margin:0}.devic-int-title svg{color:var(--devic-primary,#1677ff)}.devic-int-close{background:transparent;border:none;border-radius:6px;color:var(--devic-text-muted,#999);cursor:pointer;font-size:20px;line-height:1;padding:2px 6px}.devic-int-close:hover{background:var(--devic-bg-secondary,#f5f5f5);color:var(--devic-text,#333)}.devic-int-search{align-items:center;background:var(--devic-bg-secondary,#f7f7f7);border:1px solid var(--devic-border,#e8e8e8);border-radius:8px;color:var(--devic-text-muted,#999);display:flex;gap:8px;margin:12px 16px 0;padding:7px 10px}.devic-int-search:focus-within{border-color:var(--devic-primary,#1677ff)}.devic-int-search input{-webkit-appearance:none;appearance:none;background:transparent;border:none;color:var(--devic-text,#333);flex:1;font:inherit;font-size:13px;min-width:0;outline:none}.devic-int-search input::-webkit-search-cancel-button{-webkit-appearance:none}.devic-int-search input::placeholder{color:var(--devic-text-muted,#999)}.devic-int-body{display:flex;flex-direction:column;gap:10px;overflow-y:auto;padding:12px 16px}.devic-int-error{background:rgba(255,77,79,.08);border:1px solid rgba(255,77,79,.4);border-radius:8px;color:#ff4d4f;font-size:12px;padding:8px 10px}.devic-int-notice{background:rgba(250,173,20,.1);border:1px solid rgba(250,173,20,.45);border-radius:8px;color:inherit;font-size:12px;padding:8px 10px}.devic-int-notice a{color:var(--devic-primary,#1677ff)}.devic-int-empty,.devic-int-loading{color:var(--devic-text-muted,#999);padding:24px 8px;text-align:center}.devic-int-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(158px,1fr))}.devic-int-card{border:1px solid var(--devic-border,#e8e8e8);border-radius:10px;display:flex;flex-direction:column;gap:6px;padding:12px}.devic-int-card[data-state=connected]{border-color:rgba(82,196,26,.45)}.devic-int-card[data-state=reconnect]{border-color:rgba(250,173,20,.5)}.devic-int-card-head{align-items:center;display:flex;gap:8px;justify-content:space-between}.devic-int-logo{background:var(--devic-bg-secondary,#f5f5f5);border-radius:8px;flex-shrink:0;height:32px;object-fit:contain;width:32px}.devic-int-logo-fallback{align-items:center;color:var(--devic-text-muted,#999);display:flex;font-weight:600;justify-content:center}.devic-int-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-int-state{align-items:center;color:var(--devic-text-muted,#999);display:inline-flex;font-size:11px;gap:4px;white-space:nowrap}.devic-int-card[data-state=connected] .devic-int-state{color:#52c41a}.devic-int-card[data-state=reconnect] .devic-int-state{color:#faad14}.devic-int-description{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--devic-text-muted,#999);display:-webkit-box;font-size:12px;line-height:1.4;overflow:hidden}.devic-int-accounts{display:flex;flex-direction:column;gap:4px;list-style:none;margin:0;padding:0}.devic-int-account{align-items:center;background:var(--devic-bg-secondary,#f7f7f7);border-radius:6px;display:flex;font-size:11px;gap:6px;padding:3px 6px}.devic-int-account-label{color:var(--devic-text-muted,#999);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-int-account-warn{color:#faad14}.devic-int-dot{background:#faad14;border-radius:50%;flex-shrink:0;height:6px;width:6px}.devic-int-dot[data-ok=true]{background:#52c41a}.devic-int-dot[data-off=true]{background:var(--devic-text-muted,#bbb)}.devic-int-unlink{background:transparent;border:none;border-radius:4px;color:var(--devic-text-muted,#999);cursor:pointer;flex-shrink:0;font-size:14px;line-height:1;padding:0 2px}.devic-int-unlink:hover:not(:disabled){color:#ff4d4f}.devic-int-unlink:disabled{cursor:not-allowed;opacity:.4}.devic-int-btn{background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#d9d9d9);border-radius:6px;color:var(--devic-text,#333);cursor:pointer;flex-shrink:0;font:inherit;font-size:12px;padding:5px 12px}.devic-int-btn:hover:not(:disabled){border-color:var(--devic-primary,#1677ff);color:var(--devic-primary,#1677ff)}.devic-int-btn:disabled{cursor:not-allowed;opacity:.5}.devic-int-btn-block{margin-top:auto;text-align:center;width:100%}.devic-int-btn-primary{background:var(--devic-primary,#1677ff);border-color:var(--devic-primary,#1677ff);color:#fff}.devic-int-btn-primary:hover:not(:disabled){color:#fff;opacity:.9}.devic-int-btn-small{font-size:11px;padding:2px 8px}.devic-int-overlay-stacked{background:rgba(0,0,0,.5);z-index:10001}.devic-int-connect-dialog{background:var(--devic-bg,#fff);border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.3);color:var(--devic-text,#333);display:flex;flex-direction:column;font-size:13px;max-height:calc(100vh - 64px);width:min(440px,calc(100vw - 32px))}.devic-int-connect-header{align-items:flex-start;border-bottom:1px solid var(--devic-border,#e8e8e8);display:flex;gap:10px;padding:14px 16px}.devic-int-connect-heading{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}.devic-int-connect-heading strong{font-size:14px}.devic-int-connect-heading span{color:var(--devic-text-muted,#999);font-size:11px;line-height:1.4}.devic-int-connect-body{display:flex;flex-direction:column;gap:14px;overflow-y:auto;padding:16px}.devic-int-connect-field{display:flex;flex-direction:column;gap:5px}.devic-int-connect-label{color:var(--devic-text,#333);font-size:12px;font-weight:500}.devic-int-connect-label em{color:var(--devic-text-muted,#999);font-style:normal;font-weight:400}.devic-int-connect-field input,.devic-int-connect-field select{background:var(--devic-bg-secondary,#fafafa);border:1px solid var(--devic-border,#d9d9d9);border-radius:8px;box-sizing:border-box;color:var(--devic-text,#333);font:inherit;font-size:13px;height:36px;line-height:normal;padding:0 10px;transition:border-color .15s,box-shadow .15s;width:100%}.devic-int-connect-field input::placeholder{color:var(--devic-text-muted,#bbb)}.devic-int-connect-field input:focus,.devic-int-connect-field select:focus{border-color:var(--devic-primary,#1677ff);box-shadow:0 0 0 3px color-mix(in srgb,var(--devic-primary,#1677ff) 18%,transparent);outline:none}.devic-int-connect-field input[data-invalid]{border-color:#ff4d4f}.devic-int-connect-field input[data-invalid]:focus{box-shadow:0 0 0 3px rgba(255,77,79,.18)}.devic-int-connect-hint{color:var(--devic-text-muted,#999);font-size:11px;line-height:1.45}.devic-int-connect-guide{color:var(--devic-primary,#1677ff);font-size:12px}.devic-int-connect-actions{justify-content:flex-end;padding:12px 16px}.devic-int-connect-actions,.devic-int-footer{border-top:1px solid var(--devic-border,#e8e8e8);display:flex;gap:8px}.devic-int-footer{align-items:center;color:var(--devic-text-muted,#999);font-size:11px;justify-content:space-between;padding:10px 16px}.devic-int-launcher{align-items:center;background:none;border:none;border-radius:var(--devic-radius-sm,6px);cursor:pointer;display:inline-flex;padding:4px 5px;transition:background var(--devic-transition,.2s)}.devic-int-launcher:hover{background:var(--devic-bg-secondary,#f5f5f5)}.devic-int-launcher-item{align-items:center;background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#e8e8e8);border-radius:6px;box-sizing:border-box;display:flex;flex-shrink:0;height:22px;justify-content:center;margin-left:-4px;overflow:hidden;width:22px}.devic-int-launcher-item:first-child{margin-left:0}.devic-int-launcher-item[data-connected=false]{opacity:.55}.devic-int-logo.devic-int-launcher-logo{background:transparent;border-radius:3px;font-size:11px;height:16px;width:16px}.devic-int-launcher-initial{align-items:center;display:inline-flex;font-size:10px;font-weight:600;justify-content:center;line-height:1}.devic-int-launcher-more{background:var(--devic-bg-secondary,#f0f0f0);color:var(--devic-text-muted,#999);font-size:10px;font-weight:600}.devic-int-launcher-loading{cursor:default}.devic-int-launcher-loading:hover{background:none}.devic-int-launcher-skeleton{animation:devic-int-pulse 1.4s ease-in-out infinite;background:var(--devic-bg-secondary,#f0f0f0)}.devic-int-launcher-skeleton:nth-child(2){animation-delay:.16s}.devic-int-launcher-skeleton:nth-child(3){animation-delay:.32s}.devic-int-launcher-skeleton:nth-child(n+4){animation-delay:.48s}@keyframes devic-int-pulse{0%,to{opacity:.35}50%{opacity:.75}}@media (prefers-reduced-motion:reduce){.devic-int-launcher-skeleton{animation:none;opacity:.5}}.devic-int-launcher[data-dark=true] .devic-int-launcher-item{background:hsla(0,0%,100%,.92);border-color:hsla(0,0%,100%,.16)}.devic-int-launcher[data-dark=true] .devic-int-launcher-more{background:var(--devic-bg-secondary,#f0f0f0);border-color:var(--devic-border,#e8e8e8)}.devic-int-panel[data-dark=true] .devic-int-card .devic-int-logo{background:hsla(0,0%,100%,.92)}.devic-int-panel[data-dark=true] .devic-int-card .devic-int-logo-fallback{color:#595959}.devic-int-hint{align-items:center;background:var(--devic-bg-secondary,#f7f7f7);border:1px solid var(--devic-border,#e8e8e8);border-radius:12px;display:flex;gap:4px;margin:0 0 8px;padding:6px 8px 6px 12px;transition:opacity .2s ease,transform .2s ease}.devic-int-hint[data-leaving=true]{opacity:0;pointer-events:none;transform:translateY(-4px)}.devic-int-hint-main{align-items:center;background:none;border:none;border-radius:8px;color:inherit;cursor:pointer;display:flex;flex:1;font:inherit;gap:10px;justify-content:space-between;min-width:0;padding:2px}.devic-int-hint-label{color:var(--devic-text-muted,#8c8c8c);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-int-hint-main:hover .devic-int-hint-label{color:var(--devic-text,#333)}.devic-int-hint-logos{gap:6px}.devic-int-hint-item,.devic-int-hint-logos{align-items:center;display:flex;flex-shrink:0}.devic-int-hint-item{background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#e8e8e8);border-radius:6px;box-sizing:border-box;height:24px;justify-content:center;overflow:hidden;width:24px}.devic-int-hint-item[data-connected=false]{opacity:.6}.devic-int-logo.devic-int-hint-logo{background:transparent;border-radius:3px;font-size:11px;height:17px;width:17px}.devic-int-hint-more{background:var(--devic-bg-secondary,#f0f0f0);color:var(--devic-text-muted,#999);font-size:10px;font-weight:600}.devic-int-hint-close{background:transparent;border:none;border-radius:6px;color:var(--devic-text-muted,#999);cursor:pointer;flex-shrink:0;font-size:18px;line-height:1;padding:2px 6px}.devic-int-hint-close:hover{background:var(--devic-bg,#fff);color:var(--devic-text,#333)}.devic-int-hint[data-dark=true] .devic-int-hint-item{background:hsla(0,0%,100%,.92);border-color:hsla(0,0%,100%,.16)}.devic-int-hint[data-dark=true] .devic-int-hint-more{background:var(--devic-bg,#1f1f1f);border-color:var(--devic-border,#303030)}.devic-int-hint-ghost{align-items:center;display:flex;gap:6px;pointer-events:none;position:fixed;z-index:10001}.devic-int-toggle{display:inline-flex;flex-shrink:0;position:relative}.devic-int-toggle-btn{position:relative}.devic-int-toggle-badge{background:var(--devic-primary,#1677ff);border-radius:7px;box-sizing:border-box;color:#fff;font-size:9px;font-weight:600;height:14px;line-height:14px;min-width:14px;padding:0 3px;position:absolute;right:-2px;text-align:center;top:-2px}.devic-int-toggle-popover{background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#e8e8e8);border-radius:var(--devic-radius,10px);bottom:calc(100% + 8px);box-shadow:0 8px 24px rgba(0,0,0,.14);box-sizing:border-box;color:var(--devic-text,#333);left:0;max-height:320px;overflow-y:auto;padding:10px;position:absolute;width:260px;z-index:10002}.devic-int-toggle-head{border-bottom:1px solid var(--devic-border,#e8e8e8);display:flex;flex-direction:column;gap:2px;margin-bottom:6px;padding:2px 2px 8px}.devic-int-toggle-head strong{font-size:13px}.devic-int-toggle-head span{color:var(--devic-text-muted,#999);font-size:11px;line-height:1.4}.devic-int-toggle-list{list-style:none;margin:0;padding:0}.devic-int-toggle-row{align-items:center;border-radius:var(--devic-radius-sm,6px);cursor:pointer;display:flex;gap:8px;justify-content:space-between;padding:6px 4px}.devic-int-toggle-row:hover{background:var(--devic-bg-secondary,#f5f5f5)}.devic-int-toggle-app{align-items:center;display:flex;gap:8px;min-width:0}.devic-int-toggle-app .devic-int-logo{border-radius:4px;flex-shrink:0;height:18px;object-fit:contain;width:18px}.devic-int-toggle-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-int-toggle-group{border-top:1px solid var(--devic-border,hsla(0,0%,50%,.22));font-size:10px;letter-spacing:.06em;margin-top:6px;opacity:.55;padding:10px 4px 4px;text-transform:uppercase}.devic-int-toggle-mcp-logo{border-radius:4px;flex-shrink:0;height:18px;object-fit:contain;width:18px}.devic-int-toggle-mcp-fallback{align-items:center;background:var(--devic-surface-2,hsla(0,0%,50%,.18));color:inherit;display:inline-flex;font-size:10px;font-weight:600;justify-content:center}.devic-int-toggle-switch{appearance:none;-webkit-appearance:none;background:var(--devic-border,#d9d9d9);border-radius:9px;cursor:pointer;flex-shrink:0;height:18px;margin:0;position:relative;transition:background var(--devic-transition,.2s);width:32px}.devic-int-toggle-switch:after{background:#fff;border-radius:50%;content:"";height:14px;left:2px;position:absolute;top:2px;transition:transform var(--devic-transition,.2s);width:14px}.devic-int-toggle-switch:checked{background:var(--devic-primary,#1677ff)}.devic-int-toggle-switch:checked:after{transform:translateX(14px)}.devic-int-toggle-switch:focus-visible{outline:2px solid var(--devic-primary,#1677ff);outline-offset:2px}.devic-int-toggle-manage{background:none;border:none;border-radius:0 0 var(--devic-radius-sm,6px) var(--devic-radius-sm,6px);border-top:1px solid var(--devic-border,#e8e8e8);color:var(--devic-primary,#1677ff);cursor:pointer;font:inherit;font-size:12px;margin-top:6px;padding:6px;width:100%}.devic-int-toggle-manage:hover{background:var(--devic-bg-secondary,#f5f5f5)}.devic-int-toggle[data-dark=true] .devic-int-toggle-popover{box-shadow:0 8px 24px rgba(0,0,0,.45)}.devic-int-toggle[data-dark=true] .devic-int-toggle-switch:not(:checked){background:var(--devic-border,#434343)}.devic-int-body-secondary{overflow:visible;padding-top:0}.devic-int-mcp-section{border-top:1px solid var(--devic-border,#e8e8e8);display:flex;flex-direction:column;gap:10px;padding-top:12px}.devic-int-mcp-heading h4{font-size:13px;font-weight:600;margin:0}.devic-int-mcp-heading span{color:var(--devic-text-muted,#999);display:block;font-size:12px;margin-top:2px}.devic-int-mcp-logo{border-radius:8px;flex-shrink:0;height:32px;object-fit:contain;width:32px}.devic-int-mcp-logo-fallback{align-items:center;background:var(--devic-primary,#1677ff);color:#fff;display:inline-flex;font-size:14px;font-weight:600;justify-content:center}.devic-int-mcp-note{color:var(--devic-text-muted,#999);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-int-mcp-note-warn{color:#faad14}.devic-int-mcp-add{align-self:flex-start;border-style:dashed}.devic-int-mcp-remove{border-color:rgba(255,77,79,.35);color:#ff4d4f}.devic-int-mcp-advanced{display:flex;flex-direction:column;gap:8px}.devic-int-mcp-disclosure{align-self:flex-start;font:inherit;font-size:12px}.devic-int-mcp-copy,.devic-int-mcp-disclosure{background:none;border:none;color:var(--devic-primary,#1677ff);cursor:pointer;padding:0}.devic-int-mcp-copy{font:inherit;font-size:inherit}.devic-int-toggle-btn-loading{animation:devic-int-toggle-pulse 1.4s ease-in-out infinite;cursor:default;opacity:.35}@keyframes devic-int-toggle-pulse{0%,to{opacity:.25}50%{opacity:.5}}.devic-chat-drawer{--devic-primary:#1890ff;--devic-primary-hover:#40a9ff;--devic-primary-light:#e6f7ff;--devic-bg:#fff;--devic-bg-secondary:#f5f5f5;--devic-text:#333;--devic-text-secondary:#666;--devic-text-muted:#999;--devic-border:#e8e8e8;--devic-shadow:0 4px 12px rgba(0,0,0,.15);--devic-error:#ff4d4f;--devic-queued-accent:var(--devic-text-muted);--devic-queued-bubble-bg:transparent;--devic-queued-border:var(--devic-border);--devic-radius:8px;--devic-radius-sm:4px;--devic-radius-lg:16px;--devic-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--devic-transition:0.3s ease;background:var(--devic-bg);bottom:0;box-shadow:var(--devic-shadow);color:var(--devic-text);display:flex;flex-direction:column;font-family:var(--devic-font-family);font-size:14px;line-height:1.5;position:fixed;top:0;transition:transform var(--devic-transition)}.devic-chat-drawer[data-position=right]{right:0;transform:translateX(100%)}.devic-chat-drawer[data-position=left]{left:0;transform:translateX(-100%)}.devic-chat-drawer[data-open=true]{transform:translateX(0)}.devic-drawer-overlay{background:rgba(0,0,0,.3);inset:0;opacity:0;position:fixed;transition:opacity var(--devic-transition),visibility var(--devic-transition);visibility:hidden}.devic-drawer-overlay[data-open=true]{opacity:1;visibility:visible}.devic-drawer-header{align-items:center;border-bottom:1px solid var(--devic-border);display:flex;flex-shrink:0;justify-content:space-between;padding:16px}.devic-drawer-avatar{border-radius:50%;flex-shrink:0;height:28px;object-fit:cover;width:28px}.devic-drawer-title{flex-shrink:1;font-size:16px;font-weight:600;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-drawer-close{background:none;border:none;border-radius:var(--devic-radius-sm);color:var(--devic-text-secondary);cursor:pointer;padding:8px;transition:background var(--devic-transition),color var(--devic-transition)}.devic-drawer-close:hover{background:var(--devic-bg-secondary);color:var(--devic-text)}.devic-messages-container{display:flex;flex:1;flex-direction:column;gap:12px;overflow-y:auto;padding:16px}.devic-welcome{color:var(--devic-text-secondary);padding:24px 16px;text-align:center}.devic-welcome-text{font-size:16px;margin-bottom:16px}.devic-suggested-messages{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.devic-suggested-btn{background:var(--devic-bg);border:1px solid var(--devic-border);border-radius:var(--devic-radius-lg);color:var(--devic-text);cursor:pointer;font-size:13px;padding:8px 16px;transition:border-color var(--devic-transition),background var(--devic-transition)}.devic-suggested-btn:hover{background:var(--devic-primary-light);border-color:var(--devic-primary)}.devic-message{display:flex;flex-direction:column;max-width:85%}.devic-message[data-role=user]{align-self:flex-end}.devic-message[data-role=assistant],.devic-message[data-role=tool]{align-self:flex-start}.devic-message-bubble{word-wrap:break-word;border-radius:var(--devic-radius);padding:10px 14px}.devic-message[data-role=user] .devic-message-bubble{background:var(--devic-user-bubble,var(--devic-primary));border-bottom-right-radius:var(--devic-radius-sm);color:var(--devic-user-bubble-text,#fff)}.devic-message[data-role=assistant] .devic-message-bubble{background:var(--devic-assistant-bubble,var(--devic-bg-secondary));border-bottom-left-radius:var(--devic-radius-sm);color:var(--devic-assistant-bubble-text,var(--devic-text))}.devic-message[data-role=tool] .devic-message-bubble{background:var(--devic-primary-light);border:1px solid var(--devic-primary);color:var(--devic-text);font-size:12px}.devic-message-footer{align-items:center;display:flex;gap:8px;justify-content:space-between;margin-top:4px}.devic-message-time{color:var(--devic-text-muted);font-size:11px}.devic-message[data-role=user] .devic-message-footer{justify-content:flex-end}.devic-message[data-role=user] .devic-message-time{text-align:right}.devic-message[data-queued=true] .devic-message-bubble{background:var(--devic-queued-bubble-bg);border:1px dashed var(--devic-queued-border);color:var(--devic-text);opacity:.85}.devic-message-queued-label{align-items:center;color:var(--devic-queued-accent);display:inline-flex;font-size:11px;gap:4px}.devic-message-files{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.devic-message-file{align-items:center;background:hsla(0,0%,100%,.2);border-radius:var(--devic-radius-sm);display:flex;font-size:12px;gap:6px;padding:6px 10px}.devic-recall{align-self:flex-start;background:var(--devic-recall-bg,rgba(114,46,209,.06));border:1px solid var(--devic-recall-border,rgba(114,46,209,.3));border-radius:var(--devic-radius-sm,8px);color:var(--devic-text-secondary);flex-shrink:0;font-size:12px;margin:2px 0 8px;max-width:88%;overflow:hidden}.devic-recall-header{align-items:center;background:transparent;border:none;color:inherit;cursor:pointer;display:flex;font:inherit;gap:6px;padding:6px 10px;text-align:left;width:100%}.devic-recall-icon{color:var(--devic-recall-accent,#722ed1);flex-shrink:0}.devic-recall-title{color:var(--devic-text);font-weight:600;white-space:nowrap}.devic-recall-summary{opacity:.75;white-space:nowrap}.devic-recall-spacer{flex:1}.devic-recall-source{border:1px solid var(--devic-recall-border,rgba(114,46,209,.3));border-radius:4px;color:var(--devic-recall-accent,#722ed1);font-size:10px;line-height:16px;padding:0 6px;white-space:nowrap}.devic-recall-chevron{flex-shrink:0;opacity:.6;transition:transform .15s ease}.devic-recall-body{display:flex;flex-direction:column;gap:8px;padding:2px 10px 10px}.devic-recall-facts{display:flex;flex-direction:column;gap:6px}.devic-recall-fact{color:var(--devic-text);display:flex;flex-direction:column;gap:2px}.devic-recall-fact-meta{color:var(--devic-text-muted);font-size:10px}.devic-recall-entities{display:flex;flex-wrap:wrap;gap:4px}.devic-recall-entity{background:var(--devic-bg);border:1px solid var(--devic-border,#d9d9d9);border-radius:4px;color:var(--devic-text-secondary);font-size:10px;line-height:18px;padding:0 6px}.devic-recall-entity-type{opacity:.55}.devic-recall-turns{display:flex;flex-direction:column;gap:3px}.devic-recall-turns-title{font-size:10px;font-weight:600;letter-spacing:.4px;opacity:.7;text-transform:uppercase}.devic-recall-turn{font-size:11px;opacity:.85}.devic-recall-turn-role{font-weight:600}.devic-loading{align-self:flex-start;display:flex;gap:4px;padding:10px 14px}.devic-loading-dot{animation:devic-bounce 1.4s ease-in-out infinite both;background:var(--devic-text-muted);border-radius:50%;height:8px;width:8px}.devic-loading-dot:first-child{animation-delay:-.32s}.devic-loading-dot:nth-child(2){animation-delay:-.16s}@keyframes devic-bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.devic-tool-group{align-self:flex-start;display:flex;flex-direction:column;gap:2px;max-width:85%}.devic-tool-activity{align-items:flex-start;animation:devic-slideUp .3s ease-out;display:flex;gap:8px;padding:4px 0}.devic-tool-activity-icon{align-items:center;color:var(--devic-text-muted);display:flex;flex-shrink:0;margin-top:1px}.devic-tool-activity--active .devic-tool-activity-icon{color:var(--devic-primary)}.devic-tool-activity-text{color:var(--devic-text-secondary);font-size:13px;line-height:1.4}.devic-glow-text{animation:devic-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes devic-pulse{0%,to{opacity:1}50%{opacity:.5}}.devic-spinner{animation:devic-spin 1s linear infinite}@keyframes devic-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes devic-slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.devic-tool-collapse-btn{align-items:center;background:none;border:none;color:var(--devic-text-muted);cursor:pointer;display:flex;font-family:var(--devic-font-family);font-size:12px;gap:6px;padding:4px 0;transition:color .2s ease}.devic-tool-collapse-btn:hover{color:var(--devic-primary)}.devic-tool-group-items{animation:devic-expandItems .4s ease-out;overflow:hidden}.devic-tool-group-items[data-expanded=true]{max-height:500px}@keyframes devic-expandItems{0%{max-height:0;opacity:0}to{max-height:500px;opacity:1}}.devic-input-area{border-top:1px solid var(--devic-border);flex-shrink:0;padding:16px}.devic-input-wrapper{--devic-input-row-height:28px;--devic-input-line-height:20px;align-items:flex-end;background:var(--devic-bg-secondary);border-radius:var(--devic-radius);display:flex;gap:8px;padding:8px 12px}.devic-input{background:none;border:none;box-sizing:border-box;color:var(--devic-text);flex:1;font-family:inherit;font-size:14px;line-height:var(--devic-input-line-height);max-height:120px;min-height:var(--devic-input-row-height);outline:none;padding:calc((var(--devic-input-row-height) - var(--devic-input-line-height))/2) 0;resize:none}.devic-input::placeholder{color:var(--devic-text-muted)}.devic-input-btn{align-items:center;background:none;border:none;border-radius:var(--devic-radius-sm);box-sizing:border-box;color:var(--devic-text-secondary);cursor:pointer;display:inline-flex;flex-shrink:0;justify-content:center;min-height:var(--devic-input-row-height,28px);padding:4px;transition:color var(--devic-transition)}.devic-input-btn:hover:not(:disabled){color:var(--devic-primary)}.devic-input-btn:disabled{cursor:not-allowed;opacity:.5}.devic-send-btn{padding:4px 12px}.devic-send-btn,.devic-stop-btn{background:var(--devic-send-btn,var(--devic-primary));border-radius:var(--devic-radius-sm);color:#fff}.devic-stop-btn{min-width:var(--devic-input-row-height,28px);padding:4px}.devic-stop-btn:hover{background:var(--devic-primary-hover);color:#fff}.devic-send-btn-wrapper{flex-shrink:0;position:relative}.devic-send-btn-custom{align-items:center;display:flex;justify-content:center;pointer-events:none}.devic-send-btn-overlay{background:transparent;border:none;cursor:pointer;inset:0;margin:0;padding:0;position:absolute}.devic-send-btn-overlay:disabled{cursor:not-allowed;opacity:.5}.devic-send-btn:hover:not(:disabled){background:var(--devic-primary-hover);color:#fff}.devic-speech-error{background:#fff1f0;border:1px solid #ffccc7;border-radius:var(--devic-radius-sm);color:#cf1322;font-size:12px;margin-bottom:8px;padding:6px 10px}.devic-speech-mic.devic-input-btn:hover:not(:disabled){color:var(--devic-primary)}.devic-speech-mic-wrap{align-items:center;display:inline-flex;flex-shrink:0;justify-content:center;position:relative}.devic-speech-mic-wrap[data-holding=true] .devic-speech-mic{color:var(--devic-primary)}.devic-mic-hold-ring{height:calc(100% + 6px);inset:-3px;pointer-events:none;position:absolute;transform:rotate(-90deg);width:calc(100% + 6px)}.devic-mic-hold-ring-track{fill:none;stroke:var(--devic-primary);stroke-opacity:.18;stroke-width:3}.devic-mic-hold-ring-progress{fill:none;stroke:var(--devic-primary);stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset 90ms linear}.devic-speech-panel{align-items:center;display:flex;flex:1;gap:8px;min-height:var(--devic-input-row-height,28px)}.devic-speech-live{align-items:center;display:flex;flex:1;gap:10px;justify-content:flex-start}.devic-speech-timer{color:var(--devic-text-secondary);font-size:13px;font-variant-numeric:tabular-nums}.devic-speech-confirm{color:#389e0d}.devic-speech-confirm.devic-input-btn:hover:not(:disabled){color:#237804}.devic-speech-confirm-wrap{align-items:center;display:inline-flex;flex-shrink:0;justify-content:center;position:relative}.devic-autostop-ring{height:calc(100% + 6px);inset:-3px;pointer-events:none;position:absolute;transform:rotate(-90deg);width:calc(100% + 6px)}.devic-autostop-ring-track{fill:none;stroke:#389e0d;stroke-opacity:.18;stroke-width:3}.devic-autostop-ring-progress{fill:none;stroke:#389e0d;stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset 90ms linear}.devic-speech-confirm-wrap[data-autostop=true] .devic-speech-confirm{animation:devic-autostop-pulse 1s ease-in-out infinite}@keyframes devic-autostop-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.devic-handoff-bar{align-items:center;background:var(--devic-primary-light,#e6f7ff);border-radius:8px;color:var(--devic-primary);display:flex;font-size:12px;gap:8px;margin-bottom:6px;padding:5px 8px}.devic-handoff-dot{animation:devic-handoff-blink 1.2s ease-in-out infinite;background:var(--devic-primary);border-radius:50%;flex-shrink:0;height:8px;width:8px}.devic-handoff-bar[data-waiting=true] .devic-handoff-dot{animation-duration:.7s}@keyframes devic-handoff-blink{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}.devic-handoff-label{flex:1;font-weight:500}.devic-handoff-stop{align-items:center;background:transparent;border:none;border-radius:50%;color:inherit;cursor:pointer;display:inline-flex;height:22px;justify-content:center;opacity:.8;padding:0;width:22px}.devic-handoff-stop:hover{background:rgba(0,0,0,.06);opacity:1}.devic-handoff-pending{align-items:center;animation:devic-handoff-pending-in .18s ease-out;display:flex;flex:1;gap:10px;min-height:24px;min-width:0}@keyframes devic-handoff-pending-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.devic-handoff-pending-icon{align-items:center;animation:devic-autostop-pulse 1s ease-in-out infinite;color:var(--devic-primary);display:inline-flex;flex-shrink:0;height:36px;justify-content:center;position:relative;width:36px}.devic-handoff-ring{height:100%;inset:0;pointer-events:none;position:absolute;transform:rotate(-90deg);width:100%}.devic-handoff-ring-track{fill:none;stroke:var(--devic-primary);stroke-opacity:.18;stroke-width:3}.devic-handoff-ring-progress{fill:none;stroke:var(--devic-primary);stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset 90ms linear}.devic-handoff-pending-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}.devic-handoff-pending-title{color:var(--devic-primary);font-size:13px;font-weight:500}.devic-handoff-pending-preview{color:var(--devic-text-secondary);font-size:12px;max-height:4.5em;overflow-wrap:anywhere;overflow-y:auto;white-space:normal;word-break:break-word}.devic-speech-cancel{color:var(--devic-text-muted)}.devic-speech-cancel.devic-input-btn:hover:not(:disabled){color:#cf1322}.devic-speech-status{color:var(--devic-text-secondary);font-size:13px}.devic-speech-spinner{animation:devic-spin .8s linear infinite;border:2px solid var(--devic-border);border-radius:50%;border-top-color:var(--devic-primary);flex-shrink:0;height:16px;width:16px}.devic-transcript-playback{align-items:center;background:hsla(0,0%,100%,.18);border-radius:999px;display:inline-flex;font-size:12px;gap:6px;line-height:1;margin-top:6px;max-width:100%;padding:3px 8px 3px 3px}.devic-message[data-role=assistant] .devic-transcript-playback{background:var(--devic-bg-secondary,rgba(0,0,0,.05))}.devic-transcript-btn{align-items:center;background:hsla(0,0%,100%,.85);border:none;border-radius:50%;color:var(--devic-primary,#6c5ce7);cursor:pointer;display:inline-flex;flex-shrink:0;height:22px;justify-content:center;padding:0;transition:background .15s ease;width:22px}.devic-transcript-btn:hover:not(:disabled){background:#fff}.devic-transcript-btn:disabled{cursor:default;opacity:.7}.devic-transcript-icon{align-items:center;display:inline-flex;opacity:.85}.devic-transcript-playback[data-playing=true] .devic-transcript-icon{animation:devic-pulse 1.2s ease-in-out infinite}.devic-transcript-label{opacity:.9;white-space:nowrap}.devic-transcript-spinner{animation:devic-spin .8s linear infinite;border:2px solid rgba(108,92,231,.3);border-radius:50%;border-top:2px solid var(--devic-primary,#6c5ce7);height:12px;width:12px}.devic-equalizer{align-items:center;display:flex;gap:3px;height:24px}.devic-equalizer-bar{background:var(--devic-primary);border-radius:2px;min-height:3px;transition:height 90ms ease-out;width:3px}.devic-equalizer[data-paused=true] .devic-equalizer-bar{background:var(--devic-text-muted);height:10%!important}.devic-file-preview{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.devic-file-preview-item{align-items:center;background:var(--devic-bg);border:1px solid var(--devic-border);border-radius:var(--devic-radius-sm);display:flex;font-size:12px;gap:6px;padding:4px 8px}.devic-file-remove{background:none;border:none;color:var(--devic-text-muted);cursor:pointer;font-size:16px;line-height:1;padding:0}.devic-file-remove:hover{color:#ff4d4f}.devic-file-preview-thumb{border-radius:var(--devic-radius-sm);display:block;height:28px;object-fit:cover;width:28px}.devic-input-area{position:relative}.devic-drop-overlay{align-items:center;background:var(--devic-bg);border:2px dashed var(--devic-primary,var(--devic-border));border-radius:var(--devic-radius);color:var(--devic-text-muted);display:flex;flex-direction:column;font-size:13px;gap:8px;inset:0;justify-content:center;pointer-events:none;position:absolute;z-index:2}.devic-pasted-cards{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.devic-pasted-card{background:var(--devic-bg);border:1px solid var(--devic-border);border-radius:var(--devic-radius);font-size:12px;max-width:240px;padding:10px;position:relative;text-align:left}.devic-pasted-card-preview{-webkit-line-clamp:5;-webkit-box-orient:vertical;color:var(--devic-text-muted);display:-webkit-box;line-height:1.4;margin:0 0 8px;overflow:hidden}.devic-pasted-card-footer{align-items:center;display:flex;gap:8px}.devic-pasted-card-badge{background:var(--devic-bg-secondary);border-radius:var(--devic-radius-sm);color:var(--devic-text);font-size:10px;font-weight:600;letter-spacing:.04em;padding:2px 6px}.devic-pasted-card-meta{color:var(--devic-text-muted);font-size:11px}.devic-pasted-card-remove{position:absolute;right:6px;top:4px}.devic-message-pasted{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}.devic-message-pasted .devic-pasted-card{max-width:100%;overflow:hidden;padding:0}.devic-pasted-card-toggle{background:none;border:none;color:var(--devic-text);cursor:pointer;display:block;font:inherit;padding:10px;text-align:left;width:100%}.devic-pasted-card-full{color:var(--devic-text);font-family:var(--devic-font-mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:11px;line-height:1.5;margin:0 0 8px;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.devic-message-file-image{border-radius:var(--devic-radius-sm);display:block;max-width:220px;overflow:hidden}.devic-message-file-image img{display:block;height:auto;width:100%}.devic-trigger{align-items:center;background:var(--devic-primary);border:none;border-radius:50%;box-shadow:var(--devic-shadow);color:#fff;cursor:pointer;display:flex;height:56px;justify-content:center;position:fixed;transition:background var(--devic-transition),transform var(--devic-transition);width:56px}.devic-trigger:hover{background:var(--devic-primary-hover);transform:scale(1.05)}.devic-trigger svg{height:24px;width:24px}.devic-error{background:#fff2f0;border:1px solid #ffccc7;border-radius:var(--devic-radius);color:#ff4d4f;font-size:13px;margin:8px 16px;padding:12px}.devic-messages-container::-webkit-scrollbar{width:6px}.devic-messages-container::-webkit-scrollbar-track{background:transparent}.devic-messages-container::-webkit-scrollbar-thumb{background:var(--devic-border);border-radius:3px}.devic-messages-container::-webkit-scrollbar-thumb:hover{background:var(--devic-text-muted)}.devic-chat-drawer[data-mode=inline]{border:1px solid var(--devic-border);bottom:auto;box-shadow:none;height:100%;left:auto;position:relative;right:auto;top:auto;transform:none}.devic-drawer-header-actions{align-items:center;display:flex;gap:4px;margin-left:auto}.devic-new-chat-btn{background:none;border:none;border-radius:var(--devic-radius-sm);color:var(--devic-text-secondary);cursor:pointer;padding:8px;transition:background var(--devic-transition),color var(--devic-transition)}.devic-new-chat-btn:hover{background:var(--devic-bg-secondary);color:var(--devic-primary)}.devic-conversation-selector{flex:1;margin:0 8px;min-width:72px;position:relative}.devic-conversation-selector-trigger{align-items:center;background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:var(--devic-radius-sm);color:var(--devic-text);cursor:pointer;display:flex;font-family:var(--devic-font-family);font-size:13px;gap:6px;padding:6px 10px;text-align:left;transition:border-color var(--devic-transition);width:100%}.devic-conversation-selector-trigger:hover{border-color:var(--devic-primary)}.devic-conversation-selector-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-conversation-dropdown{background:var(--devic-bg);border:1px solid var(--devic-border);border-radius:var(--devic-radius);box-shadow:var(--devic-shadow);display:flex;flex-direction:column;left:0;max-height:320px;position:absolute;right:0;top:calc(100% + 4px);z-index:10}.devic-conversation-search-wrapper{border-bottom:1px solid var(--devic-border);padding:8px}.devic-conversation-search{background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:var(--devic-radius-sm);box-sizing:border-box;color:var(--devic-text);font-family:var(--devic-font-family);font-size:13px;outline:none;padding:6px 8px;width:100%}.devic-conversation-search:focus{border-color:var(--devic-primary)}.devic-conversation-list{flex:1;overflow-y:auto}.devic-conversation-item{align-items:center;background:none;border:none;color:var(--devic-text);cursor:pointer;display:flex;font-family:var(--devic-font-family);font-size:13px;justify-content:space-between;padding:8px 12px;text-align:left;transition:background .15s;width:100%}.devic-conversation-item:hover,.devic-conversation-item[data-active=true]{background:var(--devic-bg-secondary)}.devic-conversation-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-conversation-item-date{color:var(--devic-text-muted);flex-shrink:0;font-size:11px;margin-left:8px}.devic-conversation-empty,.devic-conversation-loading{color:var(--devic-text-muted);font-size:13px;padding:12px;text-align:center}.devic-conversation-load-more{background:none;border:none;color:var(--devic-text-muted);cursor:pointer;display:block;font-family:var(--devic-font-family);font-size:12px;padding:8px 12px;text-align:center;transition:background .15s;width:100%}.devic-conversation-load-more:hover{background:var(--devic-bg-secondary);color:var(--devic-primary)}.devic-conversation-new{background:none;border:none;border-top:1px solid var(--devic-border);color:var(--devic-primary);cursor:pointer;display:block;font-family:var(--devic-font-family);font-size:13px;padding:10px 12px;text-align:left;transition:background .15s;width:100%}.devic-conversation-new:hover{background:var(--devic-bg-secondary)}.devic-conversation-item-check{align-items:center;color:var(--devic-primary);display:flex;flex-shrink:0;margin-right:6px}.devic-message-bubble h1,.devic-message-bubble h2,.devic-message-bubble h3,.devic-message-bubble h4,.devic-message-bubble h5,.devic-message-bubble h6{line-height:1.3;margin:8px 0 4px}.devic-message-bubble h1{font-size:1.3em}.devic-message-bubble h2{font-size:1.2em}.devic-message-bubble h3{font-size:1.1em}.devic-message-bubble p{margin:4px 0}.devic-message-bubble ol,.devic-message-bubble ul{margin:4px 0;padding-left:20px}.devic-message-bubble code{background:rgba(0,0,0,.06);border-radius:3px;color:inherit;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.9em;padding:1px 4px}.devic-message-bubble pre{background:rgba(0,0,0,.06);border-radius:var(--devic-radius-sm);color:inherit;margin:8px 0;overflow-x:auto;padding:10px}.devic-message-bubble pre code{background:none;color:inherit;padding:0}.devic-message-bubble blockquote{border-left:3px solid var(--devic-border);color:var(--devic-text-secondary);margin:4px 0;padding-left:12px}.devic-message-bubble a{color:var(--devic-primary);text-decoration:underline}.devic-message-bubble p:first-child{margin-top:0}.devic-message-bubble p:last-child{margin-bottom:0}.devic-message[data-role=user] .devic-message-bubble a{color:inherit}.devic-message[data-role=user] .devic-message-bubble code,.devic-message[data-role=user] .devic-message-bubble pre{background:hsla(0,0%,100%,.18)}.devic-message[data-role=user] .devic-message-bubble blockquote{border-left-color:hsla(0,0%,100%,.45);color:inherit}.markdown-table{margin:8px 0;overflow-x:auto}.markdown-table table{border-collapse:collapse;font-size:13px;width:100%}.markdown-table td,.markdown-table th{border:1px solid var(--devic-border);padding:6px 10px;text-align:left}.markdown-table th{background:var(--devic-bg-secondary);font-weight:600}.devic-resize-handle{bottom:0;cursor:col-resize;position:absolute;top:0;width:6px;z-index:1}.devic-resize-handle[data-position=right]{left:0}.devic-resize-handle[data-position=left]{right:0}.devic-resize-handle:active,.devic-resize-handle:hover{background:var(--devic-primary);opacity:.3}.devic-handoff-widget{animation:devic-slideUp .3s ease-out;background:var(--devic-bg);border:1px solid var(--devic-border);border-radius:8px;display:flex;flex-direction:column;gap:10px;max-width:320px;padding:12px;width:100%}.devic-handoff-header{align-items:center;display:flex;gap:8px}.devic-handoff-agent-avatar{align-items:center;background:var(--devic-bg-secondary);border-radius:50%;display:flex;flex-shrink:0;height:24px;justify-content:center;overflow:hidden;width:24px}.devic-handoff-avatar-img{height:100%;object-fit:cover;width:100%}.devic-handoff-agent-name{color:var(--devic-text);font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-handoff-progress,.devic-handoff-state-row{align-items:center;display:flex;gap:8px}.devic-handoff-progress-bar{background:#f0f0f0;border-radius:3px;flex:1;height:6px;overflow:hidden;position:relative}.devic-handoff-progress-fill{border-radius:3px;height:100%;transition:width .4s ease}.devic-handoff-progress-fill[data-status=active]{background:var(--devic-primary)}.devic-handoff-progress-fill[data-status=success]{background:#52c41a}.devic-handoff-progress-fill[data-status=error]{background:#ff4d4f}.devic-handoff-progress-text{color:var(--devic-text-muted);flex-shrink:0;font-size:11px}.devic-handoff-progress-indeterminate{animation:devic-indeterminate 1.5s ease-in-out infinite;background:var(--devic-primary);border-radius:3px;height:100%;width:40%}@keyframes devic-indeterminate{0%{transform:translateX(-100%)}50%{transform:translateX(150%)}to{transform:translateX(-100%)}}.devic-handoff-summary{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--devic-text-secondary);display:-webkit-box;font-size:12px;line-height:1.4;overflow:hidden;text-overflow:ellipsis}.devic-handoff-summary-active{animation:devic-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.devic-handoff-elapsed{align-items:center;color:var(--devic-text-muted);display:flex;font-size:11px;gap:4px}.devic-message[data-role=user] .devic-message-references{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;margin-bottom:4px}.devic-message-reference-chip{align-items:center;background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:999px;color:var(--devic-text);display:inline-flex;font-size:11px;gap:4px;max-width:220px;padding:3px 8px}.devic-message-reference-chip-label{color:var(--devic-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-reference-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px;padding:6px 8px}.devic-reference-chip{align-items:center;background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:999px;color:var(--devic-text);display:inline-flex;font-size:12px;gap:6px;max-width:220px;padding:4px 8px}.devic-reference-chip-label{color:var(--devic-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-reference-chip-remove{align-items:center;background:transparent;border:none;border-radius:4px;color:var(--devic-text-muted);cursor:pointer;display:inline-flex;font-size:16px;line-height:1;padding:0 2px}.devic-reference-chip-remove:hover{background:rgba(0,0,0,.06);color:var(--devic-text)}.devic-queue-notice{align-items:center;background:var(--devic-bg-secondary);border:1px dashed var(--devic-queued-border);border-radius:var(--devic-radius);color:var(--devic-text-secondary);display:flex;font-size:12px;gap:6px;line-height:1.4;margin-bottom:4px;padding:8px 12px}.devic-queue-notice-icon{color:var(--devic-queued-accent);display:flex;flex-shrink:0}.devic-queue-notice[data-alert=true]{border-color:var(--devic-error,#ff4d4f);border-style:solid;color:var(--devic-text)}.devic-queue-notice[data-alert=true] .devic-queue-notice-icon{color:var(--devic-error,#ff4d4f)}.devic-input-disabled-notice{align-items:center;background:var(--devic-bg-secondary);border-radius:var(--devic-radius);color:var(--devic-text-muted);display:flex;font-size:12px;gap:6px;justify-content:center;margin-bottom:4px;padding:8px 12px}.devic-inline-widgets{display:flex;flex-direction:column;gap:8px;padding:8px 12px}.devic-inline-widget{background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:var(--devic-radius);padding:12px}.devic-input-widget{padding:8px;width:100%}.devic-limit-banner{align-items:flex-start;background:#fff7e6;border:1px solid #ffd591;border-radius:var(--devic-radius);color:#ad4e00;display:flex;font-size:13px;gap:8px;margin-bottom:8px;padding:8px 12px}.devic-limit-banner-icon{color:#fa8c16;display:inline-flex;flex-shrink:0;margin-top:1px}.devic-limit-banner-text{display:flex;flex-direction:column;gap:2px;line-height:1.35}.devic-limit-banner-title{font-weight:600}.devic-limit-banner-reset{color:var(--devic-text-secondary);font-size:12px}.devic-usage-bar-wrap{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.devic-usage-bar-head{align-items:center;display:flex;gap:8px;justify-content:space-between}.devic-usage-tier{align-items:center;background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:999px;color:var(--devic-text-secondary);display:inline-flex;font-size:11px;font-weight:600;letter-spacing:.02em;padding:2px 8px;text-transform:uppercase;white-space:nowrap}.devic-usage-bar-window{color:var(--devic-text-muted);white-space:nowrap}.devic-usage-bar-group{background:var(--devic-bg-secondary);border-radius:var(--devic-radius);display:flex;flex-direction:column;gap:4px;padding:5px 10px}.devic-usage-bar-group .devic-usage-bar{background:transparent;padding:0}.devic-usage-bar{align-items:center;background:var(--devic-bg-secondary);border-radius:var(--devic-radius);color:var(--devic-text-secondary);display:flex;font-size:12px;gap:8px;padding:5px 10px}.devic-usage-bar[data-empty=true]{color:var(--devic-text-muted);justify-content:space-between}.devic-usage-bar-label{font-weight:500;white-space:nowrap}.devic-usage-bar-track{background:var(--devic-border);border-radius:999px;flex:1;height:6px;overflow:hidden}.devic-usage-bar-fill{border-radius:999px;height:100%;transition:width var(--devic-transition),background-color var(--devic-transition)}.devic-usage-bar-reset{color:var(--devic-text-muted);white-space:nowrap}.devic-usage-toggle{align-items:center;background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:999px;color:var(--devic-text-secondary);cursor:pointer;display:inline-flex;font-size:12px;font-weight:500;gap:6px;padding:4px 10px;transition:background var(--devic-transition),color var(--devic-transition)}.devic-usage-toggle:hover{background:var(--devic-border);color:var(--devic-text)}.devic-usage-collapse{align-items:center;background:transparent;border:none;border-radius:var(--devic-radius-sm);color:var(--devic-text-muted);cursor:pointer;display:inline-flex;font-size:16px;height:18px;justify-content:center;line-height:1;padding:0;width:18px}.devic-usage-collapse:hover{background:var(--devic-border);color:var(--devic-text)}@media (max-width:480px){.devic-chat-drawer{width:100%}}.devic-compaction{color:var(--devic-text-secondary);flex-shrink:0;font-size:12px;margin:10px 0;width:100%}.devic-compaction-head,.devic-compaction-running{align-items:center;display:flex;gap:8px}.devic-compaction-rule{background:var(--devic-compaction-border,rgba(114,46,209,.3));flex:1;height:1px}.devic-compaction-pill{align-items:center;background:var(--devic-compaction-bg,rgba(114,46,209,.06));border:1px solid var(--devic-compaction-border,rgba(114,46,209,.3));border-radius:999px;color:inherit;cursor:pointer;display:flex;flex-shrink:0;font:inherit;gap:8px;max-width:100%;overflow:hidden;padding:4px 12px;white-space:nowrap}.devic-compaction-pill-static,.devic-compaction-running .devic-compaction-pill{cursor:default}.devic-compaction-icon{color:var(--devic-compaction-accent,#722ed1);flex-shrink:0}.devic-compaction-title{color:var(--devic-text);font-weight:600}.devic-compaction-meta{opacity:.75;overflow:hidden;text-overflow:ellipsis}.devic-compaction-tag{border:1px solid var(--devic-compaction-border,rgba(114,46,209,.3));border-radius:4px;font-size:10px;line-height:16px;opacity:.8;padding:0 6px}.devic-compaction-chevron{flex-shrink:0;opacity:.6;transition:transform .15s ease}.devic-compaction-dots{display:inline-flex;flex-shrink:0;gap:3px}.devic-compaction-dots i{animation:devic-compaction-blink 1.2s ease-in-out infinite;background:var(--devic-compaction-accent,#722ed1);border-radius:50%;height:4px;width:4px}.devic-compaction-dots i:nth-child(2){animation-delay:.2s}.devic-compaction-dots i:nth-child(3){animation-delay:.4s}@keyframes devic-compaction-blink{0%,80%,to{opacity:.25}40%{opacity:1}}.devic-compaction-body{background:var(--devic-compaction-bg,rgba(114,46,209,.06));border:1px solid var(--devic-compaction-border,rgba(114,46,209,.3));border-radius:var(--devic-radius-sm,8px);display:flex;flex-direction:column;gap:10px;margin-top:8px;padding:10px 12px}.devic-compaction-note{color:var(--devic-text-muted);font-size:11px}.devic-compaction-section{color:var(--devic-text);display:flex;flex-direction:column;gap:3px}.devic-compaction-section-title{font-size:10px;font-weight:600;letter-spacing:.5px;opacity:.7;text-transform:uppercase}.devic-compaction-list{margin:0;padding-left:18px}.devic-compaction-raw{white-space:pre-wrap}.devic-compaction-facts{display:flex;flex-wrap:wrap;gap:4px}.devic-compaction-fact{border:1px solid var(--devic-compaction-border,rgba(114,46,209,.3));border-radius:4px;font-family:var(--devic-font-mono,ui-monospace,SFMono-Regular,monospace);font-size:11px;line-height:18px;padding:0 6px}.devic-compaction-fact-label{opacity:.65}.devic-guardrail-notice{align-items:center;background:var(--devic-guardrail-bg,rgba(255,77,79,.06));border:1px solid var(--devic-guardrail-border,rgba(255,77,79,.25));border-radius:var(--devic-radius);color:var(--devic-text-secondary);display:flex;flex-shrink:0;font-size:12px;gap:6px;justify-content:center;line-height:1.4;margin:10px 0;padding:8px 12px;text-align:center;width:100%}.devic-guardrail-notice-icon{color:var(--devic-error,#ff4d4f);display:flex;flex-shrink:0}.devic-command-bar-container{--devic-cmd-bg:var(--devic-cmd-bg-override,#fff);--devic-cmd-text:var(--devic-cmd-text-override,#1f2937);--devic-cmd-text-secondary:var(--devic-cmd-text-secondary-override,#6b7280);--devic-cmd-border:var(--devic-cmd-border-override,#e5e7eb);--devic-cmd-radius:var(--devic-cmd-radius-override,12px);--devic-cmd-shadow:var(--devic-cmd-shadow-override,0 4px 20px rgba(0,0,0,.1));--devic-cmd-primary:var(--devic-cmd-primary-override,#3b82f6);--devic-cmd-font-family:var(--devic-cmd-font-family-override,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif);--devic-cmd-font-size:var(--devic-cmd-font-size-override,14px);--devic-cmd-animation-duration:var(--devic-cmd-animation-duration-override,200ms);color:var(--devic-cmd-text);display:flex;flex-direction:column;font-family:var(--devic-cmd-font-family);font-size:var(--devic-cmd-font-size);gap:8px;max-width:100%;width:400px}.devic-command-bar-container[data-position=fixed]{position:fixed}.devic-command-bar-container[data-position=inline]{position:relative}.devic-command-bar-container[data-visible=false]{opacity:0;pointer-events:none;transform:translateY(8px)}.devic-command-bar-container[data-visible=false],.devic-command-bar-container[data-visible=true]{transition:opacity var(--devic-cmd-animation-duration) ease,transform var(--devic-cmd-animation-duration) ease}.devic-command-bar-container[data-visible=true]{opacity:1;transform:translateY(0)}.devic-command-bar{align-items:center;background:var(--devic-cmd-bg);border:1px solid var(--devic-cmd-border);border-radius:var(--devic-cmd-radius);box-shadow:var(--devic-cmd-shadow);display:flex;gap:12px;padding:12px 16px}.devic-command-bar-icon{align-items:center;color:var(--devic-cmd-text-secondary);display:flex;flex-shrink:0;height:20px;justify-content:center;width:20px}.devic-command-bar-icon svg{height:100%;width:100%}.devic-command-bar-input{background:transparent;border:none;color:inherit;flex:1;font-family:inherit;font-size:inherit;min-width:0;outline:none}.devic-command-bar-input::placeholder{color:var(--devic-cmd-text-secondary)}.devic-command-bar-summary{animation:devic-cmd-pulse 1.5s ease-in-out infinite;color:var(--devic-cmd-text-secondary);flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes devic-cmd-pulse{0%,to{opacity:1}50%{opacity:.6}}.devic-command-bar-shortcut{background:var(--devic-cmd-border);border-radius:6px;color:var(--devic-cmd-text-secondary);flex-shrink:0;font-size:12px;font-weight:500;letter-spacing:.5px;padding:4px 8px}.devic-command-bar-spinner{animation:devic-cmd-spin .8s linear infinite;border:2px solid var(--devic-cmd-border);border-radius:50%;border-top-color:var(--devic-cmd-primary);height:20px;width:20px}@keyframes devic-cmd-spin{to{transform:rotate(1turn)}}.devic-command-bar-result{animation:devic-cmd-slide-up .2s ease-out;background:var(--devic-cmd-bg);border:1px solid var(--devic-cmd-border);border-radius:var(--devic-cmd-radius);box-shadow:var(--devic-cmd-shadow);overflow:hidden}@keyframes devic-cmd-slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.devic-command-bar-result-tools{border-bottom:1px solid var(--devic-cmd-border)}.devic-command-bar-result-tools-header{align-items:center;color:var(--devic-cmd-text-secondary);cursor:pointer;display:flex;font-size:13px;gap:8px;padding:10px 14px;transition:background .15s ease;user-select:none}.devic-command-bar-result-tools-header:hover{background:rgba(0,0,0,.02)}.devic-command-bar-result-tools-chevron{height:16px;transition:transform .2s ease;width:16px}.devic-command-bar-result-tools-header[data-expanded=true] .devic-command-bar-result-tools-chevron{transform:rotate(90deg)}.devic-command-bar-result-tools-count{align-items:center;background:var(--devic-cmd-primary);border-radius:10px;color:#fff;display:inline-flex;font-size:11px;font-weight:600;height:20px;justify-content:center;min-width:20px;padding:0 6px}.devic-command-bar-result-tools-list{display:flex;flex-direction:column;gap:6px;padding:8px 14px 12px}.devic-command-bar-result-tools-list[data-expanded=false]{display:none}.devic-command-bar-result-tool-item{align-items:center;background:rgba(0,0,0,.02);border-radius:6px;display:flex;font-size:12px;gap:8px;padding:6px 10px}.devic-command-bar-result-tool-icon{color:#10b981;height:14px;width:14px}.devic-command-bar-result-tool-name{color:var(--devic-cmd-text-secondary)}.devic-command-bar-result-message{line-height:1.5;max-height:300px;overflow-y:auto;padding:14px}.devic-command-bar-result-message::-webkit-scrollbar{width:6px}.devic-command-bar-result-message::-webkit-scrollbar-track{background:transparent}.devic-command-bar-result-message::-webkit-scrollbar-thumb{background:var(--devic-cmd-border);border-radius:3px}.devic-command-bar-error{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--devic-cmd-radius);color:#dc2626;font-size:13px;padding:10px 14px}.devic-command-bar-result-empty{color:var(--devic-cmd-text-secondary);font-size:13px;padding:14px;text-align:center}.devic-command-bar-dropdown{animation:devic-cmd-slide-up .2s ease-out;background:var(--devic-cmd-bg);border:1px solid var(--devic-cmd-border);border-radius:var(--devic-cmd-radius);box-shadow:var(--devic-cmd-shadow);overflow:hidden}.devic-command-bar-dropdown-header{align-items:center;border-bottom:1px solid var(--devic-cmd-border);color:var(--devic-cmd-text-secondary);display:flex;font-size:12px;font-weight:600;justify-content:space-between;letter-spacing:.5px;padding:10px 14px;text-transform:uppercase}.devic-command-bar-dropdown-hint{align-items:center;display:flex;font-weight:400;gap:4px;letter-spacing:0;text-transform:none}.devic-command-bar-dropdown-hint kbd{align-items:center;background:var(--devic-cmd-border);border-radius:4px;display:inline-flex;font-family:inherit;font-size:10px;height:18px;justify-content:center;min-width:18px;padding:0 4px}.devic-command-bar-dropdown-clear{background:none;border:none;border-radius:4px;color:var(--devic-cmd-primary);cursor:pointer;font-family:inherit;font-size:12px;font-weight:500;letter-spacing:0;padding:2px 6px;text-transform:none}.devic-command-bar-dropdown-clear:hover{background:rgba(0,0,0,.05)}.devic-command-bar-dropdown-list{max-height:250px;overflow-y:auto}.devic-command-bar-dropdown-list::-webkit-scrollbar{width:6px}.devic-command-bar-dropdown-list::-webkit-scrollbar-track{background:transparent}.devic-command-bar-dropdown-list::-webkit-scrollbar-thumb{background:var(--devic-cmd-border);border-radius:3px}.devic-command-bar-dropdown-item{align-items:center;cursor:pointer;display:flex;gap:10px;padding:10px 14px;transition:background .15s ease}.devic-command-bar-dropdown-item:hover,.devic-command-bar-dropdown-item[data-selected=true]{background:rgba(0,0,0,.04)}.devic-command-bar-dropdown-item[data-selected=true]{background:var(--devic-cmd-primary);background:rgba(59,130,246,.1)}.devic-command-bar-dropdown-icon{align-items:center;color:var(--devic-cmd-text-secondary);display:flex;flex-shrink:0;height:16px;justify-content:center;width:16px}.devic-command-bar-dropdown-keyword{color:var(--devic-cmd-text);flex-shrink:0;font-weight:600}.devic-command-bar-dropdown-desc{color:var(--devic-cmd-text-secondary);flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-command-bar-dropdown-empty{color:var(--devic-cmd-text-secondary);font-size:13px;padding:20px 14px;text-align:center}.devic-command-bar-history-item{border-bottom:1px solid rgba(0,0,0,.04)}.devic-command-bar-history-item:last-child{border-bottom:none}.devic-command-bar-history-text{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-gen-container{--devic-gen-primary:var(--devic-gen-primary-override,#3b82f6);--devic-gen-primary-hover:var(--devic-gen-primary-hover-override,#2563eb);--devic-gen-bg:var(--devic-gen-bg-override,#fff);--devic-gen-text:var(--devic-gen-text-override,#1f2937);--devic-gen-text-secondary:var(--devic-gen-text-secondary-override,#6b7280);--devic-gen-border:var(--devic-gen-border-override,#e5e7eb);--devic-gen-radius:var(--devic-gen-radius-override,8px);--devic-gen-font-family:var(--devic-gen-font-family-override,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif);--devic-gen-font-size:var(--devic-gen-font-size-override,14px);--devic-gen-z-index:var(--devic-gen-z-index-override,10000);--devic-gen-animation-duration:var(--devic-gen-animation-duration-override,200ms);--devic-gen-modal-bg:var(--devic-gen-modal-bg-override,#fff);--devic-gen-modal-text:var(--devic-gen-modal-text-override,#1f2937);--devic-gen-modal-border:var(--devic-gen-modal-border-override,#e5e7eb);font-family:var(--devic-gen-font-family);font-size:var(--devic-gen-font-size)}.devic-gen-button{align-items:center;border:none;border-radius:var(--devic-gen-radius);cursor:pointer;display:inline-flex;font-family:inherit;font-weight:500;gap:8px;justify-content:center;transition:all var(--devic-gen-animation-duration) ease}.devic-gen-button:disabled{cursor:not-allowed;opacity:.6}.devic-gen-button[data-size=small]{font-size:12px;padding:6px 12px}.devic-gen-button[data-size=medium]{font-size:14px;padding:8px 16px}.devic-gen-button[data-size=large]{font-size:16px;padding:12px 24px}.devic-gen-button[data-variant=primary]{background:var(--devic-gen-primary);color:#fff}.devic-gen-button[data-variant=primary]:hover:not(:disabled){background:var(--devic-gen-primary-hover)}.devic-gen-button[data-variant=secondary]{background:var(--devic-gen-border);color:var(--devic-gen-text)}.devic-gen-button[data-variant=secondary]:hover:not(:disabled){background:#d1d5db}.devic-gen-button[data-variant=outline]{background:transparent;border:1px solid var(--devic-gen-primary);color:var(--devic-gen-primary)}.devic-gen-button[data-variant=outline]:hover:not(:disabled){background:rgba(59,130,246,.1)}.devic-gen-button[data-variant=ghost]{background:transparent;color:var(--devic-gen-text)}.devic-gen-button[data-variant=ghost]:hover:not(:disabled){background:rgba(0,0,0,.05)}.devic-gen-button-icon{align-items:center;display:flex;height:16px;justify-content:center;width:16px}.devic-gen-button-icon svg{height:100%;width:100%}.devic-gen-spinner{animation:devic-gen-spin .8s linear infinite;border:2px solid;border-radius:50%;border-top:2px solid transparent;height:16px;width:16px}.devic-gen-spinner-small{border-width:1.5px;height:12px;width:12px}@keyframes devic-gen-spin{to{transform:rotate(1turn)}}.devic-gen-input{background:var(--devic-gen-modal-bg);border:1px solid var(--devic-gen-modal-border);border-radius:var(--devic-gen-radius);color:var(--devic-gen-modal-text);font-family:inherit;font-size:inherit;min-height:80px;outline:none;padding:12px;resize:vertical;transition:border-color var(--devic-gen-animation-duration) ease;width:100%}.devic-gen-input:focus{border-color:var(--devic-gen-primary)}.devic-gen-input::placeholder{color:var(--devic-gen-text-secondary)}.devic-gen-error{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--devic-gen-radius);color:#dc2626;font-size:13px;margin-top:8px;padding:8px 12px}.devic-gen-tooltip{animation:devic-gen-fade-in var(--devic-gen-animation-duration) ease-out;background:var(--devic-gen-modal-bg);border:1px solid var(--devic-gen-modal-border);border-radius:var(--devic-gen-radius);box-shadow:0 4px 20px rgba(0,0,0,.15);padding:12px}@keyframes devic-gen-fade-in{0%{opacity:0;transform:translateY(4px) translateX(-50%)}to{opacity:1;transform:translateY(0) translateX(-50%)}}.devic-gen-tooltip[data-placement=left],.devic-gen-tooltip[data-placement=right]{animation-name:devic-gen-fade-in-horizontal}@keyframes devic-gen-fade-in-horizontal{0%{opacity:0;transform:translateX(4px) translateY(-50%)}to{opacity:1;transform:translateX(0) translateY(-50%)}}.devic-gen-tooltip-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.devic-gen-tooltip-cancel,.devic-gen-tooltip-confirm{align-items:center;border-radius:var(--devic-gen-radius);cursor:pointer;display:inline-flex;font-family:inherit;font-size:13px;font-weight:500;gap:6px;padding:6px 12px;transition:all var(--devic-gen-animation-duration) ease}.devic-gen-tooltip-cancel{background:transparent;border:1px solid var(--devic-gen-modal-border);color:var(--devic-gen-text-secondary)}.devic-gen-tooltip-cancel:hover{background:rgba(0,0,0,.05)}.devic-gen-tooltip-confirm{background:var(--devic-gen-primary);border:none;color:#fff}.devic-gen-tooltip-confirm:hover:not(:disabled){background:var(--devic-gen-primary-hover)}.devic-gen-tooltip-confirm:disabled{cursor:not-allowed;opacity:.6}.devic-gen-modal-overlay{align-items:center;animation:devic-gen-overlay-fade-in var(--devic-gen-animation-duration) ease-out;background:rgba(0,0,0,.5);display:flex;inset:0;justify-content:center;position:fixed;z-index:var(--devic-gen-z-index)}@keyframes devic-gen-overlay-fade-in{0%{opacity:0}to{opacity:1}}.devic-gen-modal{animation:devic-gen-modal-slide-up var(--devic-gen-animation-duration) ease-out;background:var(--devic-gen-modal-bg);border-radius:calc(var(--devic-gen-radius) + 4px);box-shadow:0 20px 50px rgba(0,0,0,.2);margin:16px;max-width:480px;width:100%}@keyframes devic-gen-modal-slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.devic-gen-modal-header{align-items:center;border-bottom:1px solid var(--devic-gen-modal-border);display:flex;justify-content:space-between;padding:16px 20px}.devic-gen-modal-title{color:var(--devic-gen-modal-text);font-size:18px;font-weight:600;margin:0}.devic-gen-modal-close{align-items:center;background:transparent;border:none;border-radius:6px;color:var(--devic-gen-text-secondary);cursor:pointer;display:flex;height:32px;justify-content:center;padding:0;transition:all var(--devic-gen-animation-duration) ease;width:32px}.devic-gen-modal-close:hover{background:rgba(0,0,0,.05);color:var(--devic-gen-modal-text)}.devic-gen-modal-description{color:var(--devic-gen-text-secondary);font-size:14px;line-height:1.5;margin:0;padding:12px 20px 0}.devic-gen-modal-body{padding:16px 20px}.devic-gen-modal-footer{border-top:1px solid var(--devic-gen-modal-border);display:flex;gap:12px;justify-content:flex-end;padding:16px 20px}.devic-gen-modal-cancel,.devic-gen-modal-confirm{align-items:center;border-radius:var(--devic-gen-radius);cursor:pointer;display:inline-flex;font-family:inherit;font-size:14px;font-weight:500;gap:8px;padding:10px 20px;transition:all var(--devic-gen-animation-duration) ease}.devic-gen-modal-cancel{background:transparent;border:1px solid var(--devic-gen-modal-border);color:var(--devic-gen-text-secondary)}.devic-gen-modal-cancel:hover{background:rgba(0,0,0,.05);color:var(--devic-gen-modal-text)}.devic-gen-modal-confirm{background:var(--devic-gen-primary);border:none;color:#fff}.devic-gen-modal-confirm:hover:not(:disabled){background:var(--devic-gen-primary-hover)}.devic-gen-modal-confirm:disabled{cursor:not-allowed;opacity:.6}.devic-gen-input::-webkit-scrollbar{width:6px}.devic-gen-input::-webkit-scrollbar-track{background:transparent}.devic-gen-input::-webkit-scrollbar-thumb{background:var(--devic-gen-border);border-radius:3px}.devic-gen-input:disabled{background:var(--devic-gen-border);cursor:not-allowed;opacity:.6}.devic-gen-tool-calls{background:rgba(0,0,0,.02);border:1px solid var(--devic-gen-modal-border);border-radius:var(--devic-gen-radius);display:flex;flex-direction:column;gap:6px;margin-bottom:12px;padding:10px 12px}.devic-gen-tool-item{align-items:center;color:var(--devic-gen-text-secondary);display:flex;font-size:13px;gap:8px}.devic-gen-tool-item[data-status=executing]{color:var(--devic-gen-primary)}.devic-gen-tool-item[data-status=completed] .devic-gen-tool-icon{color:#10b981}.devic-gen-tool-icon{align-items:center;display:flex;flex-shrink:0;height:16px;justify-content:center;width:16px}.devic-gen-tool-icon svg{height:100%;width:100%}.devic-gen-tool-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-gen-tool-custom{padding:8px 0}.devic-gen-processing-status{align-items:center;background:rgba(59,130,246,.05);border:1px solid rgba(59,130,246,.2);border-radius:var(--devic-gen-radius);display:flex;gap:8px;margin-bottom:12px;padding:10px 12px}.devic-gen-processing-text{animation:devic-gen-pulse 1.5s ease-in-out infinite;color:var(--devic-gen-primary);font-size:13px}@keyframes devic-gen-pulse{0%,to{opacity:1}50%{opacity:.6}}.devic-aiwrap-container,.devic-aiwrap-tooltip,.devic-aiwrap-trigger-wrapper{--devic-aiwrap-color:#7c3aed;--devic-aiwrap-color-2:#4f46e5;--devic-aiwrap-bg:#fff;--devic-aiwrap-text:#1f2937;--devic-aiwrap-border:#e5e7eb;--devic-aiwrap-shadow:0 8px 24px rgba(0,0,0,.12)}.devic-aiwrap-container[data-highlight=true] .devic-aiwrap-content{background:rgba(124,58,237,.08);border-radius:4px;outline:1px dashed rgba(124,58,237,.45);outline-offset:2px;transition:background .15s ease,outline-color .15s ease}.devic-aiwrap-content{display:inline;transition:background .15s ease}.devic-aiwrap-trigger-wrapper{display:inline-flex}.devic-aiwrap-trigger{align-items:center;background:linear-gradient(90deg,var(--devic-aiwrap-color) 0,var(--devic-aiwrap-color-2) 100%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 4px 14px rgba(124,58,237,.35);color:#fff;cursor:pointer;display:inline-flex;font-family:inherit;font-size:13px;font-weight:500;gap:6px;padding:6px 12px;transition:transform .12s ease,box-shadow .12s ease;white-space:nowrap}.devic-aiwrap-trigger:hover{box-shadow:0 6px 18px rgba(124,58,237,.45);transform:translateY(-1px)}.devic-aiwrap-trigger:active{transform:translateY(0)}.devic-aiwrap-trigger-icon{align-items:center;display:inline-flex}.devic-aiwrap-trigger-label{line-height:1}.devic-aiwrap-tooltip{background:var(--devic-aiwrap-bg);border:1px solid var(--devic-aiwrap-border);border-radius:12px;box-shadow:var(--devic-aiwrap-shadow);color:var(--devic-aiwrap-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;overflow:hidden}.devic-aiwrap-tooltip-header{align-items:center;background:rgba(124,58,237,.05);border-bottom:1px solid var(--devic-aiwrap-border);display:flex;gap:8px;justify-content:space-between;padding:10px 12px}.devic-aiwrap-tooltip-label{color:var(--devic-aiwrap-color);font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-aiwrap-tooltip-close{align-items:center;background:transparent;border:none;border-radius:4px;color:#6b7280;cursor:pointer;display:inline-flex;padding:2px}.devic-aiwrap-tooltip-close:hover{background:rgba(0,0,0,.06);color:#111827}.devic-aiwrap-tooltip-body{line-height:1.5;max-height:320px;overflow-y:auto;padding:12px}.devic-aiwrap-processing{align-items:center;color:#6b7280;display:flex;font-size:13px;gap:8px}.devic-aiwrap-spinner{animation:devic-aiwrap-spin .7s linear infinite;border:2px solid rgba(124,58,237,.25);border-radius:50%;border-top:2px solid var(--devic-aiwrap-color);flex-shrink:0;height:14px;width:14px}@keyframes devic-aiwrap-spin{to{transform:rotate(1turn)}}.devic-aiwrap-error{color:#dc2626;font-size:13px}.devic-aiwrap-answer{white-space:pre-wrap;word-break:break-word}
1
+ .devic-voice-area{display:flex;flex-direction:column}.devic-voice-box{background:var(--devic-bg-secondary);border-radius:var(--devic-radius);color:var(--devic-text);min-width:0;padding:10px 12px 8px}.devic-voice-prompter{min-width:0}.devic-voice-prompter-viewport{height:var(--devic-voice-prompter-height,84px);-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 36px);mask-image:linear-gradient(180deg,transparent 0,#000 36px);overflow:hidden}.devic-voice-prompter-text{display:flex;flex-direction:column;gap:4px;justify-content:flex-end;min-height:100%;transition:transform .35s ease-out;will-change:transform}.devic-voice-turn{color:var(--devic-text-secondary);font-size:15px;line-height:1.5;margin:0;overflow-wrap:anywhere}.devic-voice-turn--current{color:var(--devic-text)}.devic-voice-turn--placeholder{color:var(--devic-text-muted);font-style:italic}.devic-voice-turn>span{color:var(--devic-text-muted);display:inline-block;font-size:11px;font-weight:600;letter-spacing:.06em;margin-right:8px;text-transform:uppercase;vertical-align:1px}.devic-voice-waves{border-top:1px solid var(--devic-border);display:flex;flex-direction:column;gap:6px;margin-top:10px;padding-top:10px}.devic-voice-wave-row{align-items:center;display:flex;gap:10px;min-width:0}.devic-voice-wave-row>span{color:var(--devic-text-muted);flex:0 0 var(--devic-voice-label-width,76px);font-size:11px;font-weight:600;letter-spacing:.06em;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.devic-voice-wave-canvas{display:block;flex:1;height:28px;min-width:0;width:100%}.devic-voice-wave-row--user{color:var(--devic-voice-user-color,var(--devic-text-muted))}.devic-voice-wave-row--assistant{color:var(--devic-voice-assistant-color,var(--devic-primary))}.devic-voice-bar{align-items:center;border-top:1px solid var(--devic-border);display:flex;gap:8px;margin-top:10px;min-height:28px;padding-top:8px}.devic-voice-status{align-items:center;color:var(--devic-text-secondary);display:inline-flex;flex:1;font-size:12px;font-variant-numeric:tabular-nums;gap:8px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-voice-status-dot{background:var(--devic-text-muted);border-radius:50%;flex-shrink:0;height:8px;width:8px}[data-voice-state=connected] .devic-voice-status-dot{animation:devic-voice-pulse 1.6s ease-out infinite;background:var(--devic-voice-connected-color,#52c41a)}[data-voice-state=closing] .devic-voice-status-dot,[data-voice-state=connecting] .devic-voice-status-dot,[data-voice-state=reconnecting] .devic-voice-status-dot{animation:devic-voice-blink 1s ease-in-out infinite}.devic-voice-box .devic-voice-mute[aria-pressed=true]{color:var(--devic-error,#ff4d4f)}.devic-voice-end{align-items:center;background:var(--devic-voice-end-color,#cf1322);border:none;border-radius:var(--devic-radius-sm);color:#fff;cursor:pointer;display:inline-flex;flex-shrink:0;font:inherit;font-size:13px;font-weight:500;gap:6px;height:28px;padding:0 10px}.devic-voice-end:hover:not(:disabled){filter:brightness(1.1)}.devic-voice-end:disabled{cursor:default;opacity:.6}.devic-voice-text-btn{background:none;border:none;border-radius:var(--devic-radius-sm);color:var(--devic-primary);cursor:pointer;font:inherit;font-size:12px;padding:4px 6px}.devic-voice-text-btn:disabled{cursor:not-allowed;opacity:.5}.devic-voice-text-btn:hover:not(:disabled){text-decoration:underline}.devic-live-voice{color:var(--devic-text);flex-shrink:0;min-width:0;padding:12px 16px 8px}.devic-voice-card{align-items:center;background:var(--devic-bg-secondary);background:color-mix(in srgb,var(--devic-primary) 7%,var(--devic-bg));border:1px solid var(--devic-border);border-radius:var(--devic-radius);display:flex;flex-wrap:wrap;gap:12px;padding:10px 12px 10px 14px}.devic-voice-card-icon{background:var(--devic-primary);border-radius:50%;color:var(--devic-user-bubble-text,#fff);display:grid;flex-shrink:0;height:36px;place-items:center;width:36px}.devic-voice-card-copy{flex:1 1 180px;min-width:0}.devic-voice-card-title{align-items:center;display:flex;flex-wrap:wrap;font-size:14px;font-weight:600;gap:8px;line-height:1.3}.devic-voice-card-subtitle{color:var(--devic-text-muted);font-size:12px;line-height:1.4;margin-top:2px}.devic-voice-start{align-items:center;background:var(--devic-primary);border:none;border-radius:var(--devic-radius-sm);color:var(--devic-user-bubble-text,#fff);cursor:pointer;display:inline-flex;flex-shrink:0;font:inherit;font-size:13px;font-weight:500;gap:6px;height:32px;padding:0 12px}.devic-voice-start:hover:not(:disabled){background:var(--devic-primary-hover)}.devic-voice-start:disabled{cursor:not-allowed;opacity:.5}.devic-voice-error{background:#fff1f0;border:1px solid #ffccc7;border-radius:var(--devic-radius-sm);color:#cf1322;font-size:12px;margin-top:8px;padding:6px 10px}.devic-live-voice a:focus-visible,.devic-live-voice button:focus-visible,.devic-voice-box button:focus-visible{outline:2px solid var(--devic-primary);outline-offset:2px}@keyframes devic-voice-pulse{0%{box-shadow:0 0 0 0 rgba(82,196,26,.45)}to{box-shadow:0 0 0 8px rgba(82,196,26,0)}}@keyframes devic-voice-blink{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.devic-voice-prompter-text{transition:none}.devic-voice-status-dot{animation:none}}.devic-voice-card{padding-right:36px;position:relative}.devic-voice-card-close{align-items:center;background:none;border:none;border-radius:var(--devic-radius-sm);color:var(--devic-text-muted);cursor:pointer;display:inline-flex;height:24px;justify-content:center;position:absolute;right:6px;top:6px;width:24px}.devic-voice-card-close:hover{background:var(--devic-bg-secondary);color:var(--devic-text)}.devic-live-voice-btn.devic-input-btn:hover:not(:disabled){color:var(--devic-primary)}.devic-state-tag{align-items:center;border:1px solid;border-radius:4px;cursor:default;display:inline-flex;font-family:var(--devic-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif);font-size:12px;font-weight:500;gap:6px;line-height:20px;padding:2px 8px;position:relative;white-space:nowrap}.devic-state-tag[data-interactive=true]{cursor:pointer}.devic-state-tag[data-interactive=true]:hover{opacity:.85}.devic-state-tag[data-color=gold]{background:rgba(250,173,20,.15);border-color:rgba(250,173,20,.35);color:#faad14}.devic-state-tag[data-color=processing]{background:rgba(22,119,255,.15);border-color:rgba(22,119,255,.35);color:#4096ff}.devic-state-tag[data-color=success]{background:rgba(82,196,26,.15);border-color:rgba(82,196,26,.35);color:#52c41a}.devic-state-tag[data-color=error]{background:rgba(255,77,79,.15);border-color:rgba(255,77,79,.35);color:#ff4d4f}.devic-state-tag[data-color=default]{background:hsla(0,0%,60%,.15);border-color:hsla(0,0%,60%,.35);color:#999}.devic-state-tag[data-color=purple]{background:rgba(114,46,209,.15);border-color:rgba(114,46,209,.35);color:#b37feb}.devic-state-tag[data-color=blue]{background:rgba(22,119,255,.15);border-color:rgba(22,119,255,.35);color:#4096ff}.devic-state-tag-icon{align-items:center;display:inline-flex;flex-shrink:0}.devic-state-tag-caret{align-items:center;display:inline-flex;margin-left:2px;transition:transform .2s ease}.devic-state-tag[data-dropdown-open=true] .devic-state-tag-caret{transform:rotate(180deg)}.devic-state-spinner{animation:devic-state-spin 1s linear infinite}@keyframes devic-state-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.devic-state-tooltip{background:rgba(0,0,0,.85);border-radius:6px;bottom:calc(100% + 8px);color:#fff;font-family:SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:400;line-height:1.4;max-width:280px;padding:6px 10px;pointer-events:none;white-space:normal;z-index:1060}.devic-state-tooltip,.devic-state-tooltip:after{left:50%;position:absolute;transform:translateX(-50%)}.devic-state-tooltip:after{border:5px solid transparent;border-top-color:rgba(0,0,0,.85);content:"";top:100%}.devic-state-dropdown{animation:devic-dropdownSlide .15s ease-out;background:#fff;border:1px solid #e8e8e8;border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.08),0 3px 6px rgba(0,0,0,.06);min-width:180px;padding:4px 0;position:absolute;right:0;top:calc(100% + 4px);z-index:1050}@keyframes devic-dropdownSlide{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.devic-state-dropdown-item{align-items:center;background:none;border:none;color:#333;cursor:pointer;display:flex;font-family:inherit;font-size:13px;gap:8px;padding:8px 12px;text-align:left;transition:background .15s;width:100%}.devic-state-dropdown-item:hover{background:#f5f5f5}.devic-state-dropdown-item-icon{align-items:center;display:flex;flex-shrink:0;justify-content:center;width:18px}.devic-state-tooltip-portal{background:rgba(0,0,0,.85);border-radius:6px;color:#fff;font-family:SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:400;line-height:1.4;max-width:280px;padding:6px 10px;pointer-events:none;white-space:normal;z-index:99999}.devic-state-dropdown-portal{animation:devic-dropdownSlide .15s ease-out;background:#fff;border:1px solid #e8e8e8;border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.08),0 3px 6px rgba(0,0,0,.06);min-width:180px;padding:4px 0;z-index:99999}.devic-state-modal-overlay{align-items:center;animation:devic-fadeIn .2s ease;background:rgba(0,0,0,.45);display:flex;inset:0;justify-content:center;position:fixed;z-index:1050}@keyframes devic-fadeIn{0%{opacity:0}to{opacity:1}}.devic-state-modal{animation:devic-modalSlide .2s ease-out;background:#fff;border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.08);display:flex;flex-direction:column;max-height:80vh;max-width:520px;width:90%}@keyframes devic-modalSlide{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}.devic-state-modal-header{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:16px 20px}.devic-state-modal-title{align-items:center;display:flex;font-size:16px;font-weight:600;gap:8px;margin:0}.devic-state-modal-close{align-items:center;background:none;border:none;border-radius:4px;color:#999;cursor:pointer;display:flex;padding:4px}.devic-state-modal-close:hover{background:#f5f5f5;color:#333}.devic-state-modal-body{flex:1;overflow-y:auto;padding:20px}.devic-state-modal-footer{border-top:1px solid #f0f0f0;display:flex;gap:8px;justify-content:flex-end;padding:12px 20px}.devic-state-btn{align-items:center;background:#fff;border:1px solid #d9d9d9;border-radius:6px;color:#333;cursor:pointer;display:inline-flex;font-family:inherit;font-size:14px;font-weight:500;gap:6px;justify-content:center;padding:6px 16px;transition:all .2s}.devic-state-btn:hover{border-color:#1677ff;color:#1677ff}.devic-state-btn-primary{background:#1677ff;border-color:#1677ff;color:#fff}.devic-state-btn-primary:hover{background:#4096ff;border-color:#4096ff;color:#fff}.devic-state-btn-danger{background:#ff4d4f;border-color:#ff4d4f;color:#fff}.devic-state-btn-danger:hover{background:#ff7875;border-color:#ff7875;color:#fff}.devic-state-btn-success{background:#52c41a;border-color:#52c41a;color:#fff}.devic-state-btn-success:hover{background:#73d13d;border-color:#73d13d;color:#fff}.devic-state-btn:disabled{cursor:not-allowed;opacity:.5}.devic-explain-content{border:1px solid #e8e8e8;border-radius:8px;font-family:SFMono-Regular,Consolas,monospace;font-size:13px;line-height:1.6;max-height:300px;min-height:150px;overflow-y:auto;padding:12px;white-space:pre-wrap}.devic-typing-cursor{animation:devic-blink 1s step-end infinite}@keyframes devic-blink{0%,to{opacity:1}50%{opacity:0}}.devic-approval-layout{display:flex;gap:16px}.devic-approval-request{background:#fafafa;border:1px solid #e8e8e8;border-radius:8px;flex:1;font-size:13px;line-height:1.6;max-height:250px;overflow-y:auto;padding:12px}.devic-approval-actions{display:flex;flex:1;flex-direction:column;gap:12px}.devic-approval-textarea{border:1px solid #d9d9d9;border-radius:6px;box-sizing:border-box;font-family:inherit;font-size:13px;min-height:80px;outline:none;padding:8px 12px;resize:vertical;width:100%}.devic-approval-textarea:focus{border-color:#1677ff}.devic-approval-buttons{display:flex;flex-direction:column;gap:8px}.devic-completion-select{background:#fff;border:1px solid #d9d9d9;border-radius:6px;cursor:pointer;font-family:inherit;font-size:14px;outline:none;padding:8px 12px;width:100%}.devic-completion-select:focus{border-color:#1677ff}.devic-state-loading{align-items:center;display:flex;justify-content:center;padding:24px}.devic-state-loading-spinner{animation:devic-state-spin .8s linear infinite;border:2px solid #f0f0f0;border-radius:50%;border-top-color:#1677ff;height:24px;width:24px}.devic-state-warning{align-items:flex-start;color:#cf1322;display:flex;font-size:13px;font-weight:500;gap:6px;margin-top:8px}.devic-message-actions{align-items:center;display:flex;gap:4px;opacity:0;transition:opacity .15s ease}.devic-message-actions:focus-within,.devic-message:hover .devic-message-actions{opacity:1}.devic-message-actions:has(.devic-action-btn--active){opacity:1}.devic-action-btn{align-items:center;background:transparent;border:none;border-radius:var(--devic-radius-sm,6px);color:var(--devic-text-muted,#94a3b8);cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;transition:all .15s ease;width:28px}.devic-action-btn:hover:not(:disabled){background:var(--devic-bg-secondary,#f8fafc);color:var(--devic-text-secondary,#64748b)}.devic-action-btn:disabled{cursor:not-allowed;opacity:.5}.devic-action-btn--active{color:var(--devic-primary,#3b82f6)}.devic-action-btn--active.devic-action-btn--positive{color:#22c55e}.devic-action-btn--active.devic-action-btn--negative{color:#ef4444}.devic-feedback-overlay{align-items:center;animation:devic-feedback-fade-in .15s ease;background:rgba(0,0,0,.4);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10001}@keyframes devic-feedback-fade-in{0%{opacity:0}to{opacity:1}}.devic-feedback-modal{animation:devic-feedback-slide-up .2s ease;background:var(--devic-bg,#fff);border-radius:var(--devic-radius,12px);box-shadow:0 20px 60px rgba(0,0,0,.2);margin:16px;max-width:400px;width:100%}@keyframes devic-feedback-slide-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.devic-feedback-modal-header{align-items:center;border-bottom:1px solid var(--devic-border,#e2e8f0);display:flex;gap:10px;padding:16px 16px 12px}.devic-feedback-modal-icon{align-items:center;background:var(--devic-bg-secondary,#f8fafc);border-radius:8px;color:var(--devic-text,#1e293b);display:flex;height:32px;justify-content:center;width:32px}.devic-feedback-modal-title{color:var(--devic-text,#1e293b);flex:1;font-size:15px;font-weight:600}.devic-feedback-modal-close{align-items:center;background:transparent;border:none;border-radius:6px;color:var(--devic-text-muted,#94a3b8);cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;transition:all .15s ease;width:28px}.devic-feedback-modal-close:hover{background:var(--devic-bg-secondary,#f8fafc);color:var(--devic-text-secondary,#64748b)}.devic-feedback-textarea{background:transparent;border:none;border-bottom:1px solid var(--devic-border,#e2e8f0);box-sizing:border-box;color:var(--devic-text,#1e293b);display:block;font-family:inherit;font-size:14px;line-height:1.5;padding:12px 16px;resize:none;width:100%}.devic-feedback-textarea:focus{outline:none}.devic-feedback-textarea::placeholder{color:var(--devic-text-muted,#94a3b8)}.devic-feedback-modal-actions{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px}.devic-feedback-btn{border:none;border-radius:var(--devic-radius-sm,6px);cursor:pointer;font-family:inherit;font-size:14px;font-weight:500;padding:8px 16px;transition:all .15s ease}.devic-feedback-btn:disabled{cursor:not-allowed;opacity:.6}.devic-feedback-btn--secondary{background:var(--devic-bg-secondary,#f8fafc);color:var(--devic-text-secondary,#64748b)}.devic-feedback-btn--secondary:hover:not(:disabled){background:var(--devic-border,#e2e8f0)}.devic-feedback-btn--primary{background:var(--devic-primary,#3b82f6);color:#fff}.devic-feedback-btn--primary:hover:not(:disabled){background:var(--devic-primary-hover,#2563eb)}.devic-cmd-result-actions{border-top:1px solid var(--devic-cmd-border,var(--devic-border,#e5e7eb));margin-top:8px;padding-top:8px}.devic-cmd-result-actions .devic-message-actions{opacity:1;padding-left:10px}.devic-cmd-result-actions .devic-action-btn{opacity:.7}.devic-cmd-result-actions .devic-action-btn--active,.devic-cmd-result-actions .devic-action-btn:hover{opacity:1}.devic-cm-overlay{align-items:center;background:rgba(0,0,0,.45);display:flex;inset:0;justify-content:center;position:fixed;z-index:10000}.devic-cm-modal{background:var(--devic-bg,#fff);border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.22);color:var(--devic-text,#333);display:flex;flex-direction:column;font-size:13px;max-height:min(640px,calc(100vh - 64px));width:min(560px,calc(100vw - 32px))}.devic-cm-header{align-items:center;border-bottom:1px solid var(--devic-border,#e8e8e8);display:flex;justify-content:space-between;padding:14px 16px}.devic-cm-title{align-items:center;display:flex;font-size:15px;font-weight:600;gap:8px;margin:0}.devic-cm-title svg{color:var(--devic-recall-accent,#722ed1)}.devic-cm-close{background:transparent;border:none;border-radius:6px;color:var(--devic-text-muted,#999);cursor:pointer;font-size:20px;line-height:1;padding:2px 6px}.devic-cm-close:hover{background:var(--devic-bg-secondary,#f5f5f5);color:var(--devic-text,#333)}.devic-cm-body{display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:12px 16px}.devic-cm-error{background:rgba(255,77,79,.08);border:1px solid rgba(255,77,79,.4);border-radius:8px;color:#cf1322;font-size:12px;padding:8px 10px}.devic-cm-empty,.devic-cm-loading{color:var(--devic-text-muted,#999);padding:24px 8px;text-align:center}.devic-cm-section-title{color:var(--devic-text-muted,#999);font-size:10px;font-weight:700;letter-spacing:.6px;margin-bottom:6px;text-transform:uppercase}.devic-cm-entry{align-items:flex-start;border:1px solid var(--devic-border,#e8e8e8);border-radius:8px;display:flex;gap:8px;justify-content:space-between;margin-bottom:6px;padding:8px 10px}.devic-cm-entry-content{align-items:flex-start;display:flex;flex:1;gap:6px;white-space:pre-wrap;word-break:break-word}.devic-cm-pin{color:var(--devic-recall-accent,#722ed1);flex-shrink:0;margin-top:2px}.devic-cm-entry-actions{display:flex;flex-shrink:0;gap:4px}.devic-cm-editor{display:flex;flex:1;flex-direction:column;gap:6px}.devic-cm-textarea{background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#d9d9d9);border-radius:8px;box-sizing:border-box;color:inherit;font:inherit;min-height:64px;padding:8px 10px;resize:vertical;width:100%}.devic-cm-textarea:focus{border-color:var(--devic-recall-accent,#722ed1);outline:none}.devic-cm-composer,.devic-cm-editor-actions{display:flex;gap:6px}.devic-cm-composer{flex-direction:column}.devic-cm-composer-row{display:flex;gap:6px}.devic-cm-select{color:inherit;padding:4px 8px}.devic-cm-btn,.devic-cm-select{background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#d9d9d9);border-radius:6px;font:inherit}.devic-cm-btn{color:var(--devic-text,#333);cursor:pointer;font-size:12px;padding:5px 12px}.devic-cm-btn:hover:not(:disabled){border-color:var(--devic-recall-accent,#722ed1);color:var(--devic-recall-accent,#722ed1)}.devic-cm-btn:disabled{cursor:not-allowed;opacity:.5}.devic-cm-btn-primary{background:var(--devic-recall-accent,#722ed1);border-color:var(--devic-recall-accent,#722ed1);color:#fff}.devic-cm-btn-primary:hover:not(:disabled){color:#fff;opacity:.9}.devic-cm-btn-small{font-size:11px;padding:2px 8px}.devic-cm-btn-danger:hover:not(:disabled){border-color:#ff4d4f;color:#ff4d4f}.devic-cm-footer{border-top:1px solid var(--devic-border,#e8e8e8);color:var(--devic-text-muted,#999);font-size:11px;padding:10px 16px}.devic-int-overlay{align-items:center;background:rgba(0,0,0,.45);display:flex;inset:0;justify-content:center;position:fixed;z-index:10000}.devic-int-panel{background:var(--devic-bg,#fff);color:var(--devic-text,#333);display:flex;flex-direction:column;font-size:13px;min-width:0;width:100%}.devic-int-modal{border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.22);max-height:min(660px,calc(100vh - 64px));width:min(620px,calc(100vw - 32px))}.devic-int-header{align-items:center;border-bottom:1px solid var(--devic-border,#e8e8e8);display:flex;justify-content:space-between;padding:14px 16px}.devic-int-title{align-items:center;display:flex;font-size:15px;font-weight:600;gap:8px;margin:0}.devic-int-title svg{color:var(--devic-primary,#1677ff)}.devic-int-close{background:transparent;border:none;border-radius:6px;color:var(--devic-text-muted,#999);cursor:pointer;font-size:20px;line-height:1;padding:2px 6px}.devic-int-close:hover{background:var(--devic-bg-secondary,#f5f5f5);color:var(--devic-text,#333)}.devic-int-search{align-items:center;background:var(--devic-bg-secondary,#f7f7f7);border:1px solid var(--devic-border,#e8e8e8);border-radius:8px;color:var(--devic-text-muted,#999);display:flex;gap:8px;margin:12px 16px 0;padding:7px 10px}.devic-int-search:focus-within{border-color:var(--devic-primary,#1677ff)}.devic-int-search input{-webkit-appearance:none;appearance:none;background:transparent;border:none;color:var(--devic-text,#333);flex:1;font:inherit;font-size:13px;min-width:0;outline:none}.devic-int-search input::-webkit-search-cancel-button{-webkit-appearance:none}.devic-int-search input::placeholder{color:var(--devic-text-muted,#999)}.devic-int-body{display:flex;flex-direction:column;gap:10px;overflow-y:auto;padding:12px 16px}.devic-int-error{background:rgba(255,77,79,.08);border:1px solid rgba(255,77,79,.4);border-radius:8px;color:#ff4d4f;font-size:12px;padding:8px 10px}.devic-int-notice{background:rgba(250,173,20,.1);border:1px solid rgba(250,173,20,.45);border-radius:8px;color:inherit;font-size:12px;padding:8px 10px}.devic-int-notice a{color:var(--devic-primary,#1677ff)}.devic-int-empty,.devic-int-loading{color:var(--devic-text-muted,#999);padding:24px 8px;text-align:center}.devic-int-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(158px,1fr))}.devic-int-card{border:1px solid var(--devic-border,#e8e8e8);border-radius:10px;display:flex;flex-direction:column;gap:6px;padding:12px}.devic-int-card[data-state=connected]{border-color:rgba(82,196,26,.45)}.devic-int-card[data-state=reconnect]{border-color:rgba(250,173,20,.5)}.devic-int-card-head{align-items:center;display:flex;gap:8px;justify-content:space-between}.devic-int-logo{background:var(--devic-bg-secondary,#f5f5f5);border-radius:8px;flex-shrink:0;height:32px;object-fit:contain;width:32px}.devic-int-logo-fallback{align-items:center;color:var(--devic-text-muted,#999);display:flex;font-weight:600;justify-content:center}.devic-int-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-int-state{align-items:center;color:var(--devic-text-muted,#999);display:inline-flex;font-size:11px;gap:4px;white-space:nowrap}.devic-int-card[data-state=connected] .devic-int-state{color:#52c41a}.devic-int-card[data-state=reconnect] .devic-int-state{color:#faad14}.devic-int-description{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--devic-text-muted,#999);display:-webkit-box;font-size:12px;line-height:1.4;overflow:hidden}.devic-int-accounts{display:flex;flex-direction:column;gap:4px;list-style:none;margin:0;padding:0}.devic-int-account{align-items:center;background:var(--devic-bg-secondary,#f7f7f7);border-radius:6px;display:flex;font-size:11px;gap:6px;padding:3px 6px}.devic-int-account-label{color:var(--devic-text-muted,#999);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-int-account-warn{color:#faad14}.devic-int-dot{background:#faad14;border-radius:50%;flex-shrink:0;height:6px;width:6px}.devic-int-dot[data-ok=true]{background:#52c41a}.devic-int-dot[data-off=true]{background:var(--devic-text-muted,#bbb)}.devic-int-unlink{background:transparent;border:none;border-radius:4px;color:var(--devic-text-muted,#999);cursor:pointer;flex-shrink:0;font-size:14px;line-height:1;padding:0 2px}.devic-int-unlink:hover:not(:disabled){color:#ff4d4f}.devic-int-unlink:disabled{cursor:not-allowed;opacity:.4}.devic-int-btn{background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#d9d9d9);border-radius:6px;color:var(--devic-text,#333);cursor:pointer;flex-shrink:0;font:inherit;font-size:12px;padding:5px 12px}.devic-int-btn:hover:not(:disabled){border-color:var(--devic-primary,#1677ff);color:var(--devic-primary,#1677ff)}.devic-int-btn:disabled{cursor:not-allowed;opacity:.5}.devic-int-btn-block{margin-top:auto;text-align:center;width:100%}.devic-int-btn-primary{background:var(--devic-primary,#1677ff);border-color:var(--devic-primary,#1677ff);color:#fff}.devic-int-btn-primary:hover:not(:disabled){color:#fff;opacity:.9}.devic-int-btn-small{font-size:11px;padding:2px 8px}.devic-int-overlay-stacked{background:rgba(0,0,0,.5);z-index:10001}.devic-int-connect-dialog{background:var(--devic-bg,#fff);border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.3);color:var(--devic-text,#333);display:flex;flex-direction:column;font-size:13px;max-height:calc(100vh - 64px);width:min(440px,calc(100vw - 32px))}.devic-int-connect-header{align-items:flex-start;border-bottom:1px solid var(--devic-border,#e8e8e8);display:flex;gap:10px;padding:14px 16px}.devic-int-connect-heading{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}.devic-int-connect-heading strong{font-size:14px}.devic-int-connect-heading span{color:var(--devic-text-muted,#999);font-size:11px;line-height:1.4}.devic-int-connect-body{display:flex;flex-direction:column;gap:14px;overflow-y:auto;padding:16px}.devic-int-connect-field{display:flex;flex-direction:column;gap:5px}.devic-int-connect-label{color:var(--devic-text,#333);font-size:12px;font-weight:500}.devic-int-connect-label em{color:var(--devic-text-muted,#999);font-style:normal;font-weight:400}.devic-int-connect-field input,.devic-int-connect-field select{background:var(--devic-bg-secondary,#fafafa);border:1px solid var(--devic-border,#d9d9d9);border-radius:8px;box-sizing:border-box;color:var(--devic-text,#333);font:inherit;font-size:13px;height:36px;line-height:normal;padding:0 10px;transition:border-color .15s,box-shadow .15s;width:100%}.devic-int-connect-field input::placeholder{color:var(--devic-text-muted,#bbb)}.devic-int-connect-field input:focus,.devic-int-connect-field select:focus{border-color:var(--devic-primary,#1677ff);box-shadow:0 0 0 3px color-mix(in srgb,var(--devic-primary,#1677ff) 18%,transparent);outline:none}.devic-int-connect-field input[data-invalid]{border-color:#ff4d4f}.devic-int-connect-field input[data-invalid]:focus{box-shadow:0 0 0 3px rgba(255,77,79,.18)}.devic-int-connect-hint{color:var(--devic-text-muted,#999);font-size:11px;line-height:1.45}.devic-int-connect-guide{color:var(--devic-primary,#1677ff);font-size:12px}.devic-int-connect-actions{justify-content:flex-end;padding:12px 16px}.devic-int-connect-actions,.devic-int-footer{border-top:1px solid var(--devic-border,#e8e8e8);display:flex;gap:8px}.devic-int-footer{align-items:center;color:var(--devic-text-muted,#999);font-size:11px;justify-content:space-between;padding:10px 16px}.devic-int-launcher{align-items:center;background:none;border:none;border-radius:var(--devic-radius-sm,6px);cursor:pointer;display:inline-flex;padding:4px 5px;transition:background var(--devic-transition,.2s)}.devic-int-launcher:hover{background:var(--devic-bg-secondary,#f5f5f5)}.devic-int-launcher-item{align-items:center;background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#e8e8e8);border-radius:6px;box-sizing:border-box;display:flex;flex-shrink:0;height:22px;justify-content:center;margin-left:-4px;overflow:hidden;width:22px}.devic-int-launcher-item:first-child{margin-left:0}.devic-int-launcher-item[data-connected=false]{opacity:.55}.devic-int-logo.devic-int-launcher-logo{background:transparent;border-radius:3px;font-size:11px;height:16px;width:16px}.devic-int-launcher-initial{align-items:center;display:inline-flex;font-size:10px;font-weight:600;justify-content:center;line-height:1}.devic-int-launcher-more{background:var(--devic-bg-secondary,#f0f0f0);color:var(--devic-text-muted,#999);font-size:10px;font-weight:600}.devic-int-launcher-loading{cursor:default}.devic-int-launcher-loading:hover{background:none}.devic-int-launcher-skeleton{animation:devic-int-pulse 1.4s ease-in-out infinite;background:var(--devic-bg-secondary,#f0f0f0)}.devic-int-launcher-skeleton:nth-child(2){animation-delay:.16s}.devic-int-launcher-skeleton:nth-child(3){animation-delay:.32s}.devic-int-launcher-skeleton:nth-child(n+4){animation-delay:.48s}@keyframes devic-int-pulse{0%,to{opacity:.35}50%{opacity:.75}}@media (prefers-reduced-motion:reduce){.devic-int-launcher-skeleton{animation:none;opacity:.5}}.devic-int-launcher[data-dark=true] .devic-int-launcher-item{background:hsla(0,0%,100%,.92);border-color:hsla(0,0%,100%,.16)}.devic-int-launcher[data-dark=true] .devic-int-launcher-more{background:var(--devic-bg-secondary,#f0f0f0);border-color:var(--devic-border,#e8e8e8)}.devic-int-panel[data-dark=true] .devic-int-card .devic-int-logo{background:hsla(0,0%,100%,.92)}.devic-int-panel[data-dark=true] .devic-int-card .devic-int-logo-fallback{color:#595959}.devic-int-hint{align-items:center;background:var(--devic-bg-secondary,#f7f7f7);border:1px solid var(--devic-border,#e8e8e8);border-radius:12px;display:flex;gap:4px;margin:0 0 8px;padding:6px 8px 6px 12px;transition:opacity .2s ease,transform .2s ease}.devic-int-hint[data-leaving=true]{opacity:0;pointer-events:none;transform:translateY(-4px)}.devic-int-hint-main{align-items:center;background:none;border:none;border-radius:8px;color:inherit;cursor:pointer;display:flex;flex:1;font:inherit;gap:10px;justify-content:space-between;min-width:0;padding:2px}.devic-int-hint-label{color:var(--devic-text-muted,#8c8c8c);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-int-hint-main:hover .devic-int-hint-label{color:var(--devic-text,#333)}.devic-int-hint-logos{gap:6px}.devic-int-hint-item,.devic-int-hint-logos{align-items:center;display:flex;flex-shrink:0}.devic-int-hint-item{background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#e8e8e8);border-radius:6px;box-sizing:border-box;height:24px;justify-content:center;overflow:hidden;width:24px}.devic-int-hint-item[data-connected=false]{opacity:.6}.devic-int-logo.devic-int-hint-logo{background:transparent;border-radius:3px;font-size:11px;height:17px;width:17px}.devic-int-hint-more{background:var(--devic-bg-secondary,#f0f0f0);color:var(--devic-text-muted,#999);font-size:10px;font-weight:600}.devic-int-hint-close{background:transparent;border:none;border-radius:6px;color:var(--devic-text-muted,#999);cursor:pointer;flex-shrink:0;font-size:18px;line-height:1;padding:2px 6px}.devic-int-hint-close:hover{background:var(--devic-bg,#fff);color:var(--devic-text,#333)}.devic-int-hint[data-dark=true] .devic-int-hint-item{background:hsla(0,0%,100%,.92);border-color:hsla(0,0%,100%,.16)}.devic-int-hint[data-dark=true] .devic-int-hint-more{background:var(--devic-bg,#1f1f1f);border-color:var(--devic-border,#303030)}.devic-int-hint-ghost{align-items:center;display:flex;gap:6px;pointer-events:none;position:fixed;z-index:10001}.devic-int-toggle{display:inline-flex;flex-shrink:0;position:relative}.devic-int-toggle-btn{position:relative}.devic-int-toggle-badge{background:var(--devic-primary,#1677ff);border-radius:7px;box-sizing:border-box;color:#fff;font-size:9px;font-weight:600;height:14px;line-height:14px;min-width:14px;padding:0 3px;position:absolute;right:-2px;text-align:center;top:-2px}.devic-int-toggle-popover{background:var(--devic-bg,#fff);border:1px solid var(--devic-border,#e8e8e8);border-radius:var(--devic-radius,10px);bottom:calc(100% + 8px);box-shadow:0 8px 24px rgba(0,0,0,.14);box-sizing:border-box;color:var(--devic-text,#333);left:0;max-height:320px;overflow-y:auto;padding:10px;position:absolute;width:260px;z-index:10002}.devic-int-toggle-head{border-bottom:1px solid var(--devic-border,#e8e8e8);display:flex;flex-direction:column;gap:2px;margin-bottom:6px;padding:2px 2px 8px}.devic-int-toggle-head strong{font-size:13px}.devic-int-toggle-head span{color:var(--devic-text-muted,#999);font-size:11px;line-height:1.4}.devic-int-toggle-list{list-style:none;margin:0;padding:0}.devic-int-toggle-row{align-items:center;border-radius:var(--devic-radius-sm,6px);cursor:pointer;display:flex;gap:8px;justify-content:space-between;padding:6px 4px}.devic-int-toggle-row:hover{background:var(--devic-bg-secondary,#f5f5f5)}.devic-int-toggle-app{align-items:center;display:flex;gap:8px;min-width:0}.devic-int-toggle-app .devic-int-logo{border-radius:4px;flex-shrink:0;height:18px;object-fit:contain;width:18px}.devic-int-toggle-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-int-toggle-group{border-top:1px solid var(--devic-border,hsla(0,0%,50%,.22));font-size:10px;letter-spacing:.06em;margin-top:6px;opacity:.55;padding:10px 4px 4px;text-transform:uppercase}.devic-int-toggle-mcp-logo{border-radius:4px;flex-shrink:0;height:18px;object-fit:contain;width:18px}.devic-int-toggle-mcp-fallback{align-items:center;background:var(--devic-surface-2,hsla(0,0%,50%,.18));color:inherit;display:inline-flex;font-size:10px;font-weight:600;justify-content:center}.devic-int-toggle-switch{appearance:none;-webkit-appearance:none;background:var(--devic-border,#d9d9d9);border-radius:9px;cursor:pointer;flex-shrink:0;height:18px;margin:0;position:relative;transition:background var(--devic-transition,.2s);width:32px}.devic-int-toggle-switch:after{background:#fff;border-radius:50%;content:"";height:14px;left:2px;position:absolute;top:2px;transition:transform var(--devic-transition,.2s);width:14px}.devic-int-toggle-switch:checked{background:var(--devic-primary,#1677ff)}.devic-int-toggle-switch:checked:after{transform:translateX(14px)}.devic-int-toggle-switch:focus-visible{outline:2px solid var(--devic-primary,#1677ff);outline-offset:2px}.devic-int-toggle-manage{background:none;border:none;border-radius:0 0 var(--devic-radius-sm,6px) var(--devic-radius-sm,6px);border-top:1px solid var(--devic-border,#e8e8e8);color:var(--devic-primary,#1677ff);cursor:pointer;font:inherit;font-size:12px;margin-top:6px;padding:6px;width:100%}.devic-int-toggle-manage:hover{background:var(--devic-bg-secondary,#f5f5f5)}.devic-int-toggle[data-dark=true] .devic-int-toggle-popover{box-shadow:0 8px 24px rgba(0,0,0,.45)}.devic-int-toggle[data-dark=true] .devic-int-toggle-switch:not(:checked){background:var(--devic-border,#434343)}.devic-int-body-secondary{overflow:visible;padding-top:0}.devic-int-mcp-section{border-top:1px solid var(--devic-border,#e8e8e8);display:flex;flex-direction:column;gap:10px;padding-top:12px}.devic-int-mcp-heading h4{font-size:13px;font-weight:600;margin:0}.devic-int-mcp-heading span{color:var(--devic-text-muted,#999);display:block;font-size:12px;margin-top:2px}.devic-int-mcp-logo{border-radius:8px;flex-shrink:0;height:32px;object-fit:contain;width:32px}.devic-int-mcp-logo-fallback{align-items:center;background:var(--devic-primary,#1677ff);color:#fff;display:inline-flex;font-size:14px;font-weight:600;justify-content:center}.devic-int-mcp-note{color:var(--devic-text-muted,#999);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-int-mcp-note-warn{color:#faad14}.devic-int-mcp-add{align-self:flex-start;border-style:dashed}.devic-int-mcp-remove{border-color:rgba(255,77,79,.35);color:#ff4d4f}.devic-int-mcp-advanced{display:flex;flex-direction:column;gap:8px}.devic-int-mcp-disclosure{align-self:flex-start;font:inherit;font-size:12px}.devic-int-mcp-copy,.devic-int-mcp-disclosure{background:none;border:none;color:var(--devic-primary,#1677ff);cursor:pointer;padding:0}.devic-int-mcp-copy{font:inherit;font-size:inherit}.devic-int-toggle-btn-loading{animation:devic-int-toggle-pulse 1.4s ease-in-out infinite;cursor:default;opacity:.35}@keyframes devic-int-toggle-pulse{0%,to{opacity:.25}50%{opacity:.5}}.devic-chat-drawer{--devic-primary:#1890ff;--devic-primary-hover:#40a9ff;--devic-primary-light:#e6f7ff;--devic-bg:#fff;--devic-bg-secondary:#f5f5f5;--devic-text:#333;--devic-text-secondary:#666;--devic-text-muted:#999;--devic-border:#e8e8e8;--devic-shadow:0 4px 12px rgba(0,0,0,.15);--devic-error:#ff4d4f;--devic-queued-accent:var(--devic-text-muted);--devic-queued-bubble-bg:transparent;--devic-queued-border:var(--devic-border);--devic-radius:8px;--devic-radius-sm:4px;--devic-radius-lg:16px;--devic-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--devic-transition:0.3s ease;background:var(--devic-bg);bottom:0;box-shadow:var(--devic-shadow);color:var(--devic-text);display:flex;flex-direction:column;font-family:var(--devic-font-family);font-size:14px;line-height:1.5;position:fixed;top:0;transition:transform var(--devic-transition)}.devic-chat-drawer[data-position=right]{right:0;transform:translateX(100%)}.devic-chat-drawer[data-position=left]{left:0;transform:translateX(-100%)}.devic-chat-drawer[data-open=true]{transform:translateX(0)}.devic-drawer-overlay{background:rgba(0,0,0,.3);inset:0;opacity:0;position:fixed;transition:opacity var(--devic-transition),visibility var(--devic-transition);visibility:hidden}.devic-drawer-overlay[data-open=true]{opacity:1;visibility:visible}.devic-drawer-header{align-items:center;border-bottom:1px solid var(--devic-border);display:flex;flex-shrink:0;justify-content:space-between;padding:16px}.devic-drawer-avatar{border-radius:50%;flex-shrink:0;height:28px;object-fit:cover;width:28px}.devic-drawer-title{flex-shrink:1;font-size:16px;font-weight:600;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-drawer-close{background:none;border:none;border-radius:var(--devic-radius-sm);color:var(--devic-text-secondary);cursor:pointer;padding:8px;transition:background var(--devic-transition),color var(--devic-transition)}.devic-drawer-close:hover{background:var(--devic-bg-secondary);color:var(--devic-text)}.devic-messages-container{display:flex;flex:1;flex-direction:column;gap:12px;overflow-y:auto;padding:16px}.devic-welcome{color:var(--devic-text-secondary);padding:24px 16px;text-align:center}.devic-welcome-text{font-size:16px;margin-bottom:16px}.devic-suggested-messages{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.devic-suggested-btn{background:var(--devic-bg);border:1px solid var(--devic-border);border-radius:var(--devic-radius-lg);color:var(--devic-text);cursor:pointer;font-size:13px;padding:8px 16px;transition:border-color var(--devic-transition),background var(--devic-transition)}.devic-suggested-btn:hover{background:var(--devic-primary-light);border-color:var(--devic-primary)}.devic-message{display:flex;flex-direction:column;max-width:85%}.devic-message[data-role=user]{align-self:flex-end}.devic-message[data-role=assistant],.devic-message[data-role=tool]{align-self:flex-start}.devic-message-bubble{word-wrap:break-word;border-radius:var(--devic-radius);padding:10px 14px}.devic-message[data-role=user] .devic-message-bubble{background:var(--devic-user-bubble,var(--devic-primary));border-bottom-right-radius:var(--devic-radius-sm);color:var(--devic-user-bubble-text,#fff)}.devic-message[data-role=assistant] .devic-message-bubble{background:var(--devic-assistant-bubble,var(--devic-bg-secondary));border-bottom-left-radius:var(--devic-radius-sm);color:var(--devic-assistant-bubble-text,var(--devic-text))}.devic-message[data-role=tool] .devic-message-bubble{background:var(--devic-primary-light);border:1px solid var(--devic-primary);color:var(--devic-text);font-size:12px}.devic-message-footer{align-items:center;display:flex;gap:8px;justify-content:space-between;margin-top:4px}.devic-message-time{color:var(--devic-text-muted);font-size:11px}.devic-message[data-role=user] .devic-message-footer{justify-content:flex-end}.devic-message[data-role=user] .devic-message-time{text-align:right}.devic-message[data-queued=true] .devic-message-bubble{background:var(--devic-queued-bubble-bg);border:1px dashed var(--devic-queued-border);color:var(--devic-text);opacity:.85}.devic-message-queued-label{align-items:center;color:var(--devic-queued-accent);display:inline-flex;font-size:11px;gap:4px}.devic-message-files{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.devic-message-file{align-items:center;background:hsla(0,0%,100%,.2);border-radius:var(--devic-radius-sm);display:flex;font-size:12px;gap:6px;padding:6px 10px}.devic-recall{align-self:flex-start;background:var(--devic-recall-bg,rgba(114,46,209,.06));border:1px solid var(--devic-recall-border,rgba(114,46,209,.3));border-radius:var(--devic-radius-sm,8px);color:var(--devic-text-secondary);flex-shrink:0;font-size:12px;margin:2px 0 8px;max-width:88%;overflow:hidden}.devic-recall-header{align-items:center;background:transparent;border:none;color:inherit;cursor:pointer;display:flex;font:inherit;gap:6px;padding:6px 10px;text-align:left;width:100%}.devic-recall-icon{color:var(--devic-recall-accent,#722ed1);flex-shrink:0}.devic-recall-title{color:var(--devic-text);font-weight:600;white-space:nowrap}.devic-recall-summary{opacity:.75;white-space:nowrap}.devic-recall-spacer{flex:1}.devic-recall-source{border:1px solid var(--devic-recall-border,rgba(114,46,209,.3));border-radius:4px;color:var(--devic-recall-accent,#722ed1);font-size:10px;line-height:16px;padding:0 6px;white-space:nowrap}.devic-recall-chevron{flex-shrink:0;opacity:.6;transition:transform .15s ease}.devic-recall-body{display:flex;flex-direction:column;gap:8px;padding:2px 10px 10px}.devic-recall-facts{display:flex;flex-direction:column;gap:6px}.devic-recall-fact{color:var(--devic-text);display:flex;flex-direction:column;gap:2px}.devic-recall-fact-meta{color:var(--devic-text-muted);font-size:10px}.devic-recall-entities{display:flex;flex-wrap:wrap;gap:4px}.devic-recall-entity{background:var(--devic-bg);border:1px solid var(--devic-border,#d9d9d9);border-radius:4px;color:var(--devic-text-secondary);font-size:10px;line-height:18px;padding:0 6px}.devic-recall-entity-type{opacity:.55}.devic-recall-turns{display:flex;flex-direction:column;gap:3px}.devic-recall-turns-title{font-size:10px;font-weight:600;letter-spacing:.4px;opacity:.7;text-transform:uppercase}.devic-recall-turn{font-size:11px;opacity:.85}.devic-recall-turn-role{font-weight:600}.devic-loading{align-self:flex-start;display:flex;gap:4px;padding:10px 14px}.devic-loading-dot{animation:devic-bounce 1.4s ease-in-out infinite both;background:var(--devic-text-muted);border-radius:50%;height:8px;width:8px}.devic-loading-dot:first-child{animation-delay:-.32s}.devic-loading-dot:nth-child(2){animation-delay:-.16s}@keyframes devic-bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.devic-tool-group{align-self:flex-start;display:flex;flex-direction:column;gap:2px;max-width:85%}.devic-tool-activity{align-items:flex-start;animation:devic-slideUp .3s ease-out;display:flex;gap:8px;padding:4px 0}.devic-tool-activity-icon{align-items:center;color:var(--devic-text-muted);display:flex;flex-shrink:0;margin-top:1px}.devic-tool-activity--active .devic-tool-activity-icon{color:var(--devic-primary)}.devic-tool-activity-text{color:var(--devic-text-secondary);font-size:13px;line-height:1.4}.devic-glow-text{animation:devic-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes devic-pulse{0%,to{opacity:1}50%{opacity:.5}}.devic-spinner{animation:devic-spin 1s linear infinite}@keyframes devic-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes devic-slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.devic-tool-collapse-btn{align-items:center;background:none;border:none;color:var(--devic-text-muted);cursor:pointer;display:flex;font-family:var(--devic-font-family);font-size:12px;gap:6px;padding:4px 0;transition:color .2s ease}.devic-tool-collapse-btn:hover{color:var(--devic-primary)}.devic-tool-group-items{animation:devic-expandItems .4s ease-out;overflow:hidden}.devic-tool-group-items[data-expanded=true]{max-height:500px}@keyframes devic-expandItems{0%{max-height:0;opacity:0}to{max-height:500px;opacity:1}}.devic-input-area{border-top:1px solid var(--devic-border);flex-shrink:0;padding:16px}.devic-input-wrapper{--devic-input-row-height:28px;--devic-input-line-height:20px;align-items:flex-end;background:var(--devic-bg-secondary);border-radius:var(--devic-radius);display:flex;gap:8px;padding:8px 12px}.devic-input{background:none;border:none;box-sizing:border-box;color:var(--devic-text);flex:1;font-family:inherit;font-size:14px;line-height:var(--devic-input-line-height);max-height:120px;min-height:var(--devic-input-row-height);outline:none;padding:calc((var(--devic-input-row-height) - var(--devic-input-line-height))/2) 0;resize:none}.devic-input::placeholder{color:var(--devic-text-muted)}.devic-input-btn{align-items:center;background:none;border:none;border-radius:var(--devic-radius-sm);box-sizing:border-box;color:var(--devic-text-secondary);cursor:pointer;display:inline-flex;flex-shrink:0;justify-content:center;min-height:var(--devic-input-row-height,28px);padding:4px;transition:color var(--devic-transition)}.devic-input-btn:hover:not(:disabled){color:var(--devic-primary)}.devic-input-btn:disabled{cursor:not-allowed;opacity:.5}.devic-send-btn{padding:4px 12px}.devic-send-btn,.devic-stop-btn{background:var(--devic-send-btn,var(--devic-primary));border-radius:var(--devic-radius-sm);color:#fff}.devic-stop-btn{min-width:var(--devic-input-row-height,28px);padding:4px}.devic-stop-btn:hover{background:var(--devic-primary-hover);color:#fff}.devic-send-btn-wrapper{flex-shrink:0;position:relative}.devic-send-btn-custom{align-items:center;display:flex;justify-content:center;pointer-events:none}.devic-send-btn-overlay{background:transparent;border:none;cursor:pointer;inset:0;margin:0;padding:0;position:absolute}.devic-send-btn-overlay:disabled{cursor:not-allowed;opacity:.5}.devic-send-btn:hover:not(:disabled){background:var(--devic-primary-hover);color:#fff}.devic-speech-error{background:#fff1f0;border:1px solid #ffccc7;border-radius:var(--devic-radius-sm);color:#cf1322;font-size:12px;margin-bottom:8px;padding:6px 10px}.devic-speech-mic.devic-input-btn:hover:not(:disabled){color:var(--devic-primary)}.devic-speech-mic-wrap{align-items:center;display:inline-flex;flex-shrink:0;justify-content:center;position:relative}.devic-speech-mic-wrap[data-holding=true] .devic-speech-mic{color:var(--devic-primary)}.devic-mic-hold-ring{height:calc(100% + 6px);inset:-3px;pointer-events:none;position:absolute;transform:rotate(-90deg);width:calc(100% + 6px)}.devic-mic-hold-ring-track{fill:none;stroke:var(--devic-primary);stroke-opacity:.18;stroke-width:3}.devic-mic-hold-ring-progress{fill:none;stroke:var(--devic-primary);stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset 90ms linear}.devic-speech-panel{align-items:center;display:flex;flex:1;gap:8px;min-height:var(--devic-input-row-height,28px)}.devic-speech-live{align-items:center;display:flex;flex:1;gap:10px;justify-content:flex-start}.devic-speech-timer{color:var(--devic-text-secondary);font-size:13px;font-variant-numeric:tabular-nums}.devic-speech-confirm{color:#389e0d}.devic-speech-confirm.devic-input-btn:hover:not(:disabled){color:#237804}.devic-speech-confirm-wrap{align-items:center;display:inline-flex;flex-shrink:0;justify-content:center;position:relative}.devic-autostop-ring{height:calc(100% + 6px);inset:-3px;pointer-events:none;position:absolute;transform:rotate(-90deg);width:calc(100% + 6px)}.devic-autostop-ring-track{fill:none;stroke:#389e0d;stroke-opacity:.18;stroke-width:3}.devic-autostop-ring-progress{fill:none;stroke:#389e0d;stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset 90ms linear}.devic-speech-confirm-wrap[data-autostop=true] .devic-speech-confirm{animation:devic-autostop-pulse 1s ease-in-out infinite}@keyframes devic-autostop-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.devic-handoff-bar{align-items:center;background:var(--devic-primary-light,#e6f7ff);border-radius:8px;color:var(--devic-primary);display:flex;font-size:12px;gap:8px;margin-bottom:6px;padding:5px 8px}.devic-handoff-dot{animation:devic-handoff-blink 1.2s ease-in-out infinite;background:var(--devic-primary);border-radius:50%;flex-shrink:0;height:8px;width:8px}.devic-handoff-bar[data-waiting=true] .devic-handoff-dot{animation-duration:.7s}@keyframes devic-handoff-blink{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}.devic-handoff-label{flex:1;font-weight:500}.devic-handoff-stop{align-items:center;background:transparent;border:none;border-radius:50%;color:inherit;cursor:pointer;display:inline-flex;height:22px;justify-content:center;opacity:.8;padding:0;width:22px}.devic-handoff-stop:hover{background:rgba(0,0,0,.06);opacity:1}.devic-handoff-pending{align-items:center;animation:devic-handoff-pending-in .18s ease-out;display:flex;flex:1;gap:10px;min-height:24px;min-width:0}@keyframes devic-handoff-pending-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.devic-handoff-pending-icon{align-items:center;animation:devic-autostop-pulse 1s ease-in-out infinite;color:var(--devic-primary);display:inline-flex;flex-shrink:0;height:36px;justify-content:center;position:relative;width:36px}.devic-handoff-ring{height:100%;inset:0;pointer-events:none;position:absolute;transform:rotate(-90deg);width:100%}.devic-handoff-ring-track{fill:none;stroke:var(--devic-primary);stroke-opacity:.18;stroke-width:3}.devic-handoff-ring-progress{fill:none;stroke:var(--devic-primary);stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset 90ms linear}.devic-handoff-pending-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}.devic-handoff-pending-title{color:var(--devic-primary);font-size:13px;font-weight:500}.devic-handoff-pending-preview{color:var(--devic-text-secondary);font-size:12px;max-height:4.5em;overflow-wrap:anywhere;overflow-y:auto;white-space:normal;word-break:break-word}.devic-speech-cancel{color:var(--devic-text-muted)}.devic-speech-cancel.devic-input-btn:hover:not(:disabled){color:#cf1322}.devic-speech-status{color:var(--devic-text-secondary);font-size:13px}.devic-speech-spinner{animation:devic-spin .8s linear infinite;border:2px solid var(--devic-border);border-radius:50%;border-top-color:var(--devic-primary);flex-shrink:0;height:16px;width:16px}.devic-transcript-playback{align-items:center;background:hsla(0,0%,100%,.18);border-radius:999px;display:inline-flex;font-size:12px;gap:6px;line-height:1;margin-top:6px;max-width:100%;padding:3px 8px 3px 3px}.devic-message[data-role=assistant] .devic-transcript-playback{background:var(--devic-bg-secondary,rgba(0,0,0,.05))}.devic-transcript-btn{align-items:center;background:hsla(0,0%,100%,.85);border:none;border-radius:50%;color:var(--devic-primary,#6c5ce7);cursor:pointer;display:inline-flex;flex-shrink:0;height:22px;justify-content:center;padding:0;transition:background .15s ease;width:22px}.devic-transcript-btn:hover:not(:disabled){background:#fff}.devic-transcript-btn:disabled{cursor:default;opacity:.7}.devic-transcript-icon{align-items:center;display:inline-flex;opacity:.85}.devic-transcript-playback[data-playing=true] .devic-transcript-icon{animation:devic-pulse 1.2s ease-in-out infinite}.devic-transcript-label{opacity:.9;white-space:nowrap}.devic-transcript-spinner{animation:devic-spin .8s linear infinite;border:2px solid rgba(108,92,231,.3);border-radius:50%;border-top:2px solid var(--devic-primary,#6c5ce7);height:12px;width:12px}.devic-equalizer{align-items:center;display:flex;gap:3px;height:24px}.devic-equalizer-bar{background:var(--devic-primary);border-radius:2px;min-height:3px;transition:height 90ms ease-out;width:3px}.devic-equalizer[data-paused=true] .devic-equalizer-bar{background:var(--devic-text-muted);height:10%!important}.devic-file-preview{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.devic-file-preview-item{align-items:center;background:var(--devic-bg);border:1px solid var(--devic-border);border-radius:var(--devic-radius-sm);display:flex;font-size:12px;gap:6px;padding:4px 8px}.devic-file-remove{background:none;border:none;color:var(--devic-text-muted);cursor:pointer;font-size:16px;line-height:1;padding:0}.devic-file-remove:hover{color:#ff4d4f}.devic-file-preview-thumb{border-radius:var(--devic-radius-sm);display:block;height:28px;object-fit:cover;width:28px}.devic-input-area{position:relative}.devic-drop-overlay{align-items:center;background:var(--devic-bg);border:2px dashed var(--devic-primary,var(--devic-border));border-radius:var(--devic-radius);color:var(--devic-text-muted);display:flex;flex-direction:column;font-size:13px;gap:8px;inset:0;justify-content:center;pointer-events:none;position:absolute;z-index:2}.devic-pasted-cards{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.devic-pasted-card{background:var(--devic-bg);border:1px solid var(--devic-border);border-radius:var(--devic-radius);font-size:12px;max-width:240px;padding:10px;position:relative;text-align:left}.devic-pasted-card-preview{-webkit-line-clamp:5;-webkit-box-orient:vertical;color:var(--devic-text-muted);display:-webkit-box;line-height:1.4;margin:0 0 8px;overflow:hidden}.devic-pasted-card-footer{align-items:center;display:flex;gap:8px}.devic-pasted-card-badge{background:var(--devic-bg-secondary);border-radius:var(--devic-radius-sm);color:var(--devic-text);font-size:10px;font-weight:600;letter-spacing:.04em;padding:2px 6px}.devic-pasted-card-meta{color:var(--devic-text-muted);font-size:11px}.devic-pasted-card-remove{position:absolute;right:6px;top:4px}.devic-message-pasted{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}.devic-message-pasted .devic-pasted-card{max-width:100%;overflow:hidden;padding:0}.devic-pasted-card-toggle{background:none;border:none;color:var(--devic-text);cursor:pointer;display:block;font:inherit;padding:10px;text-align:left;width:100%}.devic-pasted-card-full{color:var(--devic-text);font-family:var(--devic-font-mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:11px;line-height:1.5;margin:0 0 8px;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.devic-message-file-image{border-radius:var(--devic-radius-sm);display:block;max-width:220px;overflow:hidden}.devic-message-file-image img{display:block;height:auto;width:100%}.devic-trigger{align-items:center;background:var(--devic-primary);border:none;border-radius:50%;box-shadow:var(--devic-shadow);color:#fff;cursor:pointer;display:flex;height:56px;justify-content:center;position:fixed;transition:background var(--devic-transition),transform var(--devic-transition);width:56px}.devic-trigger:hover{background:var(--devic-primary-hover);transform:scale(1.05)}.devic-trigger svg{height:24px;width:24px}.devic-error{background:#fff2f0;border:1px solid #ffccc7;border-radius:var(--devic-radius);color:#ff4d4f;font-size:13px;margin:8px 16px;padding:12px}.devic-messages-container::-webkit-scrollbar{width:6px}.devic-messages-container::-webkit-scrollbar-track{background:transparent}.devic-messages-container::-webkit-scrollbar-thumb{background:var(--devic-border);border-radius:3px}.devic-messages-container::-webkit-scrollbar-thumb:hover{background:var(--devic-text-muted)}.devic-chat-drawer[data-mode=inline]{border:1px solid var(--devic-border);bottom:auto;box-shadow:none;height:100%;left:auto;position:relative;right:auto;top:auto;transform:none}.devic-drawer-header-actions{align-items:center;display:flex;gap:4px;margin-left:auto}.devic-new-chat-btn{background:none;border:none;border-radius:var(--devic-radius-sm);color:var(--devic-text-secondary);cursor:pointer;padding:8px;transition:background var(--devic-transition),color var(--devic-transition)}.devic-new-chat-btn:hover{background:var(--devic-bg-secondary);color:var(--devic-primary)}.devic-conversation-selector{flex:1;margin:0 8px;min-width:72px;position:relative}.devic-conversation-selector-trigger{align-items:center;background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:var(--devic-radius-sm);color:var(--devic-text);cursor:pointer;display:flex;font-family:var(--devic-font-family);font-size:13px;gap:6px;padding:6px 10px;text-align:left;transition:border-color var(--devic-transition);width:100%}.devic-conversation-selector-trigger:hover{border-color:var(--devic-primary)}.devic-conversation-selector-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-conversation-dropdown{background:var(--devic-bg);border:1px solid var(--devic-border);border-radius:var(--devic-radius);box-shadow:var(--devic-shadow);display:flex;flex-direction:column;left:0;max-height:320px;position:absolute;right:0;top:calc(100% + 4px);z-index:10}.devic-conversation-search-wrapper{border-bottom:1px solid var(--devic-border);padding:8px}.devic-conversation-search{background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:var(--devic-radius-sm);box-sizing:border-box;color:var(--devic-text);font-family:var(--devic-font-family);font-size:13px;outline:none;padding:6px 8px;width:100%}.devic-conversation-search:focus{border-color:var(--devic-primary)}.devic-conversation-list{flex:1;overflow-y:auto}.devic-conversation-item{align-items:center;background:none;border:none;color:var(--devic-text);cursor:pointer;display:flex;font-family:var(--devic-font-family);font-size:13px;justify-content:space-between;padding:8px 12px;text-align:left;transition:background .15s;width:100%}.devic-conversation-item:hover,.devic-conversation-item[data-active=true]{background:var(--devic-bg-secondary)}.devic-conversation-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-conversation-item-date{color:var(--devic-text-muted);flex-shrink:0;font-size:11px;margin-left:8px}.devic-conversation-empty,.devic-conversation-loading{color:var(--devic-text-muted);font-size:13px;padding:12px;text-align:center}.devic-conversation-load-more{background:none;border:none;color:var(--devic-text-muted);cursor:pointer;display:block;font-family:var(--devic-font-family);font-size:12px;padding:8px 12px;text-align:center;transition:background .15s;width:100%}.devic-conversation-load-more:hover{background:var(--devic-bg-secondary);color:var(--devic-primary)}.devic-conversation-new{background:none;border:none;border-top:1px solid var(--devic-border);color:var(--devic-primary);cursor:pointer;display:block;font-family:var(--devic-font-family);font-size:13px;padding:10px 12px;text-align:left;transition:background .15s;width:100%}.devic-conversation-new:hover{background:var(--devic-bg-secondary)}.devic-conversation-item-check{align-items:center;color:var(--devic-primary);display:flex;flex-shrink:0;margin-right:6px}.devic-message-bubble h1,.devic-message-bubble h2,.devic-message-bubble h3,.devic-message-bubble h4,.devic-message-bubble h5,.devic-message-bubble h6{line-height:1.3;margin:8px 0 4px}.devic-message-bubble h1{font-size:1.3em}.devic-message-bubble h2{font-size:1.2em}.devic-message-bubble h3{font-size:1.1em}.devic-message-bubble p{margin:4px 0}.devic-message-bubble ol,.devic-message-bubble ul{margin:4px 0;padding-left:20px}.devic-message-bubble code{background:rgba(0,0,0,.06);border-radius:3px;color:inherit;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.9em;padding:1px 4px}.devic-message-bubble pre{background:rgba(0,0,0,.06);border-radius:var(--devic-radius-sm);color:inherit;margin:8px 0;overflow-x:auto;padding:10px}.devic-message-bubble pre code{background:none;color:inherit;padding:0}.devic-message-bubble blockquote{border-left:3px solid var(--devic-border);color:var(--devic-text-secondary);margin:4px 0;padding-left:12px}.devic-message-bubble a{color:var(--devic-primary);text-decoration:underline}.devic-message-bubble p:first-child{margin-top:0}.devic-message-bubble p:last-child{margin-bottom:0}.devic-message[data-role=user] .devic-message-bubble a{color:inherit}.devic-message[data-role=user] .devic-message-bubble code,.devic-message[data-role=user] .devic-message-bubble pre{background:hsla(0,0%,100%,.18)}.devic-message[data-role=user] .devic-message-bubble blockquote{border-left-color:hsla(0,0%,100%,.45);color:inherit}.markdown-table{margin:8px 0;overflow-x:auto}.markdown-table table{border-collapse:collapse;font-size:13px;width:100%}.markdown-table td,.markdown-table th{border:1px solid var(--devic-border);padding:6px 10px;text-align:left}.markdown-table th{background:var(--devic-bg-secondary);font-weight:600}.devic-resize-handle{bottom:0;cursor:col-resize;position:absolute;top:0;width:6px;z-index:1}.devic-resize-handle[data-position=right]{left:0}.devic-resize-handle[data-position=left]{right:0}.devic-resize-handle:active,.devic-resize-handle:hover{background:var(--devic-primary);opacity:.3}.devic-handoff-widget{animation:devic-slideUp .3s ease-out;background:var(--devic-bg);border:1px solid var(--devic-border);border-radius:8px;display:flex;flex-direction:column;gap:10px;max-width:320px;padding:12px;width:100%}.devic-handoff-header{align-items:center;display:flex;gap:8px}.devic-handoff-agent-avatar{align-items:center;background:var(--devic-bg-secondary);border-radius:50%;display:flex;flex-shrink:0;height:24px;justify-content:center;overflow:hidden;width:24px}.devic-handoff-avatar-img{height:100%;object-fit:cover;width:100%}.devic-handoff-agent-name{color:var(--devic-text);font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-handoff-progress,.devic-handoff-state-row{align-items:center;display:flex;gap:8px}.devic-handoff-progress-bar{background:#f0f0f0;border-radius:3px;flex:1;height:6px;overflow:hidden;position:relative}.devic-handoff-progress-fill{border-radius:3px;height:100%;transition:width .4s ease}.devic-handoff-progress-fill[data-status=active]{background:var(--devic-primary)}.devic-handoff-progress-fill[data-status=success]{background:#52c41a}.devic-handoff-progress-fill[data-status=error]{background:#ff4d4f}.devic-handoff-progress-text{color:var(--devic-text-muted);flex-shrink:0;font-size:11px}.devic-handoff-progress-indeterminate{animation:devic-indeterminate 1.5s ease-in-out infinite;background:var(--devic-primary);border-radius:3px;height:100%;width:40%}@keyframes devic-indeterminate{0%{transform:translateX(-100%)}50%{transform:translateX(150%)}to{transform:translateX(-100%)}}.devic-handoff-summary{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--devic-text-secondary);display:-webkit-box;font-size:12px;line-height:1.4;overflow:hidden;text-overflow:ellipsis}.devic-handoff-summary-active{animation:devic-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.devic-handoff-elapsed{align-items:center;color:var(--devic-text-muted);display:flex;font-size:11px;gap:4px}.devic-message[data-role=user] .devic-message-references{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;margin-bottom:4px}.devic-message-reference-chip{align-items:center;background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:999px;color:var(--devic-text);display:inline-flex;font-size:11px;gap:4px;max-width:220px;padding:3px 8px}.devic-message-reference-chip-label{color:var(--devic-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-reference-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px;padding:6px 8px}.devic-reference-chip{align-items:center;background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:999px;color:var(--devic-text);display:inline-flex;font-size:12px;gap:6px;max-width:220px;padding:4px 8px}.devic-reference-chip-label{color:var(--devic-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-reference-chip-remove{align-items:center;background:transparent;border:none;border-radius:4px;color:var(--devic-text-muted);cursor:pointer;display:inline-flex;font-size:16px;line-height:1;padding:0 2px}.devic-reference-chip-remove:hover{background:rgba(0,0,0,.06);color:var(--devic-text)}.devic-queue-notice{align-items:center;background:var(--devic-bg-secondary);border:1px dashed var(--devic-queued-border);border-radius:var(--devic-radius);color:var(--devic-text-secondary);display:flex;font-size:12px;gap:6px;line-height:1.4;margin-bottom:4px;padding:8px 12px}.devic-queue-notice-icon{color:var(--devic-queued-accent);display:flex;flex-shrink:0}.devic-queue-notice[data-alert=true]{border-color:var(--devic-error,#ff4d4f);border-style:solid;color:var(--devic-text)}.devic-queue-notice[data-alert=true] .devic-queue-notice-icon{color:var(--devic-error,#ff4d4f)}.devic-input-disabled-notice{align-items:center;background:var(--devic-bg-secondary);border-radius:var(--devic-radius);color:var(--devic-text-muted);display:flex;font-size:12px;gap:6px;justify-content:center;margin-bottom:4px;padding:8px 12px}.devic-inline-widgets{display:flex;flex-direction:column;gap:8px;padding:8px 12px}.devic-inline-widget{background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:var(--devic-radius);padding:12px}.devic-input-widget{padding:8px;width:100%}.devic-limit-banner{align-items:flex-start;background:#fff7e6;border:1px solid #ffd591;border-radius:var(--devic-radius);color:#ad4e00;display:flex;font-size:13px;gap:8px;margin-bottom:8px;padding:8px 12px}.devic-limit-banner-icon{color:#fa8c16;display:inline-flex;flex-shrink:0;margin-top:1px}.devic-limit-banner-text{display:flex;flex-direction:column;gap:2px;line-height:1.35}.devic-limit-banner-title{font-weight:600}.devic-limit-banner-reset{color:var(--devic-text-secondary);font-size:12px}.devic-usage-bar-wrap{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.devic-usage-bar-head{align-items:center;display:flex;gap:8px;justify-content:space-between}.devic-usage-tier{align-items:center;background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:999px;color:var(--devic-text-secondary);display:inline-flex;font-size:11px;font-weight:600;letter-spacing:.02em;padding:2px 8px;text-transform:uppercase;white-space:nowrap}.devic-usage-bar-window{color:var(--devic-text-muted);white-space:nowrap}.devic-usage-bar-group{background:var(--devic-bg-secondary);border-radius:var(--devic-radius);display:flex;flex-direction:column;gap:4px;padding:5px 10px}.devic-usage-bar-group .devic-usage-bar{background:transparent;padding:0}.devic-usage-bar{align-items:center;background:var(--devic-bg-secondary);border-radius:var(--devic-radius);color:var(--devic-text-secondary);display:flex;font-size:12px;gap:8px;padding:5px 10px}.devic-usage-bar[data-empty=true]{color:var(--devic-text-muted);justify-content:space-between}.devic-usage-bar-label{font-weight:500;white-space:nowrap}.devic-usage-bar-track{background:var(--devic-border);border-radius:999px;flex:1;height:6px;overflow:hidden}.devic-usage-bar-fill{border-radius:999px;height:100%;transition:width var(--devic-transition),background-color var(--devic-transition)}.devic-usage-bar-reset{color:var(--devic-text-muted);white-space:nowrap}.devic-usage-toggle{align-items:center;background:var(--devic-bg-secondary);border:1px solid var(--devic-border);border-radius:999px;color:var(--devic-text-secondary);cursor:pointer;display:inline-flex;font-size:12px;font-weight:500;gap:6px;padding:4px 10px;transition:background var(--devic-transition),color var(--devic-transition)}.devic-usage-toggle:hover{background:var(--devic-border);color:var(--devic-text)}.devic-usage-collapse{align-items:center;background:transparent;border:none;border-radius:var(--devic-radius-sm);color:var(--devic-text-muted);cursor:pointer;display:inline-flex;font-size:16px;height:18px;justify-content:center;line-height:1;padding:0;width:18px}.devic-usage-collapse:hover{background:var(--devic-border);color:var(--devic-text)}@media (max-width:480px){.devic-chat-drawer{width:100%}}.devic-compaction{color:var(--devic-text-secondary);flex-shrink:0;font-size:12px;margin:10px 0;width:100%}.devic-compaction-head,.devic-compaction-running{align-items:center;display:flex;gap:8px}.devic-compaction-rule{background:var(--devic-compaction-border,rgba(114,46,209,.3));flex:1;height:1px}.devic-compaction-pill{align-items:center;background:var(--devic-compaction-bg,rgba(114,46,209,.06));border:1px solid var(--devic-compaction-border,rgba(114,46,209,.3));border-radius:999px;color:inherit;cursor:pointer;display:flex;flex-shrink:0;font:inherit;gap:8px;max-width:100%;overflow:hidden;padding:4px 12px;white-space:nowrap}.devic-compaction-pill-static,.devic-compaction-running .devic-compaction-pill{cursor:default}.devic-compaction-icon{color:var(--devic-compaction-accent,#722ed1);flex-shrink:0}.devic-compaction-title{color:var(--devic-text);font-weight:600}.devic-compaction-meta{opacity:.75;overflow:hidden;text-overflow:ellipsis}.devic-compaction-tag{border:1px solid var(--devic-compaction-border,rgba(114,46,209,.3));border-radius:4px;font-size:10px;line-height:16px;opacity:.8;padding:0 6px}.devic-compaction-chevron{flex-shrink:0;opacity:.6;transition:transform .15s ease}.devic-compaction-dots{display:inline-flex;flex-shrink:0;gap:3px}.devic-compaction-dots i{animation:devic-compaction-blink 1.2s ease-in-out infinite;background:var(--devic-compaction-accent,#722ed1);border-radius:50%;height:4px;width:4px}.devic-compaction-dots i:nth-child(2){animation-delay:.2s}.devic-compaction-dots i:nth-child(3){animation-delay:.4s}@keyframes devic-compaction-blink{0%,80%,to{opacity:.25}40%{opacity:1}}.devic-compaction-body{background:var(--devic-compaction-bg,rgba(114,46,209,.06));border:1px solid var(--devic-compaction-border,rgba(114,46,209,.3));border-radius:var(--devic-radius-sm,8px);display:flex;flex-direction:column;gap:10px;margin-top:8px;padding:10px 12px}.devic-compaction-note{color:var(--devic-text-muted);font-size:11px}.devic-compaction-section{color:var(--devic-text);display:flex;flex-direction:column;gap:3px}.devic-compaction-section-title{font-size:10px;font-weight:600;letter-spacing:.5px;opacity:.7;text-transform:uppercase}.devic-compaction-list{margin:0;padding-left:18px}.devic-compaction-raw{white-space:pre-wrap}.devic-compaction-facts{display:flex;flex-wrap:wrap;gap:4px}.devic-compaction-fact{border:1px solid var(--devic-compaction-border,rgba(114,46,209,.3));border-radius:4px;font-family:var(--devic-font-mono,ui-monospace,SFMono-Regular,monospace);font-size:11px;line-height:18px;padding:0 6px}.devic-compaction-fact-label{opacity:.65}.devic-guardrail-notice{align-items:center;background:var(--devic-guardrail-bg,rgba(255,77,79,.06));border:1px solid var(--devic-guardrail-border,rgba(255,77,79,.25));border-radius:var(--devic-radius);color:var(--devic-text-secondary);display:flex;flex-shrink:0;font-size:12px;gap:6px;justify-content:center;line-height:1.4;margin:10px 0;padding:8px 12px;text-align:center;width:100%}.devic-guardrail-notice-icon{color:var(--devic-error,#ff4d4f);display:flex;flex-shrink:0}.devic-command-bar-container{--devic-cmd-bg:var(--devic-cmd-bg-override,#fff);--devic-cmd-text:var(--devic-cmd-text-override,#1f2937);--devic-cmd-text-secondary:var(--devic-cmd-text-secondary-override,#6b7280);--devic-cmd-border:var(--devic-cmd-border-override,#e5e7eb);--devic-cmd-radius:var(--devic-cmd-radius-override,12px);--devic-cmd-shadow:var(--devic-cmd-shadow-override,0 4px 20px rgba(0,0,0,.1));--devic-cmd-primary:var(--devic-cmd-primary-override,#3b82f6);--devic-cmd-font-family:var(--devic-cmd-font-family-override,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif);--devic-cmd-font-size:var(--devic-cmd-font-size-override,14px);--devic-cmd-animation-duration:var(--devic-cmd-animation-duration-override,200ms);color:var(--devic-cmd-text);display:flex;flex-direction:column;font-family:var(--devic-cmd-font-family);font-size:var(--devic-cmd-font-size);gap:8px;max-width:100%;width:400px}.devic-command-bar-container[data-position=fixed]{position:fixed}.devic-command-bar-container[data-position=inline]{position:relative}.devic-command-bar-container[data-visible=false]{opacity:0;pointer-events:none;transform:translateY(8px)}.devic-command-bar-container[data-visible=false],.devic-command-bar-container[data-visible=true]{transition:opacity var(--devic-cmd-animation-duration) ease,transform var(--devic-cmd-animation-duration) ease}.devic-command-bar-container[data-visible=true]{opacity:1;transform:translateY(0)}.devic-command-bar{align-items:center;background:var(--devic-cmd-bg);border:1px solid var(--devic-cmd-border);border-radius:var(--devic-cmd-radius);box-shadow:var(--devic-cmd-shadow);display:flex;gap:12px;padding:12px 16px}.devic-command-bar-icon{align-items:center;color:var(--devic-cmd-text-secondary);display:flex;flex-shrink:0;height:20px;justify-content:center;width:20px}.devic-command-bar-icon svg{height:100%;width:100%}.devic-command-bar-input{background:transparent;border:none;color:inherit;flex:1;font-family:inherit;font-size:inherit;min-width:0;outline:none}.devic-command-bar-input::placeholder{color:var(--devic-cmd-text-secondary)}.devic-command-bar-summary{animation:devic-cmd-pulse 1.5s ease-in-out infinite;color:var(--devic-cmd-text-secondary);flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes devic-cmd-pulse{0%,to{opacity:1}50%{opacity:.6}}.devic-command-bar-shortcut{background:var(--devic-cmd-border);border-radius:6px;color:var(--devic-cmd-text-secondary);flex-shrink:0;font-size:12px;font-weight:500;letter-spacing:.5px;padding:4px 8px}.devic-command-bar-spinner{animation:devic-cmd-spin .8s linear infinite;border:2px solid var(--devic-cmd-border);border-radius:50%;border-top-color:var(--devic-cmd-primary);height:20px;width:20px}@keyframes devic-cmd-spin{to{transform:rotate(1turn)}}.devic-command-bar-result{animation:devic-cmd-slide-up .2s ease-out;background:var(--devic-cmd-bg);border:1px solid var(--devic-cmd-border);border-radius:var(--devic-cmd-radius);box-shadow:var(--devic-cmd-shadow);overflow:hidden}@keyframes devic-cmd-slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.devic-command-bar-result-tools{border-bottom:1px solid var(--devic-cmd-border)}.devic-command-bar-result-tools-header{align-items:center;color:var(--devic-cmd-text-secondary);cursor:pointer;display:flex;font-size:13px;gap:8px;padding:10px 14px;transition:background .15s ease;user-select:none}.devic-command-bar-result-tools-header:hover{background:rgba(0,0,0,.02)}.devic-command-bar-result-tools-chevron{height:16px;transition:transform .2s ease;width:16px}.devic-command-bar-result-tools-header[data-expanded=true] .devic-command-bar-result-tools-chevron{transform:rotate(90deg)}.devic-command-bar-result-tools-count{align-items:center;background:var(--devic-cmd-primary);border-radius:10px;color:#fff;display:inline-flex;font-size:11px;font-weight:600;height:20px;justify-content:center;min-width:20px;padding:0 6px}.devic-command-bar-result-tools-list{display:flex;flex-direction:column;gap:6px;padding:8px 14px 12px}.devic-command-bar-result-tools-list[data-expanded=false]{display:none}.devic-command-bar-result-tool-item{align-items:center;background:rgba(0,0,0,.02);border-radius:6px;display:flex;font-size:12px;gap:8px;padding:6px 10px}.devic-command-bar-result-tool-icon{color:#10b981;height:14px;width:14px}.devic-command-bar-result-tool-name{color:var(--devic-cmd-text-secondary)}.devic-command-bar-result-message{line-height:1.5;max-height:300px;overflow-y:auto;padding:14px}.devic-command-bar-result-message::-webkit-scrollbar{width:6px}.devic-command-bar-result-message::-webkit-scrollbar-track{background:transparent}.devic-command-bar-result-message::-webkit-scrollbar-thumb{background:var(--devic-cmd-border);border-radius:3px}.devic-command-bar-error{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--devic-cmd-radius);color:#dc2626;font-size:13px;padding:10px 14px}.devic-command-bar-result-empty{color:var(--devic-cmd-text-secondary);font-size:13px;padding:14px;text-align:center}.devic-command-bar-dropdown{animation:devic-cmd-slide-up .2s ease-out;background:var(--devic-cmd-bg);border:1px solid var(--devic-cmd-border);border-radius:var(--devic-cmd-radius);box-shadow:var(--devic-cmd-shadow);overflow:hidden}.devic-command-bar-dropdown-header{align-items:center;border-bottom:1px solid var(--devic-cmd-border);color:var(--devic-cmd-text-secondary);display:flex;font-size:12px;font-weight:600;justify-content:space-between;letter-spacing:.5px;padding:10px 14px;text-transform:uppercase}.devic-command-bar-dropdown-hint{align-items:center;display:flex;font-weight:400;gap:4px;letter-spacing:0;text-transform:none}.devic-command-bar-dropdown-hint kbd{align-items:center;background:var(--devic-cmd-border);border-radius:4px;display:inline-flex;font-family:inherit;font-size:10px;height:18px;justify-content:center;min-width:18px;padding:0 4px}.devic-command-bar-dropdown-clear{background:none;border:none;border-radius:4px;color:var(--devic-cmd-primary);cursor:pointer;font-family:inherit;font-size:12px;font-weight:500;letter-spacing:0;padding:2px 6px;text-transform:none}.devic-command-bar-dropdown-clear:hover{background:rgba(0,0,0,.05)}.devic-command-bar-dropdown-list{max-height:250px;overflow-y:auto}.devic-command-bar-dropdown-list::-webkit-scrollbar{width:6px}.devic-command-bar-dropdown-list::-webkit-scrollbar-track{background:transparent}.devic-command-bar-dropdown-list::-webkit-scrollbar-thumb{background:var(--devic-cmd-border);border-radius:3px}.devic-command-bar-dropdown-item{align-items:center;cursor:pointer;display:flex;gap:10px;padding:10px 14px;transition:background .15s ease}.devic-command-bar-dropdown-item:hover,.devic-command-bar-dropdown-item[data-selected=true]{background:rgba(0,0,0,.04)}.devic-command-bar-dropdown-item[data-selected=true]{background:var(--devic-cmd-primary);background:rgba(59,130,246,.1)}.devic-command-bar-dropdown-icon{align-items:center;color:var(--devic-cmd-text-secondary);display:flex;flex-shrink:0;height:16px;justify-content:center;width:16px}.devic-command-bar-dropdown-keyword{color:var(--devic-cmd-text);flex-shrink:0;font-weight:600}.devic-command-bar-dropdown-desc{color:var(--devic-cmd-text-secondary);flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-command-bar-dropdown-empty{color:var(--devic-cmd-text-secondary);font-size:13px;padding:20px 14px;text-align:center}.devic-command-bar-history-item{border-bottom:1px solid rgba(0,0,0,.04)}.devic-command-bar-history-item:last-child{border-bottom:none}.devic-command-bar-history-text{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-gen-container{--devic-gen-primary:var(--devic-gen-primary-override,#3b82f6);--devic-gen-primary-hover:var(--devic-gen-primary-hover-override,#2563eb);--devic-gen-bg:var(--devic-gen-bg-override,#fff);--devic-gen-text:var(--devic-gen-text-override,#1f2937);--devic-gen-text-secondary:var(--devic-gen-text-secondary-override,#6b7280);--devic-gen-border:var(--devic-gen-border-override,#e5e7eb);--devic-gen-radius:var(--devic-gen-radius-override,8px);--devic-gen-font-family:var(--devic-gen-font-family-override,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif);--devic-gen-font-size:var(--devic-gen-font-size-override,14px);--devic-gen-z-index:var(--devic-gen-z-index-override,10000);--devic-gen-animation-duration:var(--devic-gen-animation-duration-override,200ms);--devic-gen-modal-bg:var(--devic-gen-modal-bg-override,#fff);--devic-gen-modal-text:var(--devic-gen-modal-text-override,#1f2937);--devic-gen-modal-border:var(--devic-gen-modal-border-override,#e5e7eb);font-family:var(--devic-gen-font-family);font-size:var(--devic-gen-font-size)}.devic-gen-button{align-items:center;border:none;border-radius:var(--devic-gen-radius);cursor:pointer;display:inline-flex;font-family:inherit;font-weight:500;gap:8px;justify-content:center;transition:all var(--devic-gen-animation-duration) ease}.devic-gen-button:disabled{cursor:not-allowed;opacity:.6}.devic-gen-button[data-size=small]{font-size:12px;padding:6px 12px}.devic-gen-button[data-size=medium]{font-size:14px;padding:8px 16px}.devic-gen-button[data-size=large]{font-size:16px;padding:12px 24px}.devic-gen-button[data-variant=primary]{background:var(--devic-gen-primary);color:#fff}.devic-gen-button[data-variant=primary]:hover:not(:disabled){background:var(--devic-gen-primary-hover)}.devic-gen-button[data-variant=secondary]{background:var(--devic-gen-border);color:var(--devic-gen-text)}.devic-gen-button[data-variant=secondary]:hover:not(:disabled){background:#d1d5db}.devic-gen-button[data-variant=outline]{background:transparent;border:1px solid var(--devic-gen-primary);color:var(--devic-gen-primary)}.devic-gen-button[data-variant=outline]:hover:not(:disabled){background:rgba(59,130,246,.1)}.devic-gen-button[data-variant=ghost]{background:transparent;color:var(--devic-gen-text)}.devic-gen-button[data-variant=ghost]:hover:not(:disabled){background:rgba(0,0,0,.05)}.devic-gen-button-icon{align-items:center;display:flex;height:16px;justify-content:center;width:16px}.devic-gen-button-icon svg{height:100%;width:100%}.devic-gen-spinner{animation:devic-gen-spin .8s linear infinite;border:2px solid;border-radius:50%;border-top:2px solid transparent;height:16px;width:16px}.devic-gen-spinner-small{border-width:1.5px;height:12px;width:12px}@keyframes devic-gen-spin{to{transform:rotate(1turn)}}.devic-gen-input{background:var(--devic-gen-modal-bg);border:1px solid var(--devic-gen-modal-border);border-radius:var(--devic-gen-radius);color:var(--devic-gen-modal-text);font-family:inherit;font-size:inherit;min-height:80px;outline:none;padding:12px;resize:vertical;transition:border-color var(--devic-gen-animation-duration) ease;width:100%}.devic-gen-input:focus{border-color:var(--devic-gen-primary)}.devic-gen-input::placeholder{color:var(--devic-gen-text-secondary)}.devic-gen-error{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--devic-gen-radius);color:#dc2626;font-size:13px;margin-top:8px;padding:8px 12px}.devic-gen-tooltip{animation:devic-gen-fade-in var(--devic-gen-animation-duration) ease-out;background:var(--devic-gen-modal-bg);border:1px solid var(--devic-gen-modal-border);border-radius:var(--devic-gen-radius);box-shadow:0 4px 20px rgba(0,0,0,.15);padding:12px}@keyframes devic-gen-fade-in{0%{opacity:0;transform:translateY(4px) translateX(-50%)}to{opacity:1;transform:translateY(0) translateX(-50%)}}.devic-gen-tooltip[data-placement=left],.devic-gen-tooltip[data-placement=right]{animation-name:devic-gen-fade-in-horizontal}@keyframes devic-gen-fade-in-horizontal{0%{opacity:0;transform:translateX(4px) translateY(-50%)}to{opacity:1;transform:translateX(0) translateY(-50%)}}.devic-gen-tooltip-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.devic-gen-tooltip-cancel,.devic-gen-tooltip-confirm{align-items:center;border-radius:var(--devic-gen-radius);cursor:pointer;display:inline-flex;font-family:inherit;font-size:13px;font-weight:500;gap:6px;padding:6px 12px;transition:all var(--devic-gen-animation-duration) ease}.devic-gen-tooltip-cancel{background:transparent;border:1px solid var(--devic-gen-modal-border);color:var(--devic-gen-text-secondary)}.devic-gen-tooltip-cancel:hover{background:rgba(0,0,0,.05)}.devic-gen-tooltip-confirm{background:var(--devic-gen-primary);border:none;color:#fff}.devic-gen-tooltip-confirm:hover:not(:disabled){background:var(--devic-gen-primary-hover)}.devic-gen-tooltip-confirm:disabled{cursor:not-allowed;opacity:.6}.devic-gen-modal-overlay{align-items:center;animation:devic-gen-overlay-fade-in var(--devic-gen-animation-duration) ease-out;background:rgba(0,0,0,.5);display:flex;inset:0;justify-content:center;position:fixed;z-index:var(--devic-gen-z-index)}@keyframes devic-gen-overlay-fade-in{0%{opacity:0}to{opacity:1}}.devic-gen-modal{animation:devic-gen-modal-slide-up var(--devic-gen-animation-duration) ease-out;background:var(--devic-gen-modal-bg);border-radius:calc(var(--devic-gen-radius) + 4px);box-shadow:0 20px 50px rgba(0,0,0,.2);margin:16px;max-width:480px;width:100%}@keyframes devic-gen-modal-slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.devic-gen-modal-header{align-items:center;border-bottom:1px solid var(--devic-gen-modal-border);display:flex;justify-content:space-between;padding:16px 20px}.devic-gen-modal-title{color:var(--devic-gen-modal-text);font-size:18px;font-weight:600;margin:0}.devic-gen-modal-close{align-items:center;background:transparent;border:none;border-radius:6px;color:var(--devic-gen-text-secondary);cursor:pointer;display:flex;height:32px;justify-content:center;padding:0;transition:all var(--devic-gen-animation-duration) ease;width:32px}.devic-gen-modal-close:hover{background:rgba(0,0,0,.05);color:var(--devic-gen-modal-text)}.devic-gen-modal-description{color:var(--devic-gen-text-secondary);font-size:14px;line-height:1.5;margin:0;padding:12px 20px 0}.devic-gen-modal-body{padding:16px 20px}.devic-gen-modal-footer{border-top:1px solid var(--devic-gen-modal-border);display:flex;gap:12px;justify-content:flex-end;padding:16px 20px}.devic-gen-modal-cancel,.devic-gen-modal-confirm{align-items:center;border-radius:var(--devic-gen-radius);cursor:pointer;display:inline-flex;font-family:inherit;font-size:14px;font-weight:500;gap:8px;padding:10px 20px;transition:all var(--devic-gen-animation-duration) ease}.devic-gen-modal-cancel{background:transparent;border:1px solid var(--devic-gen-modal-border);color:var(--devic-gen-text-secondary)}.devic-gen-modal-cancel:hover{background:rgba(0,0,0,.05);color:var(--devic-gen-modal-text)}.devic-gen-modal-confirm{background:var(--devic-gen-primary);border:none;color:#fff}.devic-gen-modal-confirm:hover:not(:disabled){background:var(--devic-gen-primary-hover)}.devic-gen-modal-confirm:disabled{cursor:not-allowed;opacity:.6}.devic-gen-input::-webkit-scrollbar{width:6px}.devic-gen-input::-webkit-scrollbar-track{background:transparent}.devic-gen-input::-webkit-scrollbar-thumb{background:var(--devic-gen-border);border-radius:3px}.devic-gen-input:disabled{background:var(--devic-gen-border);cursor:not-allowed;opacity:.6}.devic-gen-tool-calls{background:rgba(0,0,0,.02);border:1px solid var(--devic-gen-modal-border);border-radius:var(--devic-gen-radius);display:flex;flex-direction:column;gap:6px;margin-bottom:12px;padding:10px 12px}.devic-gen-tool-item{align-items:center;color:var(--devic-gen-text-secondary);display:flex;font-size:13px;gap:8px}.devic-gen-tool-item[data-status=executing]{color:var(--devic-gen-primary)}.devic-gen-tool-item[data-status=completed] .devic-gen-tool-icon{color:#10b981}.devic-gen-tool-icon{align-items:center;display:flex;flex-shrink:0;height:16px;justify-content:center;width:16px}.devic-gen-tool-icon svg{height:100%;width:100%}.devic-gen-tool-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-gen-tool-custom{padding:8px 0}.devic-gen-processing-status{align-items:center;background:rgba(59,130,246,.05);border:1px solid rgba(59,130,246,.2);border-radius:var(--devic-gen-radius);display:flex;gap:8px;margin-bottom:12px;padding:10px 12px}.devic-gen-processing-text{animation:devic-gen-pulse 1.5s ease-in-out infinite;color:var(--devic-gen-primary);font-size:13px}@keyframes devic-gen-pulse{0%,to{opacity:1}50%{opacity:.6}}.devic-aiwrap-container,.devic-aiwrap-tooltip,.devic-aiwrap-trigger-wrapper{--devic-aiwrap-color:#7c3aed;--devic-aiwrap-color-2:#4f46e5;--devic-aiwrap-bg:#fff;--devic-aiwrap-text:#1f2937;--devic-aiwrap-border:#e5e7eb;--devic-aiwrap-shadow:0 8px 24px rgba(0,0,0,.12)}.devic-aiwrap-container[data-highlight=true] .devic-aiwrap-content{background:rgba(124,58,237,.08);border-radius:4px;outline:1px dashed rgba(124,58,237,.45);outline-offset:2px;transition:background .15s ease,outline-color .15s ease}.devic-aiwrap-content{display:inline;transition:background .15s ease}.devic-aiwrap-trigger-wrapper{display:inline-flex}.devic-aiwrap-trigger{align-items:center;background:linear-gradient(90deg,var(--devic-aiwrap-color) 0,var(--devic-aiwrap-color-2) 100%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 4px 14px rgba(124,58,237,.35);color:#fff;cursor:pointer;display:inline-flex;font-family:inherit;font-size:13px;font-weight:500;gap:6px;padding:6px 12px;transition:transform .12s ease,box-shadow .12s ease;white-space:nowrap}.devic-aiwrap-trigger:hover{box-shadow:0 6px 18px rgba(124,58,237,.45);transform:translateY(-1px)}.devic-aiwrap-trigger:active{transform:translateY(0)}.devic-aiwrap-trigger-icon{align-items:center;display:inline-flex}.devic-aiwrap-trigger-label{line-height:1}.devic-aiwrap-tooltip{background:var(--devic-aiwrap-bg);border:1px solid var(--devic-aiwrap-border);border-radius:12px;box-shadow:var(--devic-aiwrap-shadow);color:var(--devic-aiwrap-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;overflow:hidden}.devic-aiwrap-tooltip-header{align-items:center;background:rgba(124,58,237,.05);border-bottom:1px solid var(--devic-aiwrap-border);display:flex;gap:8px;justify-content:space-between;padding:10px 12px}.devic-aiwrap-tooltip-label{color:var(--devic-aiwrap-color);font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devic-aiwrap-tooltip-close{align-items:center;background:transparent;border:none;border-radius:4px;color:#6b7280;cursor:pointer;display:inline-flex;padding:2px}.devic-aiwrap-tooltip-close:hover{background:rgba(0,0,0,.06);color:#111827}.devic-aiwrap-tooltip-body{line-height:1.5;max-height:320px;overflow-y:auto;padding:12px}.devic-aiwrap-processing{align-items:center;color:#6b7280;display:flex;font-size:13px;gap:8px}.devic-aiwrap-spinner{animation:devic-aiwrap-spin .7s linear infinite;border:2px solid rgba(124,58,237,.25);border-radius:50%;border-top:2px solid var(--devic-aiwrap-color);flex-shrink:0;height:14px;width:14px}@keyframes devic-aiwrap-spin{to{transform:rotate(1turn)}}.devic-aiwrap-error{color:#dc2626;font-size:13px}.devic-aiwrap-answer{white-space:pre-wrap;word-break:break-word}
@@ -0,0 +1,3 @@
1
+ export declare function isVoiceInvitationHidden(assistantId: string): boolean;
2
+ export declare function hideVoiceInvitation(assistantId: string): void;
3
+ export declare function showVoiceInvitation(assistantId: string): void;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Whether the person closed the voice invitation for an assistant. Kept in
3
+ * localStorage, per assistant, so it stays closed across conversations and
4
+ * page loads; storage that is missing, full or blocked counts as "not hidden".
5
+ */
6
+ const key = (assistantId) => `devic-ui:voice-invitation-hidden:${assistantId}`;
7
+ function isVoiceInvitationHidden(assistantId) {
8
+ try {
9
+ return typeof localStorage !== 'undefined' && localStorage.getItem(key(assistantId)) === '1';
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
15
+ function hideVoiceInvitation(assistantId) {
16
+ try {
17
+ localStorage.setItem(key(assistantId), '1');
18
+ }
19
+ catch { /* Private mode or quota: the card comes back next load. */ }
20
+ }
21
+ function showVoiceInvitation(assistantId) {
22
+ try {
23
+ localStorage.removeItem(key(assistantId));
24
+ }
25
+ catch { /* Nothing to undo. */ }
26
+ }
27
+
28
+ export { hideVoiceInvitation, isVoiceInvitationHidden, showVoiceInvitation };
29
+ //# sourceMappingURL=voiceInvitation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voiceInvitation.js","sources":["../../../src/utils/voiceInvitation.ts"],"sourcesContent":["/**\n * Whether the person closed the voice invitation for an assistant. Kept in\n * localStorage, per assistant, so it stays closed across conversations and\n * page loads; storage that is missing, full or blocked counts as \"not hidden\".\n */\nconst key = (assistantId: string) => `devic-ui:voice-invitation-hidden:${assistantId}`;\n\nexport function isVoiceInvitationHidden(assistantId: string): boolean {\n try { return typeof localStorage !== 'undefined' && localStorage.getItem(key(assistantId)) === '1'; }\n catch { return false; }\n}\n\nexport function hideVoiceInvitation(assistantId: string): void {\n try { localStorage.setItem(key(assistantId), '1'); } catch { /* Private mode or quota: the card comes back next load. */ }\n}\n\nexport function showVoiceInvitation(assistantId: string): void {\n try { localStorage.removeItem(key(assistantId)); } catch { /* Nothing to undo. */ }\n}\n"],"names":[],"mappings":"AAAA;;;;AAIG;AACH,MAAM,GAAG,GAAG,CAAC,WAAmB,KAAK,CAAA,iCAAA,EAAoC,WAAW,CAAA,CAAE;AAEhF,SAAU,uBAAuB,CAAC,WAAmB,EAAA;AACzD,IAAA,IAAI;AAAE,QAAA,OAAO,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG;IAAE;AACpG,IAAA,MAAM;AAAE,QAAA,OAAO,KAAK;IAAE;AACxB;AAEM,SAAU,mBAAmB,CAAC,WAAmB,EAAA;AACrD,IAAA,IAAI;QAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;IAAE;AAAE,IAAA,MAAM,8DAA8D;AAC3H;AAEM,SAAU,mBAAmB,CAAC,WAAmB,EAAA;AACrD,IAAA,IAAI;QAAE,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAAE;AAAE,IAAA,MAAM,yBAAyB;AACpF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devicai/ui",
3
- "version": "0.61.1",
3
+ "version": "0.61.2",
4
4
  "type": "module",
5
5
  "description": "React component library for Devic AI assistants",
6
6
  "engines": {