@omniloy/sofia-sdk 0.0.9 → 0.0.11

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.
@@ -16955,11 +16955,9 @@ const Collapse$4 = "طي";
16955
16955
  const Multilingual$4 = "متعدد اللغات";
16956
16956
  const Arabic$4 = "عربي";
16957
16957
  const Tamil$4 = "التاميل";
16958
- const Malayalam$4 = "المالايالامية";
16959
16958
  const Telugu$4 = "التيلجو";
16960
16959
  const Kannada$4 = "الكانادا";
16961
16960
  const Hindi$4 = "الهندية";
16962
- const Malay$4 = "لغة الملايو";
16963
16961
  const Thai$4 = "التايلاندية";
16964
16962
  const Filipino$4 = "فلبينية";
16965
16963
  const English$4 = "الإنجليزية";
@@ -16971,6 +16969,9 @@ const Japanese$4 = "اليابانية";
16971
16969
  const Dictionary$5 = "قاموس";
16972
16970
  const Copilot$4 = "امساعد الطيار";
16973
16971
  const Reasoning$4 = "التفكير";
16972
+ const Language$5 = "اللغة";
16973
+ const Chat$6 = "الدردشة";
16974
+ const Sources$4 = "المصادر";
16974
16975
  const ar = {
16975
16976
  Add: Add$4,
16976
16977
  "Ask Omniscribe assistant": "اسأل مساعد أومنيسكريب",
@@ -16984,6 +16985,7 @@ const ar = {
16984
16985
  "Error searching for devices": "حدث خطأ أثناء البحث عن الأجهزة",
16985
16986
  "Fill out report": "املأ التقرير",
16986
16987
  "Generate report": "إنشاء تقرير",
16988
+ "Generating patient summary": "مرحباً! امنحني بضع ثوان لإنشاء ملخص المريض.",
16987
16989
  "Hello Doctor, I'm your personal assistant. How can I help you today?": "مرحباً يا دكتور، أنا مساعدك الشخصي. كيف يمكنني مساعدتك اليوم؟",
16988
16990
  History: History$4,
16989
16991
  "I'd like to see a summary of the patient's chart": "أود أن أرى ملخصًا لمخطط المريض",
@@ -17019,7 +17021,6 @@ const ar = {
17019
17021
  "Wrong Word": "كلمة خاطئة",
17020
17022
  "Wrong Words": "كلمات خاطئة",
17021
17023
  "You must grant microphone permissions": "يجب منح أذونات الميكروفون",
17022
- "See list of sources": "عرض قائمة المصادر",
17023
17024
  "My source library": "مكتبة المصادر",
17024
17025
  "Specify the sources and resources that should guide the AI's responses.": "تشير إلى المصادر والموارد التي ينبغي أن تُوجِّه استجابات الذكاء الاصطناعي.",
17025
17026
  "My specialty": "تخصصي",
@@ -17082,12 +17083,11 @@ const ar = {
17082
17083
  Multilingual: Multilingual$4,
17083
17084
  Arabic: Arabic$4,
17084
17085
  Tamil: Tamil$4,
17085
- Malayalam: Malayalam$4,
17086
+ "Malay / Malayalam": "لغة الملايو / المالايالامية",
17086
17087
  Telugu: Telugu$4,
17087
17088
  Kannada: Kannada$4,
17088
17089
  Hindi: Hindi$4,
17089
17090
  "Bahasa Indonesia": "البهاسا الاندونيسية",
17090
- Malay: Malay$4,
17091
17091
  Thai: Thai$4,
17092
17092
  Filipino: Filipino$4,
17093
17093
  English: English$4,
@@ -17114,15 +17114,17 @@ const ar = {
17114
17114
  "SofIA Scribe": "سوفيا سكرايب",
17115
17115
  "Microphone options": "خيارات الميكروفون",
17116
17116
  "Select the input microphone": "حدد ميكروفون الإدخال",
17117
- "Select the input microphone to ensure proper functioning of SofIA Scribe": "حدد ميكروفون الإدخال لضمان التشغيل السليم لصوفيا سكرايب",
17118
- "Language options": "خيارات اللغة",
17119
- "Select the interface language and the language in which the clinical note is generated in addition to the language for transcription": "حدد لغة الواجهة واللغة التي يتم بها إنشاء الملاحظة السريرية بالإضافة إلى لغة النسخ.",
17117
+ "Select the input microphone to ensure proper functioning": "حدد ميكروفون الإدخال لضمان التشغيل السليم",
17118
+ Language: Language$5,
17119
+ "Select the language options.": "حدد خيارات اللغة.",
17120
17120
  "Select the interface language and the language in which the clinical note is generated": "حدد لغة الواجهة واللغة التي يتم بها إنشاء الملاحظة السريرية.",
17121
17121
  "Select the language for audio transcription": "حدد اللغة التي سيتم بها نسخ المحادثة مع المريض.",
17122
17122
  "Clinical note template": "قالب الملاحظة السريرية",
17123
- "Customize the clinical note by indicating to the AI how to write and organize consultation information in each field": "خصص الملاحظة السريرية من خلال إبلاغ الذكاء الاصطناعي بكيفية كتابة وتنظيم معلومات الاستشارة في كل حقل.",
17123
+ "Customize the clinical note depending on the report you are filling out.": "خصص الملاحظة السريرية حسب التقرير الذي تقوم بملؤه.",
17124
17124
  "Clinical dictionary": "قاموس سريري",
17125
17125
  "Customize clinical language and medication format": "خصص اللغة السريرية وتنسيق الأدوية.",
17126
+ Chat: Chat$6,
17127
+ "Customize the patient summary and chat sources.": "خصص ملخص المريض ومصادر الدردشة.",
17126
17128
  "No custom words added yet": "لا توجد كلمات مخصصة مضافة بعد",
17127
17129
  "Custom version": "نسخة مخصصة",
17128
17130
  "Word or phrase (e.g: ibuprofeno)": "كلمة أو عبارة (على سبيل المثال: ibuprofeno)",
@@ -17134,6 +17136,18 @@ const ar = {
17134
17136
  "Save changes": "حفظ التغييرات",
17135
17137
  "{count} characters": "{count} حرف",
17136
17138
  "Sending...": "جارٍ الإرسال...",
17139
+ "Show patient summary first": "إظهار ملخص المريض أولاً",
17140
+ "Patient summary customization": "تخصيص ملخص المريض",
17141
+ Sources: Sources$4,
17142
+ "Select the sources you want the AI to use for reasoning": "اختر المصادر التي تريد أن تستخدمها الذكي الاصطناعي للتفكير",
17143
+ "Don't leave out relevant information...": "لا تترك المعلومات ذات الصلة...",
17144
+ "File is too large. Maximum size is 5MB": "الملف كبير جداً. الحد الأقصى للحجم هو 5 ميجابايت",
17145
+ "Maximum number of files is 5": "العدد الأقصى للملفات هو 5",
17146
+ "Attach file": "إرفاق ملف",
17147
+ "Error processing file": "خطأ في معالجة الملف",
17148
+ "Unsupported file format": "تنسيق الملف غير مدعوم",
17149
+ "{count} documents": "{count} مستندات",
17150
+ "{count} images": "{count} صور",
17137
17151
  };
17138
17152
 
17139
17153
  const Add$3 = "Add";
@@ -17165,11 +17179,9 @@ const Collapse$3 = "Collapse";
17165
17179
  const Multilingual$3 = "Multilingual";
17166
17180
  const Arabic$3 = "Arabic";
17167
17181
  const Tamil$3 = "Tamil";
17168
- const Malayalam$3 = "Malayalam";
17169
17182
  const Telugu$3 = "Telugu";
17170
17183
  const Kannada$3 = "Kannada";
17171
17184
  const Hindi$3 = "Hindi";
17172
- const Malay$3 = "Malay";
17173
17185
  const Thai$3 = "Thai";
17174
17186
  const Filipino$3 = "Filipino";
17175
17187
  const English$3 = "English";
@@ -17181,6 +17193,11 @@ const Japanese$3 = "Japanese";
17181
17193
  const Dictionary$4 = "Dictionary";
17182
17194
  const Copilot$3 = "Copilot";
17183
17195
  const Reasoning$3 = "Reasoning";
17196
+ const Language$4 = "Language";
17197
+ const Chat$5 = "Chat";
17198
+ const Sources$3 = "Sources";
17199
+ const Enabled$1 = "Enabled";
17200
+ const Disabled$1 = "Disabled";
17184
17201
  const en = {
17185
17202
  Add: Add$3,
17186
17203
  "Ask Omniscribe assistant": "Ask Omniscribe assistant",
@@ -17194,6 +17211,7 @@ const en = {
17194
17211
  "Error searching for devices": "Error searching for devices",
17195
17212
  "Fill out report": "Fill out report",
17196
17213
  "Generate report": "Generate report",
17214
+ "Generating patient summary": "Hello! Give me a few seconds to generate the patient summary.",
17197
17215
  "Hello Doctor, I'm your personal assistant. How can I help you today?": "Hello Doctor, I'm your personal assistant. How can I help you today?",
17198
17216
  History: History$3,
17199
17217
  "I'd like to see a summary of the patient's chart": "I'd like to see a summary of the patient's chart",
@@ -17229,7 +17247,6 @@ const en = {
17229
17247
  "Wrong Word": "Wrong Word",
17230
17248
  "Wrong Words": "Wrong Words",
17231
17249
  "You must grant microphone permissions": "You must grant microphone permissions",
17232
- "See list of sources": "See list of sources",
17233
17250
  "My source library": "My source library",
17234
17251
  "Specify the sources and resources that should guide the AI's responses.": "Specify the sources and resources that should guide the AI's responses.",
17235
17252
  "My specialty": "My specialty",
@@ -17292,12 +17309,11 @@ const en = {
17292
17309
  Multilingual: Multilingual$3,
17293
17310
  Arabic: Arabic$3,
17294
17311
  Tamil: Tamil$3,
17295
- Malayalam: Malayalam$3,
17312
+ "Malay / Malayalam": "Malay / Malayalam",
17296
17313
  Telugu: Telugu$3,
17297
17314
  Kannada: Kannada$3,
17298
17315
  Hindi: Hindi$3,
17299
17316
  "Bahasa Indonesia": "Bahasa Indonesia",
17300
- Malay: Malay$3,
17301
17317
  Thai: Thai$3,
17302
17318
  Filipino: Filipino$3,
17303
17319
  English: English$3,
@@ -17324,15 +17340,17 @@ const en = {
17324
17340
  "SofIA Scribe": "SofIA Scribe",
17325
17341
  "Microphone options": "Microphone options",
17326
17342
  "Select the input microphone": "Select the input microphone",
17327
- "Select the input microphone to ensure proper functioning of SofIA Scribe": "Select the input microphone to ensure proper functioning of SofIA Scribe",
17328
- "Language options": "Language options",
17329
- "Select the interface language and the language in which the clinical note is generated in addition to the language for transcription": "Select the interface language and the language in which the clinical note is generated in addition to the language for transcription.",
17343
+ "Select the input microphone to ensure proper functioning": "Select the input microphone to ensure proper functioning.",
17344
+ Language: Language$4,
17345
+ "Select the language options.": "Select the language options.",
17330
17346
  "Select the interface language and the language in which the clinical note is generated": "Select the interface language and the language in which the clinical note is generated.",
17331
17347
  "Select the language for audio transcription": "Select the language for audio transcription.",
17332
17348
  "Clinical note template": "Clinical note template",
17333
- "Customize the clinical note by indicating to the AI how to write and organize consultation information in each field": "Customize the clinical note by indicating to the AI how to write and organize consultation information in each field.",
17349
+ "Customize the clinical note depending on the report you are filling out.": "Customize the clinical note depending on the report you are filling out.",
17334
17350
  "Clinical dictionary": "Clinical dictionary",
17335
17351
  "Customize clinical language and medication format": "Customize clinical language and medication format.",
17352
+ Chat: Chat$5,
17353
+ "Customize the patient summary and chat sources.": "Customize the patient summary and chat sources.",
17336
17354
  "No custom words added yet": "No custom words added yet",
17337
17355
  "Custom version": "Custom version",
17338
17356
  "Word or phrase (e.g: ibuprofen)": "Word or phrase (e.g: ibuprofen)",
@@ -17345,6 +17363,20 @@ const en = {
17345
17363
  "Save changes": "Save changes",
17346
17364
  "{count} characters": "{count} characters",
17347
17365
  "Sending...": "Sending...",
17366
+ "Show patient summary first": "Show patient summary first",
17367
+ "Patient summary customization": "Patient summary customization",
17368
+ Sources: Sources$3,
17369
+ "Select the sources you want the AI to use for reasoning": "Select the sources you want the AI to use for reasoning",
17370
+ "Don't leave out relevant information...": "Don't leave out relevant information...",
17371
+ Enabled: Enabled$1,
17372
+ Disabled: Disabled$1,
17373
+ "File is too large. Maximum size is 5MB": "File is too large. Maximum size is 5MB",
17374
+ "Maximum number of files is 5": "Maximum number of files is 5",
17375
+ "Attach file": "Attach file",
17376
+ "Error processing file": "Error processing file",
17377
+ "Unsupported file format": "Unsupported file format",
17378
+ "{count} documents": "{count} documents",
17379
+ "{count} images": "{count} images",
17348
17380
  };
17349
17381
 
17350
17382
  const Add$2 = "Añadir";
@@ -17376,11 +17408,9 @@ const Collapse$2 = "Cerrar";
17376
17408
  const Multilingual$2 = "Plurilingüe";
17377
17409
  const Arabic$2 = "Árabe";
17378
17410
  const Tamil$2 = "Tamil";
17379
- const Malayalam$2 = "Malayalam";
17380
17411
  const Telugu$2 = "Telugu";
17381
17412
  const Kannada$2 = "Canarés";
17382
17413
  const Hindi$2 = "Hindi";
17383
- const Malay$2 = "Malayo";
17384
17414
  const Thai$2 = "Tailandés";
17385
17415
  const Filipino$2 = "Filipino";
17386
17416
  const English$2 = "Inglés";
@@ -17392,6 +17422,11 @@ const Japanese$2 = "Japonés";
17392
17422
  const Dictionary$3 = "Diccionario";
17393
17423
  const Copilot$2 = "Copilot";
17394
17424
  const Reasoning$2 = "Razonamiento";
17425
+ const Language$3 = "Idioma";
17426
+ const Chat$4 = "Chat";
17427
+ const Sources$2 = "Fuentes";
17428
+ const Enabled = "Activado";
17429
+ const Disabled = "Desactivado";
17395
17430
  const es = {
17396
17431
  Add: Add$2,
17397
17432
  "Ask Omniscribe assistant": "Pregunta al asistente Omniscribe",
@@ -17405,6 +17440,7 @@ const es = {
17405
17440
  "Error searching for devices": "Error al buscar dispositivos",
17406
17441
  "Fill out report": "Rellenar informe",
17407
17442
  "Generate report": "Generar informe",
17443
+ "Generating patient summary": "¡Hola! Dame unos segundos para generar el resumen del paciente.",
17408
17444
  "Hello Doctor, I'm your personal assistant. How can I help you today?": "Hola doctor, soy su asistente personal. ¿En qué le puedo ayudar hoy?",
17409
17445
  History: History$2,
17410
17446
  "I'd like to see a summary of the patient's chart": "Quiero ver el resumen de la ficha del paciente",
@@ -17440,7 +17476,6 @@ const es = {
17440
17476
  "Wrong Word": "Palabra Incorrecta",
17441
17477
  "Wrong Words": "Palabras Incorrectas",
17442
17478
  "You must grant microphone permissions": "Debes conceder permisos de micrófono",
17443
- "See list of sources": "Ver Lista de fuentes",
17444
17479
  "My source library": "Mi librería de fuentes",
17445
17480
  "Specify the sources and resources that should guide the AI's responses.": "Indica las fuentes y recursos que deben orientar las respuestas de la IA.",
17446
17481
  "My specialty": "Mi especialidad",
@@ -17503,12 +17538,11 @@ const es = {
17503
17538
  Multilingual: Multilingual$2,
17504
17539
  Arabic: Arabic$2,
17505
17540
  Tamil: Tamil$2,
17506
- Malayalam: Malayalam$2,
17541
+ "Malay / Malayalam": "Malayo / Malayalam",
17507
17542
  Telugu: Telugu$2,
17508
17543
  Kannada: Kannada$2,
17509
17544
  Hindi: Hindi$2,
17510
17545
  "Bahasa Indonesia": "Bahasa Indonesia",
17511
- Malay: Malay$2,
17512
17546
  Thai: Thai$2,
17513
17547
  Filipino: Filipino$2,
17514
17548
  English: English$2,
@@ -17535,15 +17569,17 @@ const es = {
17535
17569
  "SofIA Scribe": "SofIA Escriba",
17536
17570
  "Microphone options": "Opciones de micrófono",
17537
17571
  "Select the input microphone": "Selecciona el micrófono de entrada",
17538
- "Select the input microphone to ensure proper functioning of SofIA Scribe": "Selecciona el micrófono de entrada para asegurar el buen funcionamiento de SofIA Escriba",
17539
- "Language options": "Opciones de idioma",
17540
- "Select the interface language and the language in which the clinical note is generated in addition to the language for transcription": "Selecciona el idioma de la interfaz y en el que se genera la nota clínica además del idioma para la transcripción.",
17572
+ "Select the input microphone to ensure proper functioning": "Seleccione el micrófono de entrada para asegurar el buen funcionamiento.",
17573
+ Language: Language$3,
17574
+ "Select the language options.": "Seleccione las opciones de idioma.",
17541
17575
  "Select the interface language and the language in which the clinical note is generated": "Selecciona el idioma de la interfaz y en el que se genera la nota clínica.",
17542
17576
  "Select the language for audio transcription": "Selecciona el idioma en el que grabará la conversación con el paciente.",
17543
17577
  "Clinical note template": "Plantilla de nota clínica",
17544
- "Customize the clinical note by indicating to the AI how to write and organize consultation information in each field": "Personalice la nota clínica indicando a la IA cómo redactar y organizar la información de la consulta en cada campo.",
17578
+ "Customize the clinical note depending on the report you are filling out.": "Personalice la nota clínica dependiendo del informe que esté rellenando.",
17545
17579
  "Clinical dictionary": "Diccionario clínico",
17546
- "Customize clinical language and medication format": "Personaliza el lenguaje clínico y el formato de los medicamentos.",
17580
+ "Customize clinical language and medication format": "Personalice el lenguaje clínico y el formato de los medicamentos.",
17581
+ Chat: Chat$4,
17582
+ "Customize the patient summary and chat sources.": "Personalice el resumen del paciente y las fuentes del chat.",
17547
17583
  "No custom words added yet": "No se han añadido palabras personalizadas aún",
17548
17584
  "Custom version": "Versión personalizada",
17549
17585
  "Word or phrase (e.g: ibuprofeno)": "Palabra o frase (ej: ibuprofeno)",
@@ -17556,6 +17592,20 @@ const es = {
17556
17592
  "Save changes": "Guardar cambios",
17557
17593
  "{count} characters": "{count} caracteres",
17558
17594
  "Sending...": "Enviando...",
17595
+ "Show patient summary first": "Lo primero que quiero ver es el resumen del paciente.",
17596
+ "Patient summary customization": "Personalización del resumen del paciente",
17597
+ Sources: Sources$2,
17598
+ "Select the sources you want the AI to use for reasoning": "Seleccione las fuentes que quiera que la IA use para razonar",
17599
+ "Don't leave out relevant information...": "No te dejes información relevante...",
17600
+ Enabled,
17601
+ Disabled,
17602
+ "File is too large. Maximum size is 5MB": "El archivo es muy grande. El tamaño máximo es 5MB",
17603
+ "Maximum number of files is 5": "El número máximo de archivos es 5",
17604
+ "Attach file": "Adjuntar archivo",
17605
+ "Error processing file": "Ha habido un error al procesar el fichero",
17606
+ "Unsupported file format": "Fichero no soportado",
17607
+ "{count} documents": "{count} documentos",
17608
+ "{count} images": "{count} imágenes",
17559
17609
  };
17560
17610
 
17561
17611
  const Add$1 = "जोड़ें";
@@ -17587,11 +17637,9 @@ const Collapse$1 = "संक्षिप्त करें";
17587
17637
  const Multilingual$1 = "बहुभाषी";
17588
17638
  const Arabic$1 = "अरबी";
17589
17639
  const Tamil$1 = "तमिल";
17590
- const Malayalam$1 = "मलयालम";
17591
17640
  const Telugu$1 = "तेलुगु";
17592
17641
  const Kannada$1 = "कन्नड़";
17593
17642
  const Hindi$1 = "हिंदी";
17594
- const Malay$1 = "मलय";
17595
17643
  const Thai$1 = "थाई";
17596
17644
  const Filipino$1 = "फिलिपिनो";
17597
17645
  const English$1 = "अंग्रेज़ी";
@@ -17603,6 +17651,9 @@ const Japanese$1 = "जापानी";
17603
17651
  const Dictionary$2 = "शब्दकोश";
17604
17652
  const Copilot$1 = "कोपायलट";
17605
17653
  const Reasoning$1 = "तर्क";
17654
+ const Language$2 = "भाषा";
17655
+ const Chat$3 = "चैट";
17656
+ const Sources$1 = "स्रोत";
17606
17657
  const hi = {
17607
17658
  Add: Add$1,
17608
17659
  "Ask Omniscribe assistant": "Omniscribe सहायक से पूछें",
@@ -17616,6 +17667,7 @@ const hi = {
17616
17667
  "Error searching for devices": "उपकरण खोजने में त्रुटि",
17617
17668
  "Fill out report": "रिपोर्ट भरें",
17618
17669
  "Generate report": "रिपोर्ट बनाएं",
17670
+ "Generating patient summary": "नमस्ते! मुझे रोगी का सारांश तैयार करने के लिए कुछ सेकंड दें।",
17619
17671
  "Hello Doctor, I'm your personal assistant. How can I help you today?": "नमस्ते डॉक्टर, मैं आपका निजी सहायक हूँ। आज मैं आपकी कैसे मदद कर सकता हूँ?",
17620
17672
  History: History$1,
17621
17673
  "I'd like to see a summary of the patient's chart": "मैं रोगी के चार्ट का सारांश देखना चाहूंगा",
@@ -17651,7 +17703,6 @@ const hi = {
17651
17703
  "Wrong Word": "गलत शब्द",
17652
17704
  "Wrong Words": "गलत शब्द",
17653
17705
  "You must grant microphone permissions": "आपको माइक्रोफ़ोन की अनुमति देनी होगी",
17654
- "See list of sources": "स्रोतों की सूची देखें",
17655
17706
  "My source library": "मेरी स्रोत लाइब्रेरी",
17656
17707
  "Specify the sources and resources that should guide the AI's responses.": "उन स्रोतों और संसाधनों को निर्दिष्ट करें जो AI की प्रतिक्रियाओं का मार्गदर्शन करें।",
17657
17708
  "My specialty": "मेरी विशेषज्ञता",
@@ -17714,12 +17765,11 @@ const hi = {
17714
17765
  Multilingual: Multilingual$1,
17715
17766
  Arabic: Arabic$1,
17716
17767
  Tamil: Tamil$1,
17717
- Malayalam: Malayalam$1,
17768
+ "Malay / Malayalam": "मलय / मलयालम",
17718
17769
  Telugu: Telugu$1,
17719
17770
  Kannada: Kannada$1,
17720
17771
  Hindi: Hindi$1,
17721
17772
  "Bahasa Indonesia": "बहासा इंडोनेशिया",
17722
- Malay: Malay$1,
17723
17773
  Thai: Thai$1,
17724
17774
  Filipino: Filipino$1,
17725
17775
  English: English$1,
@@ -17746,15 +17796,17 @@ const hi = {
17746
17796
  "SofIA Scribe": "SofIA Scribe",
17747
17797
  "Microphone options": "माइक्रोफोन विकल्प",
17748
17798
  "Select the input microphone": "इनपुट माइक्रोफोन का चयन करें",
17749
- "Select the input microphone to ensure proper functioning of SofIA Scribe": "SofIA Scribe के समुचित कार्य को सुनिश्चित करने के लिए इनपुट माइक्रोफोन का चयन करें",
17750
- "Language options": "भाषा विकल्प",
17751
- "Select the interface language and the language in which the clinical note is generated in addition to the language for transcription": "इंटरफ़ेस भाषा और उस भाषा का चयन करें जिसमें नैदानिक नोट उत्पन्न होता है, इसके अलावा प्रतिलेखन के लिए भाषा का चयन करें।",
17799
+ "Select the input microphone to ensure proper functioning": "समुचित कार्य को सुनिश्चित करने के लिए इनपुट माइक्रोफोन का चयन करें",
17800
+ Language: Language$2,
17801
+ "Select the language options.": "भाषा विकल्प चुनें।",
17752
17802
  "Select the interface language and the language in which the clinical note is generated": "इंटरफ़ेस भाषा और उस भाषा का चयन करें जिसमें नैदानिक नोट उत्पन्न होता है।",
17753
17803
  "Select the language for audio transcription": "ऑडियो प्रतिलेखन के लिए भाषा का चयन करें।",
17754
17804
  "Clinical note template": "नैदानिक नोट टेम्पलेट",
17755
- "Customize the clinical note by indicating to the AI how to write and organize consultation information in each field": "AI को यह संकेत देकर नैदानिक नोट को अनुकूलित करें कि प्रत्येक क्षेत्र में परामर्श जानकारी कैसे लिखें और व्यवस्थित करें।",
17805
+ "Customize the clinical note depending on the report you are filling out.": "आप जो रिपोर्ट भर रहे हैं, उसके आधार पर नैदानिक नोट को अनुकूलित करें।",
17756
17806
  "Clinical dictionary": "नैदानिक शब्दकोश",
17757
17807
  "Customize clinical language and medication format": "नैदानिक भाषा और दवा प्रारूप को अनुकूलित करें।",
17808
+ Chat: Chat$3,
17809
+ "Customize the patient summary and chat sources.": "रोगी सारांश और चैट स्रोतों को अनुकूलित करें।",
17758
17810
  "No custom words added yet": "अभी तक कोई कस्टम शब्द नहीं जोड़ा गया है",
17759
17811
  "Custom version": "कस्टम संस्करण",
17760
17812
  "Word or phrase (e.g: ibuprofen)": "शब्द या वाक्यांश (जैसे: ibuprofen)",
@@ -17767,6 +17819,18 @@ const hi = {
17767
17819
  "Save changes": "परिवर्तन सहेजें",
17768
17820
  "{count} characters": "{count} वर्ण",
17769
17821
  "Sending...": "भेजा जा रहा है...",
17822
+ "Show patient summary first": "पहले रोगी सारांश दिखाएं",
17823
+ "Patient summary customization": "रोगी सारांश अनुकूलन",
17824
+ Sources: Sources$1,
17825
+ "Select the sources you want the AI to use for reasoning": "वे स्रोत चुनें जिन्हें आप चाहते हैं कि AI तर्क के लिए उपयोग करे",
17826
+ "Don't leave out relevant information...": "प्रासंगिक जानकारी को न छोड़ें...",
17827
+ "File is too large. Maximum size is 5MB": "फ़ाइल बहुत बड़ी है। अधिकतम आकार 5MB है",
17828
+ "Maximum number of files is 5": "फ़ाइलों की अधिकतम संख्या 5 है",
17829
+ "Attach file": "फ़ाइल संलग्न करें",
17830
+ "Error processing file": "फ़ाइल प्रोसेसिंग में त्रुटि",
17831
+ "Unsupported file format": "असमर्थित फ़ाइल प्रारूप",
17832
+ "{count} documents": "{count} दस्तावेज़",
17833
+ "{count} images": "{count} चित्र",
17770
17834
  };
17771
17835
 
17772
17836
  const Add = "Tambahkan";
@@ -17798,11 +17862,9 @@ const Collapse = "Ciutkan";
17798
17862
  const Multilingual = "Multibahasa";
17799
17863
  const Arabic = "Arab";
17800
17864
  const Tamil = "Tamil";
17801
- const Malayalam = "Malayalam";
17802
17865
  const Telugu = "Telugu";
17803
17866
  const Kannada = "Kannada";
17804
17867
  const Hindi = "Hindi";
17805
- const Malay = "Melayu";
17806
17868
  const Thai = "Thai";
17807
17869
  const Filipino = "Filipina";
17808
17870
  const English = "Bahasa Inggris";
@@ -17814,6 +17876,9 @@ const Japanese = "Jepang";
17814
17876
  const Dictionary$1 = "Kamus";
17815
17877
  const Copilot = "Copilot";
17816
17878
  const Reasoning = "Penalaran";
17879
+ const Language$1 = "Bahasa";
17880
+ const Chat$2 = "Chat";
17881
+ const Sources = "Sumber";
17817
17882
  const id = {
17818
17883
  Add,
17819
17884
  "Ask Omniscribe assistant": "Tanya asisten Omniscribe",
@@ -17827,6 +17892,7 @@ const id = {
17827
17892
  "Error searching for devices": "Kesalahan saat mencari perangkat",
17828
17893
  "Fill out report": "Isi laporan",
17829
17894
  "Generate report": "Menghasilkan laporan",
17895
+ "Generating patient summary": "Halo! Beri saya beberapa detik untuk membuat ringkasan pasien.",
17830
17896
  "Hello Doctor, I'm your personal assistant. How can I help you today?": "Halo Dokter, saya asisten pribadi Anda. Bagaimana saya bisa membantu Anda hari ini?",
17831
17897
  History,
17832
17898
  "I'd like to see a summary of the patient's chart": "Saya ingin melihat ringkasan grafik pasien",
@@ -17862,7 +17928,6 @@ const id = {
17862
17928
  "Wrong Word": "Kata yang salah",
17863
17929
  "Wrong Words": "Kata-kata yang salah",
17864
17930
  "You must grant microphone permissions": "Anda harus memberikan izin mikrofon",
17865
- "See list of sources": "Lihat Daftar Sumber",
17866
17931
  "My source library": "Perpustakaan Sumber Saya",
17867
17932
  "Specify the sources and resources that should guide the AI's responses.": "Menunjukkan sumber dan sumber daya yang seharusnya memandu respons AI.",
17868
17933
  "My specialty": "Spesialisasi Saya",
@@ -17925,12 +17990,11 @@ const id = {
17925
17990
  Multilingual,
17926
17991
  Arabic,
17927
17992
  Tamil,
17928
- Malayalam,
17993
+ "Malay / Malayalam": "Melayu / Malayalam",
17929
17994
  Telugu,
17930
17995
  Kannada,
17931
17996
  Hindi,
17932
17997
  "Bahasa Indonesia": "Bahasa Indonesia",
17933
- Malay,
17934
17998
  Thai,
17935
17999
  Filipino,
17936
18000
  English,
@@ -17957,15 +18021,17 @@ const id = {
17957
18021
  "SofIA Scribe": "SofIA Juru Tulis",
17958
18022
  "Microphone options": "Opsi mikrofon",
17959
18023
  "Select the input microphone": "Pilih mikrofon input",
17960
- "Select the input microphone to ensure proper functioning of SofIA Scribe": "Pilih mikrofon input untuk memastikan fungsi yang tepat dari SofIA Scribe",
17961
- "Language options": "Opsi bahasa",
17962
- "Select the interface language and the language in which the clinical note is generated in addition to the language for transcription": "Pilih bahasa antarmuka dan bahasa di mana catatan klinis dihasilkan selain bahasa untuk transkripsi.",
18024
+ "Select the input microphone to ensure proper functioning": "Pilih mikrofon input untuk memastikan fungsi yang tepat.",
18025
+ Language: Language$1,
18026
+ "Select the language options.": "Pilih opsi bahasa.",
17963
18027
  "Select the interface language and the language in which the clinical note is generated": "Pilih bahasa antarmuka dan bahasa di mana catatan klinis dihasilkan.",
17964
18028
  "Select the language for audio transcription": "Pilih bahasa untuk transkripsi audio.",
17965
18029
  "Clinical note template": "Template catatan klinis",
17966
- "Customize the clinical note by indicating to the AI how to write and organize consultation information in each field": "Sesuaikan catatan klinis dengan menunjukkan kepada AI bagaimana menulis dan mengatur informasi konsultasi di setiap bidang.",
18030
+ "Customize the clinical note depending on the report you are filling out.": "Sesuaikan catatan klinis tergantung pada laporan yang Anda isi.",
17967
18031
  "Clinical dictionary": "Kamus klinis",
17968
18032
  "Customize clinical language and medication format": "Sesuaikan bahasa klinis dan format pengobatan.",
18033
+ Chat: Chat$2,
18034
+ "Customize the patient summary and chat sources.": "Sesuaikan ringkasan pasien dan sumber chat.",
17969
18035
  "No custom words added yet": "Belum ada kata kustom yang ditambahkan",
17970
18036
  "Custom version": "Versi kustom",
17971
18037
  "Word or phrase (e.g: ibuprofeno)": "Kata atau frasa (mis: ibuprofeno)",
@@ -17977,6 +18043,18 @@ const id = {
17977
18043
  "Save changes": "Simpan perubahan",
17978
18044
  "{count} characters": "{count} karakter",
17979
18045
  "Sending...": "Mengirim...",
18046
+ "Show patient summary first": "Tampilkan ringkasan pasien terlebih dahulu",
18047
+ "Patient summary customization": "Penyesuaian ringkasan pasien",
18048
+ Sources,
18049
+ "Select the sources you want the AI to use for reasoning": "Pilih sumber yang ingin Anda gunakan AI untuk penalaran",
18050
+ "Don't leave out relevant information...": "Jangan tinggalkan informasi yang relevan...",
18051
+ "File is too large. Maximum size is 5MB": "File terlalu besar. Ukuran maksimum adalah 5MB",
18052
+ "Maximum number of files is 5": "Jumlah file maksimum adalah 5",
18053
+ "Attach file": "Lampirkan file",
18054
+ "Error processing file": "Kesalahan memproses file",
18055
+ "Unsupported file format": "Format file tidak didukung",
18056
+ "{count} documents": "{count} dokumen",
18057
+ "{count} images": "{count} gambar",
17980
18058
  };
17981
18059
 
17982
18060
  var LanguageCode;
@@ -17990,27 +18068,27 @@ var LanguageCode;
17990
18068
  var TranscriptionLanguageCode;
17991
18069
  (function(TranscriptionLanguageCode2) {
17992
18070
  TranscriptionLanguageCode2["ar"] = "ar";
17993
- TranscriptionLanguageCode2["en"] = "en";
18071
+ TranscriptionLanguageCode2["ca"] = "ca";
18072
+ TranscriptionLanguageCode2["cs"] = "cs";
17994
18073
  TranscriptionLanguageCode2["de"] = "de";
18074
+ TranscriptionLanguageCode2["en_GB"] = "en_GB";
18075
+ TranscriptionLanguageCode2["en_US"] = "en_US";
17995
18076
  TranscriptionLanguageCode2["es"] = "es";
17996
- TranscriptionLanguageCode2["fil"] = "fil";
17997
18077
  TranscriptionLanguageCode2["fr"] = "fr";
17998
- TranscriptionLanguageCode2["id"] = "id";
17999
18078
  TranscriptionLanguageCode2["hi"] = "hi";
18079
+ TranscriptionLanguageCode2["id"] = "id";
18080
+ TranscriptionLanguageCode2["it"] = "it";
18000
18081
  TranscriptionLanguageCode2["ja"] = "ja";
18001
18082
  TranscriptionLanguageCode2["kn"] = "kn";
18002
- TranscriptionLanguageCode2["ml"] = "ml";
18003
18083
  TranscriptionLanguageCode2["ms"] = "ms";
18084
+ TranscriptionLanguageCode2["pt"] = "pt";
18085
+ TranscriptionLanguageCode2["sv"] = "sv";
18004
18086
  TranscriptionLanguageCode2["ta"] = "ta";
18005
18087
  TranscriptionLanguageCode2["te"] = "te";
18006
18088
  TranscriptionLanguageCode2["th"] = "th";
18089
+ TranscriptionLanguageCode2["ur"] = "ur";
18007
18090
  TranscriptionLanguageCode2["zh"] = "zh";
18008
- TranscriptionLanguageCode2["it"] = "it";
18009
- TranscriptionLanguageCode2["pt"] = "pt";
18010
- TranscriptionLanguageCode2["ca"] = "ca";
18011
- TranscriptionLanguageCode2["eu"] = "eu";
18012
- TranscriptionLanguageCode2["gl"] = "gl";
18013
- TranscriptionLanguageCode2["multilingual"] = "";
18091
+ TranscriptionLanguageCode2["multilingual"] = "multi";
18014
18092
  })(TranscriptionLanguageCode || (TranscriptionLanguageCode = {}));
18015
18093
  LanguageCode.es;
18016
18094
  const languages = [
@@ -18043,25 +18121,31 @@ const languages = [
18043
18121
  const transcriptionLanguages = [
18044
18122
  { label: "Multilingual", value: TranscriptionLanguageCode.multilingual },
18045
18123
  { label: "Español", value: TranscriptionLanguageCode.es },
18046
- { label: "English", value: TranscriptionLanguageCode.en },
18124
+ {
18125
+ label: "English (US)",
18126
+ value: TranscriptionLanguageCode.en_US
18127
+ },
18128
+ {
18129
+ label: "English (UK)",
18130
+ value: TranscriptionLanguageCode.en_GB
18131
+ },
18047
18132
  { label: "Français", value: TranscriptionLanguageCode.fr },
18048
18133
  { label: "Deutsch", value: TranscriptionLanguageCode.de },
18049
18134
  { label: "Italiano", value: TranscriptionLanguageCode.it },
18050
18135
  { label: "Português", value: TranscriptionLanguageCode.pt },
18051
18136
  { label: "Català", value: TranscriptionLanguageCode.ca },
18052
- { label: "Euskera", value: TranscriptionLanguageCode.eu },
18053
- { label: "Galego", value: TranscriptionLanguageCode.gl },
18054
18137
  { label: "Arabic", value: TranscriptionLanguageCode.ar },
18138
+ { label: "Čeština", value: TranscriptionLanguageCode.cs },
18055
18139
  { label: "Bahasa Indonesia", value: TranscriptionLanguageCode.id },
18056
18140
  { label: "Chinese", value: TranscriptionLanguageCode.zh },
18057
- { label: "Filipino", value: TranscriptionLanguageCode.fil },
18058
18141
  { label: "Hindi", value: TranscriptionLanguageCode.hi },
18059
18142
  { label: "Japanese", value: TranscriptionLanguageCode.ja },
18060
18143
  { label: "Kannada", value: TranscriptionLanguageCode.kn },
18061
- { label: "Malay", value: TranscriptionLanguageCode.ms },
18062
- { label: "Malayalam", value: TranscriptionLanguageCode.ml },
18144
+ { label: "Malay / Malayalam", value: TranscriptionLanguageCode.ms },
18063
18145
  { label: "Tamil", value: TranscriptionLanguageCode.ta },
18064
18146
  { label: "Telugu", value: TranscriptionLanguageCode.te },
18147
+ { label: "Urdu", value: TranscriptionLanguageCode.ur },
18148
+ { label: "Svenska", value: TranscriptionLanguageCode.sv },
18065
18149
  { label: "Thai", value: TranscriptionLanguageCode.th }
18066
18150
  ];
18067
18151
 
@@ -21910,7 +21994,7 @@ const {
21910
21994
  mergeConfig: mergeConfig$1
21911
21995
  } = axios;
21912
21996
 
21913
- const version$1 = "0.0.9";
21997
+ const version$1 = "0.0.11";
21914
21998
 
21915
21999
  const handleApiError = async (error) => {
21916
22000
  return Promise.reject(error);
@@ -22104,6 +22188,7 @@ var SettingsApiKeys;
22104
22188
  SettingsApiKeys2["template"] = "template";
22105
22189
  SettingsApiKeys2["baseTemplate"] = "baseTemplate";
22106
22190
  SettingsApiKeys2["templateId"] = "templateId";
22191
+ SettingsApiKeys2["summary"] = "summary";
22107
22192
  })(SettingsApiKeys || (SettingsApiKeys = {}));
22108
22193
  const SettingsApi = {
22109
22194
  updateSetting: async (key, value) => {
@@ -22164,7 +22249,8 @@ const SettingsApi = {
22164
22249
  [SettingsApiKeys.sources]: profileResponse.sources,
22165
22250
  [SettingsApiKeys.availableSources]: profileResponse.availableSources,
22166
22251
  [SettingsApiKeys.template]: profileResponse.template,
22167
- [SettingsApiKeys.baseTemplate]: profileResponse.baseTemplate
22252
+ [SettingsApiKeys.baseTemplate]: profileResponse.baseTemplate,
22253
+ [SettingsApiKeys.summary]: profileResponse.summary
22168
22254
  };
22169
22255
  return mappedResponse;
22170
22256
  }
@@ -22474,6 +22560,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22474
22560
  const [sources, setSources] = React.useState(null);
22475
22561
  const [availableSources, setAvailableSources] = React.useState([]);
22476
22562
  const [preferredMicrophone, setPreferredMicrophone] = React.useState(null);
22563
+ const [summary, setSummary] = React.useState(null);
22477
22564
  const [templateCustomizations, setTemplateCustomizations] = React.useState({});
22478
22565
  const [baseTemplate, setBaseTemplate] = React.useState({});
22479
22566
  const [customTemplate, setCustomTemplate] = React.useState(null);
@@ -22489,7 +22576,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22489
22576
  const profile = await SettingsApi.getSettings(templateId, toolArgs);
22490
22577
  const newDictionary = profile?.[SettingsApiKeys.dictionary] || [];
22491
22578
  const newLanguage = profile?.[SettingsApiKeys.language] || (predefinedLanguage ?? getUserDefaultLanguage().code);
22492
- const newTranscriptionLanguage = profile?.[SettingsApiKeys.transcriptionLanguage];
22579
+ const newTranscriptionLanguage = profile?.[SettingsApiKeys.transcriptionLanguage] || TranscriptionLanguageCode.multilingual;
22493
22580
  const newSources = Array.isArray(profile?.[SettingsApiKeys.sources]) ? profile[SettingsApiKeys.sources] : null;
22494
22581
  const newAvailableSources = Array.isArray(profile?.[SettingsApiKeys.availableSources]) ? profile[SettingsApiKeys.availableSources] : [];
22495
22582
  const newCustomTemplate = profile?.[SettingsApiKeys.template] ? {
@@ -22512,12 +22599,14 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22512
22599
  };
22513
22600
  }
22514
22601
  }
22602
+ const newSummary = profile?.[SettingsApiKeys.summary] || null;
22515
22603
  setDictionary(newDictionary);
22516
22604
  setLanguage(newLanguage);
22517
22605
  setTranscriptionLanguage(newTranscriptionLanguage);
22518
22606
  setSources(newSources);
22519
22607
  setAvailableSources(newAvailableSources);
22520
22608
  setPreferredMicrophone(newPreferredMicrophone);
22609
+ setSummary(newSummary);
22521
22610
  setCustomTemplate(newCustomTemplate);
22522
22611
  setBaseTemplate(newBaseTemplate);
22523
22612
  const cache = SettingsCache.getInstance();
@@ -22583,7 +22672,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22583
22672
  try {
22584
22673
  setTranscriptionLanguage(lang);
22585
22674
  SettingsCache.getInstance().setTranscriptionLanguage(lang);
22586
- const dBLanguage = lang === "" ? null : lang;
22675
+ const dBLanguage = lang;
22587
22676
  await SettingsApi.updateSetting(SettingsApiKeys.transcriptionLanguage, dBLanguage);
22588
22677
  } catch (error) {
22589
22678
  logger.settingsError("Error updating transcription language:", error);
@@ -22598,6 +22687,21 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22598
22687
  logger.settingsError("Error updating sources:", error);
22599
22688
  }
22600
22689
  }, []);
22690
+ const updateSummary = React.useCallback(async (summary2) => {
22691
+ try {
22692
+ setSummary(summary2);
22693
+ await SettingsApi.updateSetting(SettingsApiKeys.summary, summary2);
22694
+ } catch (error) {
22695
+ logger.settingsError("Error updating summary:", error);
22696
+ }
22697
+ }, []);
22698
+ const sendSummaryMessage = React.useCallback(() => {
22699
+ if (!summary || !summary.isEnabled) {
22700
+ return;
22701
+ }
22702
+ const event = new CustomEvent("sendSummaryMessage");
22703
+ window.dispatchEvent(event);
22704
+ }, [summary]);
22601
22705
  const updatePreferredMicrophone = React.useCallback(async (microphone) => {
22602
22706
  try {
22603
22707
  setPreferredMicrophone(microphone);
@@ -22675,6 +22779,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22675
22779
  templateId: profile[SettingsApiKeys.templateId]
22676
22780
  } : null;
22677
22781
  const newBaseTemplate = profile?.[SettingsApiKeys.baseTemplate] ? profile?.[SettingsApiKeys.baseTemplate] : {};
22782
+ const newSummary = profile?.[SettingsApiKeys.summary] || null;
22678
22783
  const microphoneData = profile?.[SettingsApiKeys.preferredMicrophone];
22679
22784
  let newPreferredMicrophone = null;
22680
22785
  if (microphoneData) {
@@ -22696,6 +22801,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22696
22801
  setSources(newSources);
22697
22802
  setAvailableSources(newAvailableSources);
22698
22803
  setPreferredMicrophone(newPreferredMicrophone);
22804
+ setSummary(newSummary);
22699
22805
  setCustomTemplate(newCustomTemplate);
22700
22806
  setBaseTemplate(newBaseTemplate);
22701
22807
  const cache = SettingsCache.getInstance();
@@ -22779,6 +22885,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22779
22885
  sources,
22780
22886
  availableSources,
22781
22887
  preferredMicrophone,
22888
+ summary,
22782
22889
  isLoading,
22783
22890
  templateId,
22784
22891
  toolArgs,
@@ -22792,6 +22899,8 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22792
22899
  updateTranscriptionLanguage,
22793
22900
  updateSources,
22794
22901
  updatePreferredMicrophone,
22902
+ updateSummary,
22903
+ sendSummaryMessage,
22795
22904
  updateTemplateCustomizations,
22796
22905
  updateBaseTemplate,
22797
22906
  updateSettings,
@@ -22804,6 +22913,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22804
22913
  sources,
22805
22914
  availableSources,
22806
22915
  preferredMicrophone,
22916
+ summary,
22807
22917
  isLoading,
22808
22918
  templateId,
22809
22919
  toolArgs,
@@ -22817,6 +22927,8 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, children }
22817
22927
  updateTranscriptionLanguage,
22818
22928
  updateSources,
22819
22929
  updatePreferredMicrophone,
22930
+ updateSummary,
22931
+ sendSummaryMessage,
22820
22932
  updateTemplateCustomizations,
22821
22933
  updateBaseTemplate,
22822
22934
  updateSettings,
@@ -122766,7 +122878,7 @@ function parseAnthropicStreamedToolCalls(content) {
122766
122878
  };
122767
122879
  });
122768
122880
  }
122769
- function AssistantMessage({ message, isLoading, handleRegenerate, isLastAiMessage = false, firstTokenReceived = false }) {
122881
+ function AssistantMessage({ message, isLoading, handleRegenerate, isLastAiMessage = false }) {
122770
122882
  const [isHovered, setIsHovered] = reactExports.useState(false);
122771
122883
  const { appointmentData, runId } = useLangGraphContext();
122772
122884
  const contentStringNotFormated = getContentString(message.content);
@@ -122783,7 +122895,7 @@ function AssistantMessage({ message, isLoading, handleRegenerate, isLastAiMessag
122783
122895
  const hasActualContent = contentString.length > 0;
122784
122896
  if (!isLastMessage && !isToolResult && !contentString.length && !message.content && !reasoning)
122785
122897
  return null;
122786
- return jsxRuntimeExports.jsx("div", { className: "omniscribe_assistant-message-container", onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: isToolResult ? jsxRuntimeExports.jsx(ToolResult, { message }) : jsxRuntimeExports.jsxs("div", { className: "omniscribe_assistant-message-calls-container", children: [isLastMessage && isLoading && !firstTokenReceived && reasoning && jsxRuntimeExports.jsx(AssistantMessageLoading, {}), contentString.length > 0 && jsxRuntimeExports.jsx("div", { className: "omniscribe_assistant-markdown-container", children: jsxRuntimeExports.jsx(MarkdownText, { children: contentString }) }), jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: hasAnthropicToolCalls && isLastMessage && jsxRuntimeExports.jsx(ToolCalls, { toolCalls: anthropicStreamedToolCalls }) || hasToolCalls && isLastMessage && jsxRuntimeExports.jsx(ToolCalls, { toolCalls: message.tool_calls }) }), jsxRuntimeExports.jsx(CustomComponent, { message, thread }), hasActualContent && jsxRuntimeExports.jsxs("div", { className: "omniscribe_assistant-commands-container", children: [jsxRuntimeExports.jsx(BranchSwitcher, { branch: meta?.branch, branchOptions: meta?.branchOptions, onSelect: (branch) => thread.setBranch(branch), isLoading }), jsxRuntimeExports.jsx(CommandBar, { disabled: hasAnthropicToolCalls && isLastMessage || hasToolCalls, content: contentString, isLoading, isAiMessage: true, handleRegenerate: () => handleRegenerate(parentCheckpoint), isLastMessage: isLastAiMessage, isHovered, runId: runId || void 0 })] })] }) });
122898
+ return jsxRuntimeExports.jsx("div", { className: "omniscribe_assistant-message-container", onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: isToolResult ? jsxRuntimeExports.jsx(ToolResult, { message }) : jsxRuntimeExports.jsxs("div", { className: "omniscribe_assistant-message-calls-container", children: [isLastMessage && isLoading && contentString.length === 0 && jsxRuntimeExports.jsx(AssistantMessageLoading, {}), contentString.length > 0 && jsxRuntimeExports.jsx("div", { className: "omniscribe_assistant-markdown-container", children: jsxRuntimeExports.jsx(MarkdownText, { children: contentString }) }), jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: hasAnthropicToolCalls && isLastMessage && jsxRuntimeExports.jsx(ToolCalls, { toolCalls: anthropicStreamedToolCalls }) || hasToolCalls && isLastMessage && jsxRuntimeExports.jsx(ToolCalls, { toolCalls: message.tool_calls }) }), jsxRuntimeExports.jsx(CustomComponent, { message, thread }), hasActualContent && jsxRuntimeExports.jsxs("div", { className: "omniscribe_assistant-commands-container", children: [jsxRuntimeExports.jsx(BranchSwitcher, { branch: meta?.branch, branchOptions: meta?.branchOptions, onSelect: (branch) => thread.setBranch(branch), isLoading }), jsxRuntimeExports.jsx(CommandBar, { disabled: hasAnthropicToolCalls && isLastMessage || hasToolCalls, content: contentString, isLoading, isAiMessage: true, handleRegenerate: () => handleRegenerate(parentCheckpoint), isLastMessage: isLastAiMessage, isHovered, runId: runId || void 0 })] })] }) });
122787
122899
  }
122788
122900
 
122789
122901
  const textareaVariants = cva("omniscribe_textarea-general", {
@@ -122802,6 +122914,102 @@ const Textarea = reactExports.forwardRef(({ className, variant, ...props }, ref)
122802
122914
  });
122803
122915
  Textarea.displayName = "Textarea";
122804
122916
 
122917
+ const MessageImagesContext = reactExports.createContext(void 0);
122918
+ const MessageImagesProvider = ({ children }) => {
122919
+ const [messageImages, setMessageImagesMap] = reactExports.useState(/* @__PURE__ */ new Map());
122920
+ const messageImagesRef = reactExports.useRef(messageImages);
122921
+ reactExports.useEffect(() => {
122922
+ messageImagesRef.current = messageImages;
122923
+ });
122924
+ reactExports.useEffect(() => {
122925
+ return () => {
122926
+ messageImagesRef.current.forEach((images) => {
122927
+ images.forEach((image) => {
122928
+ if (image.previewUrl) {
122929
+ URL.revokeObjectURL(image.previewUrl);
122930
+ }
122931
+ });
122932
+ });
122933
+ };
122934
+ }, []);
122935
+ const setMessageImages = reactExports.useCallback((messageId, images) => {
122936
+ setMessageImagesMap((prev) => {
122937
+ const newMap = new Map(prev);
122938
+ newMap.set(messageId, images);
122939
+ return newMap;
122940
+ });
122941
+ }, []);
122942
+ const getMessageImages = reactExports.useCallback((messageId) => {
122943
+ return messageImages.get(messageId) || [];
122944
+ }, [messageImages]);
122945
+ const clearMessageImages = reactExports.useCallback((messageId) => {
122946
+ const images = messageImages.get(messageId);
122947
+ if (images) {
122948
+ images.forEach((image) => {
122949
+ if (image.previewUrl) {
122950
+ URL.revokeObjectURL(image.previewUrl);
122951
+ }
122952
+ });
122953
+ }
122954
+ setMessageImagesMap((prev) => {
122955
+ const newMap = new Map(prev);
122956
+ newMap.delete(messageId);
122957
+ return newMap;
122958
+ });
122959
+ }, [messageImages]);
122960
+ const value = reactExports.useMemo(() => ({
122961
+ messageImages,
122962
+ setMessageImages,
122963
+ getMessageImages,
122964
+ clearMessageImages
122965
+ }), [messageImages, setMessageImages, getMessageImages, clearMessageImages]);
122966
+ return jsxRuntimeExports.jsx(MessageImagesContext.Provider, { value, children });
122967
+ };
122968
+
122969
+ const useMessageImages = () => {
122970
+ const context = reactExports.useContext(MessageImagesContext);
122971
+ if (!context) {
122972
+ throw new Error("useMessageImages must be used within a MessageImagesProvider");
122973
+ }
122974
+ return context;
122975
+ };
122976
+
122977
+ const DocumentIcon = ({ width = 24, height = 24, className }) => {
122978
+ return jsxRuntimeExports.jsxs("svg", { fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", width, height, viewBox: "0 0 24 24", className, children: [jsxRuntimeExports.jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }), jsxRuntimeExports.jsx("polyline", { points: "14 2 14 8 20 8" }), jsxRuntimeExports.jsx("line", { x1: "16", y1: "13", x2: "8", y2: "13" }), jsxRuntimeExports.jsx("line", { x1: "16", y1: "17", x2: "8", y2: "17" }), jsxRuntimeExports.jsx("polyline", { points: "10 9 9 9 8 9" })] });
122979
+ };
122980
+
122981
+ const MessageImages = ({ uploadedFiles, className = "" }) => {
122982
+ const [loadedImages, setLoadedImages] = reactExports.useState(/* @__PURE__ */ new Set());
122983
+ const [failedImages, setFailedImages] = reactExports.useState(/* @__PURE__ */ new Set());
122984
+ const { formatMessage } = useIntl();
122985
+ const handleImageLoad = (index) => {
122986
+ setLoadedImages((prev) => new Set(prev).add(index));
122987
+ };
122988
+ const handleImageError = (index) => {
122989
+ setFailedImages((prev) => new Set(prev).add(index));
122990
+ };
122991
+ if (uploadedFiles.length === 0) {
122992
+ return null;
122993
+ }
122994
+ const imageFiles = uploadedFiles.filter((file) => file.type === "image");
122995
+ const documentFiles = uploadedFiles.filter((file) => file.type === "document");
122996
+ if (imageFiles.length === 0 && documentFiles.length === 0) {
122997
+ return null;
122998
+ }
122999
+ return jsxRuntimeExports.jsxs("div", { className: `omniscribe_message-files ${className}`, children: [imageFiles.length > 0 && jsxRuntimeExports.jsxs("div", { className: "omniscribe_message-images", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_message-images-grid", children: imageFiles.map((file, index) => {
123000
+ const imageUrl = file.previewUrl;
123001
+ if (!imageUrl) {
123002
+ return jsxRuntimeExports.jsx("div", { className: "omniscribe_message-image-error", title: "Image could not be displayed", children: jsxRuntimeExports.jsx("span", { children: "📷" }) }, file.id);
123003
+ }
123004
+ const isLoaded = loadedImages.has(index);
123005
+ const hasFailed = failedImages.has(index);
123006
+ return jsxRuntimeExports.jsxs("div", { className: `omniscribe_message-image-container ${imageFiles.length > 1 ? "omniscribe_message-image-container-multiple" : "omniscribe_message-image-container-single"}`, children: [!isLoaded && !hasFailed && jsxRuntimeExports.jsx("div", { className: "omniscribe_message-image-loading", children: jsxRuntimeExports.jsx("span", { children: "Loading..." }) }), hasFailed ? jsxRuntimeExports.jsxs("div", { className: "omniscribe_message-image-error", title: "Failed to load image", children: [jsxRuntimeExports.jsx("span", { children: "📷" }), jsxRuntimeExports.jsx("small", { children: "Image unavailable" })] }) : jsxRuntimeExports.jsx("img", { src: imageUrl, alt: `Attached image ${index + 1}`, className: "omniscribe_message-image", onLoad: () => handleImageLoad(index), onError: () => handleImageError(index), title: `Image ${index + 1}`, style: { display: isLoaded ? "block" : "none" } }), imageFiles.length > 1 && jsxRuntimeExports.jsx("div", { className: "omniscribe_message-image-counter", children: index + 1 })] }, file.id);
123007
+ }) }), imageFiles.length > 1 && jsxRuntimeExports.jsx("div", { className: "omniscribe_message-images-count", children: formatMessage({ id: "{count} images", defaultMessage: "{count} images" }, { count: imageFiles.length }) })] }), documentFiles.length > 0 && jsxRuntimeExports.jsxs("div", { className: "omniscribe_message-documents", children: [documentFiles.map((file) => jsxRuntimeExports.jsxs("div", { className: "omniscribe_message-document", title: `Document: ${file.file.name}`, children: [jsxRuntimeExports.jsx(DocumentIcon, { width: 24, height: 24 }), jsxRuntimeExports.jsx("div", { className: "omniscribe_message-document-info", children: jsxRuntimeExports.jsx("div", { className: "omniscribe_message-document-name", children: file.file.name || "Unknown file" }) })] }, file.id)), documentFiles.length > 1 && jsxRuntimeExports.jsx("div", { className: "omniscribe_message-documents-count", children: formatMessage({
123008
+ id: "{count} documents",
123009
+ defaultMessage: "{count} documents"
123010
+ }, { count: documentFiles.length }) })] })] });
123011
+ };
123012
+
122805
123013
  function EditableContent({ value, setValue, onSubmit, chatHistoryOpen = false }) {
122806
123014
  const handleKeyDown = (e) => {
122807
123015
  if ((e.metaKey || e.ctrlKey) && e.key === "Enter") {
@@ -122819,6 +123027,9 @@ function HumanMessage({ message, isLoading, isLastHumanMessage = false, chatHist
122819
123027
  const [isEditing, setIsEditing] = reactExports.useState(false);
122820
123028
  const [value, setValue] = reactExports.useState("");
122821
123029
  const contentString = getContentString(message.content);
123030
+ const { getMessageImages } = useMessageImages();
123031
+ const messageImages = getMessageImages(message.id || "");
123032
+ const hasMessageFiles = messageImages.length > 0;
122822
123033
  const handleSubmitEdit = () => {
122823
123034
  setIsEditing(false);
122824
123035
  const newMessage = { type: "human", content: value };
@@ -122836,7 +123047,7 @@ function HumanMessage({ message, isLoading, isLastHumanMessage = false, chatHist
122836
123047
  }
122837
123048
  });
122838
123049
  };
122839
- return jsxRuntimeExports.jsx("div", { className: `omniscribe_human-message-container ${isEditing ? "omniscribe_human-message-container-editing" : "omniscribe_human-message-container-no-editing"}`, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: jsxRuntimeExports.jsxs("div", { className: `omniscribe_human-message-subcontainer ${isEditing && "omniscribe_human-message-subcontainer-editing"}`, children: [isEditing ? jsxRuntimeExports.jsx(EditableContent, { value, setValue, onSubmit: handleSubmitEdit, chatHistoryOpen }) : jsxRuntimeExports.jsx("p", { className: "omniscribe_human-message-content-text", children: contentString }), jsxRuntimeExports.jsxs("div", { className: `omniscribe_human-message-command-container ${isEditing && "omniscribe_human-message-command-container-editing"}`, children: [jsxRuntimeExports.jsx(BranchSwitcher, { branch: meta?.branch, branchOptions: meta?.branchOptions, onSelect: (branch) => thread.setBranch(branch), isLoading }), jsxRuntimeExports.jsx(CommandBar, { isLoading, content: contentString, isEditing, setIsEditing: (c) => {
123050
+ return jsxRuntimeExports.jsx("div", { className: `omniscribe_human-message-container ${isEditing ? "omniscribe_human-message-container-editing" : "omniscribe_human-message-container-no-editing"}`, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: jsxRuntimeExports.jsxs("div", { className: `omniscribe_human-message-subcontainer ${isEditing && "omniscribe_human-message-subcontainer-editing"}`, children: [isEditing ? jsxRuntimeExports.jsx(EditableContent, { value, setValue, onSubmit: handleSubmitEdit, chatHistoryOpen }) : jsxRuntimeExports.jsxs("div", { className: "omniscribe_human-message-content", children: [hasMessageFiles && jsxRuntimeExports.jsx(MessageImages, { uploadedFiles: messageImages }), jsxRuntimeExports.jsx("p", { className: "omniscribe_human-message-content-text", children: contentString })] }), jsxRuntimeExports.jsxs("div", { className: `omniscribe_human-message-command-container ${isEditing && "omniscribe_human-message-command-container-editing"}`, children: [jsxRuntimeExports.jsx(BranchSwitcher, { branch: meta?.branch, branchOptions: meta?.branchOptions, onSelect: (branch) => thread.setBranch(branch), isLoading }), jsxRuntimeExports.jsx(CommandBar, { isLoading, content: contentString, isEditing, setIsEditing: (c) => {
122840
123051
  if (c) {
122841
123052
  setValue(contentString);
122842
123053
  }
@@ -123427,7 +123638,7 @@ const GradientBox = ({ children, colors, className = "omniscribe_gradient-box" }
123427
123638
  return jsxRuntimeExports.jsx("div", { className, style: gradient, children });
123428
123639
  };
123429
123640
 
123430
- const PredefinedQuestions = ({ handleSubmit, messages }) => {
123641
+ const PredefinedQuestions = ({ handleSubmit, messages, isAutoSendingSummary }) => {
123431
123642
  const contentClassName = "text-p omniscribe_predefined-questions-content";
123432
123643
  const { formatMessage } = useIntl();
123433
123644
  const data = [
@@ -123437,58 +123648,17 @@ const PredefinedQuestions = ({ handleSubmit, messages }) => {
123437
123648
  }),
123438
123649
  formatMessage({ id: "What shouldn't I overlook today?" })
123439
123650
  ];
123651
+ if (isAutoSendingSummary || messages > 0) {
123652
+ return null;
123653
+ }
123440
123654
  return jsxRuntimeExports.jsxs("div", { className: "omniscribe_predefined-questions-container", children: [jsxRuntimeExports.jsx("span", { className: "text-p-semi omniscribe_predefined-questions-span omniscribe_predefined-title", children: formatMessage({
123441
123655
  id: "Hello Doctor, I'm your personal assistant. How can I help you today?"
123442
- }) }), !messages && data.map((text) => jsxRuntimeExports.jsx("div", { className: "omniscribe_predefined-questions-msg-container whitespace-wrap", children: jsxRuntimeExports.jsx(GradientBox, { children: jsxRuntimeExports.jsx(Button, { onClick: (e) => handleSubmit(e, text), className: contentClassName, rounded: "omniscribe_predefined-questions-btn-rounded", whitespace: "", variant: "empty", size: "empty", children: text }) }) }, text))] });
123656
+ }) }), data.map((text) => jsxRuntimeExports.jsx("div", { className: "omniscribe_predefined-questions-msg-container whitespace-wrap", children: jsxRuntimeExports.jsx(GradientBox, { children: jsxRuntimeExports.jsx(Button, { onClick: (e) => handleSubmit(e, text), className: contentClassName, rounded: "omniscribe_predefined-questions-btn-rounded", whitespace: "", variant: "empty", size: "empty", children: text }) }) }, text))] });
123443
123657
  };
123444
123658
 
123445
- const MousePointerClickIcon = ({ className, width = 24, height = 24 }) => {
123446
- return jsxRuntimeExports.jsx("svg", { width, height, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className, children: jsxRuntimeExports.jsx("path", { d: "M14 4.1L12 6M5.1 8l-2.9-.8M6 12l-1.9 2M7.2 2.2L8 5.1M9.037 9.69a.498.498 0 01.653-.653l11 4.5a.5.5 0 01-.074.949l-4.349 1.041a1 1 0 00-.74.739l-1.04 4.35a.5.5 0 01-.95.074z" }) });
123447
- };
123448
-
123449
- const sleep = async (ms) => {
123450
- return new Promise((resolve) => setTimeout(resolve, ms));
123451
- };
123452
-
123453
- const Modal = ({ visible, setModalVisible, className = "", title, children, scroll = true }) => {
123454
- const [show, setShow] = reactExports.useState(false);
123455
- const popupRef = reactExports.useRef(null);
123456
- const { dragHandlers, dragStyle } = useDraggable(!visible);
123457
- const handleCloseModal = async () => {
123458
- setShow(false);
123459
- await sleep(350);
123460
- setModalVisible(false);
123461
- };
123462
- const handleOverlayClick = (e) => {
123463
- if (e.target === e.currentTarget) {
123464
- handleCloseModal();
123465
- }
123466
- };
123467
- reactExports.useEffect(() => {
123468
- if (visible)
123469
- setTimeout(() => setShow(true), 10);
123470
- }, [visible]);
123471
- if (!visible)
123472
- return null;
123473
- return jsxRuntimeExports.jsx("div", { className: "omniscribe_modal-overlay", onClick: handleOverlayClick, children: jsxRuntimeExports.jsx("div", { className: `omniscribe_modal-container ${show ? "omniscribe_modal-container-show" : "omniscribe_modal-container-hide"} ${className} ${scroll ? "omniscribe_modal-container-scroll" : ""}`, ref: popupRef, onClick: (e) => e.stopPropagation(), style: dragStyle, children: jsxRuntimeExports.jsxs("div", { className: "omniscribe_modal-subcontainer", children: [jsxRuntimeExports.jsxs("div", { className: "omniscribe_modal-title-container", onMouseDown: dragHandlers.onMouseDown, children: [jsxRuntimeExports.jsx("h2", { className: "omniscribe_modal-title", children: title }), jsxRuntimeExports.jsx("button", { id: "closeModalDictionaryButton", className: "omniscribe_modal-button", "aria-label": "Cerrar", onClick: handleCloseModal, children: jsxRuntimeExports.jsx(XIcon, { strokeWidth: 4 }) })] }), children] }) }) });
123474
- };
123475
-
123476
- const cn = (...classes) => {
123477
- return classes.filter(Boolean).join(" ");
123478
- };
123479
- const SourcesModal = ({ isOpen, onClose, sources, selectedSources, onToggleSource, onSave, onSelectAll, setModalVisible, isSaving = false }) => {
123659
+ const SummaryLoading = () => {
123480
123660
  const { formatMessage } = useIntl();
123481
- if (!isOpen)
123482
- return null;
123483
- return jsxRuntimeExports.jsx(Modal, { setModalVisible, className: "omniscribe_modal-sources", visible: isOpen, title: formatMessage({ id: "My source library" }), children: jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsxs("div", { className: "omniscribe_header_description", children: [jsxRuntimeExports.jsx(MousePointerClickIcon, { width: 16, height: 16, className: "omniscribe_icon_blue" }), formatMessage({
123484
- id: `Specify the sources and resources that should guide the AI's responses.`
123485
- })] }), jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsxs("div", { className: "omniscribe_filter_section", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_filter_buttons", children: jsxRuntimeExports.jsx(Button, { className: "omniscribe_button_all", onClick: onSelectAll, children: formatMessage({ id: "All" }) }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_sources_count", children: formatMessage({
123486
- id: "sourcesSelected",
123487
- defaultMessage: "{selected} of {total} selected"
123488
- }, {
123489
- selected: selectedSources.length,
123490
- total: sources.length
123491
- }) })] }), jsxRuntimeExports.jsx("div", { className: "omniscribe_sources_container scrollbar-pretty", children: jsxRuntimeExports.jsx("div", { className: "omniscribe_sources_list", children: sources.map((source) => jsxRuntimeExports.jsx("div", { onClick: () => onToggleSource(source), className: cn("omniscribe_source_item", selectedSources.some((s) => s.url === source.url) && "omniscribe_source_item_selected"), children: jsxRuntimeExports.jsx("div", { className: "omniscribe_source_content", children: jsxRuntimeExports.jsx("div", { className: "omniscribe_source_title_container", children: jsxRuntimeExports.jsx("a", { href: source.url, target: "_blank", rel: "noopener noreferrer", onClick: (e) => e.stopPropagation(), className: "omniscribe_source_link", children: formatMessage({ id: source.title }) }) }) }) }, source.title)) }) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_footer", children: [jsxRuntimeExports.jsx(Button, { className: "omniscribe_button_outline", onClick: onClose, disabled: isSaving, children: formatMessage({ id: "Cancel" }) }), jsxRuntimeExports.jsx(Button, { className: "omniscribe_button_primary", onClick: onSave, disabled: isSaving, children: isSaving ? formatMessage({ id: "Saving" }) : formatMessage({ id: "Save" }) })] })] })] }) });
123661
+ return jsxRuntimeExports.jsxs("div", { className: "omniscribe_auto-summary-container", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_auto-summary-text", children: formatMessage({ id: "Generating patient summary" }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_auto-summary-loading", children: jsxRuntimeExports.jsx("div", { className: "omniscribe_loading-dots", children: jsxRuntimeExports.jsx("span", {}) }) })] });
123492
123662
  };
123493
123663
 
123494
123664
  var ChatSourceCategory;
@@ -123498,10 +123668,6 @@ var ChatSourceCategory;
123498
123668
  ChatSourceCategory2["MedicalResearchDomains"] = "medical_research_domains";
123499
123669
  })(ChatSourceCategory || (ChatSourceCategory = {}));
123500
123670
 
123501
- const BookTextIcon = ({ className, width = 16, height = 16, stroke = "currentColor" }) => {
123502
- return jsxRuntimeExports.jsxs("svg", { width, height, className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M2.66699 13V2.99998C2.66699 2.55795 2.84259 2.13403 3.15515 1.82147C3.46771 1.50891 3.89163 1.33331 4.33366 1.33331H12.667C12.8438 1.33331 13.0134 1.40355 13.1384 1.52858C13.2634 1.6536 13.3337 1.82317 13.3337 1.99998V14C13.3337 14.1768 13.2634 14.3464 13.1384 14.4714C13.0134 14.5964 12.8438 14.6666 12.667 14.6666H4.33366C3.89163 14.6666 3.46771 14.4911 3.15515 14.1785C2.84259 13.8659 2.66699 13.442 2.66699 13ZM2.66699 13C2.66699 12.558 2.84259 12.134 3.15515 11.8215C3.46771 11.5089 3.89163 11.3333 4.33366 11.3333H13.3337", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M5.33301 8.66667L7.99967 4L10.6663 8.66667", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M6.06641 7.33331H9.86641", stroke, strokeLinecap: "round", strokeLinejoin: "round" })] });
123503
- };
123504
-
123505
123671
  class InputValidator {
123506
123672
  // JSON Validation
123507
123673
  static validateJson(input) {
@@ -124243,58 +124409,56 @@ const getCurrentDateTime = () => {
124243
124409
  return `${iso_local} (${human_readable})`;
124244
124410
  };
124245
124411
 
124246
- const hasMessageContent = (message) => {
124247
- return Array.isArray(message.content) ? message.content.length > 0 : !!message.content;
124412
+ const CloseIcon = ({ width = 24, height = 24, className }) => {
124413
+ return jsxRuntimeExports.jsxs("svg", { fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", width, height, viewBox: "0 0 24 24", className, children: [jsxRuntimeExports.jsx("path", { d: "M18 6L6 18" }), jsxRuntimeExports.jsx("path", { d: "M6 6l12 12" })] });
124248
124414
  };
124249
- const getCurrentResponseMessages = (messages) => {
124250
- let lastHumanIndex = -1;
124251
- for (let index = messages.length - 1; index >= 0; index -= 1) {
124252
- if (messages[index].type === "human") {
124253
- lastHumanIndex = index;
124254
- break;
124255
- }
124256
- }
124257
- return messages.slice(lastHumanIndex + 1);
124258
- };
124259
- const currentResponseHasContent = (messages) => {
124260
- return getCurrentResponseMessages(messages).some((msg) => {
124261
- if (msg.type !== "ai")
124262
- return false;
124263
- return hasMessageContent(msg);
124264
- });
124265
- };
124266
- const getLastAiMessage = (messages) => {
124267
- if (!messages?.length)
124415
+
124416
+ const FilePreview = ({ files, onRemove, chatHistoryOpen = false }) => {
124417
+ if (files.length === 0)
124268
124418
  return null;
124269
- const lastMessage = messages[messages.length - 1];
124270
- return lastMessage.type === "ai" ? lastMessage : null;
124419
+ const imageFiles = files.filter((f) => f.type === "image");
124420
+ const documentFiles = files.filter((f) => f.type === "document");
124421
+ return jsxRuntimeExports.jsxs("div", { className: `omniscribe_file-preview-container ${chatHistoryOpen ? "omniscribe_file-preview-container-history-open" : ""}`, children: [documentFiles.map((file) => jsxRuntimeExports.jsxs("div", { className: "omniscribe_file-preview-document", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_file-preview-document-icon", children: jsxRuntimeExports.jsx(DocumentIcon, { width: 24, height: 24 }) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_file-preview-document-info", children: [jsxRuntimeExports.jsx("span", { className: "omniscribe_file-preview-document-title", children: file.file.name }), jsxRuntimeExports.jsx("span", { className: "omniscribe_file-preview-document-type", children: getFileExtension(file.file.name).toUpperCase() })] }), jsxRuntimeExports.jsx("button", { type: "button", className: "omniscribe_file-preview-remove-btn", onClick: () => onRemove(file.id), "aria-label": "Remove file", children: jsxRuntimeExports.jsx(CloseIcon, { width: 12, height: 12 }) })] }, file.id)), imageFiles.map((file) => jsxRuntimeExports.jsxs("div", { className: "omniscribe_file-preview-image", children: [file.previewUrl ? jsxRuntimeExports.jsx("img", { src: file.previewUrl, alt: file.file.name, className: "omniscribe_file-preview-image-img" }) : jsxRuntimeExports.jsx("div", { className: "omniscribe_file-preview-image-placeholder" }), jsxRuntimeExports.jsx("button", { type: "button", className: "omniscribe_file-preview-remove-btn omniscribe_file-preview-remove-btn--image", onClick: () => onRemove(file.id), "aria-label": "Remove image", children: jsxRuntimeExports.jsx(CloseIcon, { width: 10, height: 10 }) })] }, file.id))] });
124422
+ };
124423
+ function getFileExtension(filename) {
124424
+ const parts = filename.split(".");
124425
+ return parts.length > 1 ? parts[parts.length - 1] : "";
124426
+ }
124427
+
124428
+ const WarningIcon = ({ className, width = 24, height = 24, strokeWidth = 2 }) => {
124429
+ return jsxRuntimeExports.jsxs("svg", { fill: "none", width, height, viewBox: "0 0 24 24", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth, className, children: [jsxRuntimeExports.jsx("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" }), jsxRuntimeExports.jsx("path", { d: "M12 9v4" }), jsxRuntimeExports.jsx("path", { d: "m12 17 .01 0" })] });
124271
124430
  };
124272
124431
 
124273
- const useMessageLoadingState = (messages) => {
124274
- const [firstTokenReceived, setFirstTokenReceived] = reactExports.useState(false);
124432
+ function FileLimitBanner({ message, onClose, isVisible }) {
124275
124433
  reactExports.useEffect(() => {
124276
- const lastAiMessage = getLastAiMessage(messages);
124277
- if (!lastAiMessage) {
124278
- setFirstTokenReceived(false);
124279
- return;
124434
+ if (isVisible) {
124435
+ const timer = setTimeout(() => {
124436
+ onClose();
124437
+ }, 5e3);
124438
+ return () => clearTimeout(timer);
124280
124439
  }
124281
- const currentHasContent = currentResponseHasContent(messages);
124282
- setFirstTokenReceived((prev) => {
124283
- if (currentHasContent && !prev) {
124284
- return true;
124285
- }
124286
- if (!currentHasContent && prev) {
124287
- return false;
124288
- }
124289
- return prev;
124290
- });
124291
- }, [messages]);
124292
- return {
124293
- firstTokenReceived,
124294
- setFirstTokenReceived
124295
- };
124440
+ }, [isVisible]);
124441
+ if (!isVisible)
124442
+ return null;
124443
+ return jsxRuntimeExports.jsx("div", { className: "omniscribe_file-limit-banner", children: jsxRuntimeExports.jsxs("div", { className: "omniscribe_file-limit-banner-content", children: [jsxRuntimeExports.jsx("div", { className: "omniscribe_file-limit-banner-icon", children: jsxRuntimeExports.jsx(WarningIcon, { width: 20, height: 20 }) }), jsxRuntimeExports.jsx("span", { className: "omniscribe_file-limit-banner-message", children: message }), jsxRuntimeExports.jsx("button", { className: "omniscribe_file-limit-banner-close", onClick: onClose, type: "button", children: jsxRuntimeExports.jsx(XIcon, {}) })] }) });
124444
+ }
124445
+
124446
+ const MAX_FILES = 5;
124447
+ const MAX_FILE_SIZE = 5 * 1024 * 1024;
124448
+ const SUPPORTED_FILE_TYPES = [
124449
+ // Images
124450
+ "image/jpeg",
124451
+ "image/jpg",
124452
+ "image/png",
124453
+ "image/gif",
124454
+ "image/webp",
124455
+ // 'image/svg+xml', // Removed: SVG can contain malicious JavaScript
124456
+ // Documents
124457
+ "application/pdf"
124458
+ ];
124459
+ const isFileTypeSupported = (fileType) => {
124460
+ return SUPPORTED_FILE_TYPES.includes(fileType) || fileType.startsWith("image/");
124296
124461
  };
124297
-
124298
124462
  function StickyToBottomContent(props) {
124299
124463
  const context = useStickToBottomContext();
124300
124464
  return jsxRuntimeExports.jsxs("div", { ref: context.scrollRef, className: props.className, children: [jsxRuntimeExports.jsx("div", { ref: context.contentRef, className: props.contentClassName, children: props.content }), props.footer] });
@@ -124306,6 +124470,23 @@ function ScrollToBottom$1(props) {
124306
124470
  return null;
124307
124471
  return jsxRuntimeExports.jsxs(Button, { variant: "outline", className: props.className, onClick: () => scrollToBottom(), children: [jsxRuntimeExports.jsx(ArrowDownIcon, { className: "omniscribe_thread-down-btn" }), jsxRuntimeExports.jsx("span", { children: formatMessage({ id: "Scroll down" }) })] });
124308
124472
  }
124473
+ function getAutoSummarySessionKey(patientId, doctorId) {
124474
+ const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
124475
+ return `sofia-auto-summary:${patientId ?? ""}:${doctorId ?? ""}:${today}`;
124476
+ }
124477
+ function isAutoSummarySent(patientId, doctorId) {
124478
+ try {
124479
+ return sessionStorage.getItem(getAutoSummarySessionKey(patientId, doctorId)) === "true";
124480
+ } catch {
124481
+ return false;
124482
+ }
124483
+ }
124484
+ function markAutoSummarySent(patientId, doctorId) {
124485
+ try {
124486
+ sessionStorage.setItem(getAutoSummarySessionKey(patientId, doctorId), "true");
124487
+ } catch {
124488
+ }
124489
+ }
124309
124490
  const Thread = () => {
124310
124491
  const { appointmentData, chatHistoryOpen } = useLangGraphContext();
124311
124492
  const { disableAllActions } = useApiConfigContext();
@@ -124317,27 +124498,31 @@ const Thread = () => {
124317
124498
  });
124318
124499
  const chatApi = useChatApi();
124319
124500
  const stream = useStreamContext();
124320
- const { availableSources, sources: settingsSources, updateSources } = useSettingsContext();
124501
+ const { availableSources, sources: settingsSources, summary } = useSettingsContext();
124321
124502
  const messages = stream.messages;
124322
124503
  const isLoading = stream.isLoading;
124323
- const { firstTokenReceived, setFirstTokenReceived } = useMessageLoadingState(messages);
124324
124504
  const lastError = reactExports.useRef(void 0);
124325
124505
  const textareaRef = reactExports.useRef(null);
124326
- const [isSourcesModalOpen, setIsSourcesModalOpen] = reactExports.useState(false);
124327
- const [isSavingSources, setIsSavingSources] = reactExports.useState(false);
124506
+ const fileInputRef = reactExports.useRef(null);
124507
+ const handleSubmitRef = reactExports.useRef(null);
124508
+ const [uploadedFiles, setUploadedFiles] = reactExports.useState([]);
124509
+ const [showFileLimitBanner, setShowFileLimitBanner] = reactExports.useState(false);
124510
+ const [bannerMessage, setBannerMessage] = reactExports.useState("");
124511
+ const uploadedFilesRef = reactExports.useRef([]);
124512
+ const formatMessageRef = reactExports.useRef(null);
124513
+ const autoSummaryLoadingStarted = reactExports.useRef(false);
124514
+ const [autoSummaryCancelled, setAutoSummaryCancelled] = reactExports.useState(false);
124515
+ const [isAutoSendingSummary, setIsAutoSendingSummary] = reactExports.useState(false);
124328
124516
  const [inputIsValid, setInputIsValid] = reactExports.useState(() => InputValidator.validate(input.value, { maxLength: inputMaxLength }).isValid);
124517
+ reactExports.useEffect(() => {
124518
+ uploadedFilesRef.current = uploadedFiles;
124519
+ }, [uploadedFiles]);
124329
124520
  const [selectedSources, setSelectedSources] = reactExports.useState(() => Array.isArray(settingsSources) ? settingsSources : availableSources);
124330
124521
  const { setToastState } = useToastContext();
124331
- const handleToggleSource = (source) => {
124332
- setSelectedSources((prev) => prev.some((p) => p.url === source.url) ? prev.filter((p) => p.url !== source.url) : [...prev, source]);
124333
- };
124334
- const handleSelectAll = () => {
124335
- if (selectedSources.length === availableSources.length) {
124336
- setSelectedSources([]);
124337
- } else {
124338
- setSelectedSources([...availableSources]);
124339
- }
124340
- };
124522
+ reactExports.useEffect(() => {
124523
+ const sources = Array.isArray(settingsSources) ? settingsSources : availableSources;
124524
+ setSelectedSources(sources);
124525
+ }, [settingsSources, availableSources]);
124341
124526
  const handleTranscriptionUpdate = (text) => {
124342
124527
  const newText = input.value.length ? `${input.value} ${text}` : text;
124343
124528
  input.setValue(newText);
@@ -124347,20 +124532,107 @@ const Thread = () => {
124347
124532
  input.onChange(e);
124348
124533
  setInputIsValid(InputValidator.validate(e.target.value, { maxLength: inputMaxLength }).isValid);
124349
124534
  };
124350
- const handleSaveSources = async () => {
124351
- if (isSavingSources)
124535
+ const handleAttachClick = () => {
124536
+ fileInputRef.current?.click();
124537
+ };
124538
+ const handleFileSelect = async (e) => {
124539
+ const files = e.target.files;
124540
+ if (!files)
124352
124541
  return;
124353
- setIsSavingSources(true);
124354
- try {
124355
- await updateSources(selectedSources);
124356
- setIsSourcesModalOpen(false);
124357
- } catch (error) {
124358
- logger.error("Error saving sources:", error);
124359
- } finally {
124360
- setIsSavingSources(false);
124542
+ const filesArray = Array.from(files);
124543
+ const totalFiles = uploadedFiles.length + filesArray.length;
124544
+ const oversizedFiles = filesArray.filter((file) => file.size > MAX_FILE_SIZE);
124545
+ const hasOversizedFiles = oversizedFiles.length > 0;
124546
+ const unsupportedFiles = filesArray.filter((file) => !isFileTypeSupported(file.type));
124547
+ const hasUnsupportedFiles = unsupportedFiles.length > 0;
124548
+ const exceedsFileCount = totalFiles > MAX_FILES;
124549
+ let message = "";
124550
+ if (hasUnsupportedFiles) {
124551
+ message = formatMessage({ id: "Unsupported file format" });
124552
+ } else if (hasOversizedFiles) {
124553
+ message = formatMessage({ id: "File is too large. Maximum size is 5MB" });
124554
+ } else if (exceedsFileCount) {
124555
+ message = formatMessage({ id: "Maximum number of files is 5" });
124556
+ }
124557
+ if (hasUnsupportedFiles || hasOversizedFiles || exceedsFileCount) {
124558
+ setBannerMessage(message);
124559
+ setShowFileLimitBanner(true);
124560
+ if (fileInputRef.current) {
124561
+ fileInputRef.current.value = "";
124562
+ }
124563
+ return;
124564
+ }
124565
+ const newFiles = [];
124566
+ for (const file of filesArray) {
124567
+ try {
124568
+ const isImage = file.type.startsWith("image/");
124569
+ const uploadedFile = {
124570
+ id: v4(),
124571
+ file,
124572
+ type: isImage ? "image" : "document"
124573
+ };
124574
+ if (isImage) {
124575
+ uploadedFile.previewUrl = URL.createObjectURL(file);
124576
+ }
124577
+ const base64Data = await fileToBase64(file);
124578
+ uploadedFile.processedData = isImage ? {
124579
+ type: "image",
124580
+ source_type: "base64",
124581
+ data: base64Data,
124582
+ mime_type: file.type
124583
+ } : {
124584
+ type: "file",
124585
+ source_type: "base64",
124586
+ data: base64Data,
124587
+ mime_type: file.type,
124588
+ filename: file.name
124589
+ };
124590
+ newFiles.push(uploadedFile);
124591
+ } catch (error) {
124592
+ logger.error("Failed to process file:", file.name, error);
124593
+ newFiles.forEach((f) => {
124594
+ if (f.previewUrl) {
124595
+ URL.revokeObjectURL(f.previewUrl);
124596
+ }
124597
+ });
124598
+ setBannerMessage(formatMessage({ id: "Error processing file" }));
124599
+ setShowFileLimitBanner(true);
124600
+ if (fileInputRef.current) {
124601
+ fileInputRef.current.value = "";
124602
+ }
124603
+ return;
124604
+ }
124605
+ }
124606
+ setUploadedFiles((prev) => [...prev, ...newFiles]);
124607
+ if (fileInputRef.current) {
124608
+ fileInputRef.current.value = "";
124361
124609
  }
124362
124610
  };
124363
- const handleSubmit = (e, predefinedText) => {
124611
+ const handleFileRemove = (id) => {
124612
+ setUploadedFiles((prev) => {
124613
+ const fileToRemove = prev.find((f) => f.id === id);
124614
+ if (fileToRemove?.previewUrl) {
124615
+ URL.revokeObjectURL(fileToRemove.previewUrl);
124616
+ }
124617
+ return prev.filter((f) => f.id !== id);
124618
+ });
124619
+ };
124620
+ const fileToBase64 = (file) => {
124621
+ return new Promise((resolve, reject) => {
124622
+ const reader = new FileReader();
124623
+ reader.onload = () => {
124624
+ const base64String = reader.result;
124625
+ const base64Data = base64String.split(",")[1];
124626
+ resolve(base64Data);
124627
+ };
124628
+ reader.onerror = (error) => {
124629
+ logger.error("Failed to read file:", file.name, error);
124630
+ reject(new Error(`Failed to read file: ${file.name}`));
124631
+ };
124632
+ reader.readAsDataURL(file);
124633
+ });
124634
+ };
124635
+ const handleSubmit = (e, predefinedText, isAutoSummary) => {
124364
124636
  e.preventDefault();
124365
124637
  const inputValidation = input.validate();
124366
124638
  const invalidInput = !inputValidation.isValid || inputValidation.error;
@@ -124368,9 +124640,8 @@ const Thread = () => {
124368
124640
  return;
124369
124641
  if (predefinedText && !InputValidator.validate(predefinedText).isValid)
124370
124642
  return;
124371
- setFirstTokenReceived(false);
124372
124643
  const newHumanMessage = {
124373
- id: v4(),
124644
+ id: isAutoSummary ? `${DO_NOT_RENDER_ID_PREFIX}${v4()}` : v4(),
124374
124645
  type: "human",
124375
124646
  content: predefinedText ?? input.value
124376
124647
  };
@@ -124380,7 +124651,7 @@ const Thread = () => {
124380
124651
  info: restOfExtraData,
124381
124652
  "Full Name:": "Sam Test",
124382
124653
  "Birth Date:": "01/01/1990",
124383
- "- Móvil:": "600000006",
124654
+ "Mobile:": "600000006",
124384
124655
  "Address:": "456 Avenida Inventada, Ciudad Y",
124385
124656
  patientId: appointmentData?.patientId,
124386
124657
  doctorId: appointmentData?.doctorId
@@ -124403,6 +124674,7 @@ const Thread = () => {
124403
124674
  logger.warn(`Unknown source category: ${source.category} for source: ${source.title}`);
124404
124675
  }
124405
124676
  });
124677
+ const messageFiles = uploadedFiles.map((file) => file.processedData).filter(Boolean);
124406
124678
  const data = {
124407
124679
  values: {
124408
124680
  messages: [...toolMessages, newHumanMessage],
@@ -124416,7 +124688,9 @@ const Thread = () => {
124416
124688
  medical_practice: medical_practice ?? "Atención Primaria",
124417
124689
  patient_medical_notes,
124418
124690
  doctor_id: appointmentData?.doctorId,
124419
- current_datetime: getCurrentDateTime()
124691
+ current_datetime: getCurrentDateTime(),
124692
+ prompt_summary: summary?.isEnabled ? summary?.prompt || "" : "",
124693
+ ...messageFiles.length > 0 && { files: messageFiles }
124420
124694
  },
124421
124695
  options: {
124422
124696
  streamMode: ["values"],
@@ -124432,9 +124706,14 @@ const Thread = () => {
124432
124706
  };
124433
124707
  chatApi.submitMessages(stream, data);
124434
124708
  input.reset();
124709
+ uploadedFiles.forEach((file) => {
124710
+ if (file.previewUrl) {
124711
+ URL.revokeObjectURL(file.previewUrl);
124712
+ }
124713
+ });
124714
+ setUploadedFiles([]);
124435
124715
  };
124436
124716
  const handleRegenerate = (parentCheckpoint) => {
124437
- setFirstTokenReceived(false);
124438
124717
  const data = {
124439
124718
  values: void 0,
124440
124719
  options: {
@@ -124469,6 +124748,53 @@ const Thread = () => {
124469
124748
  } catch {
124470
124749
  }
124471
124750
  }, [stream.error, formatMessage, setToastState]);
124751
+ reactExports.useEffect(() => {
124752
+ handleSubmitRef.current = handleSubmit;
124753
+ formatMessageRef.current = formatMessage;
124754
+ }, [handleSubmit, formatMessage]);
124755
+ reactExports.useEffect(() => {
124756
+ const patientId = appointmentData?.patientId;
124757
+ const doctorId = appointmentData?.doctorId;
124758
+ if (!isAutoSummarySent(patientId, doctorId) && !isLoading && summary?.isEnabled && handleSubmitRef.current && formatMessageRef.current) {
124759
+ markAutoSummarySent(patientId, doctorId);
124760
+ autoSummaryLoadingStarted.current = false;
124761
+ setAutoSummaryCancelled(false);
124762
+ setIsAutoSendingSummary(true);
124763
+ const summaryMessage = formatMessageRef.current({
124764
+ id: "I'd like to see a summary of the patient's chart"
124765
+ });
124766
+ handleSubmitRef.current({ preventDefault: () => {
124767
+ } }, summaryMessage, true);
124768
+ }
124769
+ }, [
124770
+ isLoading,
124771
+ summary?.isEnabled,
124772
+ appointmentData?.patientId,
124773
+ appointmentData?.doctorId
124774
+ ]);
124775
+ reactExports.useEffect(() => {
124776
+ if (isAutoSendingSummary && !isLoading && messages.length > 0) {
124777
+ const hasAIResponseWithContent = messages.some((msg) => msg.type === "ai" && msg.content && String(msg.content).trim().length > 0);
124778
+ if (hasAIResponseWithContent) {
124779
+ setIsAutoSendingSummary(false);
124780
+ }
124781
+ }
124782
+ }, [isAutoSendingSummary, isLoading, messages]);
124783
+ reactExports.useEffect(() => {
124784
+ if (!isAutoSendingSummary)
124785
+ return;
124786
+ if (isLoading) {
124787
+ autoSummaryLoadingStarted.current = true;
124788
+ return;
124789
+ }
124790
+ if (autoSummaryLoadingStarted.current) {
124791
+ const hasAIResponseWithContent = messages.some((msg) => msg.type === "ai" && msg.content && String(msg.content).trim().length > 0);
124792
+ if (!hasAIResponseWithContent) {
124793
+ setAutoSummaryCancelled(true);
124794
+ setIsAutoSendingSummary(false);
124795
+ }
124796
+ }
124797
+ }, [isAutoSendingSummary, isLoading, messages]);
124472
124798
  reactExports.useEffect(() => {
124473
124799
  const sources = Array.isArray(settingsSources) ? settingsSources : availableSources;
124474
124800
  setSelectedSources(sources);
@@ -124479,33 +124805,50 @@ const Thread = () => {
124479
124805
  textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;
124480
124806
  }
124481
124807
  }, [input.value]);
124482
- return jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-container ", children: [jsxRuntimeExports.jsx("div", { className: `omniscribe_thread-container-history-cont ${chatHistoryOpen && "omniscribe_thread-container-history-cont-open"}`, children: jsxRuntimeExports.jsx("div", { className: `omniscribe_thread-container-history-subcont ${chatHistoryOpen ? "omniscribe_thread-container-history-subcont-open" : "omniscribe_thread-container-history-subcont-close"}`, children: jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-container-history-content", children: jsxRuntimeExports.jsx(ThreadHistory, { chatHistoryOpen, newDisabled: disableAllActions || isLoading }) }) }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-content-container", children: jsxRuntimeExports.jsx(StickToBottom, { className: "omniscribe_thread-stick-to-bottom", children: jsxRuntimeExports.jsx(StickyToBottomContent, { className: "omniscribe_thread-stick-to-bottom-content no-scrollbar", contentClassName: "omniscribe_thread-stick-to-bottom-content-class", content: jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(PredefinedQuestions, { handleSubmit, messages: messages?.length }), reactExports.useMemo(() => {
124808
+ reactExports.useEffect(() => {
124809
+ return () => {
124810
+ uploadedFilesRef.current.forEach((file) => {
124811
+ if (file.previewUrl) {
124812
+ URL.revokeObjectURL(file.previewUrl);
124813
+ }
124814
+ });
124815
+ };
124816
+ }, []);
124817
+ const renderedMessages = reactExports.useMemo(() => {
124483
124818
  const filteredMessages = messages.filter((m) => !m.id?.startsWith(DO_NOT_RENDER_ID_PREFIX));
124484
- const lastHumanIndex = filteredMessages.map((m, i) => m.type === "human" ? i : -1).filter((i) => i !== -1).pop();
124485
- const lastAiIndex = filteredMessages.map((m, i) => m.type === "ai" ? i : -1).filter((i) => i !== -1).pop();
124486
- return filteredMessages.map((message, index) => {
124819
+ const finalMessages = autoSummaryCancelled ? filteredMessages.filter((msg) => {
124820
+ if (msg.type === "human")
124821
+ return true;
124822
+ const aiIndex = filteredMessages.indexOf(msg);
124823
+ const hasHumanBefore = filteredMessages.slice(0, aiIndex).some((m) => m.type === "human");
124824
+ return hasHumanBefore;
124825
+ }) : filteredMessages;
124826
+ const lastHumanIndex = finalMessages.map((m, i) => m.type === "human" ? i : -1).filter((i) => i !== -1).pop();
124827
+ const lastAiIndex = finalMessages.map((m, i) => m.type === "ai" ? i : -1).filter((i) => i !== -1).pop();
124828
+ return finalMessages.map((message, index) => {
124487
124829
  const isLastHuman = message.type === "human" && index === lastHumanIndex;
124488
124830
  const isLastAi = message.type === "ai" && index === lastAiIndex;
124489
- return message.type === "human" ? jsxRuntimeExports.jsx(HumanMessage, { message, isLoading, isLastHumanMessage: isLastHuman, chatHistoryOpen }, message.id || `${message.type}-${index}`) : jsxRuntimeExports.jsx(AssistantMessage, { message, isLoading, handleRegenerate, isLastAiMessage: isLastAi, firstTokenReceived }, message.id || `${message.type}-${index}`);
124831
+ return message.type === "human" ? jsxRuntimeExports.jsx(HumanMessage, { message, isLoading, isLastHumanMessage: isLastHuman, chatHistoryOpen }, message.id || `${message.type}-${index}`) : jsxRuntimeExports.jsx(AssistantMessage, { message, isLoading, handleRegenerate, isLastAiMessage: isLastAi }, message.id || `${message.type}-${index}`);
124490
124832
  });
124491
- }, [messages, isLoading, firstTokenReceived, handleRegenerate])] }), footer: jsxRuntimeExports.jsxs("div", { className: `omniscribe_thread-footer-container ${chatHistoryOpen ? "omniscribe_footer-size-decrease" : ""}`, children: [jsxRuntimeExports.jsx(ScrollToBottom$1, { className: "omniscribe_thread-footer-scroll-to-bottom" }), jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-footer-form-container", children: jsxRuntimeExports.jsx("form", { className: "omniscribe_thread-footer-form", children: jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-form-content", children: [jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-form-left-btns", children: [availableSources.length ? jsxRuntimeExports.jsx(Tooltip, { message: formatMessage({
124492
- id: "See list of sources"
124493
- }), side: "top", children: jsxRuntimeExports.jsx(Button, { variant: "ghost", type: "button", onClick: () => setIsSourcesModalOpen(true), disabled: !availableSources.length, style: { marginInline: "4px" }, children: jsxRuntimeExports.jsx(BookTextIcon, { width: 16, height: 16, stroke: selectedSources.length > 0 ? "#105bdb" : "#2b303aff" }) }) }) : jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-no-sources" }), jsxRuntimeExports.jsx(Textarea, { ref: textareaRef, rows: 1, value: input.value, variant: "secondary", onChange: handleInputChange, onKeyDown: (e) => {
124833
+ }, [messages, isLoading, handleRegenerate, chatHistoryOpen]);
124834
+ return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(FileLimitBanner, { message: bannerMessage, isVisible: showFileLimitBanner, onClose: () => setShowFileLimitBanner(false) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-container ", children: [jsxRuntimeExports.jsx("div", { className: `omniscribe_thread-container-history-cont ${chatHistoryOpen && "omniscribe_thread-container-history-cont-open"}`, children: jsxRuntimeExports.jsx("div", { className: `omniscribe_thread-container-history-subcont ${chatHistoryOpen ? "omniscribe_thread-container-history-subcont-open" : "omniscribe_thread-container-history-subcont-close"}`, children: jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-container-history-content", children: jsxRuntimeExports.jsx(ThreadHistory, { chatHistoryOpen, newDisabled: disableAllActions || isLoading }) }) }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-content-container", children: jsxRuntimeExports.jsx(StickToBottom, { className: "omniscribe_thread-stick-to-bottom", children: jsxRuntimeExports.jsx(StickyToBottomContent, { className: "omniscribe_thread-stick-to-bottom-content no-scrollbar", contentClassName: "omniscribe_thread-stick-to-bottom-content-class", content: jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: isAutoSendingSummary ? jsxRuntimeExports.jsx(SummaryLoading, {}) : jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(PredefinedQuestions, { handleSubmit, messages: renderedMessages.length, isAutoSendingSummary: false }), renderedMessages] }) }), footer: jsxRuntimeExports.jsxs("div", { className: `omniscribe_thread-footer-container ${chatHistoryOpen ? "omniscribe_footer-size-decrease" : ""}`, children: [jsxRuntimeExports.jsx(ScrollToBottom$1, { className: "omniscribe_thread-footer-scroll-to-bottom" }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-form-container", children: [uploadedFiles.length > 0 && jsxRuntimeExports.jsx(FilePreview, { files: uploadedFiles, onRemove: handleFileRemove, chatHistoryOpen }), jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, className: "omniscribe_thread-footer-form", children: [jsxRuntimeExports.jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: "image/*,.pdf", onChange: handleFileSelect, style: { display: "none" } }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-form-content", children: [jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-form-left-btns", children: [jsxRuntimeExports.jsx(Tooltip, { message: formatMessage({ id: "Attach file" }), side: "top", children: jsxRuntimeExports.jsx("button", { type: "button", className: "omniscribe_thread-attach-btn", onClick: handleAttachClick, disabled: uploadedFiles.length >= MAX_FILES, children: jsxRuntimeExports.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: jsxRuntimeExports.jsx("path", { d: "M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48" }) }) }) }), jsxRuntimeExports.jsx(Textarea, { ref: textareaRef, rows: 1, value: input.value, variant: "secondary", onChange: handleInputChange, onKeyDown: (e) => {
124494
124835
  if (e.key === "Enter" && !e.shiftKey && !e.metaKey) {
124495
124836
  e.preventDefault();
124496
- handleSubmit(e);
124837
+ const el = e.target;
124838
+ const form = el?.closest("form");
124839
+ form?.requestSubmit();
124497
124840
  }
124498
124841
  }, maxLength: inputMaxLength, className: "omniscribe_thread-footer-textarea no-scrollbar", placeholder: formatMessage({
124499
124842
  id: "Write your question..."
124500
- }) })] }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-btns-container", children: [jsxRuntimeExports.jsx(MicrophoneButton, { onTextUpdate: handleTranscriptionUpdate }), stream.isLoading ? jsxRuntimeExports.jsx(Button, { type: "button", onClick: () => stream.stop(), children: jsxRuntimeExports.jsx(SquareIcon, {}) }, "stop") : jsxRuntimeExports.jsx(Button, { onClick: handleSubmit, size: "sm", className: "omniscribe_thread-footer-form-btn", disabled: disableAllActions || isLoading || !input.value.length || !inputIsValid, children: formatMessage({
124843
+ }) })] }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_thread-footer-btns-container", children: [jsxRuntimeExports.jsx(MicrophoneButton, { onTextUpdate: handleTranscriptionUpdate }), stream.isLoading ? jsxRuntimeExports.jsx(Button, { onClick: () => stream.stop(), children: jsxRuntimeExports.jsx(SquareIcon, {}) }, "stop") : jsxRuntimeExports.jsx(Button, { type: "submit", size: "sm", className: "omniscribe_thread-footer-form-btn", disabled: disableAllActions || isLoading || !input.value.length || !inputIsValid, children: formatMessage({
124501
124844
  id: "Send"
124502
- }) })] })] }) }) }), jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-footer-info", children: formatMessage({
124845
+ }) })] })] })] })] }), jsxRuntimeExports.jsx("div", { className: "omniscribe_thread-footer-info", children: formatMessage({
124503
124846
  id: "SofIA may make mistakes. Consider checking important information."
124504
- }) })] }) }) }) }), Boolean(availableSources.length) && jsxRuntimeExports.jsx(SourcesModal, { setModalVisible: setIsSourcesModalOpen, isOpen: isSourcesModalOpen, onClose: () => setIsSourcesModalOpen(false), sources: availableSources, selectedSources, onToggleSource: handleToggleSource, onSelectAll: handleSelectAll, onSave: handleSaveSources, isSaving: isSavingSources })] });
124847
+ }) })] }) }) }) })] })] });
124505
124848
  };
124506
124849
 
124507
- const Chat = () => {
124508
- return jsxRuntimeExports.jsx(Thread, {});
124850
+ const Chat$1 = () => {
124851
+ return jsxRuntimeExports.jsx(MessageImagesProvider, { children: jsxRuntimeExports.jsx(Thread, {}) });
124509
124852
  };
124510
124853
 
124511
124854
  const Toast = () => {
@@ -125402,6 +125745,10 @@ const updateTransformedTranscriptions = async (segments, setState, appointmentDa
125402
125745
  }
125403
125746
  };
125404
125747
 
125748
+ const sleep = async (ms) => {
125749
+ return new Promise((resolve) => setTimeout(resolve, ms));
125750
+ };
125751
+
125405
125752
  const TranscriptionApi = {
125406
125753
  createTranscription: async (data) => {
125407
125754
  try {
@@ -125906,7 +126253,7 @@ const ReportButton = ({ onFillClick }) => {
125906
126253
  return jsxRuntimeExports.jsxs("div", { className: "omniscribe_report-button-container", children: [renderContent(), jsxRuntimeExports.jsx(LoadingModal, { isLoading: transcriptorLoader || generating || loading, message: loading ? "Por favor espera mientras rellenamos con el reporte" : void 0 })] });
125907
126254
  };
125908
126255
 
125909
- const CustomSelect = ({ options, onChange, selectedNumber = 0 }) => {
126256
+ const CustomSelect = ({ options, onChange, selectedNumber = 0, maxVisibleItems }) => {
125910
126257
  const dropdownRef = reactExports.useRef(null);
125911
126258
  const [selected, setSelected] = reactExports.useState(options[selectedNumber]);
125912
126259
  const [isOpen, setIsOpen] = reactExports.useState(false);
@@ -125946,7 +126293,9 @@ const CustomSelect = ({ options, onChange, selectedNumber = 0 }) => {
125946
126293
  height: "calc(var(--spacing) * 5)",
125947
126294
  color: "var(--color-gray-900)",
125948
126295
  marginLeft: "calc(var(--spacing) * 2)"
125949
- } })] }), isOpen && jsxRuntimeExports.jsx("div", { className: "omniscribe_select-content-container", children: jsxRuntimeExports.jsx("ul", { className: "omniscribe_select-content-ul scrollbar-pretty", children: options.map((option) => jsxRuntimeExports.jsxs("li", { onMouseDown: (e) => {
126296
+ } })] }), isOpen && jsxRuntimeExports.jsx("div", { className: "omniscribe_select-content-container", children: jsxRuntimeExports.jsx("ul", { className: "omniscribe_select-content-ul scrollbar-pretty", style: maxVisibleItems ? {
126297
+ maxHeight: `calc(var(--spacing) * ${maxVisibleItems * 11} + var(--spacing) * 2)`
126298
+ } : void 0, children: options.map((option) => jsxRuntimeExports.jsxs("li", { onMouseDown: (e) => {
125950
126299
  e.stopPropagation();
125951
126300
  e.preventDefault();
125952
126301
  }, onClick: (e) => handleChangeSelect(option, e), className: "omniscribe_select-content-li", children: [jsxRuntimeExports.jsxs("span", { className: "omniscribe_select-content-li-span", children: [option.icon ?? null, formatMessage({
@@ -126098,39 +126447,48 @@ const LanguageIcon = ({ className, width = 16, height = 17, stroke = "#4A5364" }
126098
126447
  return jsxRuntimeExports.jsxs("svg", { width, height, className, viewBox: "0 0 16 17", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M7.99967 15.1667C11.6816 15.1667 14.6663 12.1819 14.6663 8.50004C14.6663 4.81814 11.6816 1.83337 7.99967 1.83337C4.31778 1.83337 1.33301 4.81814 1.33301 8.50004C1.33301 12.1819 4.31778 15.1667 7.99967 15.1667Z", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M7.99967 1.83337C6.28783 3.63081 5.33301 6.01787 5.33301 8.50004C5.33301 10.9822 6.28783 13.3693 7.99967 15.1667C9.71152 13.3693 10.6663 10.9822 10.6663 8.50004C10.6663 6.01787 9.71152 3.63081 7.99967 1.83337Z", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M1.33301 8.5H14.6663", stroke, strokeLinecap: "round", strokeLinejoin: "round" })] });
126099
126448
  };
126100
126449
 
126450
+ const ChatIcon = ({ className, width = 16, height = 16, strokeWidth = 1, stroke = "currentColor" }) => {
126451
+ return jsxRuntimeExports.jsxs("svg", { width, height, viewBox: "0 0 16 16", fill: "none", stroke, strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", className, children: [jsxRuntimeExports.jsx("path", { d: "M1.99462 10.8951C2.09265 11.1424 2.11447 11.4133 2.05729 11.6731L1.34729 13.8664C1.32441 13.9777 1.33033 14.0929 1.36447 14.2012C1.39862 14.3095 1.45987 14.4073 1.5424 14.4853C1.62494 14.5633 1.72603 14.6189 1.83609 14.6469C1.94615 14.6749 2.06153 14.6742 2.17129 14.6451L4.44662 13.9798C4.69177 13.9312 4.94564 13.9524 5.17929 14.0411C6.60288 14.7059 8.21553 14.8466 9.73272 14.4383C11.2499 14.0299 12.5741 13.0989 13.4718 11.8094C14.3694 10.5198 14.7827 8.95472 14.6388 7.39015C14.4949 5.82557 13.8031 4.36209 12.6853 3.25791C11.5676 2.15373 10.0958 1.47981 8.52955 1.35504C6.96333 1.23028 5.40338 1.6627 4.12492 2.57601C2.84646 3.48931 1.93164 4.82481 1.54189 6.34687C1.15213 7.86894 1.31247 9.47975 1.99462 10.8951Z" }), jsxRuntimeExports.jsx("path", { d: "M5.3335 8H5.34016" }), jsxRuntimeExports.jsx("path", { d: "M8 8H8.00667" }), jsxRuntimeExports.jsx("path", { d: "M10.6665 8H10.6732" })] });
126452
+ };
126453
+
126101
126454
  const DocumentTemplateIcon = ({ className, width = 16, height = 17, stroke = "#252A32" }) => {
126102
126455
  return jsxRuntimeExports.jsxs("svg", { width, height, className, viewBox: "0 0 16 17", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M13.3333 2.5H2.66667C2.29848 2.5 2 2.79848 2 3.16667V6.5C2 6.86819 2.29848 7.16667 2.66667 7.16667H13.3333C13.7015 7.16667 14 6.86819 14 6.5V3.16667C14 2.79848 13.7015 2.5 13.3333 2.5Z", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M6 9.83337H2.66667C2.29848 9.83337 2 10.1319 2 10.5V13.8334C2 14.2016 2.29848 14.5 2.66667 14.5H6C6.36819 14.5 6.66667 14.2016 6.66667 13.8334V10.5C6.66667 10.1319 6.36819 9.83337 6 9.83337Z", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M13.333 9.83337H9.99967C9.63148 9.83337 9.33301 10.1319 9.33301 10.5V13.8334C9.33301 14.2016 9.63148 14.5 9.99967 14.5H13.333C13.7012 14.5 13.9997 14.2016 13.9997 13.8334V10.5C13.9997 10.1319 13.7012 9.83337 13.333 9.83337Z", stroke, strokeLinecap: "round", strokeLinejoin: "round" })] });
126103
126456
  };
126104
126457
 
126458
+ const BookTextIcon = ({ className, width = 16, height = 16, stroke = "currentColor" }) => {
126459
+ return jsxRuntimeExports.jsxs("svg", { width, height, className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M2.66699 13V2.99998C2.66699 2.55795 2.84259 2.13403 3.15515 1.82147C3.46771 1.50891 3.89163 1.33331 4.33366 1.33331H12.667C12.8438 1.33331 13.0134 1.40355 13.1384 1.52858C13.2634 1.6536 13.3337 1.82317 13.3337 1.99998V14C13.3337 14.1768 13.2634 14.3464 13.1384 14.4714C13.0134 14.5964 12.8438 14.6666 12.667 14.6666H4.33366C3.89163 14.6666 3.46771 14.4911 3.15515 14.1785C2.84259 13.8659 2.66699 13.442 2.66699 13ZM2.66699 13C2.66699 12.558 2.84259 12.134 3.15515 11.8215C3.46771 11.5089 3.89163 11.3333 4.33366 11.3333H13.3337", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M5.33301 8.66667L7.99967 4L10.6663 8.66667", stroke, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M6.06641 7.33331H9.86641", stroke, strokeLinecap: "round", strokeLinejoin: "round" })] });
126460
+ };
126461
+
126105
126462
  const CONFIG_OPTIONS = [
126463
+ {
126464
+ id: "language",
126465
+ titleId: "Language",
126466
+ descriptionId: "Select the language options.",
126467
+ IconComponent: LanguageIcon
126468
+ },
126106
126469
  {
126107
126470
  id: "microphone",
126108
126471
  titleId: "Microphone",
126109
- descriptionId: "Select the input microphone to ensure proper functioning of SofIA Scribe",
126110
- IconComponent: MicrophoneIcon,
126111
- isImplemented: true
126472
+ descriptionId: "Select the input microphone to ensure proper functioning",
126473
+ IconComponent: MicrophoneIcon
126112
126474
  },
126113
126475
  {
126114
- id: "language",
126115
- titleId: "Language options",
126116
- descriptionId: "Select the interface language and the language in which the clinical note is generated in addition to the language for transcription",
126117
- IconComponent: LanguageIcon,
126118
- isImplemented: true
126476
+ id: "chat",
126477
+ titleId: "Chat",
126478
+ descriptionId: "Customize the patient summary and chat sources.",
126479
+ IconComponent: ChatIcon
126119
126480
  },
126120
126481
  {
126121
126482
  id: "template",
126122
126483
  titleId: "Clinical note template",
126123
- descriptionId: "Customize the clinical note by indicating to the AI how to write and organize consultation information in each field",
126124
- IconComponent: DocumentTemplateIcon,
126125
- isImplemented: true
126126
- // Now implemented
126484
+ descriptionId: "Customize the clinical note depending on the report you are filling out.",
126485
+ IconComponent: DocumentTemplateIcon
126127
126486
  },
126128
126487
  {
126129
126488
  id: "dictionary",
126130
126489
  titleId: "Clinical dictionary",
126131
126490
  descriptionId: "Customize clinical language and medication format",
126132
- IconComponent: BookTextIcon,
126133
- isImplemented: true
126491
+ IconComponent: BookTextIcon
126134
126492
  }
126135
126493
  ];
126136
126494
  const CONFIG_UI_CONSTANTS = {
@@ -126160,7 +126518,6 @@ const useConfigurationLogic = () => {
126160
126518
  const IconComponent = option.IconComponent;
126161
126519
  return {
126162
126520
  id: option.id,
126163
- isImplemented: option.isImplemented,
126164
126521
  title: formatMessage({ id: option.titleId }),
126165
126522
  description: formatMessage({ id: option.descriptionId }),
126166
126523
  icon: reactExports.createElement(IconComponent, {
@@ -126403,7 +126760,7 @@ const LanguageSelector = () => {
126403
126760
  const { code } = await getLanguageByCode(value);
126404
126761
  await updateLanguage(code);
126405
126762
  };
126406
- return jsxRuntimeExports.jsx("div", { className: "w-full", "data-testid": "language-selector", children: jsxRuntimeExports.jsx(CustomSelect, { options: langOptions, onChange: handleLanguageChange, selectedNumber, className: "w-full" }) });
126763
+ return jsxRuntimeExports.jsx("div", { className: "w-full", "data-testid": "language-selector", children: jsxRuntimeExports.jsx(CustomSelect, { options: langOptions, onChange: handleLanguageChange, selectedNumber, className: "w-full", maxVisibleItems: 3 }) });
126407
126764
  };
126408
126765
 
126409
126766
  const TranscriptionLanguageSelector = () => {
@@ -126421,7 +126778,7 @@ const TranscriptionLanguageSelector = () => {
126421
126778
  logger.settingsError("Error updating transcription language:", error);
126422
126779
  }
126423
126780
  };
126424
- return jsxRuntimeExports.jsx("div", { className: "w-full", "data-testid": "transcription-language-selector", children: jsxRuntimeExports.jsx(CustomSelect, { options: transcriptionLanguageOptions, onChange: handleTranscriptionLanguageChange, selectedNumber: getSelectedIndex, className: "w-full" }) });
126781
+ return jsxRuntimeExports.jsx("div", { className: "w-full", "data-testid": "transcription-language-selector", children: jsxRuntimeExports.jsx(CustomSelect, { options: transcriptionLanguageOptions, onChange: handleTranscriptionLanguageChange, selectedNumber: getSelectedIndex, className: "w-full", maxVisibleItems: 4 }) });
126425
126782
  };
126426
126783
 
126427
126784
  const ConfigSection = ({ description, children, className = "" }) => {
@@ -126431,13 +126788,169 @@ const ConfigSection = ({ description, children, className = "" }) => {
126431
126788
  const Language = ({ onBack }) => {
126432
126789
  const { formatMessage } = useIntl();
126433
126790
  const { chatApp } = useApiConfigContext();
126434
- return jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-content", children: [jsxRuntimeExports.jsx(SubscreenHeader, { title: formatMessage({ id: "Language options" }), onBack }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-subscreen-content", children: [jsxRuntimeExports.jsx(ConfigSection, { description: formatMessage({
126791
+ return jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-content", children: [jsxRuntimeExports.jsx(SubscreenHeader, { title: formatMessage({ id: "Language" }), onBack }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-subscreen-content", children: [jsxRuntimeExports.jsx(ConfigSection, { description: formatMessage({
126435
126792
  id: "Select the interface language and the language in which the clinical note is generated"
126436
126793
  }), children: jsxRuntimeExports.jsx(LanguageSelector, {}) }), !chatApp && jsxRuntimeExports.jsx(ConfigSection, { description: formatMessage({
126437
126794
  id: "Select the language for audio transcription"
126438
126795
  }), children: jsxRuntimeExports.jsx(TranscriptionLanguageSelector, {}) })] }), jsxRuntimeExports.jsx(VersionSection, {})] });
126439
126796
  };
126440
126797
 
126798
+ const Toggle = ({ checked, onChange, label, enabledText = "Enabled", disabledText = "Disabled", disabled = false, className = "", id }) => {
126799
+ const handleClick = () => {
126800
+ if (!disabled) {
126801
+ onChange(!checked);
126802
+ }
126803
+ };
126804
+ const handleKeyDown = (e) => {
126805
+ if ((e.key === "Enter" || e.key === " ") && !disabled) {
126806
+ e.preventDefault();
126807
+ onChange(!checked);
126808
+ }
126809
+ };
126810
+ return jsxRuntimeExports.jsxs("div", { className: `omniscribe_toggle-container ${className}`.trim(), children: [jsxRuntimeExports.jsx("span", { className: "omniscribe_toggle-label", children: label }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_toggle-wrapper", children: [jsxRuntimeExports.jsx("div", { className: `omniscribe_toggle-switch ${checked ? "omniscribe_toggle-switch-checked" : ""} ${disabled ? "omniscribe_toggle-switch-disabled" : ""}`.trim(), onClick: handleClick, onKeyDown: handleKeyDown, role: "switch", "aria-checked": checked, "aria-labelledby": id, tabIndex: disabled ? -1 : 0, children: jsxRuntimeExports.jsx("div", { className: "omniscribe_toggle-thumb" }) }), jsxRuntimeExports.jsx("span", { className: "omniscribe_toggle-status", children: checked ? enabledText : disabledText })] })] });
126811
+ };
126812
+
126813
+ const Separator = ({ className = "", orientation = "horizontal", decorative = true, ...props }) => {
126814
+ return jsxRuntimeExports.jsx("div", { className: `omniscribe_separator omniscribe_separator--${orientation} ${className}`.trim(), role: !decorative ? "separator" : void 0, "aria-orientation": !decorative ? orientation : void 0, ...props });
126815
+ };
126816
+
126817
+ const ExternalLinkIcon = ({ className, onClick }) => jsxRuntimeExports.jsxs("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", className, onClick, style: { cursor: onClick ? "pointer" : "default" }, children: [jsxRuntimeExports.jsx("path", { d: "M7.5 1.5H10.5V4.5", stroke: "#105BDB", strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M5 7L10.5 1.5", stroke: "#105BDB", strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntimeExports.jsx("path", { d: "M9 6.5V9.5C9 9.76522 8.89464 10.0196 8.70711 10.2071C8.51957 10.3946 8.26522 10.5 8 10.5H2.5C2.23478 10.5 1.98043 10.3946 1.79289 10.2071C1.60536 10.0196 1.5 9.76522 1.5 9.5V4C1.5 3.73478 1.60536 3.48043 1.79289 3.29289C1.98043 3.10536 2.23478 3 2.5 3H5.5", stroke: "#105BDB", strokeLinecap: "round", strokeLinejoin: "round" })] });
126818
+
126819
+ const SourceItem = ({ source, onToggle }) => {
126820
+ const handleIconClick = () => {
126821
+ if (source.url) {
126822
+ window.open(source.url, "_blank", "noopener,noreferrer");
126823
+ }
126824
+ };
126825
+ return jsxRuntimeExports.jsxs("div", { className: "omniscribe_source-item", children: [jsxRuntimeExports.jsxs("label", { className: "omniscribe_source-label", children: [jsxRuntimeExports.jsx("input", { type: "checkbox", checked: source.selected, onChange: () => onToggle(source.id), className: "omniscribe_source-checkbox" }), jsxRuntimeExports.jsx("span", { className: "omniscribe_source-name", children: source.name })] }), jsxRuntimeExports.jsx(ExternalLinkIcon, { className: "omniscribe_source-external-icon", onClick: handleIconClick })] });
126826
+ };
126827
+
126828
+ const chatSourceToSource = (chatSource, selected) => ({
126829
+ ...chatSource,
126830
+ selected
126831
+ });
126832
+ const SourceSelector = ({ sources, onSourceToggle, isPromptActive = false }) => {
126833
+ const { formatMessage } = useIntl();
126834
+ return jsxRuntimeExports.jsxs("div", { className: "omniscribe_source-selector", children: [jsxRuntimeExports.jsx("span", { className: "omniscribe_source-selector-title", children: formatMessage({ id: "Sources" }) }), jsxRuntimeExports.jsx("span", { className: "omniscribe_source-selector-description", children: formatMessage({
126835
+ id: "Select the sources you want the AI to use for reasoning"
126836
+ }) }), jsxRuntimeExports.jsx("div", { className: `omniscribe_source-list ${isPromptActive ? "omniscribe_source-list--compact" : ""}`.trim(), children: sources.map((source) => jsxRuntimeExports.jsx(SourceItem, { source: {
126837
+ id: source.url || source.title || "unknown",
126838
+ // Use URL as primary ID for toggle functionality
126839
+ name: source.title,
126840
+ // Map title to name
126841
+ selected: source.selected,
126842
+ url: source.url
126843
+ // Pass URL for external links
126844
+ }, onToggle: onSourceToggle }, source.url || source.title || "unknown")) })] });
126845
+ };
126846
+
126847
+ const PromptCustomization = ({ localPrompt, characterCount, maxCharacters, onPromptChange, onPromptBlur }) => {
126848
+ const { formatMessage } = useIntl();
126849
+ return jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-prompt-section", children: [jsxRuntimeExports.jsx("h3", { className: "omniscribe_chat-prompt-title", children: formatMessage({ id: "Patient summary customization" }) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-prompt-container", children: [jsxRuntimeExports.jsx("textarea", { className: "omniscribe_chat-prompt-textarea", value: localPrompt, onChange: onPromptChange, onBlur: onPromptBlur, placeholder: formatMessage({
126850
+ id: "Don't leave out relevant information..."
126851
+ }), rows: 4 }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-character-count", children: [characterCount, "/", maxCharacters, " ", formatMessage({ id: "{count} characters" }, { count: "" }).replace(/\d+ /, "")] })] })] });
126852
+ };
126853
+
126854
+ const useDebounce = (value, delay) => {
126855
+ const [debouncedValue, setDebouncedValue] = reactExports.useState(value);
126856
+ reactExports.useEffect(() => {
126857
+ const handler = setTimeout(() => {
126858
+ setDebouncedValue(value);
126859
+ }, delay);
126860
+ return () => {
126861
+ clearTimeout(handler);
126862
+ };
126863
+ }, [value, delay]);
126864
+ return debouncedValue;
126865
+ };
126866
+ const Chat = ({ onBack }) => {
126867
+ const { formatMessage } = useIntl();
126868
+ const { summary, updateSummary, availableSources = [], sources: settingsSources = [], updateSources } = useSettingsContext();
126869
+ const [selectedSources, setSelectedSources] = reactExports.useState(() => Array.isArray(settingsSources) && settingsSources.length > 0 ? settingsSources : availableSources);
126870
+ const isSavingSourcesRef = reactExports.useRef(false);
126871
+ const pendingSourcesRef = reactExports.useRef(null);
126872
+ const [characterCount, setCharacterCount] = reactExports.useState(0);
126873
+ const [localPrompt, setLocalPrompt] = reactExports.useState("");
126874
+ const [isInitialized, setIsInitialized] = reactExports.useState(false);
126875
+ const maxCharacters = 1e3;
126876
+ const currentSummary = reactExports.useMemo(() => ({
126877
+ prompt: typeof summary?.prompt === "string" ? summary.prompt : "",
126878
+ isEnabled: typeof summary?.isEnabled === "boolean" ? summary.isEnabled : false
126879
+ }), [summary]);
126880
+ const debouncedPrompt = useDebounce(localPrompt, 500);
126881
+ reactExports.useEffect(() => {
126882
+ setLocalPrompt(currentSummary.prompt);
126883
+ setCharacterCount(currentSummary.prompt.length);
126884
+ setIsInitialized(true);
126885
+ }, [summary]);
126886
+ reactExports.useEffect(() => {
126887
+ if (isInitialized && debouncedPrompt !== currentSummary.prompt && updateSummary && !(debouncedPrompt === "" && currentSummary.prompt !== "")) {
126888
+ const newConfig = { ...currentSummary, prompt: debouncedPrompt };
126889
+ updateSummary(newConfig).catch((error) => {
126890
+ logger.settingsError("Error updating summary prompt:", error);
126891
+ });
126892
+ }
126893
+ }, [debouncedPrompt, currentSummary, updateSummary, isInitialized]);
126894
+ const handleToggleChange = async (enabled) => {
126895
+ if (!updateSummary)
126896
+ return;
126897
+ const newConfig = { ...currentSummary, isEnabled: enabled };
126898
+ try {
126899
+ await updateSummary(newConfig);
126900
+ } catch (error) {
126901
+ logger.settingsError("Error updating summary toggle:", error);
126902
+ }
126903
+ };
126904
+ const handlePromptChange = (e) => {
126905
+ const value = e.target.value;
126906
+ if (value.length <= maxCharacters) {
126907
+ setLocalPrompt(value);
126908
+ setCharacterCount(value.length);
126909
+ }
126910
+ };
126911
+ const handlePromptBlur = async () => {
126912
+ if (localPrompt !== currentSummary.prompt && updateSummary) {
126913
+ const newConfig = { ...currentSummary, prompt: localPrompt };
126914
+ try {
126915
+ await updateSummary(newConfig);
126916
+ } catch (error) {
126917
+ logger.settingsError("Error updating summary on blur:", error);
126918
+ }
126919
+ }
126920
+ };
126921
+ const saveSourcesNow = async (sources) => {
126922
+ isSavingSourcesRef.current = true;
126923
+ try {
126924
+ await updateSources(sources);
126925
+ } catch (error) {
126926
+ logger.settingsError("Error saving sources:", error);
126927
+ } finally {
126928
+ isSavingSourcesRef.current = false;
126929
+ if (pendingSourcesRef.current) {
126930
+ const next = pendingSourcesRef.current;
126931
+ pendingSourcesRef.current = null;
126932
+ saveSourcesNow(next);
126933
+ }
126934
+ }
126935
+ };
126936
+ const handleSourceToggle = (sourceUrl) => {
126937
+ const source = availableSources.find((s) => s.url === sourceUrl);
126938
+ if (!source)
126939
+ return;
126940
+ setSelectedSources((prev) => {
126941
+ const isSelected = prev.some((s) => s.url === sourceUrl);
126942
+ const next = isSelected ? prev.filter((s) => s.url !== sourceUrl) : [...prev, source];
126943
+ if (isSavingSourcesRef.current) {
126944
+ pendingSourcesRef.current = next;
126945
+ } else {
126946
+ saveSourcesNow(next);
126947
+ }
126948
+ return next;
126949
+ });
126950
+ };
126951
+ return jsxRuntimeExports.jsxs("div", { className: "omniscribe_config-content", children: [jsxRuntimeExports.jsx(SubscreenHeader, { title: formatMessage({ id: "Chat" }), onBack }), jsxRuntimeExports.jsx("div", { className: "omniscribe_config-subscreen-content", children: jsxRuntimeExports.jsx(ConfigSection, { children: jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-config", children: [jsxRuntimeExports.jsx(Toggle, { checked: currentSummary.isEnabled, onChange: handleToggleChange, label: formatMessage({ id: "Show patient summary first" }), enabledText: formatMessage({ id: "Enabled" }), disabledText: formatMessage({ id: "Disabled" }) }), currentSummary.isEnabled && jsxRuntimeExports.jsx(PromptCustomization, { localPrompt, characterCount, maxCharacters, onPromptChange: handlePromptChange, onPromptBlur: handlePromptBlur }), availableSources && availableSources.length > 0 && jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(Separator, {}), jsxRuntimeExports.jsx(SourceSelector, { sources: availableSources.map((source) => chatSourceToSource(source, selectedSources.some((s) => s.url === source.url))), onSourceToggle: handleSourceToggle, isPromptActive: currentSummary.isEnabled })] })] }) }) })] });
126952
+ };
126953
+
126441
126954
  function Input({ className = "omniscribe_input", type = "text", error, showError = true, errorClassName = "omniscribe_input-error", isValid = true, ...props }) {
126442
126955
  const inputClassName = `${className} ${!isValid && error ? "invalid" : ""}`.trim();
126443
126956
  return jsxRuntimeExports.jsxs("div", { className: "omniscribe_input-container", children: [jsxRuntimeExports.jsx("input", { type, "data-slot": "input", className: inputClassName, "aria-invalid": !isValid, "aria-describedby": error && showError ? `${props.id}-error` : void 0, ...props }), showError && error && jsxRuntimeExports.jsx("span", { id: `${props.id}-error`, className: errorClassName, role: "alert", "aria-live": "polite", children: error })] });
@@ -126735,7 +127248,7 @@ const useTemplateLogic = (onBack) => {
126735
127248
  });
126736
127249
  }
126737
127250
  const templateString = JSON.stringify(modifiedTemplate);
126738
- let templateId = contextTemplateId;
127251
+ const templateId = contextTemplateId;
126739
127252
  const settingsToUpdate = {
126740
127253
  template: templateString
126741
127254
  };
@@ -126793,6 +127306,7 @@ const useScreenRenderers = (handleBackToMain) => {
126793
127306
  const screenRenderers = reactExports.useMemo(() => ({
126794
127307
  microphone: () => jsxRuntimeExports.jsx(Microphone, { onBack: handleBackToMain }),
126795
127308
  language: () => jsxRuntimeExports.jsx(Language, { onBack: handleBackToMain }),
127309
+ chat: () => jsxRuntimeExports.jsx(Chat, { onBack: handleBackToMain }),
126796
127310
  template: () => jsxRuntimeExports.jsx(Template, { onBack: handleBackToMain }),
126797
127311
  dictionary: () => jsxRuntimeExports.jsx(Dictionary, { onBack: handleBackToMain })
126798
127312
  }), [handleBackToMain]);
@@ -126838,7 +127352,7 @@ const App = ({ title }) => {
126838
127352
  if (showConfig) {
126839
127353
  return jsxRuntimeExports.jsx(Configuration, {});
126840
127354
  }
126841
- return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(AudioRecorder, { isChat: shouldShowChat }), jsxRuntimeExports.jsx("div", { className: shouldShowChat ? "omniscribe_visible" : "omniscribe_hidden", children: jsxRuntimeExports.jsx(Chat, {}) })] });
127355
+ return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(AudioRecorder, { isChat: shouldShowChat }), jsxRuntimeExports.jsx("div", { className: shouldShowChat ? "omniscribe_visible" : "omniscribe_hidden", children: jsxRuntimeExports.jsx(Chat$1, {}) })] });
126842
127356
  };
126843
127357
  return jsxRuntimeExports.jsx(OmniscribeContainer, { width: WIDTH, height: HEIGHT, children: jsxRuntimeExports.jsxs(OmniscribeLayout, { children: [jsxRuntimeExports.jsx(MinimizeButton, { title }), jsxRuntimeExports.jsx(UtilityButtons, { isChat, setIsChat, showConfig, setShowConfig }), renderContent(), toast?.visible && jsxRuntimeExports.jsx(Toast, {})] }) });
126844
127358
  };
@@ -129689,7 +130203,7 @@ const zig$1 = /*#__PURE__*/_mergeNamespaces({
129689
130203
  default: zig
129690
130204
  }, [zigExports]);
129691
130205
 
129692
- const injectedCss = "/* Source: index.css */\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@700&family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap');\n\n#Omniscribe {\n font-family: 'Lato', sans-serif;\n /* define colors */\n --active: #0a3785;\n --background-primary: #e7effd;\n --warning: #ffc107;\n --grey-50: #f9fafb;\n --grey-100: #f6f7f9;\n --grey-200: #e5e7eb;\n --grey-700: #6f7d95;\n --grey-800: #4a5364;\n --grey-900: #111827;\n --active-black: #252a32;\n --placeholder: #a4adbc;\n --line: #e5e7ec;\n --custom-black: #13161a;\n --primary: #105bdb;\n --border: #e5e7ec;\n --white: #fdfdfd;\n --omni: #daf2ff;\n --omni-secondary: rgba(219, 219, 219, 0.75);\n --primary-button: #132caa;\n --primary-text: #36a3cf;\n --primary-900: #061044;\n --blue-100: #dbeafe;\n --blue-200: #bfdbfe;\n --blue-500: #105bdb;\n --blue-600: #2563eb;\n --blue-700: #1d4ed8;\n --report: var(--primary-button);\n --gray: #616161;\n --black: #1b2125;\n --sky-blue: #dbecff;\n --blue: #5886ba;\n --blue-600: #0b1962;\n --background: #f3f3f3bb;\n --foreground: oklch(0.145 0 0);\n --primary: #061044;\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.577 0.245 27.325);\n --light-border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.87 0 0);\n --radius: 0.625rem;\n /* TEXT */\n --text-3xs: 8px;\n --text-3xs--line-height: calc(0.5 / 0.25);\n --text-2xs: 10px;\n --text-2xs--line-height: calc(0.75 / 0.5);\n --text-xs: 12px;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 14px;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 16px;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 18px;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 20px;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 22px;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 24px;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 26px;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 28px;\n --text-5xl--line-height: 1;\n --text-6xl: 30px;\n --text-6xl--line-height: 1;\n --text-7xl: 32px;\n --text-7xl--line-height: 1;\n --text-8xl: 34px;\n --text-8xl--line-height: 1;\n --text-9xl: 46px;\n --text-9xl--line-height: 1;\n --font-weight-thin: 100;\n --font-weight-extralight: 200;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n --font-weight-black: 900;\n /* custom colors */\n --color-white: var(--white);\n --color-light-border: var(--light-border);\n --color-omni: var(--omni);\n --color-report: var(--report);\n --color-omni-secondary: var(--omni-secondary);\n --color-primary-text: var(--primary-text);\n --color-primary-900: var(--primary-900);\n --color-blue-500: var(--blue-500);\n --color-gray: var(--gray);\n --color-black: var(--black);\n --color-sky-blue: var(--sky-blue);\n --color-cream: var(--cream);\n --color-pink: var(--pink);\n --color-blue: var(--blue);\n --color-blue-600: var(--blue-600);\n --color-sky-blue-100: var(--sky-blue-100);\n --color-white-2: var(--white-2);\n --color-primary-700: var(--primary-700);\n --color-primary-500: var(--primary-500);\n --color-neutral-800: var(--neutral-800);\n --color-blue-2: var(--blue-2);\n --color-light-blue: var(--light-blue);\n --color-primary-100: var(--primary-100);\n --color-primary-300: var(--primary-300);\n --color-black-2: var(--black-2);\n --color-primary-button: var(--primary-button);\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-slate-200: oklch(92.9% 0.013 255.508);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: #f3f4f6;\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-900: oklch(21% 0.034 264.665);\n --color-zinc-900: oklch(21% 0.006 285.885);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n /* rounded */\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n /* spacing */\n --spacing-layout-w: var(--layout-w);\n --spacing-layout-h: var(--layout-h);\n --spacing: 0.25rem;\n /* size */\n --container-md: 28rem;\n --container-xl: 36rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n\n --tracking-tight: -0.025em;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n\n .no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n a,\n p,\n textarea,\n button,\n span,\n h1,\n h2,\n h3,\n h4,\n h5,\n div {\n font-family: 'Lato', sans-serif;\n }\n /* Hide scrollbar for IE, Edge and Firefox */\n .no-scrollbar {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n .shadow-inner-right {\n box-shadow: inset -9px 0 6px -1px rgb(0 0 0 / 0.02);\n }\n .shadow-inner-left {\n box-shadow: inset 9px 0 6px -1px rgb(0 0 0 / 0.02);\n }\n .annotation {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-normal);\n }\n .annotation-semi {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-semibold);\n }\n .annotation-bold {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-semibold);\n }\n .info {\n font-size: var(--text-2xs);\n font-weight: var(--font-weight-normal);\n }\n .info-semi {\n font-size: var(--text-2s);\n font-weight: var(--font-weight-semibold);\n }\n .info-bold {\n font-size: var(--text-2s);\n font-weight: var(--font-weight-semibold);\n }\n .text-p {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-normal);\n }\n .text-p-semi {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-semibold);\n }\n .text-p-bold {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-semibold);\n }\n .omniscribe_shadow-xl {\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n }\n .scrollbar-pretty {\n &::-webkit-scrollbar {\n width: 6px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n background-color: var(--omni-secondary);\n }\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n }\n\n .omniscribe_visible {\n visibility: visible;\n display: flex;\n flex: 1;\n }\n .omniscribe_hidden {\n display: none;\n height: 0;\n }\n\n .omniscribe_animate-spin {\n animation: spin 1s linear infinite;\n }\n}\n\n\n/* Source: modules/audio-recorder/components/audio-visualizer/AudioVisualizer.css */\n.omniscribe_audio-visualizer-container {\n display: flex;\n border-radius: var(--radius-md);\n width: calc(var(--spacing) * 60);\n align-items: center;\n justify-content: center;\n height: 60px;\n background: transparent;\n overflow: hidden;\n}\n\n.omniscribe_audio-visualizer-subcontainer {\n display: flex;\n align-items: center;\n justify-content: space-evenly;\n width: 100%;\n height: 100%;\n}\n\n.omniscribe_audio-visualizer-item-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding-inline: 1px;\n margin-top: 0.25rem;\n}\n\n.omniscribe_audio-visualizer-item {\n width: 2px;\n height: 2px;\n background-color: rgba(48, 54, 68, 0.85);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 50ms;\n}\n\n.lk-audio-bar-visualizer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n background: var(--lk-bg);\n gap: var(--lk-va-bar-gap, 24px);\n}\n.lk-audio-bar-visualizer > .lk-audio-bar {\n transform-origin: 'center';\n height: 100%;\n width: var(--lk-va-bar-width, 12px);\n border-radius: var(--lk-va-bar-border-radius, 32px);\n background-color: var(--lk-va-bar-bg, rgba(136, 136, 136, 0.2));\n transition: background-color 0.25s ease-out;\n}\n.lk-audio-bar-visualizer[data-lk-va-state='speaking'] > .lk-audio-bar,\n.lk-audio-bar-visualizer > .lk-audio-bar.lk-highlighted,\n.lk-audio-bar-visualizer > [data-lk-highlighted='true'] {\n background-color: var(--lk-fg, rgb(136, 136, 136));\n transition: none;\n}\n.lk-audio-bar-visualizer[data-lk-va-state='thinking'] {\n transition: background-color 0.15s ease-out;\n}\n\n\n/* Source: modules/audio-recorder/components/content-container/content-containter.css */\n.omniscribe_audio-content-container {\n background-color: var(--white);\n width: -webkit-fill-available;\n flex: 1 1 0 !important;\n min-height: 0 !important;\n display: flex !important;\n flex-direction: column !important;\n overflow: hidden !important;\n}\n\n.omniscribe_audio-content-messages {\n color: var(--black);\n}\n\n.omniscribe_transcription-footer-container {\n position: sticky;\n display: flex;\n flex-direction: column;\n align-items: center;\n bottom: 0;\n padding-bottom: calc(var(--spacing) * 3);\n}\n\n.omniscribe_audio-content-render {\n color: var(--black);\n font-weight: var(--font-weight-medium);\n padding-block: 0.5rem;\n padding-inline: 0.75rem;\n margin-bottom: 0.25rem;\n}\n\n.omniscribe_patient {\n color: #db10c1;\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_doctor {\n color: var(--blue-500);\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_speaker {\n color: #28a745;\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_transcription {\n color: var(--black);\n}\n\n.omniscribe_transcription-down-btn-container {\n background-color: white;\n}\n\n.omniscribe_transcription-down-btn {\n width: calc(0.25rem /* 4px */ * 4);\n height: calc(0.25rem /* 4px */ * 4);\n}\n\n/* Chrome, Safari, Edge (Webkit) */\n.omniscribe_audio-content-container > div::-webkit-scrollbar {\n width: 6px !important;\n}\n\n.omniscribe_audio-content-container > div::-webkit-scrollbar-thumb {\n border-radius: 10px !important;\n background-color: var(--omni-secondary) !important;\n}\n\n.omniscribe_audio-content-container > div::-webkit-scrollbar-track {\n background-color: transparent !important;\n}\n\n/* Firefox */\n.omniscribe_audio-content-container > div {\n scrollbar-width: thin !important;\n scrollbar-color: var(--omni-secondary) transparent !important;\n}\n\n\n/* Source: modules/audio-recorder/components/recorder-counter/RecorderCounter.css */\n.omniscribe_audio-recorder-timer {\n color: var(--blue-500);\n font-weight: 600; /* SemiBold */\n font-style: normal; /* SemiBold is a weight, not a style */\n font-size: var(--font-size-400); /* design token */\n line-height: var(--line-height-400); /* design token */\n letter-spacing: 0;\n text-align: center;\n}\n\n\n/* Source: modules/audio-recorder/components/report-button/ReportButton.css */\n.omniscribe_report-button-container {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.5rem;\n}\n.omniscribe_report-button-width {\n max-height: 32px;\n font-size: var(--text-xs) !important;\n}\n.omniscribe_regenerate-button-width {\n max-height: 32px;\n background-color: var(--blue-500) !important;\n font-size: var(--text-xs) !important;\n}\n.omniscribe_regenerate-button-width:hover {\n background-color: #0c48ad !important; /* darker shade of blue */\n}\n\n\n/* Source: modules/audio-recorder/components/toggle-record/ToggleRecord.css */\n.omniscribe_record-button-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.omniscribe_record-button-classname {\n background-color: transparent;\n border: none;\n padding: 4px;\n}\n\n.omniscribe_record-button {\n background-color: var(--primary-button);\n border-radius: 50%;\n cursor: pointer;\n width: 56px;\n height: 56px;\n align-items: center;\n justify-content: center;\n display: flex;\n transition-duration: 300ms;\n box-shadow:\n inset 0 2px 4px rgb(0 0 0 / 0.05),\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.omniscribe_record-button-enabled {\n opacity: 100%;\n pointer-events: auto;\n scale: 110%;\n &:hover {\n scale: 150%;\n }\n}\n.omniscribe_record-button-not-enabled {\n opacity: 50%;\n &:hover {\n scale: 150%;\n }\n}\n.omniscribe_record-button-disabled {\n opacity: 50%;\n background-color: dimgray;\n pointer-events: none;\n}\n\n.omniscribe_record-enabled {\n width: 50px;\n height: 50px;\n background-color: var(--primary-button);\n animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n position: absolute;\n z-index: -1;\n border-radius: calc(infinity * 1px);\n opacity: 100%;\n}\n\n@keyframes ping {\n 75%,\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n\n\n/* Source: modules/audio-recorder/section/AudioRecorder.css */\n.omniscribe_audio-recorder {\n align-items: center;\n padding-block: calc(var(--spacing) * 5);\n border-bottom-left-radius: 12px;\n background-color: var(--white);\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n\n[dir='ltr'] .omniscribe_audio-recorder {\n border-bottom-left-radius: 12px;\n}\n\n[dir='rtl'] .omniscribe_audio-recorder {\n border-bottom-right-radius: 12px;\n border-bottom-left-radius: 0px;\n}\n\n.omniscribe_audio-recorder-container {\n display: flex;\n align-items: center;\n border: solid 1px var(--light-border);\n background-color: var(--white);\n max-height: 42px;\n border-radius: 9999px;\n border-width: 1px;\n justify-content: space-between;\n margin-bottom: 5px;\n flex: 1;\n align-self: stretch;\n margin-inline: calc(var(--spacing) * 4);\n padding-inline: calc(var(--spacing) * 2);\n}\n\n.omniscribe_audio-recorder-audio-container {\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: center;\n}\n\n.omniscribe_audio-recorder-refresh-btn {\n cursor: pointer;\n background-color: #f6f7f9;\n border-radius: 100px;\n transition:\n transform 0.3s ease,\n opacity 0.3s ease,\n background-color 0.3s ease;\n transform: scale(1);\n}\n.omniscribe_audio-recorder-refresh-btn-enabled {\n pointer-events: auto;\n opacity: 1;\n\n &:hover {\n transform: scale(1.15);\n }\n}\n.omniscribe_audio-recorder-refresh-btn-disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n.omniscribe_audio-recorder-audio-content-container {\n border: 1px solid #e5e7ec;\n height: 100%;\n display: flex;\n flex-direction: column;\n flex: 1;\n border-radius: 8px;\n margin-top: 18px;\n padding-top: 8px;\n padding-inline: calc(var(--spacing) * 4);\n padding-bottom: 8px;\n align-self: stretch;\n margin-inline: calc(var(--spacing) * 4);\n}\n.omniscribe_audio-recorder-footer {\n border-top: 1px solid #e5e7ec;\n padding-top: 16px;\n margin-top: 12px;\n display: flex;\n width: 100%;\n}\n.omniscribe_audio-recorder-footer-content {\n padding-inline: calc(var(--spacing) * 4);\n width: 100%;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n.omniscribe_audio-recorder-audio-info {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: #6f7d95;\n padding-block: 8px;\n}\n\n.omniscribe_audio-recorder-audio-star-icons {\n display: flex;\n justify-content: center;\n gap: 4px;\n}\n\n.omniscribe_audio-recorder-audio-feedback {\n color: #4a5364;\n}\n\n.omniscribe_audio-recorder-refresh-icon {\n color: #252a32;\n}\n\n.omniscribe_audio-recorder-star-icon {\n cursor: pointer;\n display: inline-block;\n}\n\n.omniscribe_audio-recorder-audio-star-container {\n position: relative;\n}\n\n\n/* Source: modules/chat/components/MicrophoneButton.css */\n/* Microphone Button Styles */\n.microphone-button {\n transition: all 150ms ease;\n border: none !important;\n background-color: white !important;\n box-shadow: none !important;\n margin-right: 3px;\n}\n\n.microphone-button--recording {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n background-color: red !important;\n}\n\n/* Pulse animation for recording state */\n@keyframes pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n}\n\n\n/* Source: modules/chat/components/SourcesModal.css */\n/* SourcesModal CSS Styles */\n\n/* Modal container */\n.omniscribe_modal-sources {\n width: 100%;\n right: 10px;\n bottom: 100px;\n}\n\n.omniscribe_header_description {\n font-size: 0.875rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n color: #6b7280;\n margin-top: 0.25rem;\n}\n\n.omniscribe_icon_blue {\n color: var(--blue-500);\n}\n\n/* Filter section */\n.omniscribe_filter_section {\n padding: 1.5rem 0 0 0;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n}\n\n.omniscribe_filter_buttons {\n display: flex;\n gap: 0.5rem;\n margin-bottom: 1rem;\n}\n\n.omniscribe_button_all {\n padding: 0.25rem 0.75rem;\n color: var(--blue-700);\n border: 1px solid var(--blue-700);\n background-color: var(--blue-100);\n border-radius: 9999px;\n font-size: 0.875rem;\n cursor: pointer;\n transition: all 0.2s;\n font-family: inherit;\n}\n\n.omniscribe_button_all:hover {\n background-color: var(--blue-200);\n color: var(--blue-700);\n}\n\n.omniscribe_button_specialty {\n padding: 0.25rem 0.75rem;\n font-size: 0.875rem;\n font-weight: 700;\n color: #4b5563;\n background-color: #f6f7f9;\n border: 1px solid #d1d5db;\n border-radius: 9999px;\n cursor: not-allowed;\n opacity: 0.6;\n font-family: inherit;\n}\n\n.omniscribe_sources_count {\n font-size: 0.75rem;\n color: #6b7280;\n margin-bottom: 1rem;\n}\n\n/* Sources list section */\n.omniscribe_sources_container {\n padding: 0 0 1rem 0;\n max-height: 20rem;\n overflow-y: auto;\n}\n\n.omniscribe_sources_list {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n/* Source item */\n.omniscribe_source_item {\n padding: 0.75rem;\n border-radius: 8px;\n border: 1px solid var(--grey-200);\n cursor: pointer;\n transition: all 0.2s;\n background-color: white;\n margin: 0 0 0.5rem 0;\n}\n\n.omniscribe_source_item_selected {\n border-color: var(--blue-500);\n background-color: #eff6ff;\n}\n\n.omniscribe_source_content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.omniscribe_source_title_container {\n flex: 1;\n}\n\n.omniscribe_source_link {\n font-weight: 700;\n font-size: 14px;\n color: var(--blue-600) !important;\n text-decoration: none;\n transition: color 0.2s;\n}\n\n.omniscribe_source_link:hover {\n color: var(--blue-700) !important;\n}\n\n/* Footer section */\n.omniscribe_footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1.5rem 0 0 0;\n border-top: 1px solid var(--grey-200);\n margin-top: 1rem;\n}\n\n.omniscribe_button_outline {\n padding: 0.5rem 1rem;\n border: 1px solid #d1d5db;\n background-color: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n font-size: 0.875rem;\n font-weight: 500;\n font-family: inherit;\n}\n\n.omniscribe_button_outline:hover {\n background-color: var(--color-gray-100);\n border-color: #9ca3af;\n}\n\n.omniscribe_button_primary {\n padding: 0.5rem 1rem;\n background-color: var(--blue-500);\n color: white;\n border: 1px solid var(--blue-500);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n font-size: 0.875rem;\n font-weight: 500;\n font-family: inherit;\n}\n\n.omniscribe_button_primary:hover {\n background-color: var(--blue-600);\n border-color: var(--blue-600);\n}\n\n/* Utility classes */\n.omniscribe_hidden {\n display: none;\n}\n\n\n/* Source: modules/chat/components/thread/Thread.css */\n.omniscribe_thread-container {\n flex: 1;\n border-style: none;\n display: flex;\n overflow: hidden;\n background: transparent;\n bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n margin-block: calc(var(--spacing) * 0) /* 0rem = 0px */;\n right: 20px;\n border-bottom-left-radius: 12px;\n width: 100%;\n}\n\n.omniscribe_thread-container-history-cont {\n position: relative;\n display: flex;\n width: 0%;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-container-history-cont-open {\n width: 33%;\n}\n\n.omniscribe_thread-container-history-subcont {\n position: absolute;\n width: 100%;\n height: 100%;\n border-right-width: 1px;\n border-color: var(--color-slate-200)\n /* oklch(92.9% 0.013 255.508) = #e2e8f0 */;\n overflow: hidden;\n z-index: 20;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n.omniscribe_thread-container-history-subcont-open {\n translate: calc(var(--spacing) * 0);\n}\n\n.omniscribe_thread-container-history-subcont-close {\n translate: calc(300px * -1);\n}\n\n.omniscribe_thread-container-history-content {\n position: relative;\n height: 100%;\n width: 100%;\n}\n\n.omniscribe_thread-content-container {\n display: flex;\n flex: 1;\n width: 100%;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-content-btn-container {\n top: 0;\n left: 0;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--spacing) * 3);\n padding: calc(var(--spacing) * 2);\n padding-left: calc(var(--spacing) * 4);\n z-index: 10;\n}\n.omniscribe_absolute {\n position: absolute;\n}\n\n.omniscribe_relative {\n position: relative;\n}\n\n.omniscribe_thread-content-btn {\n background-color: #b2c3d6;\n}\n.omniscribe_thread-content-btn:hover {\n background-color: var(--color-gray-100);\n}\n\n.omniscribe_thread-content-btn-started-container {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: calc(var(--spacing) * 2);\n position: relative;\n}\n\n.omniscribe_thread-content-btn-started-subcontainer {\n position: absolute;\n left: 0;\n z-index: 10;\n top: calc(var(--spacing) * 2);\n}\n\n.omniscribe_thread-stick-to-bottom {\n font-size: 14px;\n}\n.omniscribe_thread-stick-to-bottom-content {\n position: absolute;\n inset: 0;\n overflow-y: scroll;\n overflow-x: hidden;\n display: grid;\n grid-template-rows: 1fr auto;\n}\n\n.omniscribe_thread-stick-to-bottom-content-class {\n padding-bottom: calc(var(--spacing) * 13);\n display: flex;\n flex-direction: column;\n padding-left: calc(var(--spacing) * 4);\n padding-right: calc(var(--spacing) * 4);\n min-width: 0;\n}\n\n.omniscribe_thread-footer-container {\n position: sticky;\n display: flex;\n background-color: white;\n flex-direction: column;\n align-items: center;\n bottom: 0;\n padding-inline: calc(var(--spacing) * 4);\n padding-top: calc(var(--spacing) * 1);\n border-bottom: 1px solid #e5e7ec;\n border-bottom-left-radius: 0.5rem;\n}\n\n.omniscribe_thread-footer-scroll-to-bottom {\n position: fixed;\n bottom: 17%;\n}\n.omniscribe_thread-footer-form-container {\n background-color: white;\n border-radius: 1rem;\n border: solid 1px var(--border);\n box-shadow: 0px 4px 4px 0px #00000040;\n margin-inline: auto;\n margin-bottom: calc(0.25rem /* 4px */ * 2);\n width: 100%;\n max-width: 48rem;\n position: relative;\n z-index: 10;\n}\n.omniscribe_thread-footer-form {\n display: grid;\n grid-template-rows: 1fr auto;\n max-width: var(--container-3xl) /* 48rem = 768px */;\n margin-inline: auto;\n}\n.omniscribe_thread-footer-textarea {\n resize: none;\n width: 100%;\n min-height: 20px;\n max-height: 56px;\n height: 20px;\n padding: 0 !important;\n overflow-y: auto;\n font-size: var(--font-size-100);\n outline: none;\n}\n\n.omniscribe_thread-footer-form-content {\n position: relative;\n display: flex;\n align-items: center;\n right: 0;\n bottom: 0;\n width: 100%;\n padding-block: 6px;\n}\n.omniscribe_thread-footer-form-btn {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n}\n.omniscribe_thread-footer-form-left-btns {\n display: flex;\n align-items: center;\n width: 100%;\n}\n.omniscribe_thread-down-btn {\n width: calc(0.25rem /* 4px */ * 4);\n height: calc(0.25rem /* 4px */ * 4);\n}\n\n.omniscribe_thread-footer-btns-container {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-right: 8px;\n}\n\n.omniscribe_thread-footer-info {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: #6f7d95;\n margin-bottom: 8px;\n}\n\n.omniscribe_thread-no-sources {\n width: 10px;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupMenu.css */\n.omniscribe_link-menu-container {\n width: 18rem;\n border-radius: 0.5rem;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n border: 1px solid var(--grey-200);\n background-color: #ffffff;\n}\n\n.omniscribe_link-menu-navigation {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n border-bottom: 1px solid var(--color-gray-100);\n background-color: var(--grey-50);\n border-top-left-radius: 0.5rem;\n border-top-right-radius: 0.5rem;\n}\n\n.omniscribe_nav-button {\n height: 1.5rem;\n width: 1.5rem;\n padding: 0.125rem;\n background-color: transparent;\n border: none;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 0.375rem;\n color: #6b7280;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.omniscribe_nav-button:hover {\n background-color: var(--color-gray-100);\n color: #374151;\n}\n\n.omniscribe_nav-button:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n box-shadow: 0 0 0 2px #3b82f6;\n}\n\n.omniscribe_nav-button:active {\n background-color: var(--grey-200);\n}\n\n.omniscribe_nav-icon {\n width: 0.875rem;\n height: 0.875rem;\n}\n\n.omniscribe_page-indicator {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n color: #4b5563;\n}\n\n.omniscribe_link-menu-content {\n padding: 0.375rem;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupMenuCard.css */\n.omniscribe_card-link {\n display: block;\n border-radius: 0.5rem;\n overflow: hidden;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 200ms;\n background-color: #ffffff;\n border: 1px solid var(--grey-200);\n text-decoration: none;\n}\n\n.omniscribe_card {\n border: 0;\n box-shadow: none;\n border-radius: 0.5rem;\n margin: 0;\n padding: 0;\n}\n\n.omniscribe_card:hover {\n background-color: var(--grey-50);\n}\n\n.omniscribe_card-header {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n border-bottom: 1px solid var(--color-gray-100);\n background-color: rgba(249, 250, 251, 0.5);\n}\n\n.omniscribe_favicon {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n\n.omniscribe_fallback-icon {\n width: 1rem;\n height: 1rem;\n border-radius: 0.125rem;\n background-color: #d1d5db;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.omniscribe_fallback-text {\n font-size: 8px;\n font-weight: 700;\n color: var(--grey-600);\n text-transform: uppercase;\n}\n\n.omniscribe_card-title {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n color: var(--grey-800);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-grow: 1;\n min-width: 0;\n margin: 0;\n}\n\n.omniscribe_card-content {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.omniscribe_card-content > * + * {\n margin-top: 0.25rem;\n}\n\n.omniscribe_link-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n color: var(--color-activeblack, #000000);\n line-height: 1.375;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.omniscribe_snippet-text {\n font-size: 0.75rem;\n line-height: 1rem;\n color: #4b5563;\n line-height: 1.625;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupPill.css */\n.omniscribe_pill-container {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n margin-left: 0.125rem;\n margin-right: 0.125rem;\n}\n\n.omniscribe_pill-button {\n display: inline-flex;\n align-items: center;\n border-radius: 9999px;\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n background-color: var(--blue-100);\n color: var(--blue-700);\n border: 1px solid var(--blue-200);\n transition-property:\n color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.omniscribe_pill-button:hover {\n background-color: var(--blue-200);\n}\n\n.omniscribe_pill-button:focus {\n background-color: var(--blue-200);\n outline: 2px solid transparent;\n outline-offset: 2px;\n box-shadow:\n 0 0 0 2px #3b82f6,\n 0 0 0 4px rgba(59, 130, 246, 0.1);\n}\n\n.omniscribe_pill-button--active {\n background-color: var(--blue-200);\n}\n\n.omniscribe_pill-domain {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@media (min-width: 640px) {\n .omniscribe_pill-domain {\n max-width: 200px;\n }\n}\n\n.omniscribe_pill-counter {\n margin-left: 0.375rem;\n background-color: var(--blue-200);\n color: #1e40af;\n border-radius: 9999px;\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n font-size: 10px;\n line-height: 1;\n font-weight: 600;\n}\n\n.omniscribe_menu-portal {\n position: absolute;\n z-index: 100;\n}\n\n\n/* Source: modules/chat/components/thread/components/PredefinedQuestions.css */\n.omniscribe_predefined-questions-container {\n margin-top: calc(var(--spacing) * 2) /* 1rem = 16px */;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n display: flex;\n flex-direction: column;\n}\n.omniscribe_predefined-questions-span {\n color: var(--black);\n}\n\n.omniscribe_predefined-title {\n margin-bottom: 8px;\n}\n\n.omniscribe_predefined-questions-msg-container {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_predefined-questions-content {\n background-color: #ecf9ff !important;\n text-align: left;\n padding-top: 4px;\n padding-right: 16px;\n padding-bottom: 4px;\n padding-left: 16px;\n border-radius: 4px;\n width: fit-content;\n height: fit-content;\n}\n\n.omniscribe_predefined-questions-btn-rounded {\n border-radius: 8px;\n}\n\n\n/* Source: modules/chat/components/thread/components/history/ThreadHistory.css */\n.omniscribe_thread-list-container {\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n overflow-x: hidden;\n padding-inline: calc(var(--spacing) * 1);\n}\n\n.omniscribe_thread-list-content {\n padding-bottom: calc(var(--spacing) * 16);\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.omniscribe_thread-list-item {\n width: 100%;\n padding-inline: 0;\n}\n\n.omniscribe_thread-list-btn {\n text-align: left;\n align-items: center !important;\n justify-content: flex-start !important;\n width: calc(100% - var(--spacing) * 2);\n border-radius: 4px !important;\n margin-bottom: 4px;\n font-weight: var(--font-weight-normal);\n padding-inline: calc(var(--spacing) * 1) !important;\n}\n\n.omniscribe_thread-list-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--Text-Active, #252a32);\n font-size: var(--Font-Size-font-size-100, 12px);\n font-style: normal;\n font-weight: var(--Font-Weight-Regular, 400);\n line-height: var(--Font-Line-Height-line-height-100, 14.4px);\n /* 120% */\n letter-spacing: var(--Font-Letter-Spacing-letter-spacing-100, 0.05px);\n}\n\n.omniscribe_thread-history-loading {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n align-items: flex-start;\n justify-content: flex-start;\n overflow-y: scroll;\n overflow-x: hidden;\n padding-inline: calc(var(--spacing) * 1);\n}\n\n.omniscribe_thread-history-loading-skeleton {\n width: 100%;\n height: calc(var(--spacing) * 10);\n}\n\n.omniscribe_thread-history-container {\n display: flex;\n flex-direction: column;\n border-right: 1px solid #e5e7ec;\n align-items: flex-start;\n justify-content: flex-start;\n /* gap: calc(var(--spacing) * 6); */\n height: 100%;\n flex-shrink: 0;\n}\n\n.omniscribe_thread-history-button-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n /* space between left group and back button */\n width: 92%;\n /* padding-top: calc(var(--spacing) * 2); */\n background: var(--Greyscale-100, #f6f7f9);\n /* padding-inline: calc(var(--spacing) * 2); */\n padding: 8px;\n}\n\n/* Flex container for the left group */\n.omniscribe_thread-history-left-group {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n /* space between icon and text */\n}\n\n.omniscribe_thread-history-left-text {\n color: var(--Greyscale-900, #252a32);\n font-size: var(--Font-Size-font-size-100, 12px);\n font-style: normal;\n font-weight: var(--Font-Weight-Regular, 400);\n line-height: var(--Font-Line-Height-line-height-100, 14.4px);\n /* 120% */\n letter-spacing: var(--Font-Letter-Spacing-letter-spacing-100, 0.05px);\n}\n\n.omniscribe_thread-history-chat-started-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1);\n background-color: color-mix(in oklab, var(--blue) 40%, transparent);\n width: stretch;\n width: -moz-available;\n width: -webkit-fill-available;\n width: fill-available;\n box-shadow:\n inset 0 2px 4px rgb(0 0 0 / 0.05),\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.omniscribe_thread-history-no-chat-started-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-inline: calc(var(--spacing) * 2);\n width: 100%;\n}\n\n.omniscribe_thread-history-chat-started-btn {\n border: none;\n background: transparent;\n padding: 0px;\n display: flex;\n flex-direction: row;\n gap: calc(var(--spacing) * 2);\n align-items: center;\n cursor: pointer;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-history-chat-started-btn-text {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n font-weight: var(--font-weight-semibold);\n letter-spacing: var(--tracking-tight);\n}\n\n.omniscribe_thread-history-title {\n color: var(--Button-Primary-Active, #105bdb);\n font-family: var(--Font-Family-Omniscribe, Lato);\n font-size: var(--Font-Size-font-size-100, 12px) !important;\n font-style: normal;\n line-height: var(--Font-Line-Height-line-height-100, 14.4px) !important;\n /* 120% */\n letter-spacing: var(\n --Font-Letter-Spacing-letter-spacing-100,\n 0.05px\n ) !important;\n cursor: pointer;\n padding-inline: calc(var(--spacing) * 2) !important;\n}\n\n.omniscribe_thread-history-btn {\n border-radius: var(--Radius-radius-small, 4px) !important;\n background-color: var(--Greyscale-300, #e5e7ec) !important;\n cursor: pointer;\n\n &:hover {\n background-color: var(--Greyscale-300, #e5e7ec);\n }\n}\n\n.omniscribe_thread-tooltip {\n padding: calc(0.25rem /* 4px */ * 4);\n}\n\n\n/* Source: modules/chat/components/thread/components/markdown-text.css */\n.omniscribe_markdown-code-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--spacing) * 4) /* 1rem = 16px */;\n border-top-left-radius: var(--radius) /* 0.25rem = 4px */;\n border-top-right-radius: var(--radius) /* 0.25rem = 4px */;\n background-color: var(--color-zinc-900)\n /* oklch(21% 0.006 285.885) = #18181b */;\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n color: var(--white);\n}\n\n.omniscribe_markdown-code-span {\n text-transform: lowercase;\n & > span {\n font-size: var(--text-xs) /* 0.75rem = 12px */;\n line-height: var(--text-xs--line-height) /* calc(1 / 0.75) ≈ 1.3333 */;\n }\n}\n\n.omniscribe_markdown-h1 {\n margin-bottom: calc(var(--spacing) * 8) /* 2rem = 32px */;\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-4xl) /* 2.25rem = 36px */;\n line-height: var(--text-4xl--line-height) /* calc(2.5 / 2.25) ≈ 1.1111 */;\n font-weight: var(--font-weight-extrabold) /* 800 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h2 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 8) /* 2rem = 32px */;\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-3xl) /* 1.875rem = 30px */;\n line-height: var(--text-3xl--line-height) /* calc(2.25 / 1.875) ≈ 1.2 */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n.omniscribe_markdown-h3 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 6);\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-2xl);\n line-height: var(--text-2xl--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h4 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 6);\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-xl);\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n.omniscribe_markdown-h5 {\n margin-block: calc(var(--spacing) * 4) /* 1rem = 16px */;\n font-size: var(--text-lg);\n line-height: var(--text-lg--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h6 {\n margin-block: calc(var(--spacing) * 4) /* 1rem = 16px */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-p {\n margin-block: calc(var(--spacing) * 2.5);\n line-height: calc(var(--spacing) * 5);\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-a {\n color: var(--primary);\n font-weight: var(--font-weight-medium) /* 500 */;\n text-decoration-line: underline;\n text-underline-offset: 4px;\n overflow-wrap: break-word;\n}\n\n.omniscribe_markdown-blockquote {\n border-left-width: 2px;\n padding-left: calc(var(--spacing) * 6) /* 1.5rem = 24px */;\n font-style: italic;\n}\n\n.omniscribe_markdown-ul {\n list-style-type: disc;\n padding-inline-start: 20px;\n word-break: break-word;\n & > li {\n margin-top: calc(var(--spacing) * 1) /* 0.5rem = 8px */;\n }\n}\n\n.omniscribe_markdown-ol {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n margin-left: calc(var(--spacing) * 6) /* 1.5rem = 24px */;\n list-style-type: decimal;\n & > li {\n margin-top: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n }\n}\n\n.omniscribe_markdown-hr {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n border-bottom-width: 1px;\n}\n.omniscribe_markdown-table {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n width: 100%;\n border-collapse: separate;\n border-spacing: calc(var(--spacing) * 0) /* 0rem = 0px */;\n overflow-y: auto;\n}\n.omniscribe_markdown-th {\n background-color: var(--muted);\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n text-align: left;\n font-weight: var(--font-weight-bold) /* 700 */;\n &:first-child {\n border-top-left-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &:last-child {\n border-top-right-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &[align='center'] {\n text-align: center;\n }\n &[align='right'] {\n text-align: right;\n }\n}\n\n.omniscribe_markdown-td {\n border-bottom-width: 1px;\n border-left-width: 1px;\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n text-align: left;\n &:last-child {\n border-right-width: 1px;\n }\n &[align='center'] {\n text-align: center;\n }\n &[align='right'] {\n text-align: right;\n }\n}\n\n.omniscribe_markdown-tr {\n margin: calc(var(--spacing) * 0) /* 0rem = 0px */;\n &:first-child {\n border-top-width: 1px;\n }\n &:last-child > td:first-child {\n border-bottom-left-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &:last-child > td:last-child {\n border-bottom-right-radius: var(--radius) /* 0.25rem = 4px */;\n }\n}\n\n.omniscribe_markdown-sup {\n font-size: var(--text-xs) /* 0.75rem = 12px */;\n line-height: var(--text-xs--line-height) /* calc(1 / 0.75) ≈ 1.3333 */;\n & > a {\n text-decoration-line: none;\n }\n}\n\n.omniscribe_markdown-pre {\n overflow-x: auto;\n border-bottom-right-radius: var(--radius) /* 0.25rem = 4px */;\n border-bottom-left-radius: var(--radius) /* 0.25rem = 4px */;\n background-color: var(--black);\n padding: calc(var(--spacing) * 4) /* 1rem = 16px */;\n color: var(--white);\n max-width: var(--container-4xl) /* 56rem = 896px */;\n}\n\n.omniscribe_markdown-code {\n border-radius: 0.25rem /* 4px */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n}\n\n.omniscribe_markdown-link {\n color: var(--color-primary); /* text-primary */\n font-weight: 500; /* font-medium */\n text-decoration: underline; /* underline */\n text-underline-offset: 4px; /* underline-offset-4 */\n word-wrap: break-word; /* break-words */\n}\n\n.omniscribe_markdown-link:hover {\n color: var(--color-primary-dark); /* hover:text-primary-dark */\n}\n\n.omniscribe_assistant-markdown-container strong,\n.omniscribe_assistant-markdown-container b {\n font-weight: bold !important;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/AssistantMessage.css */\n.omniscribe_assistant-message-container {\n display: flex;\n align-items: flex-start;\n margin-right: auto;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n width: 100%;\n}\n\n.omniscribe_assistant-message-calls-container {\n display: flex;\n flex-direction: column;\n max-width: 100%;\n}\n\n.omniscribe_assistant-markdown-container {\n padding-block: calc(var(--spacing) * 0.5) /* 0.25rem = 4px */;\n}\n\n.omniscribe_assistant-commands-container {\n display: flex;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n align-items: center;\n margin-right: auto;\n}\n.omniscribe_assistant-message-container:hover,\n.omniscribe_assistant-message-container:focus {\n .omniscribe_assistant-commands-container {\n opacity: 100%;\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/AssistantMessageLoading.css */\n.omniscribe_assistant-message-loading-container {\n display: flex;\n align-items: flex-start;\n margin-right: auto;\n margin-top: 3px;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_assistant-message-loading {\n display: flex;\n align-items: center;\n border-radius: var(--radius-2xl) /* 1rem = 16px */;\n gap: calc(var(--spacing) * 1);\n background-color: var(--muted);\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n height: calc(var(--spacing) * 8) /* 2rem = 32px */;\n}\n.omniscribe_assistant-message-loading-dot {\n width: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n height: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n border-radius: calc(infinity * 1px);\n animation: loadingFade 2s infinite;\n background-color: color-mix(in oklab, var(--foreground) 50%, transparent);\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(1) {\n animation-delay: 0.2s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(2) {\n animation-delay: 0.4s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n@keyframes loadingFade {\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 0.8;\n }\n 100% {\n opacity: 0;\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/BranchSwitcher.css */\n.omniscribe_brand-switcher-container {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_brand-switcher-text {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n}\n\n.omniscribe_brand-switcher-btn {\n width: calc(0.25rem /* 4px */ * 6) /* 1.5rem = 24px */;\n height: calc(0.25rem /* 4px */ * 6) /* 1.5rem = 24px */;\n padding: calc(0.25rem /* 4px */ * 1) /* 0.25rem = 4px */;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/CommandBar.css */\n.omniscribe_command-bar-container {\n display: flex;\n align-items: center;\n padding-right: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n transition: opacity 0.2s ease-in-out;\n}\n\n.omniscribe_command-bar-container.omniscribe_command-bar-hidden {\n opacity: 0;\n pointer-events: none;\n}\n\n.thumbs.active {\n color: var(--blue-500);\n}\n\n.omniscribe_feedback-button-container {\n position: relative;\n display: inline-block;\n}\n\n.omniscribe_command-bar-container-icon-color,\n.thumbs {\n color: #4a5364;\n}\n\n.omniscribe_command-bar-container svg {\n width: 12px !important;\n height: 12px !important;\n}\n\n.omniscribe_command-bar-container .omniscribe_tooltip-icon-button-btn {\n padding: calc(var(--spacing) * 0.5) !important;\n}\n\n.omniscribe_command-bar-container .tooltip-base {\n padding: 0.25rem 0.5rem;\n}\n\n.omniscribe_command-bar-container .tooltip-trigger {\n padding: 1px;\n margin: 1px;\n}\n\n.omniscribe_command-bar-container .omniscribe_button-size-icon {\n height: calc(var(--spacing) * 3);\n width: calc(var(--spacing) * 3);\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/HumanMessage.css */\n.omniscribe_human-message-container {\n display: flex;\n align-items: center;\n margin-left: auto;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n.omniscribe_human-message-container-editing {\n width: 100%;\n max-width: var(--container-xl) /* 36rem = 576px */;\n}\n.omniscribe_human-message-container-no-editing {\n max-width: 100%;\n}\n\n.omniscribe_human-message-command-container {\n display: flex;\n gap: calc(var(--spacing) * 1) /* 0.5rem = 8px */;\n align-items: center;\n margin-left: auto;\n}\n.omniscribe_human-message-command-container-editing {\n opacity: 100%;\n}\n\n.omniscribe_human-message-container:focus,\n.omniscribe_human-message-container:hover {\n .omniscribe_human-message-command-container {\n opacity: 100%;\n }\n}\n\n.omniscribe_human-message-subcontainer {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n.omniscribe_human-message-subcontainer-editing {\n width: 100%;\n}\n\n.omniscribe_human-message-content-text {\n text-align: right;\n padding-top: 4px;\n padding-bottom: 4px;\n padding-inline: calc(var(--spacing) * 2);\n border-radius: var(--radius-3xl);\n background-color: #f6f7f9;\n font-weight: 500;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n margin: 0;\n}\n.omniscribe_human-message-textarea {\n min-height: 2.5rem !important; /* 40px */\n max-height: 12rem !important; /* 192px - Allow more vertical space */\n min-width: 200px !important; /* Minimum width for usability */\n resize: both; /* Allow controlled resizing in both directions */\n width: 100%;\n overflow: auto; /* Enable scroll when content exceeds max dimensions */\n\n &:focus-visible {\n box-shadow: var(--tw-ring-inset,) 0 0 0\n calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);\n }\n}\n\n.omniscribe_human-message-textarea-chat-history-close {\n max-width: 100% !important;\n}\n\n.omniscribe_human-message-textarea-chat-history-open {\n max-width: 385px !important;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ReasoningSection.css */\n.omniscribe_assistant-reasoning-section {\n margin-top: 12px;\n border-left: 3px solid #e5e7eb;\n padding-left: 12px;\n background-color: #f9fafb;\n border-radius: 4px;\n padding: 8px 12px;\n}\n\n.omniscribe_assistant-reasoning-toggle {\n display: flex;\n align-items: center;\n gap: 8px;\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px 0;\n font-size: 14px;\n font-weight: 500;\n color: #6b7280;\n width: 100%;\n text-align: left;\n}\n\n.omniscribe_assistant-reasoning-arrow {\n display: inline-block;\n transition: transform 0.2s ease-in-out;\n transform: rotate(0deg);\n}\n\n.omniscribe_assistant-reasoning-arrow--expanded {\n transform: rotate(90deg);\n}\n\n.omniscribe_assistant-reasoning-summary {\n margin-top: 8px;\n font-size: 14px;\n color: #374151;\n line-height: 1.5;\n}\n\n.omniscribe_assistant-reasoning-summary-item {\n margin: 8px 0;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ToolCalls.css */\n.omniscribe_tool-calls-container {\n margin-block-start: calc(calc(var(--spacing) * 4) * var(0));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(0)));\n width: 100%;\n max-width: var(--container-4xl) /* 56rem = 896px */;\n}\n\n.omniscribe_tool-calls-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: 100%;\n flex-wrap: wrap;\n gap: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n}\n.omniscribe_tool-calls-h3 {\n font-weight: var(--font-weight-bold);\n color: var(--color-gray-900) /* oklch(21% 0.034 264.665) = #101828 */;\n word-break: break-all;\n font-size: 14px;\n margin: 0;\n}\n\n.omniscribe_tool-calls-item-args {\n align-items: flex-start;\n flex-wrap: wrap;\n}\n.omniscribe_tool-calls-item-args-text {\n word-break: break-all;\n margin-right: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n padding-block: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n}\n\n.omniscribe_tool-calls-item-args-code {\n background-color: var(--color-gray-50);\n border-radius: 0.25rem /* 4px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n word-break: break-all;\n}\n\n.omniscribe_tool-calls-pre {\n font-size: 12px;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ToolResults.css */\n/* ToolResult Component Styles */\n\n.omniscribe_tool-result {\n margin-top: 2px;\n border: 1px solid var(--grey-200);\n border-radius: 0.5rem !important; /* !rounded-lg */\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow-sm */\n overflow: hidden; /* overflow-hidden */\n width: 100%;\n}\n\n.omniscribe_tool-result-header {\n background-color: var(--grey-50); /* bg-gray-50 */\n padding-left: 1rem; /* px-4 */\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n display: flex; /* flex */\n align-items: center; /* items-center */\n justify-content: space-between; /* justify-between */\n}\n\n.omniscribe_tool-result-header--expanded {\n border-bottom: 1px solid var(--grey-200);\n}\n\n.omniscribe_tool-result-header-content {\n display: flex; /* flex */\n align-items: center; /* items-center */\n gap: 0.5rem; /* gap-2 */\n min-width: 0; /* min-w-0 */\n}\n\n.omniscribe_tool-result-title {\n font-weight: 500; /* font-medium */\n color: var(--grey-900);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; /* truncate */\n margin: 0;\n font-size: 14px;\n}\n\n.omniscribe_expand-button {\n padding: 0.25rem; /* p-1 */\n flex-shrink: 0; /* flex-shrink-0 */\n}\n\n.omniscribe_expand-icon {\n width: 1.25rem; /* w-5 */\n height: 1.25rem; /* h-5 */\n}\n\n.omniscribe_tool-result-content {\n padding: 1rem; /* p-4 */\n background-color: #ffffff; /* bg-white */\n max-height: 24rem; /* max-h-96 */\n overflow-y: auto; /* overflow-y-auto */\n}\n\n.omniscribe_tool-result-content > * + * {\n margin-top: 0.5rem; /* space-y-2 */\n}\n\n/* Scrollbar styles for webkit browsers */\n.omniscribe_tool-result-content::-webkit-scrollbar {\n width: 8px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-track {\n background: #f1f5f9;\n border-radius: 4px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-thumb {\n background: #cbd5e1;\n border-radius: 4px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-thumb:hover {\n background: #94a3b8;\n}\n\n.omniscribe_result-card {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow-sm */\n border: 1px solid var(--color-gray-100);\n padding-top: 0.5rem !important; /* !py-2 */\n padding-bottom: 0.5rem !important;\n gap: 0 !important; /* !gap-0 */\n}\n\n.omniscribe_result-card-header {\n padding-top: 0.5rem !important; /* !pt-2 */\n padding-left: 0.5rem !important; /* !px-2 */\n padding-right: 0.5rem !important;\n padding-bottom: 0 !important; /* !pb-0 */\n}\n\n.omniscribe_result-card-title {\n font-size: 0.875rem; /* text-sm */\n line-height: 1.25rem;\n font-weight: 600; /* font-semibold */\n}\n\n.omniscribe_result-link {\n color: var(--blue-600);\n text-decoration: none;\n transition-property: color, text-decoration;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.omniscribe_result-link:hover {\n text-decoration: underline; /* hover:underline */\n color: #1e40af; /* hover:text-blue-800 */\n}\n\n.omniscribe_result-card-content {\n padding: 0.5rem !important; /* !p-2 */\n padding-top: 0 !important; /* !pt-0 */\n}\n\n.omniscribe_result-description {\n font-size: 0.75rem; /* text-xs */\n line-height: 1rem;\n color: #374151; /* text-gray-700 */\n line-height: 1.625; /* leading-relaxed */\n word-break: break-all; /* break-all */\n display: -webkit-box;\n -webkit-line-clamp: 2; /* line-clamp-2 */\n -webkit-box-orient: vertical;\n overflow: hidden;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms; /* transition-all duration-150 ease-in-out */\n transition-timing-function: cubic-bezier(0.4, 0, 0.6, 1); /* ease-in-out */\n}\n\n.omniscribe_result-description:hover {\n -webkit-line-clamp: unset; /* hover:line-clamp-none */\n display: block;\n}\n\n.omniscribe_result-source {\n font-size: 0.75rem; /* text-xs */\n line-height: 1rem;\n color: #6b7280; /* text-gray-500 */\n margin-top: 0.25rem; /* mt-1 */\n padding-top: 0.25rem; /* pt-1 */\n border-top: 1px solid var(--color-gray-100);\n}\n\n.omniscribe_string-result {\n font-size: 0.875rem; /* text-sm */\n line-height: 1.25rem;\n white-space: pre-wrap; /* whitespace-pre-wrap */\n background-color: var(--grey-50);\n padding: 0.75rem; /* p-3 */\n border-radius: 0.375rem; /* rounded-md */\n border: 1px solid var(--grey-200);\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Consolas, 'Liberation Mono', Menlo,\n monospace; /* pre tag font */\n}\n\n\n/* Source: modules/chat/components/thread/components/tooltip-icon-button.css */\n.omniscribe_tooltip-icon-button-btn {\n padding: calc(var(--spacing) * 1);\n /* width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6); */\n}\n\n.omniscribe_tooltip-icon-button-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: none;\n}\n\n\n/* Source: modules/configuration/section/Configuration.css */\n.omniscribe_config-content {\n width: 650px;\n max-height: 590px;\n opacity: 1;\n background-color: #ffffff;\n display: flex;\n flex-direction: column;\n overflow: visible;\n}\n\n.omniscribe_config-list {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n flex: 1;\n}\n\n.omniscribe_config-item {\n width: 100%;\n height: 75px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n opacity: 1;\n padding: 10px 22px 10px 16px;\n cursor: pointer;\n transition: background-color 0.2s ease;\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.omniscribe_config-item:hover {\n background-color: #f9fafb;\n}\n\n.omniscribe_config-item:focus {\n outline: none;\n background-color: #f3f4f6;\n}\n\n.omniscribe_config-item:last-child {\n border-bottom: none;\n}\n\n.omniscribe_config-item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n}\n\n.omniscribe_config-icon {\n color: #4a5364;\n}\n\n.omniscribe_config-item-content {\n flex: 1;\n margin-left: 16px;\n margin-right: 16px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 4px;\n}\n\n.omniscribe_config-item-title {\n margin: 0;\n font-weight: 700;\n font-size: 14px;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n color: #252a32;\n}\n\n.omniscribe_config-item-description {\n margin: 0;\n font-weight: 500;\n font-size: 14px;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n color: #4a5364;\n}\n\n.omniscribe_config-item-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n color: #9ca3af;\n flex-shrink: 0;\n}\n\n/* Sub-screen styles */\n.omniscribe_config-subscreen-header {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 16px 12px;\n color: #13161a;\n font-size: 14px;\n font-style: normal;\n font-weight: 700;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_config-back-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n}\n\n.omniscribe_config-subscreen-title {\n margin: 0;\n font-size: 14px;\n font-weight: 700;\n color: #13161a;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_config-subscreen-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 16px;\n border-top: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n}\n\n.omniscribe_config-subscreen-content.no-border {\n border-top: none;\n}\n\n.omniscribe_config-subscreen-content-template {\n flex: 1;\n overflow: hidden;\n}\n\n.omniscribe_config-section-label {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #374151;\n line-height: 1.4;\n}\n\n.omniscribe_config-language-section {\n display: flex;\n flex-direction: column;\n}\n\n.omniscribe_config-language-section-title {\n font-size: 16px;\n font-weight: 600;\n color: #374151;\n margin-bottom: 8px;\n}\n\n.omniscribe_config-subscreen-description {\n margin: 0 0 0 0;\n font-size: 14px;\n line-height: 18px;\n color: #13161a;\n font-weight: 400;\n}\n\n/* Dictionary Options View Styles */\n.omniscribe_config-dictionary-section {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.omniscribe_config-dictionary-add-section {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.omniscribe_config-dictionary-input-row {\n display: flex;\n gap: 12px;\n align-items: flex-start;\n}\n\n.omniscribe_config-dictionary-input {\n height: 32px;\n border: 1px solid #e5e8eb !important;\n border-radius: 8px !important;\n padding: 0 12px !important;\n font-size: 14px !important;\n line-height: 1.4 !important;\n background-color: #ffffff !important;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease !important;\n}\n\n.omniscribe_config-dictionary-input:focus {\n outline: none !important;\n border-color: #4f46e5 !important;\n box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1) !important;\n}\n\n.omniscribe_config-dictionary-input::placeholder {\n color: #9ca3af !important;\n font-size: 14px !important;\n}\n\n.omniscribe_config-dictionary-input.error {\n border-color: #dc3545 !important;\n background-color: #fff5f5 !important;\n}\n\n.omniscribe_config-dictionary-input.error:focus {\n border-color: #dc3545 !important;\n box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.1) !important;\n}\n\n.omniscribe_config-dictionary-add-btn {\n width: 32px;\n height: 32px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--primary);\n border: 1px solid var(--primary);\n border-radius: 8px;\n color: var(--primary-foreground);\n cursor: pointer;\n transition: all 0.2s ease;\n margin-top: 0;\n font-size: 0;\n}\n\n.omniscribe_config-dictionary-add-btn:hover:not(:disabled) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n border-color: color-mix(in oklab, var(--primary) 90%, transparent);\n}\n\n.omniscribe_config-dictionary-add-btn:disabled {\n background-color: #e5e8eb;\n border-color: #e5e8eb;\n color: #9ca3af;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n}\n\n.omniscribe_config-dictionary-list {\n display: flex;\n padding-top: 16px;\n flex-direction: column;\n gap: 8px;\n max-height: 410px;\n overflow-y: auto;\n margin-top: 4px;\n}\n\n.omniscribe_config-dictionary-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background-color: #f9fafb;\n border: 1px solid #e5e8eb;\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.omniscribe_config-dictionary-row:hover {\n background-color: #f3f4f6;\n border-color: #d1d5db;\n}\n\n.omniscribe_config-dictionary-cell {\n flex: 1;\n font-size: 14px;\n line-height: 20px;\n color: #374151;\n word-break: break-word;\n font-weight: 500;\n}\n\n.omniscribe_config-dictionary-arrow {\n color: #9ca3af;\n font-size: 16px;\n font-weight: 600;\n flex-shrink: 0;\n margin: 0 4px;\n}\n\n.omniscribe_config-dictionary-delete-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 6px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.omniscribe_config-dictionary-delete-btn:hover {\n background-color: #fee2e2;\n color: #dc2626;\n transform: scale(1.05);\n}\n\n.omniscribe_config-dictionary-empty {\n padding: 40px 16px;\n margin-top: 16px;\n text-align: center;\n color: #6b7280;\n font-size: 14px;\n line-height: 20px;\n background-color: #f9fafb;\n border: 2px dashed #e5e8eb;\n border-radius: 12px;\n font-style: italic;\n}\n\n/* Template specific styles */\n.omniscribe_template-field {\n background: white;\n border-bottom: 1px solid #e1e8ed;\n margin-bottom: 0;\n}\n\n.omniscribe_template-field:last-child {\n border-bottom: none;\n}\n\n.omniscribe_template-field-header {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n background: #ffffff;\n transition: background-color 0.2s ease;\n}\n\n.omniscribe_template-field-icon {\n margin-right: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s ease;\n}\n\n.omniscribe_template-field-icon svg {\n transition: transform 0.2s ease;\n}\n\n.omniscribe_template-field-icon.expanded svg {\n transform: rotate(90deg);\n}\n\n.omniscribe_template-field-label {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #2c3e50;\n}\n\n.omniscribe_template-field-content {\n padding: 16px;\n background: white;\n}\n\n.omniscribe_template-textarea {\n width: 100%;\n min-height: 80px;\n max-height: 300px;\n /* Prevent excessive vertical expansion */\n padding: 12px;\n border: 1px solid #e1e8ed;\n border-radius: 6px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n background: white;\n box-sizing: border-box;\n overflow-y: auto;\n /* Enable scroll when content exceeds max height */\n}\n\n.omniscribe_template-textarea:focus {\n outline: none;\n border-color: #3498db;\n box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);\n}\n\n.omniscribe_template-character-count {\n margin-top: 8px;\n font-size: 12px;\n color: #95a5a6;\n display: flex;\n}\n\n.omniscribe_template-actions {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid #e1e8ed;\n background: white;\n margin-top: 18px;\n margin-bottom: 50px;\n}\n\n/* Template fields container */\n.omniscribe_template-fields {\n display: flex;\n flex-direction: column;\n max-height: 400px;\n overflow-y: auto;\n background: white;\n}\n\n/* Improved scrollbar for template fields */\n.omniscribe_template-fields::-webkit-scrollbar {\n width: 6px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 3px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 3px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-thumb:hover {\n background: #a8a8a8;\n}\n\n.omniscribe_config-version-section {\n background: #F6F7F9;\n color: #4A5364;\n padding: 16px 8px 16px 24px;\n font-weight: 500;\n line-height: 16.8px;\n font-size: 12px;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n/* Source: modules/layout/components/MinimizeButton/MinimizeButton.css */\n.omniscribe_minimize-button-container {\n position: absolute;\n top: -1px;\n left: 0;\n transform: translateX(-100%);\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n height: auto;\n max-height: 400px;\n min-height: 180px;\n}\n.omniscribe_minimize-button-subcontainer {\n position: relative;\n background-color: color-mix(in oklab, rgb(15, 15, 15) 65%, transparent);\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n backdrop-filter: sepia(1%);\n cursor: pointer;\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 400ms;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.omniscribe_minimize-button-subcontainer:hover {\n background-color: color-mix(in oklab, rgb(15, 15, 15) 85%, transparent);\n}\n.omniscribe_minimize-button-content {\n display: flex;\n rotate: calc(90deg * -2);\n gap: 10px;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n width: 100%;\n align-items: center;\n justify-content: center;\n position: relative;\n flex-wrap: nowrap;\n padding: 12px;\n min-height: 180px;\n max-height: 400px;\n}\n\n.omniscribe_minimize-button-span {\n font-weight: 400;\n font-size: var(--text-lg) /* 1.125rem = 18px */;\n line-height: var(--text-lg--line-height) /* calc(1.75 / 1.125) ≈ 1.5556 */;\n flex-wrap: nowrap;\n color: var(--white);\n display: flex;\n white-space: nowrap;\n text-align: center;\n}\n\n[dir='ltr'] .omniscribe_minimize-button-container {\n left: 0;\n transform: translateX(-100%);\n}\n\n[dir='ltr'] .omniscribe_minimize-button-subcontainer {\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n}\n\n[dir='rtl'] .omniscribe_minimize-button-container {\n right: 0;\n left: auto;\n transform: translateX(100%);\n}\n[dir='rtl'] .omniscribe_minimize-button-subcontainer {\n border-top-right-radius: 10px;\n border-bottom-right-radius: 10px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n\n\n/* Source: modules/layout/components/OmniscribeContainer/OmniscribeContainer.css */\n.omniscribe_container {\n isolation: isolate;\n position: fixed;\n bottom: calc(var(--spacing) * 5);\n right: 0;\n border-top-left-radius: 30px;\n border-bottom-left-radius: 30px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n z-index: 80;\n}\n\n[dir='ltr'] .omniscribe_container {\n right: 0;\n border-top-left-radius: 30px;\n border-bottom-left-radius: 30px;\n}\n\n[dir='rtl'] .omniscribe_container {\n left: 0;\n right: auto;\n border-top-right-radius: 30px;\n border-bottom-right-radius: 30px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n\n\n/* Source: modules/layout/components/OmniscribeLayout/OmniscribeLayout.css */\n.omniscribe_layout {\n position: fixed;\n width: var(--layout-w);\n background: var(--white);\n bottom: calc(var(--spacing) * 5);\n border-bottom-left-radius: 12px;\n border: solid 1px var(--light-border);\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 500ms;\n transition-property: transform, translate, scale, rotate;\n display: flex;\n flex-direction: column;\n height: var(--layout-h);\n min-width: 500px;\n min-height: 500px;\n right: 0;\n}\n\n[dir='rtl'] .omniscribe_layout {\n left: 0;\n right: auto;\n border-bottom-right-radius: 12px;\n}\n\n[dir='ltr'] .omniscribe_layout {\n right: 0;\n border-bottom-left-radius: 12px;\n}\n\n.omniscribe_layout-open {\n background: var(--white);\n translate: 0;\n}\n\n.omniscribe_layout-close {\n translate: var(--layout-w);\n}\n\n[dir='rtl'] .omniscribe_layout-close {\n translate: calc(var(--layout-w) * -1);\n}\n\n[dir='ltr'] .omniscribe_layout-close {\n translate: var(--layout-w);\n}\n\n\n/* Source: modules/utility-section/section/UtilityButtons.css */\n.omniscribe_utility-btns-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n background-color: #ffffff;\n padding: 16px;\n overflow: hidden;\n background: linear-gradient(90deg, #ffffff 0%, #f5f8fe 50%, #e7effd 100%);\n align-self: stretch;\n}\n\n.omniscribe_utility-btns-left,\n.omniscribe_utility-btns-right {\n display: flex;\n flex-direction: row;\n gap: 4px;\n align-items: center;\n}\n\n.omniscribe_utility-btn-right {\n border-radius: var(--Radius-radius-round, 99999px) !important;\n background-color: var(--Greyscale-100, #f6f7f9) !important;\n border: none !important;\n}\n\n.omniscribe_connected-buttons {\n display: flex;\n border-radius: var(--Radius-radius-medium, 8px);\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n overflow: hidden;\n}\n\n.omniscribe_connected-btn-left,\n.omniscribe_connected-btn-right {\n border: none !important;\n border-radius: 0 !important;\n}\n\n.omniscribe_connected-btn-left {\n border-right: 1px solid var(--Stroke-greyscale-Active, #e5e7ec) !important;\n}\n\n.omniscribe_utility-btns {\n cursor: pointer;\n transition-duration: 300ms;\n background-color: color-mix(in oklab, var(--white) 30%, transparent);\n border-radius: var(--Radius-radius-medium, 8px);\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n position: relative;\n padding: 8px;\n display: flex;\n align-items: center;\n\n &:hover {\n background-color: var(--Greyscale-100, #f6f7f9);\n }\n}\n\n.omniscribe_utility-btns-pointer {\n pointer-events: auto;\n}\n\n.omniscribe_utility-btns-no-pointer {\n pointer-events: none;\n background-color: var(--white);\n}\n\n.omniscribe_utility-btns-no-pointer-opacity {\n pointer-events: none;\n opacity: 50%;\n}\n\n.omniscribe_utility-btns-opacity {\n background-color: var(--white);\n opacity: 100%;\n}\n\n.omniscribe_utility-btns-active {\n background-color: var(--Greyscale-100, #f6f7f9);\n border: 1px solid var(--Stroke-greyscale-Active, #105bdb);\n}\n\n.omniscribe_btn-label {\n margin-left: 6px;\n font-size: 14px;\n color: #212529;\n font-weight: 500;\n}\n\n.omniscribe_btn-label-active {\n color: #105bdb;\n}\n\n.omniscribe_icon {\n color: var(--active-black);\n}\n\n.omniscribe_icon-active {\n color: #105bdb;\n}\n\n.omniscribe_config-view {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.omniscribe_config-close-btn {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #000000;\n width: 32px;\n height: 32px;\n}\n\n.omniscribe_config-title {\n margin: 0;\n color: #000000;\n font-size: 16px;\n font-weight: 700;\n line-height: 19.2px;\n}\n\n\n/* Source: shared/components/Card.css */\n.omniscribe_card {\n background-color: var(--color-card, #ffffff);\n color: var(--color-card-foreground, #000000);\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n border-radius: 0.75rem;\n border: 1px solid var(--color-border, var(--grey-200));\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n}\n\n.omniscribe_card-header {\n container-type: inline-size;\n container-name: card-header;\n display: grid;\n grid-auto-rows: min-content;\n grid-template-rows: auto auto;\n align-items: start;\n gap: 0.375rem;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n/* When card-header has card-action, adjust grid layout */\n.omniscribe_card-header:has([data-slot='card-action']) {\n grid-template-columns: 1fr auto;\n}\n\n/* When card-header has border-b class, add padding bottom */\n.omniscribe_card-header.border-b {\n padding-bottom: 1.5rem;\n}\n\n.omniscribe_card-title {\n line-height: 1;\n font-weight: 600;\n}\n\n.omniscribe_card-description {\n color: var(--color-muted-foreground, #6b7280);\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n\n.omniscribe_card-action {\n grid-column-start: 2;\n grid-row: span 2 / span 2;\n grid-row-start: 1;\n align-self: start;\n justify-self: end;\n}\n\n.omniscribe_card-content {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.omniscribe_card-footer {\n display: flex;\n align-items: center;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.omniscribe_card-footer.border-t {\n padding-top: 1.5rem;\n}\n\n\n/* Source: shared/components/button.css */\n.omniscribe_button {\n border: none;\n background: transparent;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: calc(var(--spacing) * 2);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n outline-style: none;\n &:disabled {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 50%;\n }\n & svg {\n pointer-events: none;\n flex-shrink: 0;\n }\n & svg:not([class*='size-svg']) {\n width: calc(var(--spacing) * 4) /* 1rem = 16px */;\n height: calc(var(--spacing) * 4) /* 1rem = 16px */;\n }\n &:focus-visible {\n border-color: var(--ring);\n box-shadow: 0 0 0 calc(3px + var(--tw-ring-offset-width))\n color-mix(in oklab, var(--ring) 50%, transparent);\n }\n &[aria-invalid='true'] {\n border-color: var(--destructive);\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n}\n\n.omniscribe_button-variant-default {\n background-color: var(--primary);\n color: var(--primary-foreground);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n}\n.omniscribe_button-variant-destructive {\n background-color: var(--destructive);\n color: var(--white);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n &:focus-visible {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n}\n.omniscribe_button-variant-outline {\n border: solid 1px var(--input);\n background-color: var(--background);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: var(--accent);\n color: var(--accent-foreground);\n }\n}\n.omniscribe_button-variant-icon {\n align-items: center;\n border-radius: 100%;\n padding: 10px;\n & svg {\n pointer-events: auto;\n flex-shrink: 0;\n }\n & svg:not([class*='size-svg']) {\n width: auto;\n height: auto;\n }\n}\n.omniscribe_button-variant-secondadry {\n background-color: var(--secondary);\n color: var(--secondary-foreground);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n}\n.omniscribe_button-variant-ghost:hover {\n background-color: var(--accent);\n color: var(--accent-foreground);\n}\n.omniscribe_button-variant-empty {\n cursor: pointer;\n}\n.omniscribe_button-variant-primary {\n cursor: pointer;\n background-color: color-mix(in oklab, var(--primary-button) 80%, transparent);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n font-size: 16px !important;\n color: var(--white);\n &:hover {\n background-color: color-mix(\n in oklab,\n var(--primary-button) 60%,\n transparent\n );\n }\n}\n.omniscribe_button-size-default {\n height: calc(var(--spacing) * 9);\n padding-inline: calc(var(--spacing) * 4);\n padding-block: calc(var(--spacing) * 2);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 3) /* 0.75rem = 12px */;\n }\n}\n.omniscribe_button-size-sm {\n height: calc(var(--spacing) * 8);\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n gap: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n padding-inline: calc(var(--spacing) * 3);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n}\n\n.omniscribe_button-size-lg {\n height: calc(var(--spacing) * 10);\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n padding-inline: calc(var(--spacing) * 6);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n}\n\n.omniscribe_button-size-icon {\n height: calc(var(--spacing) * 5);\n width: calc(var(--spacing) * 5);\n}\n.omniscribe_button-size-padding {\n padding: calc(var(--spacing) * 2);\n min-width: calc(var(--spacing) * 40);\n}\n\n.omniscribe_button-text {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n}\n.omniscribe_button-whitespace {\n white-space: nowrap;\n}\n.omniscribe_button-rounded {\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n}\n.omniscribe_button-disabled {\n pointer-events: none;\n}\n.omniscribe_button-loading {\n opacity: 50%;\n}\n.omniscribe_button-animate-spin {\n animation: spin 1s linear infinite;\n}\n.omniscribe_button-variant-report {\n cursor: pointer;\n background-color: var(--report);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n font-size: 16px;\n color: var(--white);\n &:hover {\n background-color: color-mix(in oklab, var(--report) 60%, transparent);\n }\n}\n\n\n/* Source: shared/components/feedback-modal.css */\n.omniscribe_feedback-modal {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n background: white;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n margin-top: 8px;\n min-width: 200px;\n width: 200px;\n transform-origin: top left;\n}\n\n.omniscribe_feedback-input-container {\n position: relative;\n display: flex;\n align-items: flex-end;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n}\n\n.omniscribe_feedback-textarea {\n flex: 1;\n border: transparent;\n border-radius: 8px;\n padding: 12px 12px 12px 12px;\n font-size: 14px;\n outline: none;\n transition: border-color 0.2s;\n resize: none;\n min-height: 20px;\n max-height: 200px;\n overflow-y: auto;\n font-family: inherit;\n line-height: 1.4;\n width: 100%;\n box-sizing: border-box;\n}\n.omniscribe_feedback-textarea-padding {\n margin-bottom: 34px;\n padding-bottom: 0px !important;\n}\n\n.omniscribe_feedback-icons {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.omniscribe_feedback-icons:has(.omniscribe_feedback-send) {\n bottom: 8px;\n top: auto;\n transform: none;\n}\n\n.omniscribe_feedback-close {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.omniscribe_feedback-close:hover {\n background-color: #f3f4f6;\n color: #374151;\n}\n\n.omniscribe_feedback-close svg {\n width: 12px;\n height: 12px;\n}\n\n.omniscribe_feedback-send {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--blue-500);\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.omniscribe_feedback-send:hover {\n background-color: #f0f7ff;\n color: #0d47a1;\n}\n\n.omniscribe_feedback-send svg {\n width: 12px;\n height: 12px;\n}\n\n.omniscribe_feedback-confirmation {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-top: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n animation: fadeInOut 3s ease-in-out;\n}\n\n.omniscribe_feedback-confirmation-icon {\n width: 12px;\n height: 12px;\n flex-shrink: 0;\n}\n\n/* Right-positioned modal styles */\n.omniscribe_feedback-modal-right {\n position: absolute;\n bottom: 0;\n left: 40%;\n z-index: 10000;\n background: white;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n margin-left: 8px;\n width: 200px;\n transform-origin: bottom left;\n}\n\n.omniscribe_feedback-sending-center {\n top: 100%;\n left: 0;\n}\n\n.omniscribe_feedback-sending-right {\n bottom: 0;\n left: 40%;\n}\n\n.omniscribe_feedback-sending {\n position: absolute;\n z-index: 10000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-left: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n}\n.omniscribe_feedback-confirmation-right {\n position: absolute;\n bottom: 0;\n left: 40%;\n z-index: 10000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-left: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n animation: fadeInOut 3s ease-in-out;\n}\n\n@keyframes fadeInOut {\n 0% {\n opacity: 0;\n transform: translateY(-10px);\n }\n 10% {\n opacity: 1;\n transform: translateY(0);\n }\n 90% {\n opacity: 1;\n transform: translateY(0);\n }\n 100% {\n opacity: 0;\n transform: translateY(-10px);\n }\n}\n\n\n/* Source: shared/components/gradient-box.css */\n.omniscribe_gradient-box {\n border-radius: 8px;\n padding: 1px;\n width: fit-content;\n}\n\n\n/* Source: shared/components/input.css */\n.omniscribe_input {\n height: calc(var(--spacing) * 9);\n width: 100%;\n display: flex;\n border-radius: calc(var(--radius));\n border: solid 1px var(--input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 1);\n font-size: var(--text-base) /* 1rem = 16px */;\n line-height: var(--text-base--line-height);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n outline-style: none;\n &::file-selector-button {\n color: var(--foreground);\n display: inline-flex;\n height: calc(var(--spacing) * 7);\n border: none;\n background-color: transparent;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n font-weight: var(--font-weight-medium);\n }\n &::placeholder {\n color: var(--muted-foreground);\n }\n &::selection {\n background-color: var(--primary);\n color: var(--primary-foreground);\n }\n &:disabled {\n pointer-events: none;\n cursor: not-allowed;\n opacity: 50%;\n }\n &[aria-invalid='true'] {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n border-color: var(--destructive);\n }\n @media (width >= 48rem /* 768px */) {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */;\n }\n}\n\n.omniscribe_input-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n}\n\n.omniscribe_input.invalid {\n border-color: #dc3545;\n background-color: #fff5f5;\n box-shadow: 0 0 0 0.125rem rgba(220, 53, 69, 0.25);\n}\n\n.omniscribe_input-error {\n color: #dc3545;\n font-size: 10px;\n margin-block: 0.25rem;\n display: block;\n line-height: 1;\n}\n\n\n/* Source: shared/components/loading-modal.css */\n.omniscribe_loading-modal-container {\n position: absolute;\n background-color: color-mix(in oklab, var(--black) 50%, transparent);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 50;\n height: 100vh;\n width: 100vw;\n right: 0;\n bottom: calc(var(--spacing) * -5.2);\n}\n.omniscribe_loading-modal-subcontainer {\n background-color: var(--white);\n padding: calc(var(--spacing) * 8);\n border-radius: var(--radius);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n text-align: center;\n max-width: var(--container-md);\n}\n.omniscribe_loading-modal-msg {\n font-size: var(--text-xl) /* 1.25rem = 20px */;\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-bold);\n margin-bottom: calc(var(--spacing) * 4);\n}\n.omniscribe_loading-modal-spin {\n display: inline-block;\n width: calc(var(--spacing) * 12);\n height: calc(var(--spacing) * 12);\n border: solid 4px var(--color-gray-200);\n border-top-color: var(--blue-500);\n border-radius: calc(infinity * 1px);\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n\n/* Source: shared/components/modal.css */\n.omniscribe_modal-overlay {\n position: absolute;\n background-color: color-mix(in oklab, var(--black) 50%, transparent);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 50;\n height: 100vh;\n width: 100vw;\n right: 0;\n bottom: calc(var(--spacing) * -5.2);\n}\n\n.omniscribe_modal-container {\n position: relative;\n background-color: var(--white);\n z-index: 100;\n border-radius: 12px;\n border: solid 1px var(--light-border);\n box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n padding: calc(var(--spacing) * 5);\n transition-duration: 300ms;\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n max-width: 90vw;\n max-height: 90vh;\n}\n.omniscribe_modal-container-scroll {\n overflow: auto;\n}\n\n.omniscribe_modal-container-show {\n opacity: 100%;\n}\n\n.omniscribe_modal-container-hide {\n opacity: 0%;\n}\n\n.omniscribe_modal-subcontainer {\n display: flex;\n flex-direction: column;\n}\n\n.omniscribe_modal-title-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n margin-bottom: calc(var(--spacing) * 2);\n}\n\n.omniscribe_modal-title {\n font-size: var(--text-3xl); /* 1.875rem = 30px */\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-bold);\n margin: 0;\n}\n\n.omniscribe_modal-button {\n border: none;\n background: transparent;\n line-height: var(--text-2xl--line-height);\n cursor: pointer;\n color: var(--black);\n}\n\n@media (min-width: 768px) {\n .omniscribe_modal-container {\n max-width: 60vw;\n }\n}\n\n/* Large screens: desktop */\n@media (min-width: 1024px) {\n .omniscribe_modal-container {\n max-width: 50vw;\n }\n}\n\n/* Very large screens: large desktop and ultra-wide */\n@media (min-width: 1440px) {\n .omniscribe_modal-container {\n max-width: 40vw;\n }\n}\n\n/* Intermediate breakpoint: large tablets */\n@media (min-width: 640px) and (max-width: 767px) {\n .omniscribe_modal-container {\n max-width: 70vw;\n }\n}\n\n\n/* Source: shared/components/select.css */\n.omniscribe_select-container {\n position: relative;\n width: 100%;\n padding-block: calc(var(--spacing) * 3);\n}\n.omniscribe_select-button {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: calc(var(--spacing) * 3);\n background-color: var(--white);\n border-radius: var(--Radius-radius-medium, 8px);\n border: solid 1px var(--light-border);\n cursor: pointer;\n}\n.omniscribe_select-text {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n}\n.omniscribe_select-content-container {\n position: absolute;\n width: 100%;\n margin-top: calc(var(--spacing) * 2);\n border: solid 1px var(--light-border);\n background-color: var(--white);\n border-radius: var(--radius);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n bottom: calc(var(--spacing) * 15);\n padding-inline: calc(var(--spacing) * 1);\n padding-block: calc(var(--spacing) * 0.5);\n z-index: 9999;\n}\n.omniscribe_select-content-ul {\n overflow-y: scroll;\n max-height: calc(var(--spacing) * 80);\n padding-inline: 5px;\n}\n.omniscribe_select-content-li {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: calc(var(--spacing) * 3);\n cursor: pointer;\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-100);\n }\n }\n}\n.omniscribe_select-check-icon {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n color: var(--color-slate-500) /* oklch(55.4% 0.046 257.417) = #62748e */;\n}\n.omniscribe_select-content-li-span {\n display: flex;\n align-items: center;\n gap: calc(0.25rem /* 4px */ * 2);\n}\n\n\n/* Source: shared/components/skeleton.css */\n.omniscribe_skeleton {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n}\n\n\n/* Source: shared/components/textarea.css */\n.omniscribe_textarea-default {\n display: flex;\n min-height: calc(var(--spacing) * 16);\n width: -webkit-fill-available;\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n border: solid 1px var(--input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 2);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n &::placeholder {\n color: var(--muted-foreground);\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n }\n &:focus-visible {\n border-color: var(--ring);\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n box-shadow: var(--tw-ring-inset,) 0 0 0\n calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);\n }\n &[aria-invalid='true'] {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n border-color: var(--destructive);\n }\n &:disabled {\n cursor: not-allowed;\n opacity: 50%;\n }\n}\n\n.omniscribe_textarea-secondary {\n padding: calc(var(--spacing) * 3.5);\n padding-bottom: calc(var(--spacing) * 0);\n border-style: none;\n background-color: transparent;\n resize: none;\n &:focus {\n outline-style: none;\n }\n}\n.omniscribe_textarea-general {\n font-family: 'Lato', sans-serif;\n font-size: var(--font-size-100);\n outline: none;\n}\n\n\n/* Source: shared/components/toast.css */\n.omniscribe_toast-container {\n position: fixed;\n bottom: calc(var(--spacing) * 5);\n top: calc(var(--spacing) * -30);\n border-radius: var(--radius);\n padding: calc(var(--spacing) * 4);\n height: fit-content;\n transition-duration: 500ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n width: calc(var(--spacing) * 120);\n}\n\n.omniscribe_toast-container-danger {\n background-color: var(--color-red-500);\n}\n.omniscribe_toast-container-black {\n background-color: var(--black);\n}\n.omniscribe_toast-container-show {\n right: calc(var(--spacing) * 10);\n}\n.omniscribe_toast-container-hide {\n right: -100%;\n}\n.omniscribe_toast-subcontainer {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 100ms;\n display: flex;\n flex-direction: column;\n color: var(--white);\n}\n.omniscribe_toast-title {\n font-size: 18px;\n font-weight: var(--font-weight-bold);\n}\n.omniscribe_toast-msg {\n font-size: 16px;\n}\n\n\n/* Source: shared/components/tooltip.css */\n.tooltip-base {\n position: fixed;\n z-index: 9999;\n border-radius: 0.375rem; /* rounded-md */\n background-color: #111827;\n padding: 0.5rem 0.75rem; /* px-3 py-2 */\n font-size: 0.875rem; /* text-sm */\n font-family: 'Lato', sans-serif;\n color: #ffffff; /* text-white */\n box-shadow:\n 0 10px 15px -3px rgba(0, 0, 0, 0.1),\n 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* shadow-lg */\n transition: opacity 0.2s ease-in-out; /* transition-opacity duration-200 */\n pointer-events: none;\n user-select: none;\n word-wrap: break-word;\n line-height: 1.4;\n}\n\n/* Tooltip Arrow Styles */\n.tooltip-arrow {\n position: absolute;\n width: 0.5rem; /* w-2 */\n height: 0.5rem; /* h-2 */\n background-color: #111827;\n transform: rotate(45deg);\n}\n\n/* Arrow positioning for each side */\n.tooltip-arrow-top {\n bottom: -0.25rem; /* bottom-[-4px] */\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-bottom {\n top: -0.25rem; /* top-[-4px] */\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-left {\n right: -0.25rem; /* right-[-4px] */\n top: 50%;\n transform: translateY(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-right {\n left: -0.25rem; /* left-[-4px] */\n top: 50%;\n transform: translateY(-50%) rotate(45deg);\n}\n\n/* Width classes based on message length */\n.tooltip-width-auto {\n width: auto;\n white-space: nowrap;\n}\n\n.tooltip-width-200 {\n width: auto;\n max-width: 200px;\n}\n\n.tooltip-width-xs {\n width: auto;\n max-width: 20rem; /* max-w-xs */\n}\n\n.tooltip-width-sm {\n width: auto;\n max-width: 24rem; /* max-w-sm */\n}\n\n.tooltip-width-400 {\n width: auto;\n max-width: 400px;\n}\n\n/* Trigger container styles */\n.tooltip-trigger {\n display: inline-block;\n}\n\n/* Animation classes */\n.tooltip-enter {\n opacity: 0;\n transform: scale(0.95);\n}\n\n.tooltip-enter-active {\n opacity: 1;\n transform: scale(1);\n transition:\n opacity 0.2s ease-in-out,\n transform 0.2s ease-in-out;\n}\n\n.tooltip-exit {\n opacity: 1;\n transform: scale(1);\n}\n\n.tooltip-exit-active {\n opacity: 0;\n transform: scale(0.95);\n transition:\n opacity 0.15s ease-in-out,\n transform 0.15s ease-in-out;\n}\n\n/* Dark theme variant */\n.tooltip-dark {\n background-color: #1f2937; /* bg-gray-800 */\n color: var(--grey-50);\n}\n\n.tooltip-dark .tooltip-arrow {\n background-color: #1f2937;\n}\n\n/* Light theme variant */\n.tooltip-light {\n background-color: #ffffff;\n color: #374151; /* text-gray-700 */\n box-shadow:\n 0 10px 15px -3px rgba(0, 0, 0, 0.1),\n 0 4px 6px -2px rgba(0, 0, 0, 0.05),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n}\n\n.tooltip-light .tooltip-arrow {\n background-color: #ffffff;\n}\n\n/* Responsive breakpoints */\n@media (max-width: 640px) {\n .tooltip-base {\n max-width: calc(100vw - 2rem);\n font-size: 0.8125rem; /* Slightly smaller on mobile */\n }\n\n .tooltip-width-400,\n .tooltip-width-sm,\n .tooltip-width-xs {\n max-width: calc(100vw - 2rem);\n }\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n .tooltip-base {\n border: 2px solid #ffffff;\n }\n\n .tooltip-light {\n border: 2px solid #000000;\n }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n .tooltip-base,\n .tooltip-enter-active,\n .tooltip-exit-active {\n transition: none;\n }\n}\n";
130206
+ const injectedCss = "/* Source: index.css */\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@700&family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap');\n\n#Omniscribe {\n font-family: 'Lato', sans-serif;\n /* define colors */\n --active: #0a3785;\n --background-primary: #e7effd;\n --warning: #ffc107;\n --grey-50: #f9fafb;\n --grey-100: #f6f7f9;\n --grey-200: #e5e7eb;\n --grey-700: #6f7d95;\n --grey-800: #4a5364;\n --grey-900: #111827;\n --active-black: #252a32;\n --placeholder: #a4adbc;\n --line: #e5e7ec;\n --custom-black: #13161a;\n --primary: #105bdb;\n --border: #e5e7ec;\n --white: #fdfdfd;\n --omni: #daf2ff;\n --omni-secondary: rgba(219, 219, 219, 0.75);\n --primary-button: #132caa;\n --primary-text: #36a3cf;\n --primary-900: #061044;\n --blue-100: #dbeafe;\n --blue-200: #bfdbfe;\n --blue-500: #105bdb;\n --blue-600: #2563eb;\n --blue-700: #1d4ed8;\n --report: var(--primary-button);\n --gray: #616161;\n --black: #1b2125;\n --sky-blue: #dbecff;\n --blue: #5886ba;\n --blue-600: #0b1962;\n --background: #f3f3f3bb;\n --foreground: oklch(0.145 0 0);\n --primary: #061044;\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.577 0.245 27.325);\n --light-border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.87 0 0);\n --radius: 0.625rem;\n /* TEXT */\n --text-3xs: 8px;\n --text-3xs--line-height: calc(0.5 / 0.25);\n --text-2xs: 10px;\n --text-2xs--line-height: calc(0.75 / 0.5);\n --text-xs: 12px;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 14px;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 16px;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 18px;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 20px;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 22px;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 24px;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 26px;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 28px;\n --text-5xl--line-height: 1;\n --text-6xl: 30px;\n --text-6xl--line-height: 1;\n --text-7xl: 32px;\n --text-7xl--line-height: 1;\n --text-8xl: 34px;\n --text-8xl--line-height: 1;\n --text-9xl: 46px;\n --text-9xl--line-height: 1;\n --font-weight-thin: 100;\n --font-weight-extralight: 200;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n --font-weight-black: 900;\n /* custom colors */\n --color-white: var(--white);\n --color-light-border: var(--light-border);\n --color-omni: var(--omni);\n --color-report: var(--report);\n --color-omni-secondary: var(--omni-secondary);\n --color-primary-text: var(--primary-text);\n --color-primary-900: var(--primary-900);\n --color-blue-500: var(--blue-500);\n --color-gray: var(--gray);\n --color-black: var(--black);\n --color-sky-blue: var(--sky-blue);\n --color-cream: var(--cream);\n --color-pink: var(--pink);\n --color-blue: var(--blue);\n --color-blue-600: var(--blue-600);\n --color-sky-blue-100: var(--sky-blue-100);\n --color-white-2: var(--white-2);\n --color-primary-700: var(--primary-700);\n --color-primary-500: var(--primary-500);\n --color-neutral-800: var(--neutral-800);\n --color-blue-2: var(--blue-2);\n --color-light-blue: var(--light-blue);\n --color-primary-100: var(--primary-100);\n --color-primary-300: var(--primary-300);\n --color-black-2: var(--black-2);\n --color-primary-button: var(--primary-button);\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-slate-200: oklch(92.9% 0.013 255.508);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: #f3f4f6;\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-900: oklch(21% 0.034 264.665);\n --color-zinc-900: oklch(21% 0.006 285.885);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n /* rounded */\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n /* spacing */\n --spacing-layout-w: var(--layout-w);\n --spacing-layout-h: var(--layout-h);\n --spacing: 0.25rem;\n /* size */\n --container-md: 28rem;\n --container-xl: 36rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n\n --tracking-tight: -0.025em;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n\n .no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n a,\n p,\n textarea,\n button,\n span,\n h1,\n h2,\n h3,\n h4,\n h5,\n div {\n font-family: 'Lato', sans-serif;\n }\n /* Hide scrollbar for IE, Edge and Firefox */\n .no-scrollbar {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n .shadow-inner-right {\n box-shadow: inset -9px 0 6px -1px rgb(0 0 0 / 0.02);\n }\n .shadow-inner-left {\n box-shadow: inset 9px 0 6px -1px rgb(0 0 0 / 0.02);\n }\n .annotation {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-normal);\n }\n .annotation-semi {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-semibold);\n }\n .annotation-bold {\n font-size: var(--text-3xs);\n font-weight: var(--font-weight-semibold);\n }\n .info {\n font-size: var(--text-2xs);\n font-weight: var(--font-weight-normal);\n }\n .info-semi {\n font-size: var(--text-2s);\n font-weight: var(--font-weight-semibold);\n }\n .info-bold {\n font-size: var(--text-2s);\n font-weight: var(--font-weight-semibold);\n }\n .text-p {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-normal);\n }\n .text-p-semi {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-semibold);\n }\n .text-p-bold {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-semibold);\n }\n .omniscribe_shadow-xl {\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n }\n .scrollbar-pretty {\n &::-webkit-scrollbar {\n width: 6px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n background-color: var(--omni-secondary);\n }\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n }\n\n .omniscribe_visible {\n visibility: visible;\n display: flex;\n flex: 1;\n }\n .omniscribe_hidden {\n display: none;\n height: 0;\n }\n\n .omniscribe_animate-spin {\n animation: spin 1s linear infinite;\n }\n}\n\n\n/* Source: modules/audio-recorder/components/audio-visualizer/AudioVisualizer.css */\n.omniscribe_audio-visualizer-container {\n display: flex;\n border-radius: var(--radius-md);\n width: calc(var(--spacing) * 60);\n align-items: center;\n justify-content: center;\n height: 60px;\n background: transparent;\n overflow: hidden;\n}\n\n.omniscribe_audio-visualizer-subcontainer {\n display: flex;\n align-items: center;\n justify-content: space-evenly;\n width: 100%;\n height: 100%;\n}\n\n.omniscribe_audio-visualizer-item-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding-inline: 1px;\n margin-top: 0.25rem;\n}\n\n.omniscribe_audio-visualizer-item {\n width: 2px;\n height: 2px;\n background-color: rgba(48, 54, 68, 0.85);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 50ms;\n}\n\n.lk-audio-bar-visualizer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n background: var(--lk-bg);\n gap: var(--lk-va-bar-gap, 24px);\n}\n.lk-audio-bar-visualizer > .lk-audio-bar {\n transform-origin: 'center';\n height: 100%;\n width: var(--lk-va-bar-width, 12px);\n border-radius: var(--lk-va-bar-border-radius, 32px);\n background-color: var(--lk-va-bar-bg, rgba(136, 136, 136, 0.2));\n transition: background-color 0.25s ease-out;\n}\n.lk-audio-bar-visualizer[data-lk-va-state='speaking'] > .lk-audio-bar,\n.lk-audio-bar-visualizer > .lk-audio-bar.lk-highlighted,\n.lk-audio-bar-visualizer > [data-lk-highlighted='true'] {\n background-color: var(--lk-fg, rgb(136, 136, 136));\n transition: none;\n}\n.lk-audio-bar-visualizer[data-lk-va-state='thinking'] {\n transition: background-color 0.15s ease-out;\n}\n\n\n/* Source: modules/audio-recorder/components/content-container/content-containter.css */\n.omniscribe_audio-content-container {\n background-color: var(--white);\n width: -webkit-fill-available;\n flex: 1 1 0 !important;\n min-height: 0 !important;\n display: flex !important;\n flex-direction: column !important;\n overflow: hidden !important;\n}\n\n.omniscribe_audio-content-messages {\n color: var(--black);\n}\n\n.omniscribe_transcription-footer-container {\n position: sticky;\n display: flex;\n flex-direction: column;\n align-items: center;\n bottom: 0;\n padding-bottom: calc(var(--spacing) * 3);\n}\n\n.omniscribe_audio-content-render {\n color: var(--black);\n font-weight: var(--font-weight-medium);\n padding-block: 0.5rem;\n padding-inline: 0.75rem;\n margin-bottom: 0.25rem;\n}\n\n.omniscribe_patient {\n color: #db10c1;\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_doctor {\n color: var(--blue-500);\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_speaker {\n color: #28a745;\n padding-right: 0.5rem;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n}\n\n.omniscribe_transcription {\n color: var(--black);\n}\n\n.omniscribe_transcription-down-btn-container {\n background-color: white;\n}\n\n.omniscribe_transcription-down-btn {\n width: calc(0.25rem /* 4px */ * 4);\n height: calc(0.25rem /* 4px */ * 4);\n}\n\n/* Chrome, Safari, Edge (Webkit) */\n.omniscribe_audio-content-container > div::-webkit-scrollbar {\n width: 6px !important;\n}\n\n.omniscribe_audio-content-container > div::-webkit-scrollbar-thumb {\n border-radius: 10px !important;\n background-color: var(--omni-secondary) !important;\n}\n\n.omniscribe_audio-content-container > div::-webkit-scrollbar-track {\n background-color: transparent !important;\n}\n\n/* Firefox */\n.omniscribe_audio-content-container > div {\n scrollbar-width: thin !important;\n scrollbar-color: var(--omni-secondary) transparent !important;\n}\n\n\n/* Source: modules/audio-recorder/components/recorder-counter/RecorderCounter.css */\n.omniscribe_audio-recorder-timer {\n color: var(--blue-500);\n font-weight: 600; /* SemiBold */\n font-style: normal; /* SemiBold is a weight, not a style */\n font-size: var(--font-size-400); /* design token */\n line-height: var(--line-height-400); /* design token */\n letter-spacing: 0;\n text-align: center;\n}\n\n\n/* Source: modules/audio-recorder/components/report-button/ReportButton.css */\n.omniscribe_report-button-container {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.5rem;\n}\n.omniscribe_report-button-width {\n max-height: 32px;\n font-size: var(--text-xs) !important;\n}\n.omniscribe_regenerate-button-width {\n max-height: 32px;\n background-color: var(--blue-500) !important;\n font-size: var(--text-xs) !important;\n}\n.omniscribe_regenerate-button-width:hover {\n background-color: #0c48ad !important; /* darker shade of blue */\n}\n\n\n/* Source: modules/audio-recorder/components/toggle-record/ToggleRecord.css */\n.omniscribe_record-button-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.omniscribe_record-button-classname {\n background-color: transparent;\n border: none;\n padding: 4px;\n}\n\n.omniscribe_record-button {\n background-color: var(--primary-button);\n border-radius: 50%;\n cursor: pointer;\n width: 56px;\n height: 56px;\n align-items: center;\n justify-content: center;\n display: flex;\n transition-duration: 300ms;\n box-shadow:\n inset 0 2px 4px rgb(0 0 0 / 0.05),\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.omniscribe_record-button-enabled {\n opacity: 100%;\n pointer-events: auto;\n scale: 110%;\n &:hover {\n scale: 150%;\n }\n}\n.omniscribe_record-button-not-enabled {\n opacity: 50%;\n &:hover {\n scale: 150%;\n }\n}\n.omniscribe_record-button-disabled {\n opacity: 50%;\n background-color: dimgray;\n pointer-events: none;\n}\n\n.omniscribe_record-enabled {\n width: 50px;\n height: 50px;\n background-color: var(--primary-button);\n animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n position: absolute;\n z-index: -1;\n border-radius: calc(infinity * 1px);\n opacity: 100%;\n}\n\n@keyframes ping {\n 75%,\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n\n\n/* Source: modules/audio-recorder/section/AudioRecorder.css */\n.omniscribe_audio-recorder {\n align-items: center;\n padding-block: calc(var(--spacing) * 5);\n border-bottom-left-radius: 12px;\n background-color: var(--white);\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n\n[dir='ltr'] .omniscribe_audio-recorder {\n border-bottom-left-radius: 12px;\n}\n\n[dir='rtl'] .omniscribe_audio-recorder {\n border-bottom-right-radius: 12px;\n border-bottom-left-radius: 0px;\n}\n\n.omniscribe_audio-recorder-container {\n display: flex;\n align-items: center;\n border: solid 1px var(--light-border);\n background-color: var(--white);\n max-height: 42px;\n border-radius: 9999px;\n border-width: 1px;\n justify-content: space-between;\n margin-bottom: 5px;\n flex: 1;\n align-self: stretch;\n margin-inline: calc(var(--spacing) * 4);\n padding-inline: calc(var(--spacing) * 2);\n}\n\n.omniscribe_audio-recorder-audio-container {\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: center;\n}\n\n.omniscribe_audio-recorder-refresh-btn {\n cursor: pointer;\n background-color: #f6f7f9;\n border-radius: 100px;\n transition:\n transform 0.3s ease,\n opacity 0.3s ease,\n background-color 0.3s ease;\n transform: scale(1);\n}\n.omniscribe_audio-recorder-refresh-btn-enabled {\n pointer-events: auto;\n opacity: 1;\n\n &:hover {\n transform: scale(1.15);\n }\n}\n.omniscribe_audio-recorder-refresh-btn-disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n.omniscribe_audio-recorder-audio-content-container {\n border: 1px solid #e5e7ec;\n height: 100%;\n display: flex;\n flex-direction: column;\n flex: 1;\n border-radius: 8px;\n margin-top: 18px;\n padding-top: 8px;\n padding-inline: calc(var(--spacing) * 4);\n padding-bottom: 8px;\n align-self: stretch;\n margin-inline: calc(var(--spacing) * 4);\n}\n.omniscribe_audio-recorder-footer {\n border-top: 1px solid #e5e7ec;\n padding-top: 16px;\n margin-top: 12px;\n display: flex;\n width: 100%;\n}\n.omniscribe_audio-recorder-footer-content {\n padding-inline: calc(var(--spacing) * 4);\n width: 100%;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n.omniscribe_audio-recorder-audio-info {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: #6f7d95;\n padding-block: 8px;\n}\n\n.omniscribe_audio-recorder-audio-star-icons {\n display: flex;\n justify-content: center;\n gap: 4px;\n}\n\n.omniscribe_audio-recorder-audio-feedback {\n color: #4a5364;\n}\n\n.omniscribe_audio-recorder-refresh-icon {\n color: #252a32;\n}\n\n.omniscribe_audio-recorder-star-icon {\n cursor: pointer;\n display: inline-block;\n}\n\n.omniscribe_audio-recorder-audio-star-container {\n position: relative;\n}\n\n\n/* Source: modules/chat/components/MicrophoneButton.css */\n/* Microphone Button Styles */\n.microphone-button {\n transition: all 150ms ease;\n border: none !important;\n background-color: white !important;\n box-shadow: none !important;\n margin-right: 3px;\n}\n\n.microphone-button--recording {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n background-color: red !important;\n}\n\n/* Pulse animation for recording state */\n@keyframes pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n}\n\n\n/* Source: modules/chat/components/thread/Thread.css */\n.omniscribe_thread-container {\n flex: 1;\n border-style: none;\n display: flex;\n overflow: hidden;\n background: transparent;\n bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n margin-block: calc(var(--spacing) * 0) /* 0rem = 0px */;\n right: 20px;\n border-bottom-left-radius: 12px;\n width: 100%;\n}\n\n.omniscribe_thread-container-history-cont {\n position: relative;\n display: flex;\n width: 0%;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-container-history-cont-open {\n width: 33%;\n}\n\n.omniscribe_thread-container-history-subcont {\n position: absolute;\n width: 100%;\n height: 100%;\n border-right-width: 1px;\n border-color: var(--color-slate-200)\n /* oklch(92.9% 0.013 255.508) = #e2e8f0 */;\n overflow: hidden;\n z-index: 20;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n.omniscribe_thread-container-history-subcont-open {\n translate: calc(var(--spacing) * 0);\n}\n\n.omniscribe_thread-container-history-subcont-close {\n translate: calc(300px * -1);\n}\n\n.omniscribe_thread-container-history-content {\n position: relative;\n height: 100%;\n width: 100%;\n}\n\n.omniscribe_thread-content-container {\n display: flex;\n flex: 1;\n width: 100%;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-content-btn-container {\n top: 0;\n left: 0;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--spacing) * 3);\n padding: calc(var(--spacing) * 2);\n padding-left: calc(var(--spacing) * 4);\n z-index: 10;\n}\n.omniscribe_absolute {\n position: absolute;\n}\n\n.omniscribe_relative {\n position: relative;\n}\n\n.omniscribe_thread-content-btn {\n background-color: #b2c3d6;\n}\n.omniscribe_thread-content-btn:hover {\n background-color: var(--color-gray-100);\n}\n\n.omniscribe_thread-content-btn-started-container {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: calc(var(--spacing) * 2);\n position: relative;\n}\n\n.omniscribe_thread-content-btn-started-subcontainer {\n position: absolute;\n left: 0;\n z-index: 10;\n top: calc(var(--spacing) * 2);\n}\n\n.omniscribe_thread-stick-to-bottom {\n font-size: 14px;\n}\n.omniscribe_thread-stick-to-bottom-content {\n position: absolute;\n inset: 0;\n overflow-y: scroll;\n overflow-x: hidden;\n display: grid;\n grid-template-rows: 1fr auto;\n}\n\n.omniscribe_thread-stick-to-bottom-content-class {\n padding-bottom: calc(var(--spacing) * 13);\n display: flex;\n flex-direction: column;\n padding-left: calc(var(--spacing) * 4);\n padding-right: calc(var(--spacing) * 4);\n min-width: 0;\n padding-top: 12px;\n position: relative;\n}\n\n.omniscribe_thread-footer-container {\n position: sticky;\n display: flex;\n background-color: white;\n flex-direction: column;\n align-items: center;\n bottom: 0;\n padding-inline: calc(var(--spacing) * 4);\n padding-top: calc(var(--spacing) * 1);\n border-bottom: 1px solid #e5e7ec;\n border-bottom-left-radius: 0.5rem;\n}\n\n.omniscribe_thread-footer-scroll-to-bottom {\n position: fixed;\n bottom: 17%;\n}\n.omniscribe_thread-footer-form-container {\n background-color: white;\n border-radius: 1rem;\n border: solid 1px var(--border);\n box-shadow: 0px 4px 4px 0px #00000040;\n margin-inline: auto;\n margin-bottom: calc(0.25rem /* 4px */ * 2);\n width: 100%;\n max-width: 48rem;\n position: relative;\n z-index: 10;\n}\n\n.omniscribe_thread-footer-form {\n display: grid;\n grid-template-rows: 1fr auto;\n max-width: var(--container-3xl) /* 48rem = 768px */;\n margin-inline: auto;\n}\n\n.omniscribe_thread-footer-textarea {\n resize: none;\n width: 100%;\n min-height: 20px;\n max-height: 56px;\n height: 20px;\n padding: 0 !important;\n overflow-y: auto;\n font-size: var(--font-size-100);\n outline: none;\n}\n\n.omniscribe_thread-footer-form-content {\n position: relative;\n display: flex;\n align-items: center;\n right: 0;\n bottom: 0;\n width: 100%;\n padding-block: 6px;\n}\n.omniscribe_thread-footer-form-btn {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n}\n.omniscribe_thread-footer-form-left-btns {\n display: flex;\n align-items: center;\n width: 100%;\n}\n.omniscribe_thread-down-btn {\n width: calc(0.25rem /* 4px */ * 4);\n height: calc(0.25rem /* 4px */ * 4);\n}\n\n.omniscribe_thread-footer-btns-container {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-right: 8px;\n}\n\n.omniscribe_thread-footer-info {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: #6f7d95;\n margin-bottom: 8px;\n}\n\n.omniscribe_thread-no-sources {\n width: 10px;\n}\n\n/* Attach file button */\n.omniscribe_thread-attach-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n border-radius: 8px;\n background-color: transparent;\n color: var(--color-gray-500, #6b7280);\n cursor: pointer;\n transition:\n background-color 0.2s ease,\n color 0.2s ease;\n padding: 0;\n margin-left: 8px;\n margin-right: 8px;\n flex-shrink: 0;\n}\n\n.omniscribe_thread-attach-btn:hover {\n background-color: var(--color-gray-100, #f3f4f6);\n color: var(--color-gray-700, #374151);\n}\n\n.omniscribe_thread-attach-btn:disabled {\n background-color: transparent;\n color: var(--color-gray-300, #d1d5db);\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.omniscribe_thread-attach-btn:disabled:hover {\n background-color: transparent;\n color: var(--color-gray-300, #d1d5db);\n}\n\n\n/* Source: modules/chat/components/thread/components/FileLimitBanner.css */\n/* File Limit Banner */\n.omniscribe_file-limit-banner {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 1000;\n background-color: #dc2626;\n color: white;\n border-radius: 12px;\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);\n animation:\n slideInFromTop 0.3s ease-out,\n slideOutToTop 0.3s ease-in 4.7s;\n animation-fill-mode: forwards;\n width: auto;\n max-width: 90vw;\n padding: 0;\n margin: 0 auto;\n}\n\n.omniscribe_file-limit-banner-content {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 20px;\n gap: 12px;\n white-space: nowrap;\n}\n\n.omniscribe_file-limit-banner-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: white;\n}\n\n.omniscribe_file-limit-banner-message {\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n text-align: center;\n}\n\n.omniscribe_file-limit-banner-close {\n background: none;\n border: none;\n color: white;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.omniscribe_file-limit-banner-close:hover {\n background-color: rgba(255, 255, 255, 0.2);\n}\n\n.omniscribe_file-limit-banner-close svg {\n width: 16px;\n height: 16px;\n}\n\n/* Animations */\n@keyframes slideInFromTop {\n 0% {\n opacity: 0;\n transform: translateX(-50%) translateY(-20px);\n }\n 100% {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n}\n\n@keyframes slideOutToTop {\n 0% {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n 100% {\n opacity: 0;\n transform: translateX(-50%) translateY(-20px);\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/FilePreview.css */\n/* File Preview Container */\n.omniscribe_file-preview-container {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n gap: 8px;\n width: 580px;\n padding: 12px 16px;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Force scroll in any context */\n position: relative;\n z-index: 1;\n /* Ensure scroll works even with parent containers that have overflow hidden */\n min-height: 104px; /* minimum height for content */\n}\n\n.omniscribe_file-preview-container-history-open {\n width: 372px;\n}\n\n/* Custom scrollbar */\n.omniscribe_file-preview-container::-webkit-scrollbar {\n height: 6px;\n}\n\n.omniscribe_file-preview-container::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.omniscribe_file-preview-container::-webkit-scrollbar-thumb {\n background-color: #d1d5db;\n border-radius: 3px;\n}\n\n.omniscribe_file-preview-container::-webkit-scrollbar-thumb:hover {\n background-color: #9ca3af;\n}\n\n/* Individual image thumbnail */\n.omniscribe_file-preview-image {\n position: relative;\n width: 80px;\n height: 80px;\n border-radius: 12px;\n background-color: #e8edf5;\n overflow: hidden;\n flex-shrink: 0;\n}\n\n.omniscribe_file-preview-image-img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 12px;\n}\n\n.omniscribe_file-preview-image-placeholder {\n width: 100%;\n height: 100%;\n background-color: #e8edf5;\n border-radius: 12px;\n}\n\n/* Document card */\n.omniscribe_file-preview-document {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background-color: white;\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 16px;\n min-width: 220px;\n max-width: 280px;\n max-height: 56px;\n position: relative;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n flex-shrink: 0;\n}\n\n.omniscribe_file-preview-document-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n background-color: #dc2626;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.omniscribe_file-preview-document-icon svg {\n color: white;\n}\n\n.omniscribe_file-preview-document-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n flex: 1;\n padding-right: 24px;\n}\n\n.omniscribe_file-preview-document-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--color-gray-900, #111827);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 200px;\n}\n\n.omniscribe_file-preview-document-type {\n font-size: 12px;\n color: #dc2626;\n font-weight: 500;\n}\n\n/* Remove button */\n.omniscribe_file-preview-remove-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: none;\n border-radius: 50%;\n background-color: #2563eb;\n color: white;\n cursor: pointer;\n padding: 0;\n transition: background-color 0.2s ease;\n z-index: 1;\n}\n\n.omniscribe_file-preview-remove-btn:hover {\n background-color: #1d4ed8;\n}\n\n.omniscribe_file-preview-remove-btn--image {\n top: 6px;\n right: 6px;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupMenu.css */\n.omniscribe_link-menu-container {\n width: 18rem;\n border-radius: 0.5rem;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n border: 1px solid var(--grey-200);\n background-color: #ffffff;\n}\n\n.omniscribe_link-menu-navigation {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n border-bottom: 1px solid var(--color-gray-100);\n background-color: var(--grey-50);\n border-top-left-radius: 0.5rem;\n border-top-right-radius: 0.5rem;\n}\n\n.omniscribe_nav-button {\n height: 1.5rem;\n width: 1.5rem;\n padding: 0.125rem;\n background-color: transparent;\n border: none;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 0.375rem;\n color: #6b7280;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.omniscribe_nav-button:hover {\n background-color: var(--color-gray-100);\n color: #374151;\n}\n\n.omniscribe_nav-button:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n box-shadow: 0 0 0 2px #3b82f6;\n}\n\n.omniscribe_nav-button:active {\n background-color: var(--grey-200);\n}\n\n.omniscribe_nav-icon {\n width: 0.875rem;\n height: 0.875rem;\n}\n\n.omniscribe_page-indicator {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n color: #4b5563;\n}\n\n.omniscribe_link-menu-content {\n padding: 0.375rem;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupMenuCard.css */\n.omniscribe_card-link {\n display: block;\n border-radius: 0.5rem;\n overflow: hidden;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 200ms;\n background-color: #ffffff;\n border: 1px solid var(--grey-200);\n text-decoration: none;\n}\n\n.omniscribe_card {\n border: 0;\n box-shadow: none;\n border-radius: 0.5rem;\n margin: 0;\n padding: 0;\n}\n\n.omniscribe_card:hover {\n background-color: var(--grey-50);\n}\n\n.omniscribe_card-header {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n border-bottom: 1px solid var(--color-gray-100);\n background-color: rgba(249, 250, 251, 0.5);\n}\n\n.omniscribe_favicon {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n\n.omniscribe_fallback-icon {\n width: 1rem;\n height: 1rem;\n border-radius: 0.125rem;\n background-color: #d1d5db;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.omniscribe_fallback-text {\n font-size: 8px;\n font-weight: 700;\n color: var(--grey-600);\n text-transform: uppercase;\n}\n\n.omniscribe_card-title {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n color: var(--grey-800);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-grow: 1;\n min-width: 0;\n margin: 0;\n}\n\n.omniscribe_card-content {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.omniscribe_card-content > * + * {\n margin-top: 0.25rem;\n}\n\n.omniscribe_link-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n color: var(--color-activeblack, #000000);\n line-height: 1.375;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.omniscribe_snippet-text {\n font-size: 0.75rem;\n line-height: 1rem;\n color: #4b5563;\n line-height: 1.625;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n/* Source: modules/chat/components/thread/components/LinkGroupPill.css */\n.omniscribe_pill-container {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n margin-left: 0.125rem;\n margin-right: 0.125rem;\n}\n\n.omniscribe_pill-button {\n display: inline-flex;\n align-items: center;\n border-radius: 9999px;\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n background-color: var(--blue-100);\n color: var(--blue-700);\n border: 1px solid var(--blue-200);\n transition-property:\n color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n cursor: pointer;\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.omniscribe_pill-button:hover {\n background-color: var(--blue-200);\n}\n\n.omniscribe_pill-button:focus {\n background-color: var(--blue-200);\n outline: 2px solid transparent;\n outline-offset: 2px;\n box-shadow:\n 0 0 0 2px #3b82f6,\n 0 0 0 4px rgba(59, 130, 246, 0.1);\n}\n\n.omniscribe_pill-button--active {\n background-color: var(--blue-200);\n}\n\n.omniscribe_pill-domain {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@media (min-width: 640px) {\n .omniscribe_pill-domain {\n max-width: 200px;\n }\n}\n\n.omniscribe_pill-counter {\n margin-left: 0.375rem;\n background-color: var(--blue-200);\n color: #1e40af;\n border-radius: 9999px;\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n font-size: 10px;\n line-height: 1;\n font-weight: 600;\n}\n\n.omniscribe_menu-portal {\n position: absolute;\n z-index: 100;\n}\n\n\n/* Source: modules/chat/components/thread/components/PredefinedQuestions.css */\n.omniscribe_predefined-questions-container {\n margin-top: calc(var(--spacing) * 2) /* 1rem = 16px */;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n display: flex;\n flex-direction: column;\n}\n.omniscribe_predefined-questions-span {\n color: var(--black);\n}\n\n.omniscribe_predefined-title {\n margin-bottom: 8px;\n}\n\n.omniscribe_predefined-questions-msg-container {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_predefined-questions-content {\n background-color: #ecf9ff !important;\n text-align: left;\n padding-top: 4px;\n padding-right: 16px;\n padding-bottom: 4px;\n padding-left: 16px;\n border-radius: 4px;\n width: fit-content;\n height: fit-content;\n}\n\n.omniscribe_predefined-questions-btn-rounded {\n border-radius: 8px;\n}\n\n\n/* Source: modules/chat/components/thread/components/SummaryLoading.css */\n/* Auto-summary loading styles */\n.omniscribe_auto-summary-container {\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n flex-direction: column;\n padding: 20px;\n z-index: 1000;\n pointer-events: none;\n width: 100%;\n height: 100%;\n}\n\n.omniscribe_auto-summary-text {\n font-size: 18px;\n text-align: center;\n margin-bottom: 20px;\n font-weight: 500;\n color: #2b303a;\n}\n\n.omniscribe_auto-summary-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Loading dots animation */\n.omniscribe_loading-dots {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.omniscribe_loading-dots::after {\n content: '';\n display: inline-block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: #666;\n animation: omniscribe-dot-flashing 1.4s infinite linear;\n}\n\n.omniscribe_loading-dots::before {\n content: '';\n display: inline-block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: #666;\n animation: omniscribe-dot-flashing 1.4s infinite linear;\n animation-delay: -0.16s;\n margin-right: 4px;\n}\n\n.omniscribe_loading-dots span {\n display: inline-block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: #666;\n animation: omniscribe-dot-flashing 1.4s infinite linear;\n animation-delay: -0.32s;\n margin-right: 4px;\n}\n\n@keyframes omniscribe-dot-flashing {\n 0%,\n 80%,\n 100% {\n opacity: 0;\n }\n 40% {\n opacity: 1;\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/history/ThreadHistory.css */\n.omniscribe_thread-list-container {\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n overflow-x: hidden;\n padding-inline: calc(var(--spacing) * 1);\n}\n\n.omniscribe_thread-list-content {\n padding-bottom: calc(var(--spacing) * 16);\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.omniscribe_thread-list-item {\n width: 100%;\n padding-inline: 0;\n}\n\n.omniscribe_thread-list-btn {\n text-align: left;\n align-items: center !important;\n justify-content: flex-start !important;\n width: calc(100% - var(--spacing) * 2);\n border-radius: 4px !important;\n margin-bottom: 4px;\n font-weight: var(--font-weight-normal);\n padding-inline: calc(var(--spacing) * 1) !important;\n}\n\n.omniscribe_thread-list-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--Text-Active, #252a32);\n font-size: var(--Font-Size-font-size-100, 12px);\n font-style: normal;\n font-weight: var(--Font-Weight-Regular, 400);\n line-height: var(--Font-Line-Height-line-height-100, 14.4px);\n /* 120% */\n letter-spacing: var(--Font-Letter-Spacing-letter-spacing-100, 0.05px);\n}\n\n.omniscribe_thread-history-loading {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n align-items: flex-start;\n justify-content: flex-start;\n overflow-y: scroll;\n overflow-x: hidden;\n padding-inline: calc(var(--spacing) * 1);\n}\n\n.omniscribe_thread-history-loading-skeleton {\n width: 100%;\n height: calc(var(--spacing) * 10);\n}\n\n.omniscribe_thread-history-container {\n display: flex;\n flex-direction: column;\n border-right: 1px solid #e5e7ec;\n align-items: flex-start;\n justify-content: flex-start;\n /* gap: calc(var(--spacing) * 6); */\n height: 100%;\n flex-shrink: 0;\n}\n\n.omniscribe_thread-history-button-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n /* space between left group and back button */\n width: 92%;\n /* padding-top: calc(var(--spacing) * 2); */\n background: var(--Greyscale-100, #f6f7f9);\n /* padding-inline: calc(var(--spacing) * 2); */\n padding: 8px;\n}\n\n/* Flex container for the left group */\n.omniscribe_thread-history-left-group {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n /* space between icon and text */\n}\n\n.omniscribe_thread-history-left-text {\n color: var(--Greyscale-900, #252a32);\n font-size: var(--Font-Size-font-size-100, 12px);\n font-style: normal;\n font-weight: var(--Font-Weight-Regular, 400);\n line-height: var(--Font-Line-Height-line-height-100, 14.4px);\n /* 120% */\n letter-spacing: var(--Font-Letter-Spacing-letter-spacing-100, 0.05px);\n}\n\n.omniscribe_thread-history-chat-started-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1);\n background-color: color-mix(in oklab, var(--blue) 40%, transparent);\n width: stretch;\n width: -moz-available;\n width: -webkit-fill-available;\n width: fill-available;\n box-shadow:\n inset 0 2px 4px rgb(0 0 0 / 0.05),\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n\n.omniscribe_thread-history-no-chat-started-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-inline: calc(var(--spacing) * 2);\n width: 100%;\n}\n\n.omniscribe_thread-history-chat-started-btn {\n border: none;\n background: transparent;\n padding: 0px;\n display: flex;\n flex-direction: row;\n gap: calc(var(--spacing) * 2);\n align-items: center;\n cursor: pointer;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n}\n\n.omniscribe_thread-history-chat-started-btn-text {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n font-weight: var(--font-weight-semibold);\n letter-spacing: var(--tracking-tight);\n}\n\n.omniscribe_thread-history-title {\n color: var(--Button-Primary-Active, #105bdb);\n font-family: var(--Font-Family-Omniscribe, Lato);\n font-size: var(--Font-Size-font-size-100, 12px) !important;\n font-style: normal;\n line-height: var(--Font-Line-Height-line-height-100, 14.4px) !important;\n /* 120% */\n letter-spacing: var(\n --Font-Letter-Spacing-letter-spacing-100,\n 0.05px\n ) !important;\n cursor: pointer;\n padding-inline: calc(var(--spacing) * 2) !important;\n}\n\n.omniscribe_thread-history-btn {\n border-radius: var(--Radius-radius-small, 4px) !important;\n background-color: var(--Greyscale-300, #e5e7ec) !important;\n cursor: pointer;\n\n &:hover {\n background-color: var(--Greyscale-300, #e5e7ec);\n }\n}\n\n.omniscribe_thread-tooltip {\n padding: calc(0.25rem /* 4px */ * 4);\n}\n\n\n/* Source: modules/chat/components/thread/components/markdown-text.css */\n.omniscribe_markdown-code-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--spacing) * 4) /* 1rem = 16px */;\n border-top-left-radius: var(--radius) /* 0.25rem = 4px */;\n border-top-right-radius: var(--radius) /* 0.25rem = 4px */;\n background-color: var(--color-zinc-900)\n /* oklch(21% 0.006 285.885) = #18181b */;\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n color: var(--white);\n}\n\n.omniscribe_markdown-code-span {\n text-transform: lowercase;\n & > span {\n font-size: var(--text-xs) /* 0.75rem = 12px */;\n line-height: var(--text-xs--line-height) /* calc(1 / 0.75) ≈ 1.3333 */;\n }\n}\n\n.omniscribe_markdown-h1 {\n margin-bottom: calc(var(--spacing) * 8) /* 2rem = 32px */;\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-4xl) /* 2.25rem = 36px */;\n line-height: var(--text-4xl--line-height) /* calc(2.5 / 2.25) ≈ 1.1111 */;\n font-weight: var(--font-weight-extrabold) /* 800 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h2 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 8) /* 2rem = 32px */;\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-3xl) /* 1.875rem = 30px */;\n line-height: var(--text-3xl--line-height) /* calc(2.25 / 1.875) ≈ 1.2 */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n.omniscribe_markdown-h3 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 6);\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-2xl);\n line-height: var(--text-2xl--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h4 {\n margin-bottom: calc(var(--spacing) * 4);\n margin-top: calc(var(--spacing) * 6);\n scroll-margin: calc(var(--spacing) * 20) /* 5rem = 80px */;\n font-size: var(--text-xl);\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n letter-spacing: var(--tracking-tight) /* -0.025em */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n.omniscribe_markdown-h5 {\n margin-block: calc(var(--spacing) * 4) /* 1rem = 16px */;\n font-size: var(--text-lg);\n line-height: var(--text-lg--line-height);\n font-weight: var(--font-weight-semibold) /* 600 */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-h6 {\n margin-block: calc(var(--spacing) * 4) /* 1rem = 16px */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-p {\n margin-block: calc(var(--spacing) * 2.5);\n line-height: calc(var(--spacing) * 5);\n &:first-child {\n margin-top: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0) /* 0rem = 0px */;\n }\n}\n\n.omniscribe_markdown-a {\n color: var(--primary);\n font-weight: var(--font-weight-medium) /* 500 */;\n text-decoration-line: underline;\n text-underline-offset: 4px;\n overflow-wrap: break-word;\n}\n\n.omniscribe_markdown-blockquote {\n border-left-width: 2px;\n padding-left: calc(var(--spacing) * 6) /* 1.5rem = 24px */;\n font-style: italic;\n}\n\n.omniscribe_markdown-ul {\n list-style-type: disc;\n padding-inline-start: 20px;\n word-break: break-word;\n & > li {\n margin-top: calc(var(--spacing) * 1) /* 0.5rem = 8px */;\n }\n}\n\n.omniscribe_markdown-ol {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n margin-left: calc(var(--spacing) * 6) /* 1.5rem = 24px */;\n list-style-type: decimal;\n & > li {\n margin-top: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n }\n}\n\n.omniscribe_markdown-hr {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n border-bottom-width: 1px;\n}\n.omniscribe_markdown-table {\n margin-block: calc(var(--spacing) * 5) /* 1.25rem = 20px */;\n width: 100%;\n border-collapse: separate;\n border-spacing: calc(var(--spacing) * 0) /* 0rem = 0px */;\n overflow-y: auto;\n}\n.omniscribe_markdown-th {\n background-color: var(--muted);\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n text-align: left;\n font-weight: var(--font-weight-bold) /* 700 */;\n &:first-child {\n border-top-left-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &:last-child {\n border-top-right-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &[align='center'] {\n text-align: center;\n }\n &[align='right'] {\n text-align: right;\n }\n}\n\n.omniscribe_markdown-td {\n border-bottom-width: 1px;\n border-left-width: 1px;\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n text-align: left;\n &:last-child {\n border-right-width: 1px;\n }\n &[align='center'] {\n text-align: center;\n }\n &[align='right'] {\n text-align: right;\n }\n}\n\n.omniscribe_markdown-tr {\n margin: calc(var(--spacing) * 0) /* 0rem = 0px */;\n &:first-child {\n border-top-width: 1px;\n }\n &:last-child > td:first-child {\n border-bottom-left-radius: var(--radius) /* 0.25rem = 4px */;\n }\n &:last-child > td:last-child {\n border-bottom-right-radius: var(--radius) /* 0.25rem = 4px */;\n }\n}\n\n.omniscribe_markdown-sup {\n font-size: var(--text-xs) /* 0.75rem = 12px */;\n line-height: var(--text-xs--line-height) /* calc(1 / 0.75) ≈ 1.3333 */;\n & > a {\n text-decoration-line: none;\n }\n}\n\n.omniscribe_markdown-pre {\n overflow-x: auto;\n border-bottom-right-radius: var(--radius) /* 0.25rem = 4px */;\n border-bottom-left-radius: var(--radius) /* 0.25rem = 4px */;\n background-color: var(--black);\n padding: calc(var(--spacing) * 4) /* 1rem = 16px */;\n color: var(--white);\n max-width: var(--container-4xl) /* 56rem = 896px */;\n}\n\n.omniscribe_markdown-code {\n border-radius: 0.25rem /* 4px */;\n font-weight: var(--font-weight-semibold) /* 600 */;\n}\n\n.omniscribe_markdown-link {\n color: var(--color-primary); /* text-primary */\n font-weight: 500; /* font-medium */\n text-decoration: underline; /* underline */\n text-underline-offset: 4px; /* underline-offset-4 */\n word-wrap: break-word; /* break-words */\n}\n\n.omniscribe_markdown-link:hover {\n color: var(--color-primary-dark); /* hover:text-primary-dark */\n}\n\n.omniscribe_assistant-markdown-container strong,\n.omniscribe_assistant-markdown-container b {\n font-weight: bold !important;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/AssistantMessage.css */\n.omniscribe_assistant-message-container {\n display: flex;\n align-items: flex-start;\n margin-right: auto;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n width: 100%;\n}\n\n.omniscribe_assistant-message-calls-container {\n display: flex;\n flex-direction: column;\n max-width: 100%;\n}\n\n.omniscribe_assistant-markdown-container {\n padding-block: calc(var(--spacing) * 0.5) /* 0.25rem = 4px */;\n}\n\n.omniscribe_assistant-commands-container {\n display: flex;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n align-items: center;\n margin-right: auto;\n}\n.omniscribe_assistant-message-container:hover,\n.omniscribe_assistant-message-container:focus {\n .omniscribe_assistant-commands-container {\n opacity: 100%;\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/AssistantMessageLoading.css */\n.omniscribe_assistant-message-loading-container {\n display: flex;\n align-items: flex-start;\n margin-right: auto;\n margin-top: 3px;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_assistant-message-loading {\n display: flex;\n align-items: center;\n border-radius: var(--radius-2xl) /* 1rem = 16px */;\n gap: calc(var(--spacing) * 1);\n background-color: var(--muted);\n padding-inline: calc(var(--spacing) * 4) /* 1rem = 16px */;\n padding-block: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n height: calc(var(--spacing) * 8) /* 2rem = 32px */;\n}\n.omniscribe_assistant-message-loading-dot {\n width: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n height: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n border-radius: calc(infinity * 1px);\n animation: loadingFade 2s infinite;\n background-color: color-mix(in oklab, var(--foreground) 50%, transparent);\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(1) {\n animation-delay: 0.2s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(2) {\n animation-delay: 0.4s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n@keyframes loadingFade {\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 0.8;\n }\n 100% {\n opacity: 0;\n }\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/BranchSwitcher.css */\n.omniscribe_brand-switcher-container {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n\n.omniscribe_brand-switcher-text {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n}\n\n.omniscribe_brand-switcher-btn {\n width: calc(0.25rem /* 4px */ * 6) /* 1.5rem = 24px */;\n height: calc(0.25rem /* 4px */ * 6) /* 1.5rem = 24px */;\n padding: calc(0.25rem /* 4px */ * 1) /* 0.25rem = 4px */;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/CommandBar.css */\n.omniscribe_command-bar-container {\n display: flex;\n align-items: center;\n padding-right: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n transition: opacity 0.2s ease-in-out;\n}\n\n.omniscribe_command-bar-container.omniscribe_command-bar-hidden {\n opacity: 0;\n pointer-events: none;\n}\n\n.thumbs.active {\n color: var(--blue-500);\n}\n\n.omniscribe_feedback-button-container {\n position: relative;\n display: inline-block;\n}\n\n.omniscribe_command-bar-container-icon-color,\n.thumbs {\n color: #4a5364;\n}\n\n.omniscribe_command-bar-container svg {\n width: 12px !important;\n height: 12px !important;\n}\n\n.omniscribe_command-bar-container .omniscribe_tooltip-icon-button-btn {\n padding: calc(var(--spacing) * 0.5) !important;\n}\n\n.omniscribe_command-bar-container .tooltip-base {\n padding: 0.25rem 0.5rem;\n}\n\n.omniscribe_command-bar-container .tooltip-trigger {\n padding: 1px;\n margin: 1px;\n}\n\n.omniscribe_command-bar-container .omniscribe_button-size-icon {\n height: calc(var(--spacing) * 3);\n width: calc(var(--spacing) * 3);\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/HumanMessage.css */\n.omniscribe_human-message-container {\n display: flex;\n align-items: center;\n margin-left: auto;\n gap: calc(var(--spacing) * 2) /* 0.5rem = 8px */;\n}\n.omniscribe_human-message-container-editing {\n width: 100%;\n max-width: var(--container-xl) /* 36rem = 576px */;\n}\n.omniscribe_human-message-container-no-editing {\n max-width: 100%;\n}\n\n.omniscribe_human-message-command-container {\n display: flex;\n gap: calc(var(--spacing) * 1) /* 0.5rem = 8px */;\n align-items: center;\n margin-left: auto;\n}\n.omniscribe_human-message-command-container-editing {\n opacity: 100%;\n}\n\n.omniscribe_human-message-container:focus,\n.omniscribe_human-message-container:hover {\n .omniscribe_human-message-command-container {\n opacity: 100%;\n }\n}\n\n.omniscribe_human-message-subcontainer {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n.omniscribe_human-message-subcontainer-editing {\n width: 100%;\n}\n\n.omniscribe_human-message-content {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 8px;\n}\n\n.omniscribe_human-message-content-text {\n text-align: right;\n padding-top: 4px;\n padding-bottom: 4px;\n padding-inline: calc(var(--spacing) * 2);\n border-radius: var(--radius-3xl);\n background-color: #f6f7f9;\n font-weight: 500;\n font-size: var(--text-sm);\n line-height: 1.25rem;\n letter-spacing: 0;\n margin: 0;\n}\n.omniscribe_human-message-textarea {\n min-height: 2.5rem !important; /* 40px */\n max-height: 12rem !important; /* 192px - Allow more vertical space */\n min-width: 200px !important; /* Minimum width for usability */\n resize: both; /* Allow controlled resizing in both directions */\n width: 100%;\n overflow: auto; /* Enable scroll when content exceeds max dimensions */\n\n &:focus-visible {\n box-shadow: var(--tw-ring-inset,) 0 0 0\n calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);\n }\n}\n\n.omniscribe_human-message-textarea-chat-history-close {\n max-width: 100% !important;\n}\n\n.omniscribe_human-message-textarea-chat-history-open {\n max-width: 385px !important;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/MessageImages.css */\n/* Message Files Container (for both images and documents) */\n.omniscribe_message-files {\n margin-top: 8px;\n margin-bottom: 4px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Message Images Container */\n.omniscribe_message-images {\n display: flex;\n flex-direction: column;\n}\n\n.omniscribe_message-images-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n max-width: 100%;\n}\n\n/* Individual Image Container */\n.omniscribe_message-image-container {\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid #e0e0e0;\n cursor: pointer;\n transition:\n transform 0.2s ease,\n box-shadow 0.2s ease;\n}\n\n.omniscribe_message-image-container:hover {\n transform: scale(1.02);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n\n.omniscribe_message-image-container-single {\n max-width: 200px;\n max-height: 200px;\n}\n\n.omniscribe_message-image-container-multiple {\n width: 80px;\n height: 80px;\n flex-shrink: 0;\n}\n\n/* Image Element */\n.omniscribe_message-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.omniscribe_message-image-container-single .omniscribe_message-image {\n max-width: 200px;\n max-height: 200px;\n width: auto;\n height: auto;\n}\n\n/* Loading State */\n.omniscribe_message-image-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 60px;\n background-color: #f8f9fa;\n color: #6c757d;\n font-size: 12px;\n border-radius: 8px;\n}\n\n/* Error State */\n.omniscribe_message-image-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 60px;\n background-color: #f8f9fa;\n color: #6c757d;\n font-size: 12px;\n border-radius: 8px;\n text-align: center;\n cursor: default;\n}\n\n.omniscribe_message-image-error span {\n font-size: 20px;\n margin-bottom: 4px;\n}\n\n.omniscribe_message-image-error small {\n font-size: 10px;\n}\n\n/* Image Counter for Multiple Images */\n.omniscribe_message-image-counter {\n position: absolute;\n top: 4px;\n right: 4px;\n background-color: rgba(0, 0, 0, 0.7);\n color: white;\n font-size: 10px;\n font-weight: bold;\n padding: 2px 6px;\n border-radius: 12px;\n min-width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Images Count */\n.omniscribe_message-images-count {\n margin-top: 4px;\n font-size: 11px;\n color: #6c757d;\n font-style: italic;\n}\n\n/* Modal for Full-Size Images */\n.omniscribe_message-image-modal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.omniscribe_message-image-modal-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n}\n\n.omniscribe_message-image-modal-content {\n position: relative;\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.omniscribe_message-image-modal-img {\n max-width: 100%;\n max-height: 100%;\n border-radius: 8px;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n}\n\n.omniscribe_message-image-modal-close {\n position: absolute;\n top: -10px;\n right: -10px;\n background-color: #fff;\n border: none;\n border-radius: 50%;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n font-size: 18px;\n font-weight: bold;\n color: #333;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);\n transition: background-color 0.2s ease;\n}\n\n.omniscribe_message-image-modal-close:hover {\n background-color: #f5f5f5;\n}\n\n/* Message Documents Container */\n.omniscribe_message-documents {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_message-document {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border-radius: 8px;\n background-color: #f8f9fa;\n border: 1px solid #e0e0e0;\n transition: background-color 0.2s ease;\n max-width: 280px;\n}\n\n.omniscribe_message-document:hover {\n background-color: #f0f0f0;\n}\n\n.omniscribe_message-document-icon {\n font-size: 24px;\n flex-shrink: 0;\n}\n\n.omniscribe_message-document-info {\n flex: 1;\n min-width: 0;\n}\n\n.omniscribe_message-document-name {\n font-weight: 500;\n font-size: 13px;\n color: #333;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.omniscribe_message-document-size {\n font-size: 11px;\n color: #6c757d;\n}\n\n.omniscribe_message-documents-count {\n margin-top: 4px;\n font-size: 11px;\n color: #6c757d;\n font-style: italic;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ReasoningSection.css */\n.omniscribe_assistant-reasoning-section {\n margin-top: 12px;\n border-left: 3px solid #e5e7eb;\n padding-left: 12px;\n background-color: #f9fafb;\n border-radius: 4px;\n padding: 8px 12px;\n}\n\n.omniscribe_assistant-reasoning-toggle {\n display: flex;\n align-items: center;\n gap: 8px;\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px 0;\n font-size: 14px;\n font-weight: 500;\n color: #6b7280;\n width: 100%;\n text-align: left;\n}\n\n.omniscribe_assistant-reasoning-arrow {\n display: inline-block;\n transition: transform 0.2s ease-in-out;\n transform: rotate(0deg);\n}\n\n.omniscribe_assistant-reasoning-arrow--expanded {\n transform: rotate(90deg);\n}\n\n.omniscribe_assistant-reasoning-summary {\n margin-top: 8px;\n font-size: 14px;\n color: #374151;\n line-height: 1.5;\n}\n\n.omniscribe_assistant-reasoning-summary-item {\n margin: 8px 0;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ToolCalls.css */\n.omniscribe_tool-calls-container {\n margin-block-start: calc(calc(var(--spacing) * 4) * var(0));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(0)));\n width: 100%;\n max-width: var(--container-4xl) /* 56rem = 896px */;\n}\n\n.omniscribe_tool-calls-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: 100%;\n flex-wrap: wrap;\n gap: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n}\n.omniscribe_tool-calls-h3 {\n font-weight: var(--font-weight-bold);\n color: var(--color-gray-900) /* oklch(21% 0.034 264.665) = #101828 */;\n word-break: break-all;\n font-size: 14px;\n margin: 0;\n}\n\n.omniscribe_tool-calls-item-args {\n align-items: flex-start;\n flex-wrap: wrap;\n}\n.omniscribe_tool-calls-item-args-text {\n word-break: break-all;\n margin-right: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n padding-block: calc(var(--spacing) * 1) /* 0.25rem = 4px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n}\n\n.omniscribe_tool-calls-item-args-code {\n background-color: var(--color-gray-50);\n border-radius: 0.25rem /* 4px */;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(\n --tw-leading,\n var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */\n );\n word-break: break-all;\n}\n\n.omniscribe_tool-calls-pre {\n font-size: 12px;\n}\n\n\n/* Source: modules/chat/components/thread/components/messages/ToolResults.css */\n/* ToolResult Component Styles */\n\n.omniscribe_tool-result {\n margin-top: 2px;\n border: 1px solid var(--grey-200);\n border-radius: 0.5rem !important; /* !rounded-lg */\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow-sm */\n overflow: hidden; /* overflow-hidden */\n width: 100%;\n}\n\n.omniscribe_tool-result-header {\n background-color: var(--grey-50); /* bg-gray-50 */\n padding-left: 1rem; /* px-4 */\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n display: flex; /* flex */\n align-items: center; /* items-center */\n justify-content: space-between; /* justify-between */\n}\n\n.omniscribe_tool-result-header--expanded {\n border-bottom: 1px solid var(--grey-200);\n}\n\n.omniscribe_tool-result-header-content {\n display: flex; /* flex */\n align-items: center; /* items-center */\n gap: 0.5rem; /* gap-2 */\n min-width: 0; /* min-w-0 */\n}\n\n.omniscribe_tool-result-title {\n font-weight: 500; /* font-medium */\n color: var(--grey-900);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; /* truncate */\n margin: 0;\n font-size: 14px;\n}\n\n.omniscribe_expand-button {\n padding: 0.25rem; /* p-1 */\n flex-shrink: 0; /* flex-shrink-0 */\n}\n\n.omniscribe_expand-icon {\n width: 1.25rem; /* w-5 */\n height: 1.25rem; /* h-5 */\n}\n\n.omniscribe_tool-result-content {\n padding: 1rem; /* p-4 */\n background-color: #ffffff; /* bg-white */\n max-height: 24rem; /* max-h-96 */\n overflow-y: auto; /* overflow-y-auto */\n}\n\n.omniscribe_tool-result-content > * + * {\n margin-top: 0.5rem; /* space-y-2 */\n}\n\n/* Scrollbar styles for webkit browsers */\n.omniscribe_tool-result-content::-webkit-scrollbar {\n width: 8px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-track {\n background: #f1f5f9;\n border-radius: 4px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-thumb {\n background: #cbd5e1;\n border-radius: 4px;\n}\n\n.omniscribe_tool-result-content::-webkit-scrollbar-thumb:hover {\n background: #94a3b8;\n}\n\n.omniscribe_result-card {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow-sm */\n border: 1px solid var(--color-gray-100);\n padding-top: 0.5rem !important; /* !py-2 */\n padding-bottom: 0.5rem !important;\n gap: 0 !important; /* !gap-0 */\n}\n\n.omniscribe_result-card-header {\n padding-top: 0.5rem !important; /* !pt-2 */\n padding-left: 0.5rem !important; /* !px-2 */\n padding-right: 0.5rem !important;\n padding-bottom: 0 !important; /* !pb-0 */\n}\n\n.omniscribe_result-card-title {\n font-size: 0.875rem; /* text-sm */\n line-height: 1.25rem;\n font-weight: 600; /* font-semibold */\n}\n\n.omniscribe_result-link {\n color: var(--blue-600);\n text-decoration: none;\n transition-property: color, text-decoration;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n.omniscribe_result-link:hover {\n text-decoration: underline; /* hover:underline */\n color: #1e40af; /* hover:text-blue-800 */\n}\n\n.omniscribe_result-card-content {\n padding: 0.5rem !important; /* !p-2 */\n padding-top: 0 !important; /* !pt-0 */\n}\n\n.omniscribe_result-description {\n font-size: 0.75rem; /* text-xs */\n line-height: 1rem;\n color: #374151; /* text-gray-700 */\n line-height: 1.625; /* leading-relaxed */\n word-break: break-all; /* break-all */\n display: -webkit-box;\n -webkit-line-clamp: 2; /* line-clamp-2 */\n -webkit-box-orient: vertical;\n overflow: hidden;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms; /* transition-all duration-150 ease-in-out */\n transition-timing-function: cubic-bezier(0.4, 0, 0.6, 1); /* ease-in-out */\n}\n\n.omniscribe_result-description:hover {\n -webkit-line-clamp: unset; /* hover:line-clamp-none */\n display: block;\n}\n\n.omniscribe_result-source {\n font-size: 0.75rem; /* text-xs */\n line-height: 1rem;\n color: #6b7280; /* text-gray-500 */\n margin-top: 0.25rem; /* mt-1 */\n padding-top: 0.25rem; /* pt-1 */\n border-top: 1px solid var(--color-gray-100);\n}\n\n.omniscribe_string-result {\n font-size: 0.875rem; /* text-sm */\n line-height: 1.25rem;\n white-space: pre-wrap; /* whitespace-pre-wrap */\n background-color: var(--grey-50);\n padding: 0.75rem; /* p-3 */\n border-radius: 0.375rem; /* rounded-md */\n border: 1px solid var(--grey-200);\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Consolas, 'Liberation Mono', Menlo,\n monospace; /* pre tag font */\n}\n\n\n/* Source: modules/chat/components/thread/components/tooltip-icon-button.css */\n.omniscribe_tooltip-icon-button-btn {\n padding: calc(var(--spacing) * 1);\n /* width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6); */\n}\n\n.omniscribe_tooltip-icon-button-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: none;\n}\n\n\n/* Source: modules/configuration/components/chat/Chat.css */\n.omniscribe_chat-config {\n display: flex;\n flex-direction: column;\n gap: 24px;\n min-height: 0; /* Permite que los hijos controlen su altura */\n flex: 1; /* Toma el espacio disponible */\n}\n\n/* Espaciado específico para el separador en el contexto de chat */\n.omniscribe_chat-config .omniscribe_separator {\n margin: 8px 0; /* Margen vertical consistente */\n}\n\n.omniscribe_chat-prompt-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-right: 16px;\n}\n\n.omniscribe_chat-prompt-textarea {\n width: 100%;\n height: 74px;\n padding: 8px;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n line-height: 1.5;\n color: #374151;\n background-color: white;\n resize: none;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.omniscribe_chat-prompt-textarea::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.omniscribe_chat-character-count {\n font-size: 12px;\n color: #6b7280;\n align-self: flex-start;\n}\n\n\n/* Source: modules/configuration/components/chat/PromptCustomization.css */\n.omniscribe_chat-prompt-title {\n font-size: 14px;\n font-weight: 400;\n color: #252a32;\n line-height: 14.4px;\n margin: 0 0 12px 0;\n}\n\n.omniscribe_chat-prompt-container {\n position: relative;\n}\n\n.omniscribe_chat-prompt-textarea {\n width: 100%;\n min-height: 80px;\n padding: 12px;\n border: 1px solid var(--border-color, #ddd);\n border-radius: 8px;\n font-family: inherit;\n font-size: 14px;\n line-height: 1.4;\n resize: none;\n transition: border-color 0.2s ease;\n}\n\n.omniscribe_chat-prompt-textarea:focus {\n outline: none;\n border-color: var(--primary-color, #007bff);\n box-shadow: 0 0 0 2px var(--primary-color-alpha, rgba(0, 123, 255, 0.1));\n}\n\n.omniscribe_chat-character-count {\n font-size: 12px;\n color: var(--text-secondary, #666);\n margin-top: 6px;\n text-align: right;\n}\n\n\n/* Source: modules/configuration/components/chat/SourceItem.css */\n.omniscribe_source-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n\n.omniscribe_source-label {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n}\n\n.omniscribe_source-checkbox {\n width: 16px;\n height: 16px;\n accent-color: #105bdb;\n cursor: pointer;\n}\n\n.omniscribe_source-name {\n flex: 1;\n font-size: 12px;\n color: #374151;\n}\n/* Removed link styles for source name - now handled by icon button only */\n.omniscribe_source-external-icon {\n width: 12px;\n height: 12px;\n stroke: #105bdb;\n cursor: pointer;\n transition: stroke 0.2s;\n flex-shrink: 0;\n}\n\n.omniscribe_source-external-icon:hover {\n stroke: #0d47a1;\n}\n\n.omniscribe_source-checkbox:checked + .omniscribe_source-name {\n font-weight: 500;\n color: #1f2937;\n}\n\n\n/* Source: modules/configuration/components/chat/SourceSelector.css */\n.omniscribe_source-selector {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 24px;\n min-height: 0;\n flex: 1;\n max-width: 100%;\n box-sizing: border-box;\n}\n\n.omniscribe_source-selector-title {\n font-size: 16px;\n font-weight: 500;\n color: #252a32;\n margin: 0;\n}\n\n.omniscribe_source-selector-description {\n font-size: 14px;\n color: #6b7280;\n line-height: 1.5;\n margin: 0;\n}\n\n.omniscribe_source-list {\n width: 100%;\n max-width: 100%;\n min-height: 120px;\n max-height: 300px;\n border-radius: 12px;\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n background: #ffffff;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n overflow-y: auto;\n flex: 1;\n box-sizing: border-box;\n}\n\n.omniscribe_source-list--compact {\n max-height: 120px;\n}\n\n\n/* Source: modules/configuration/section/Configuration.css */\n.omniscribe_config-content {\n width: 650px;\n max-height: 590px;\n opacity: 1;\n background-color: #ffffff;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n.omniscribe_config-list {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n flex: 1;\n}\n\n.omniscribe_config-item {\n width: 100%;\n height: 75px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n opacity: 1;\n padding: 10px 22px 10px 16px;\n cursor: pointer;\n transition: background-color 0.2s ease;\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.omniscribe_config-item:hover {\n background-color: #f9fafb;\n}\n\n.omniscribe_config-item:focus {\n outline: none;\n background-color: #f3f4f6;\n}\n\n.omniscribe_config-item:last-child {\n border-bottom: none;\n}\n\n.omniscribe_config-item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n}\n\n.omniscribe_config-icon {\n color: #4a5364;\n}\n\n.omniscribe_config-item-content {\n flex: 1;\n margin-left: 16px;\n margin-right: 16px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 4px;\n}\n\n.omniscribe_config-item-title {\n margin: 0;\n font-weight: 700;\n font-size: 14px;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n color: #252a32;\n}\n\n.omniscribe_config-item-description {\n margin: 0;\n font-weight: 500;\n font-size: 14px;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n color: #4a5364;\n}\n\n.omniscribe_config-item-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n color: #9ca3af;\n flex-shrink: 0;\n}\n\n/* Sub-screen styles */\n.omniscribe_config-subscreen-header {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 16px 12px;\n color: #13161a;\n font-size: 14px;\n font-style: normal;\n font-weight: 700;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_config-back-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n}\n\n.omniscribe_config-subscreen-title {\n margin: 0;\n font-size: 14px;\n font-weight: 700;\n color: #13161a;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_config-subscreen-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 16px;\n border-top: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n min-height: 0; /* Permite que los hijos se compriman */\n box-sizing: border-box; /* Incluye padding en el cálculo */\n}\n\n.omniscribe_config-subscreen-content.no-border {\n border-top: none;\n}\n\n.omniscribe_config-subscreen-content-template {\n flex: 1;\n}\n\n.omniscribe_config-section-label {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #374151;\n line-height: 1.4;\n}\n\n.omniscribe_config-language-section {\n display: flex;\n flex-direction: column;\n}\n\n.omniscribe_config-language-section-title {\n font-size: 16px;\n font-weight: 600;\n color: #374151;\n margin-bottom: 8px;\n}\n\n.omniscribe_config-subscreen-description {\n margin: 0 0 0 0;\n font-size: 14px;\n line-height: 18px;\n color: #13161a;\n font-weight: 400;\n}\n\n/* Dictionary Options View Styles */\n.omniscribe_config-dictionary-section {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.omniscribe_config-dictionary-add-section {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.omniscribe_config-dictionary-input-row {\n display: flex;\n gap: 12px;\n align-items: flex-start;\n}\n\n.omniscribe_config-dictionary-input {\n height: 32px;\n border: 1px solid #e5e8eb !important;\n border-radius: 8px !important;\n padding: 0 12px !important;\n font-size: 14px !important;\n line-height: 1.4 !important;\n background-color: #ffffff !important;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease !important;\n}\n\n.omniscribe_config-dictionary-input:focus {\n outline: none !important;\n border-color: #4f46e5 !important;\n box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1) !important;\n}\n\n.omniscribe_config-dictionary-input::placeholder {\n color: #9ca3af !important;\n font-size: 14px !important;\n}\n\n.omniscribe_config-dictionary-input.error {\n border-color: #dc3545 !important;\n background-color: #fff5f5 !important;\n}\n\n.omniscribe_config-dictionary-input.error:focus {\n border-color: #dc3545 !important;\n box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.1) !important;\n}\n\n.omniscribe_config-dictionary-add-btn {\n width: 32px;\n height: 32px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--primary);\n border: 1px solid var(--primary);\n border-radius: 8px;\n color: var(--primary-foreground);\n cursor: pointer;\n transition: all 0.2s ease;\n margin-top: 0;\n font-size: 0;\n}\n\n.omniscribe_config-dictionary-add-btn:hover:not(:disabled) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n border-color: color-mix(in oklab, var(--primary) 90%, transparent);\n}\n\n.omniscribe_config-dictionary-add-btn:disabled {\n background-color: #e5e8eb;\n border-color: #e5e8eb;\n color: #9ca3af;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n}\n\n.omniscribe_config-dictionary-list {\n display: flex;\n padding-top: 16px;\n flex-direction: column;\n gap: 8px;\n max-height: 410px;\n overflow-y: auto;\n margin-top: 4px;\n}\n\n.omniscribe_config-dictionary-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background-color: #f9fafb;\n border: 1px solid #e5e8eb;\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.omniscribe_config-dictionary-row:hover {\n background-color: #f3f4f6;\n border-color: #d1d5db;\n}\n\n.omniscribe_config-dictionary-cell {\n flex: 1;\n font-size: 14px;\n line-height: 20px;\n color: #374151;\n word-break: break-word;\n font-weight: 500;\n}\n\n.omniscribe_config-dictionary-arrow {\n color: #9ca3af;\n font-size: 16px;\n font-weight: 600;\n flex-shrink: 0;\n margin: 0 4px;\n}\n\n.omniscribe_config-dictionary-delete-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 6px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.omniscribe_config-dictionary-delete-btn:hover {\n background-color: #fee2e2;\n color: #dc2626;\n transform: scale(1.05);\n}\n\n.omniscribe_config-dictionary-empty {\n padding: 40px 16px;\n margin-top: 16px;\n text-align: center;\n color: #6b7280;\n font-size: 14px;\n line-height: 20px;\n background-color: #f9fafb;\n border: 2px dashed #e5e8eb;\n border-radius: 12px;\n font-style: italic;\n}\n\n/* Template specific styles */\n.omniscribe_template-field {\n background: white;\n border-bottom: 1px solid #e1e8ed;\n margin-bottom: 0;\n}\n\n.omniscribe_template-field:last-child {\n border-bottom: none;\n}\n\n.omniscribe_template-field-header {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n background: #ffffff;\n transition: background-color 0.2s ease;\n}\n\n.omniscribe_template-field-icon {\n margin-right: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s ease;\n}\n\n.omniscribe_template-field-icon svg {\n transition: transform 0.2s ease;\n}\n\n.omniscribe_template-field-icon.expanded svg {\n transform: rotate(90deg);\n}\n\n.omniscribe_template-field-label {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #2c3e50;\n}\n\n.omniscribe_template-field-content {\n padding: 16px;\n background: white;\n}\n\n.omniscribe_template-textarea {\n width: 100%;\n min-height: 80px;\n max-height: 300px;\n /* Prevent excessive vertical expansion */\n padding: 12px;\n border: 1px solid #e1e8ed;\n border-radius: 6px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n background: white;\n box-sizing: border-box;\n overflow-y: auto;\n /* Enable scroll when content exceeds max height */\n}\n\n.omniscribe_template-textarea:focus {\n outline: none;\n border-color: #3498db;\n box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);\n}\n\n.omniscribe_template-character-count {\n margin-top: 8px;\n font-size: 12px;\n color: #95a5a6;\n display: flex;\n}\n\n.omniscribe_template-actions {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid #e1e8ed;\n background: white;\n margin-top: 18px;\n margin-bottom: 50px;\n}\n\n/* Template fields container */\n.omniscribe_template-fields {\n display: flex;\n flex-direction: column;\n max-height: 370px;\n overflow-y: auto;\n background: white;\n}\n\n/* Improved scrollbar for template fields */\n.omniscribe_template-fields::-webkit-scrollbar {\n width: 6px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 3px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 3px;\n}\n\n.omniscribe_template-fields::-webkit-scrollbar-thumb:hover {\n background: #a8a8a8;\n}\n\n.omniscribe_config-version-section {\n background: #f6f7f9;\n color: #4a5364;\n padding: 16px 8px 16px 24px;\n font-weight: 500;\n line-height: 16.8px;\n font-size: 12px;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n\n/* Source: modules/layout/components/MinimizeButton/MinimizeButton.css */\n.omniscribe_minimize-button-container {\n position: absolute;\n top: -1px;\n left: 0;\n transform: translateX(-100%);\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n height: auto;\n max-height: 400px;\n min-height: 180px;\n}\n.omniscribe_minimize-button-subcontainer {\n position: relative;\n background-color: color-mix(in oklab, rgb(15, 15, 15) 65%, transparent);\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n backdrop-filter: sepia(1%);\n cursor: pointer;\n box-shadow:\n 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 400ms;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.omniscribe_minimize-button-subcontainer:hover {\n background-color: color-mix(in oklab, rgb(15, 15, 15) 85%, transparent);\n}\n.omniscribe_minimize-button-content {\n display: flex;\n rotate: calc(90deg * -2);\n gap: 10px;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n width: 100%;\n align-items: center;\n justify-content: center;\n position: relative;\n flex-wrap: nowrap;\n padding: 12px;\n min-height: 180px;\n max-height: 400px;\n}\n\n.omniscribe_minimize-button-span {\n font-weight: 400;\n font-size: var(--text-lg) /* 1.125rem = 18px */;\n line-height: var(--text-lg--line-height) /* calc(1.75 / 1.125) ≈ 1.5556 */;\n flex-wrap: nowrap;\n color: var(--white);\n display: flex;\n white-space: nowrap;\n text-align: center;\n}\n\n[dir='ltr'] .omniscribe_minimize-button-container {\n left: 0;\n transform: translateX(-100%);\n}\n\n[dir='ltr'] .omniscribe_minimize-button-subcontainer {\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n}\n\n[dir='rtl'] .omniscribe_minimize-button-container {\n right: 0;\n left: auto;\n transform: translateX(100%);\n}\n[dir='rtl'] .omniscribe_minimize-button-subcontainer {\n border-top-right-radius: 10px;\n border-bottom-right-radius: 10px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n\n\n/* Source: modules/layout/components/OmniscribeContainer/OmniscribeContainer.css */\n.omniscribe_container {\n isolation: isolate;\n position: fixed;\n bottom: calc(var(--spacing) * 5);\n right: 0;\n border-top-left-radius: 30px;\n border-bottom-left-radius: 30px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n z-index: 80;\n}\n\n[dir='ltr'] .omniscribe_container {\n right: 0;\n border-top-left-radius: 30px;\n border-bottom-left-radius: 30px;\n}\n\n[dir='rtl'] .omniscribe_container {\n left: 0;\n right: auto;\n border-top-right-radius: 30px;\n border-bottom-right-radius: 30px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n\n\n/* Source: modules/layout/components/OmniscribeLayout/OmniscribeLayout.css */\n.omniscribe_layout {\n position: fixed;\n width: var(--layout-w);\n background: var(--white);\n bottom: calc(var(--spacing) * 5);\n border-bottom-left-radius: 12px;\n border: solid 1px var(--light-border);\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 500ms;\n transition-property: transform, translate, scale, rotate;\n display: flex;\n flex-direction: column;\n height: var(--layout-h);\n min-width: 500px;\n min-height: 500px;\n right: 0;\n}\n\n[dir='rtl'] .omniscribe_layout {\n left: 0;\n right: auto;\n border-bottom-right-radius: 12px;\n}\n\n[dir='ltr'] .omniscribe_layout {\n right: 0;\n border-bottom-left-radius: 12px;\n}\n\n.omniscribe_layout-open {\n background: var(--white);\n translate: 0;\n}\n\n.omniscribe_layout-close {\n translate: var(--layout-w);\n}\n\n[dir='rtl'] .omniscribe_layout-close {\n translate: calc(var(--layout-w) * -1);\n}\n\n[dir='ltr'] .omniscribe_layout-close {\n translate: var(--layout-w);\n}\n\n\n/* Source: modules/utility-section/section/UtilityButtons.css */\n.omniscribe_utility-btns-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n background-color: #ffffff;\n padding: 16px;\n overflow: hidden;\n background: linear-gradient(90deg, #ffffff 0%, #f5f8fe 50%, #e7effd 100%);\n align-self: stretch;\n}\n\n.omniscribe_utility-btns-left,\n.omniscribe_utility-btns-right {\n display: flex;\n flex-direction: row;\n gap: 4px;\n align-items: center;\n}\n\n.omniscribe_utility-btn-right {\n border-radius: var(--Radius-radius-round, 99999px) !important;\n background-color: var(--Greyscale-100, #f6f7f9) !important;\n border: none !important;\n}\n\n.omniscribe_connected-buttons {\n display: flex;\n border-radius: var(--Radius-radius-medium, 8px);\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n overflow: hidden;\n}\n\n.omniscribe_connected-btn-left,\n.omniscribe_connected-btn-right {\n border: none !important;\n border-radius: 0 !important;\n}\n\n.omniscribe_connected-btn-left {\n border-right: 1px solid var(--Stroke-greyscale-Active, #e5e7ec) !important;\n}\n\n.omniscribe_utility-btns {\n cursor: pointer;\n transition-duration: 300ms;\n background-color: color-mix(in oklab, var(--white) 30%, transparent);\n border-radius: var(--Radius-radius-medium, 8px);\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n position: relative;\n padding: 8px;\n display: flex;\n align-items: center;\n\n &:hover {\n background-color: var(--Greyscale-100, #f6f7f9);\n }\n}\n\n.omniscribe_utility-btns-pointer {\n pointer-events: auto;\n}\n\n.omniscribe_utility-btns-no-pointer {\n pointer-events: none;\n background-color: var(--white);\n}\n\n.omniscribe_utility-btns-no-pointer-opacity {\n pointer-events: none;\n opacity: 50%;\n}\n\n.omniscribe_utility-btns-opacity {\n background-color: var(--white);\n opacity: 100%;\n}\n\n.omniscribe_utility-btns-active {\n background-color: var(--Greyscale-100, #f6f7f9);\n border: 1px solid var(--Stroke-greyscale-Active, #105bdb);\n}\n\n.omniscribe_btn-label {\n margin-left: 6px;\n font-size: 14px;\n color: #212529;\n font-weight: 500;\n}\n\n.omniscribe_btn-label-active {\n color: #105bdb;\n}\n\n.omniscribe_icon {\n color: var(--active-black);\n}\n\n.omniscribe_icon-active {\n color: #105bdb;\n}\n\n.omniscribe_config-view {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.omniscribe_config-close-btn {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #000000;\n width: 32px;\n height: 32px;\n}\n\n.omniscribe_config-title {\n margin: 0;\n color: #000000;\n font-size: 16px;\n font-weight: 700;\n line-height: 19.2px;\n}\n\n\n/* Source: shared/components/Card.css */\n.omniscribe_card {\n background-color: var(--color-card, #ffffff);\n color: var(--color-card-foreground, #000000);\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n border-radius: 0.75rem;\n border: 1px solid var(--color-border, var(--grey-200));\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n}\n\n.omniscribe_card-header {\n container-type: inline-size;\n container-name: card-header;\n display: grid;\n grid-auto-rows: min-content;\n grid-template-rows: auto auto;\n align-items: start;\n gap: 0.375rem;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n/* When card-header has card-action, adjust grid layout */\n.omniscribe_card-header:has([data-slot='card-action']) {\n grid-template-columns: 1fr auto;\n}\n\n/* When card-header has border-b class, add padding bottom */\n.omniscribe_card-header.border-b {\n padding-bottom: 1.5rem;\n}\n\n.omniscribe_card-title {\n line-height: 1;\n font-weight: 600;\n}\n\n.omniscribe_card-description {\n color: var(--color-muted-foreground, #6b7280);\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n\n.omniscribe_card-action {\n grid-column-start: 2;\n grid-row: span 2 / span 2;\n grid-row-start: 1;\n align-self: start;\n justify-self: end;\n}\n\n.omniscribe_card-content {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.omniscribe_card-footer {\n display: flex;\n align-items: center;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.omniscribe_card-footer.border-t {\n padding-top: 1.5rem;\n}\n\n\n/* Source: shared/components/button.css */\n.omniscribe_button {\n border: none;\n background: transparent;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: calc(var(--spacing) * 2);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n outline-style: none;\n &:disabled {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 50%;\n }\n & svg {\n pointer-events: none;\n flex-shrink: 0;\n }\n & svg:not([class*='size-svg']) {\n width: calc(var(--spacing) * 4) /* 1rem = 16px */;\n height: calc(var(--spacing) * 4) /* 1rem = 16px */;\n }\n &:focus-visible {\n border-color: var(--ring);\n box-shadow: 0 0 0 calc(3px + var(--tw-ring-offset-width))\n color-mix(in oklab, var(--ring) 50%, transparent);\n }\n &[aria-invalid='true'] {\n border-color: var(--destructive);\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n}\n\n.omniscribe_button-variant-default {\n background-color: var(--primary);\n color: var(--primary-foreground);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n}\n.omniscribe_button-variant-destructive {\n background-color: var(--destructive);\n color: var(--white);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n &:focus-visible {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n}\n.omniscribe_button-variant-outline {\n border: solid 1px var(--input);\n background-color: var(--background);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: var(--accent);\n color: var(--accent-foreground);\n }\n}\n.omniscribe_button-variant-icon {\n align-items: center;\n border-radius: 100%;\n padding: 10px;\n & svg {\n pointer-events: auto;\n flex-shrink: 0;\n }\n & svg:not([class*='size-svg']) {\n width: auto;\n height: auto;\n }\n}\n.omniscribe_button-variant-secondadry {\n background-color: var(--secondary);\n color: var(--secondary-foreground);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n &:hover {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n}\n.omniscribe_button-variant-ghost:hover {\n background-color: var(--accent);\n color: var(--accent-foreground);\n}\n.omniscribe_button-variant-empty {\n cursor: pointer;\n}\n.omniscribe_button-variant-primary {\n cursor: pointer;\n background-color: color-mix(in oklab, var(--primary-button) 80%, transparent);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n font-size: 16px !important;\n color: var(--white);\n &:hover {\n background-color: color-mix(\n in oklab,\n var(--primary-button) 60%,\n transparent\n );\n }\n}\n.omniscribe_button-size-default {\n height: calc(var(--spacing) * 9);\n padding-inline: calc(var(--spacing) * 4);\n padding-block: calc(var(--spacing) * 2);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 3) /* 0.75rem = 12px */;\n }\n}\n.omniscribe_button-size-sm {\n height: calc(var(--spacing) * 8);\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n gap: calc(var(--spacing) * 1.5) /* 0.375rem = 6px */;\n padding-inline: calc(var(--spacing) * 3);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n}\n\n.omniscribe_button-size-lg {\n height: calc(var(--spacing) * 10);\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n padding-inline: calc(var(--spacing) * 6);\n &:has(> svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n}\n\n.omniscribe_button-size-icon {\n height: calc(var(--spacing) * 5);\n width: calc(var(--spacing) * 5);\n}\n.omniscribe_button-size-padding {\n padding: calc(var(--spacing) * 2);\n min-width: calc(var(--spacing) * 40);\n}\n\n.omniscribe_button-text {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n}\n.omniscribe_button-whitespace {\n white-space: nowrap;\n}\n.omniscribe_button-rounded {\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n}\n.omniscribe_button-disabled {\n pointer-events: none;\n}\n.omniscribe_button-loading {\n opacity: 50%;\n}\n.omniscribe_button-animate-spin {\n animation: spin 1s linear infinite;\n}\n.omniscribe_button-variant-report {\n cursor: pointer;\n background-color: var(--report);\n box-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n font-size: 16px;\n color: var(--white);\n &:hover {\n background-color: color-mix(in oklab, var(--report) 60%, transparent);\n }\n}\n\n\n/* Source: shared/components/feedback-modal.css */\n.omniscribe_feedback-modal {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n background: white;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n margin-top: 8px;\n min-width: 200px;\n width: 200px;\n transform-origin: top left;\n}\n\n.omniscribe_feedback-input-container {\n position: relative;\n display: flex;\n align-items: flex-end;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n}\n\n.omniscribe_feedback-textarea {\n flex: 1;\n border: transparent;\n border-radius: 8px;\n padding: 12px 12px 12px 12px;\n font-size: 14px;\n outline: none;\n transition: border-color 0.2s;\n resize: none;\n min-height: 20px;\n max-height: 200px;\n overflow-y: auto;\n font-family: inherit;\n line-height: 1.4;\n width: 100%;\n box-sizing: border-box;\n}\n.omniscribe_feedback-textarea-padding {\n margin-bottom: 34px;\n padding-bottom: 0px !important;\n}\n\n.omniscribe_feedback-icons {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.omniscribe_feedback-icons:has(.omniscribe_feedback-send) {\n bottom: 8px;\n top: auto;\n transform: none;\n}\n\n.omniscribe_feedback-close {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #6b7280;\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.omniscribe_feedback-close:hover {\n background-color: #f3f4f6;\n color: #374151;\n}\n\n.omniscribe_feedback-close svg {\n width: 12px;\n height: 12px;\n}\n\n.omniscribe_feedback-send {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--blue-500);\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.omniscribe_feedback-send:hover {\n background-color: #f0f7ff;\n color: #0d47a1;\n}\n\n.omniscribe_feedback-send svg {\n width: 12px;\n height: 12px;\n}\n\n.omniscribe_feedback-confirmation {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-top: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n animation: fadeInOut 3s ease-in-out;\n}\n\n.omniscribe_feedback-confirmation-icon {\n width: 12px;\n height: 12px;\n flex-shrink: 0;\n}\n\n/* Right-positioned modal styles */\n.omniscribe_feedback-modal-right {\n position: absolute;\n bottom: 0;\n left: 40%;\n z-index: 10000;\n background: white;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n margin-left: 8px;\n width: 200px;\n transform-origin: bottom left;\n}\n\n.omniscribe_feedback-sending-center {\n top: 100%;\n left: 0;\n}\n\n.omniscribe_feedback-sending-right {\n bottom: 0;\n left: 40%;\n}\n\n.omniscribe_feedback-sending {\n position: absolute;\n z-index: 10000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-left: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n}\n.omniscribe_feedback-confirmation-right {\n position: absolute;\n bottom: 0;\n left: 40%;\n z-index: 10000;\n background: white;\n color: black;\n border: 1px solid #e5e7ec;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 8px 0px;\n margin-left: 8px;\n min-width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n font-size: 14px;\n font-weight: 500;\n animation: fadeInOut 3s ease-in-out;\n}\n\n@keyframes fadeInOut {\n 0% {\n opacity: 0;\n transform: translateY(-10px);\n }\n 10% {\n opacity: 1;\n transform: translateY(0);\n }\n 90% {\n opacity: 1;\n transform: translateY(0);\n }\n 100% {\n opacity: 0;\n transform: translateY(-10px);\n }\n}\n\n\n/* Source: shared/components/gradient-box.css */\n.omniscribe_gradient-box {\n border-radius: 8px;\n padding: 1px;\n width: fit-content;\n}\n\n\n/* Source: shared/components/input.css */\n.omniscribe_input {\n height: calc(var(--spacing) * 9);\n width: 100%;\n display: flex;\n border-radius: calc(var(--radius));\n border: solid 1px var(--input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 1);\n font-size: var(--text-base) /* 1rem = 16px */;\n line-height: var(--text-base--line-height);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n outline-style: none;\n &::file-selector-button {\n color: var(--foreground);\n display: inline-flex;\n height: calc(var(--spacing) * 7);\n border: none;\n background-color: transparent;\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n font-weight: var(--font-weight-medium);\n }\n &::placeholder {\n color: var(--muted-foreground);\n }\n &::selection {\n background-color: var(--primary);\n color: var(--primary-foreground);\n }\n &:disabled {\n pointer-events: none;\n cursor: not-allowed;\n opacity: 50%;\n }\n &[aria-invalid='true'] {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n border-color: var(--destructive);\n }\n @media (width >= 48rem /* 768px */) {\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height) /* calc(1.25 / 0.875) ≈ 1.4286 */;\n }\n}\n\n.omniscribe_input-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n}\n\n.omniscribe_input.invalid {\n border-color: #dc3545;\n background-color: #fff5f5;\n box-shadow: 0 0 0 0.125rem rgba(220, 53, 69, 0.25);\n}\n\n.omniscribe_input-error {\n color: #dc3545;\n font-size: 10px;\n margin-block: 0.25rem;\n display: block;\n line-height: 1;\n}\n\n\n/* Source: shared/components/loading-modal.css */\n.omniscribe_loading-modal-container {\n position: absolute;\n background-color: color-mix(in oklab, var(--black) 50%, transparent);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 50;\n height: 100vh;\n width: 100vw;\n right: 0;\n bottom: calc(var(--spacing) * -5.2);\n}\n.omniscribe_loading-modal-subcontainer {\n background-color: var(--white);\n padding: calc(var(--spacing) * 8);\n border-radius: var(--radius);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n text-align: center;\n max-width: var(--container-md);\n}\n.omniscribe_loading-modal-msg {\n font-size: var(--text-xl) /* 1.25rem = 20px */;\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-bold);\n margin-bottom: calc(var(--spacing) * 4);\n}\n.omniscribe_loading-modal-spin {\n display: inline-block;\n width: calc(var(--spacing) * 12);\n height: calc(var(--spacing) * 12);\n border: solid 4px var(--color-gray-200);\n border-top-color: var(--blue-500);\n border-radius: calc(infinity * 1px);\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n\n/* Source: shared/components/modal.css */\n.omniscribe_modal-overlay {\n position: absolute;\n background-color: color-mix(in oklab, var(--black) 50%, transparent);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 50;\n height: 100vh;\n width: 100vw;\n right: 0;\n bottom: calc(var(--spacing) * -5.2);\n}\n\n.omniscribe_modal-container {\n position: relative;\n background-color: var(--white);\n z-index: 100;\n border-radius: 12px;\n border: solid 1px var(--light-border);\n box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n padding: calc(var(--spacing) * 5);\n transition-duration: 300ms;\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n max-width: 90vw;\n max-height: 90vh;\n}\n.omniscribe_modal-container-scroll {\n overflow: auto;\n}\n\n.omniscribe_modal-container-show {\n opacity: 100%;\n}\n\n.omniscribe_modal-container-hide {\n opacity: 0%;\n}\n\n.omniscribe_modal-subcontainer {\n display: flex;\n flex-direction: column;\n}\n\n.omniscribe_modal-title-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n margin-bottom: calc(var(--spacing) * 2);\n}\n\n.omniscribe_modal-title {\n font-size: var(--text-3xl); /* 1.875rem = 30px */\n line-height: var(--text-xl--line-height);\n font-weight: var(--font-weight-bold);\n margin: 0;\n}\n\n.omniscribe_modal-button {\n border: none;\n background: transparent;\n line-height: var(--text-2xl--line-height);\n cursor: pointer;\n color: var(--black);\n}\n\n@media (min-width: 768px) {\n .omniscribe_modal-container {\n max-width: 60vw;\n }\n}\n\n/* Large screens: desktop */\n@media (min-width: 1024px) {\n .omniscribe_modal-container {\n max-width: 50vw;\n }\n}\n\n/* Very large screens: large desktop and ultra-wide */\n@media (min-width: 1440px) {\n .omniscribe_modal-container {\n max-width: 40vw;\n }\n}\n\n/* Intermediate breakpoint: large tablets */\n@media (min-width: 640px) and (max-width: 767px) {\n .omniscribe_modal-container {\n max-width: 70vw;\n }\n}\n\n\n/* Source: shared/components/select.css */\n.omniscribe_select-container {\n position: relative;\n width: 100%;\n padding-block: calc(var(--spacing) * 3);\n}\n.omniscribe_select-button {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: calc(var(--spacing) * 3);\n background-color: var(--white);\n border-radius: var(--Radius-radius-medium, 8px);\n border: solid 1px var(--light-border);\n cursor: pointer;\n}\n.omniscribe_select-text {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n}\n.omniscribe_select-content-container {\n position: absolute;\n width: 100%;\n margin-top: calc(var(--spacing) * 2);\n border: solid 1px var(--light-border);\n background-color: var(--white);\n border-radius: var(--radius);\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n bottom: calc(var(--spacing) * 15);\n padding-inline: calc(var(--spacing) * 1);\n padding-block: calc(var(--spacing) * 0.5);\n z-index: 9999;\n}\n.omniscribe_select-content-ul {\n overflow-y: scroll;\n max-height: calc(var(--spacing) * 80);\n padding-inline: 5px;\n}\n.omniscribe_select-content-li {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: calc(var(--spacing) * 3);\n cursor: pointer;\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-100);\n }\n }\n}\n.omniscribe_select-check-icon {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n color: var(--color-slate-500) /* oklch(55.4% 0.046 257.417) = #62748e */;\n}\n.omniscribe_select-content-li-span {\n display: flex;\n align-items: center;\n gap: calc(0.25rem /* 4px */ * 2);\n}\n\n\n/* Source: shared/components/separator.css */\n/* Separator Component Styles */\n.omniscribe_separator {\n border: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n flex-shrink: 0;\n}\n\n.omniscribe_separator--horizontal {\n height: 0;\n width: 100%;\n border-top: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n border-right: none;\n border-bottom: none;\n border-left: none;\n}\n\n.omniscribe_separator--vertical {\n width: 0;\n height: 100%;\n border-left: 1px solid var(--Stroke-greyscale-Active, #e5e7ec);\n border-top: none;\n border-right: none;\n border-bottom: none;\n}\n\n\n/* Source: shared/components/skeleton.css */\n.omniscribe_skeleton {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n}\n\n\n/* Source: shared/components/textarea.css */\n.omniscribe_textarea-default {\n display: flex;\n min-height: calc(var(--spacing) * 16);\n width: -webkit-fill-available;\n border-radius: calc(var(--radius) /* 0.25rem = 4px */ - 2px);\n border: solid 1px var(--input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 2);\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n transition-property: color, box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n &::placeholder {\n color: var(--muted-foreground);\n font-size: var(--text-sm) /* 0.875rem = 14px */;\n line-height: var(--text-sm--line-height);\n }\n &:focus-visible {\n border-color: var(--ring);\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n box-shadow: var(--tw-ring-inset,) 0 0 0\n calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);\n }\n &[aria-invalid='true'] {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n border-color: var(--destructive);\n }\n &:disabled {\n cursor: not-allowed;\n opacity: 50%;\n }\n}\n\n.omniscribe_textarea-secondary {\n padding: calc(var(--spacing) * 3.5);\n padding-bottom: calc(var(--spacing) * 0);\n border-style: none;\n background-color: transparent;\n resize: none;\n &:focus {\n outline-style: none;\n }\n}\n.omniscribe_textarea-general {\n font-family: 'Lato', sans-serif;\n font-size: var(--font-size-100);\n outline: none;\n}\n\n\n/* Source: shared/components/toast.css */\n.omniscribe_toast-container {\n position: fixed;\n bottom: calc(var(--spacing) * 5);\n top: calc(var(--spacing) * -30);\n border-radius: var(--radius);\n padding: calc(var(--spacing) * 4);\n height: fit-content;\n transition-duration: 500ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n width: calc(var(--spacing) * 120);\n}\n\n.omniscribe_toast-container-danger {\n background-color: var(--color-red-500);\n}\n.omniscribe_toast-container-black {\n background-color: var(--black);\n}\n.omniscribe_toast-container-show {\n right: calc(var(--spacing) * 10);\n}\n.omniscribe_toast-container-hide {\n right: -100%;\n}\n.omniscribe_toast-subcontainer {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 100ms;\n display: flex;\n flex-direction: column;\n color: var(--white);\n}\n.omniscribe_toast-title {\n font-size: 18px;\n font-weight: var(--font-weight-bold);\n}\n.omniscribe_toast-msg {\n font-size: 16px;\n}\n\n\n/* Source: shared/components/toggle.css */\n.omniscribe_toggle-container {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 8px;\n flex-direction: column;\n}\n\n.omniscribe_toggle-label {\n font-size: 14px;\n font-weight: 400;\n color: #374151;\n flex: 1;\n}\n\n.omniscribe_toggle-wrapper {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.omniscribe_toggle-switch {\n position: relative;\n width: 29px;\n height: 16px;\n background-color: #d1d5db;\n border-radius: 8px;\n border: none;\n cursor: pointer;\n transition: background-color 0.2s ease;\n outline: none;\n}\n\n.omniscribe_toggle-switch:focus-visible {\n box-shadow: 0 0 0 2px #132caa;\n}\n\n.omniscribe_toggle-switch-checked {\n background-color: #132caa;\n}\n\n.omniscribe_toggle-switch-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.omniscribe_toggle-thumb {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 12px;\n height: 12px;\n background-color: white;\n border-radius: 50%;\n transition: transform 0.2s ease;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.omniscribe_toggle-switch-checked .omniscribe_toggle-thumb {\n transform: translateX(13px);\n}\n\n.omniscribe_toggle-status {\n font-size: 14px;\n font-weight: 500;\n color: #6b7280;\n min-width: 70px;\n}\n\n.omniscribe_toggle-switch-checked + .omniscribe_toggle-status {\n color: #4a5364;\n}\n\n\n/* Source: shared/components/tooltip.css */\n.tooltip-base {\n position: fixed;\n z-index: 9999;\n border-radius: 0.375rem; /* rounded-md */\n background-color: #111827;\n padding: 0.5rem 0.75rem; /* px-3 py-2 */\n font-size: 0.875rem; /* text-sm */\n font-family: 'Lato', sans-serif;\n color: #ffffff; /* text-white */\n box-shadow:\n 0 10px 15px -3px rgba(0, 0, 0, 0.1),\n 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* shadow-lg */\n transition: opacity 0.2s ease-in-out; /* transition-opacity duration-200 */\n pointer-events: none;\n user-select: none;\n word-wrap: break-word;\n line-height: 1.4;\n}\n\n/* Tooltip Arrow Styles */\n.tooltip-arrow {\n position: absolute;\n width: 0.5rem; /* w-2 */\n height: 0.5rem; /* h-2 */\n background-color: #111827;\n transform: rotate(45deg);\n}\n\n/* Arrow positioning for each side */\n.tooltip-arrow-top {\n bottom: -0.25rem; /* bottom-[-4px] */\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-bottom {\n top: -0.25rem; /* top-[-4px] */\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-left {\n right: -0.25rem; /* right-[-4px] */\n top: 50%;\n transform: translateY(-50%) rotate(45deg);\n}\n\n.tooltip-arrow-right {\n left: -0.25rem; /* left-[-4px] */\n top: 50%;\n transform: translateY(-50%) rotate(45deg);\n}\n\n/* Width classes based on message length */\n.tooltip-width-auto {\n width: auto;\n white-space: nowrap;\n}\n\n.tooltip-width-200 {\n width: auto;\n max-width: 200px;\n}\n\n.tooltip-width-xs {\n width: auto;\n max-width: 20rem; /* max-w-xs */\n}\n\n.tooltip-width-sm {\n width: auto;\n max-width: 24rem; /* max-w-sm */\n}\n\n.tooltip-width-400 {\n width: auto;\n max-width: 400px;\n}\n\n/* Trigger container styles */\n.tooltip-trigger {\n display: inline-block;\n}\n\n/* Animation classes */\n.tooltip-enter {\n opacity: 0;\n transform: scale(0.95);\n}\n\n.tooltip-enter-active {\n opacity: 1;\n transform: scale(1);\n transition:\n opacity 0.2s ease-in-out,\n transform 0.2s ease-in-out;\n}\n\n.tooltip-exit {\n opacity: 1;\n transform: scale(1);\n}\n\n.tooltip-exit-active {\n opacity: 0;\n transform: scale(0.95);\n transition:\n opacity 0.15s ease-in-out,\n transform 0.15s ease-in-out;\n}\n\n/* Dark theme variant */\n.tooltip-dark {\n background-color: #1f2937; /* bg-gray-800 */\n color: var(--grey-50);\n}\n\n.tooltip-dark .tooltip-arrow {\n background-color: #1f2937;\n}\n\n/* Light theme variant */\n.tooltip-light {\n background-color: #ffffff;\n color: #374151; /* text-gray-700 */\n box-shadow:\n 0 10px 15px -3px rgba(0, 0, 0, 0.1),\n 0 4px 6px -2px rgba(0, 0, 0, 0.05),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n}\n\n.tooltip-light .tooltip-arrow {\n background-color: #ffffff;\n}\n\n/* Responsive breakpoints */\n@media (max-width: 640px) {\n .tooltip-base {\n max-width: calc(100vw - 2rem);\n font-size: 0.8125rem; /* Slightly smaller on mobile */\n }\n\n .tooltip-width-400,\n .tooltip-width-sm,\n .tooltip-width-xs {\n max-width: calc(100vw - 2rem);\n }\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n .tooltip-base {\n border: 2px solid #ffffff;\n }\n\n .tooltip-light {\n border: 2px solid #000000;\n }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n .tooltip-base,\n .tooltip-enter-active,\n .tooltip-exit-active {\n transition: none;\n }\n}\n";
129693
130207
 
129694
130208
  const injectedCss$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
129695
130209
  __proto__: null,