@omniloy/sofia-sdk 1.0.10 → 1.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.
@@ -21972,7 +21972,7 @@ const {
21972
21972
  create: create$1,
21973
21973
  } = axios;
21974
21974
 
21975
- const version$2 = "1.0.10";
21975
+ const version$2 = "1.0.11";
21976
21976
 
21977
21977
  const handleApiError$1 = async (error) => {
21978
21978
  return Promise.reject(error);
@@ -27848,6 +27848,150 @@ const useVadCoverage = () => {
27848
27848
  };
27849
27849
  };
27850
27850
 
27851
+ const FAMILIES = [
27852
+ "recording",
27853
+ "activity",
27854
+ "report",
27855
+ "lifecycle"
27856
+ ];
27857
+ const familyOf = (name) => {
27858
+ const prefix = name.split(".")[0];
27859
+ return FAMILIES.includes(prefix) ? prefix : "lifecycle";
27860
+ };
27861
+
27862
+ const compileSubscription = (patterns) => {
27863
+ if (!patterns || patterns.length === 0)
27864
+ return () => false;
27865
+ if (patterns.includes("*"))
27866
+ return () => true;
27867
+ const exact = /* @__PURE__ */ new Set();
27868
+ const families = /* @__PURE__ */ new Set();
27869
+ for (const pattern of patterns) {
27870
+ if (pattern.endsWith(".*"))
27871
+ families.add(pattern.slice(0, -2));
27872
+ else
27873
+ exact.add(pattern);
27874
+ }
27875
+ if (families.size === 0)
27876
+ return (name) => exact.has(name);
27877
+ return (name) => {
27878
+ if (exact.has(name))
27879
+ return true;
27880
+ const dot = name.indexOf(".");
27881
+ return dot > 0 && families.has(name.slice(0, dot));
27882
+ };
27883
+ };
27884
+ const subscriptionKey = (patterns) => patterns ? patterns.join("|") : "";
27885
+
27886
+ const QUEUE_CAP = 200;
27887
+ let handler = null;
27888
+ let matches = () => false;
27889
+ let sessionId = null;
27890
+ let seq = 0;
27891
+ let queue$1 = [];
27892
+ let draining = false;
27893
+ let handlerFailed = false;
27894
+ let registrations = 0;
27895
+ const drain = () => {
27896
+ draining = false;
27897
+ const batch = queue$1;
27898
+ queue$1 = [];
27899
+ const current = handler;
27900
+ if (!current)
27901
+ return;
27902
+ for (const event of batch) {
27903
+ try {
27904
+ current(event);
27905
+ } catch {
27906
+ if (!handlerFailed) {
27907
+ handlerFailed = true;
27908
+ logger.warn("[SdkEvents] onEvent handler threw; further failures suppressed");
27909
+ }
27910
+ }
27911
+ }
27912
+ };
27913
+ const schedule = () => {
27914
+ if (draining)
27915
+ return;
27916
+ draining = true;
27917
+ queueMicrotask(drain);
27918
+ };
27919
+ const SdkEventBus = {
27920
+ /**
27921
+ * Installs the host handler. Returns an unsubscribe. Events that matched
27922
+ * the subscription but arrived before a handler existed are queued and
27923
+ * delivered on the next microtask. That window is real: React runs child
27924
+ * effects before parent ones, so a provider below `Omniscribe` can emit
27925
+ * after `setSubscription` and before this call.
27926
+ */
27927
+ setHandler(next) {
27928
+ registrations += 1;
27929
+ if (next && handler && registrations > 1) {
27930
+ logger.warn("[SdkEvents] a second onEvent handler was registered. The SDK supports one <Omniscribe> per page; the newest handler wins.");
27931
+ }
27932
+ handler = next;
27933
+ if (next && queue$1.length > 0)
27934
+ schedule();
27935
+ return () => {
27936
+ if (handler === next)
27937
+ handler = null;
27938
+ };
27939
+ },
27940
+ setSubscription(patterns) {
27941
+ matches = compileSubscription(patterns);
27942
+ },
27943
+ setSessionId(next) {
27944
+ sessionId = next;
27945
+ },
27946
+ /**
27947
+ * Cheap guard for callers on a hot path who would otherwise build a
27948
+ * payload for nobody.
27949
+ */
27950
+ wants(name) {
27951
+ return matches(name);
27952
+ },
27953
+ /**
27954
+ * Queues an event for delivery on the next microtask.
27955
+ *
27956
+ * Never throws. Deferring delivery does three things at once: host code
27957
+ * never runs inside React's render phase (where a `setState` would
27958
+ * throw), a slow handler cannot block `socket.onmessage` on the audio
27959
+ * path, and a handler that itself triggers an event cannot recurse —
27960
+ * the re-entrant call only appends to a queue the current drain has
27961
+ * already taken. One shared drain, not one microtask per event, so `seq`
27962
+ * ordering is preserved.
27963
+ */
27964
+ emit(name, payload, level = "info") {
27965
+ if (!matches(name))
27966
+ return;
27967
+ queue$1.push({
27968
+ name,
27969
+ family: familyOf(name),
27970
+ level,
27971
+ ts: (/* @__PURE__ */ new Date()).toISOString(),
27972
+ seq: ++seq,
27973
+ sdkVersion: version$2,
27974
+ sessionId,
27975
+ payload
27976
+ });
27977
+ if (queue$1.length > QUEUE_CAP)
27978
+ queue$1.shift();
27979
+ if (handler)
27980
+ schedule();
27981
+ },
27982
+ /** Test-only: restores the module to its initial state. */
27983
+ __resetForTests() {
27984
+ handler = null;
27985
+ matches = () => false;
27986
+ sessionId = null;
27987
+ seq = 0;
27988
+ queue$1 = [];
27989
+ draining = false;
27990
+ handlerFailed = false;
27991
+ registrations = 0;
27992
+ }
27993
+ };
27994
+
27851
27995
  const SettingsContext = React.createContext(void 0);
27852
27996
  const useSettingsContext = () => {
27853
27997
  const context = React.useContext(SettingsContext);
@@ -27872,6 +28016,7 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, updateTemp
27872
28016
  const [minorPolicy, setMinorPolicy] = React.useState(DEFAULT_MINOR_POLICY);
27873
28017
  const [minorAgeThreshold, setMinorAgeThreshold] = React.useState(DEFAULT_MINOR_AGE_THRESHOLD);
27874
28018
  const [isLoading, setIsLoading] = React.useState(true);
28019
+ const hasEmittedReadyRef = React.useRef(false);
27875
28020
  const isInitializedRef = React.useRef(false);
27876
28021
  const applySettings = React.useCallback((parsed) => {
27877
28022
  setDictionary(parsed.dictionary);
@@ -27922,6 +28067,10 @@ const SettingsProvider = ({ predefinedLanguage, templateId, toolArgs, updateTemp
27922
28067
  SettingsCache.getInstance().clear();
27923
28068
  } finally {
27924
28069
  setIsLoading(false);
28070
+ if (!hasEmittedReadyRef.current) {
28071
+ hasEmittedReadyRef.current = true;
28072
+ SdkEventBus.emit("lifecycle.ready", {});
28073
+ }
27925
28074
  }
27926
28075
  }, [toolArgs, templateId, predefinedLanguage, applySettings]);
27927
28076
  const reloadSettings = React.useCallback(async () => {
@@ -33649,8 +33798,151 @@ const evaluateMinorRule = ({ birthDate, policy, threshold, now }) => {
33649
33798
 
33650
33799
  const postAppEvent = (event) => requester.post("/app-events", event).catch(() => void 0);
33651
33800
 
33801
+ const ACTIVITY_THROTTLE_MS = 5e3;
33802
+ const lastEmittedAt = /* @__PURE__ */ new Map();
33803
+ const shouldEmit = (key) => {
33804
+ const now = Date.now();
33805
+ const previous = lastEmittedAt.get(key);
33806
+ if (previous !== void 0 && now - previous < ACTIVITY_THROTTLE_MS) {
33807
+ return false;
33808
+ }
33809
+ lastEmittedAt.set(key, now);
33810
+ return true;
33811
+ };
33812
+ const emitInteraction = (kind) => {
33813
+ if (!SdkEventBus.wants("activity.interaction"))
33814
+ return;
33815
+ if (!shouldEmit(`interaction:${kind}`))
33816
+ return;
33817
+ SdkEventBus.emit("activity.interaction", { kind });
33818
+ };
33819
+ const emitTyping = (surface) => {
33820
+ if (!SdkEventBus.wants("activity.typing"))
33821
+ return;
33822
+ if (!shouldEmit(`typing:${surface}`))
33823
+ return;
33824
+ SdkEventBus.emit("activity.typing", { surface });
33825
+ };
33826
+
33827
+ let open$1 = false;
33828
+ const openReportBracket = () => {
33829
+ if (open$1)
33830
+ return;
33831
+ open$1 = true;
33832
+ SdkEventBus.emit("report.generation_started", {});
33833
+ };
33834
+ const closeReportBracket = (ok) => {
33835
+ if (!open$1)
33836
+ return;
33837
+ open$1 = false;
33838
+ SdkEventBus.emit("report.settled", { ok });
33839
+ };
33840
+
33841
+ const RECORDING_HEARTBEAT_MS = 3e4;
33842
+ let lastBeatAt = null;
33843
+ const emitRecordingHeartbeat = () => {
33844
+ if (!SdkEventBus.wants("recording.heartbeat"))
33845
+ return;
33846
+ const now = Date.now();
33847
+ if (lastBeatAt !== null && now - lastBeatAt < RECORDING_HEARTBEAT_MS)
33848
+ return;
33849
+ lastBeatAt = now;
33850
+ SdkEventBus.emit("recording.heartbeat", {});
33851
+ };
33852
+ const resetRecordingHeartbeat = () => {
33853
+ lastBeatAt = null;
33854
+ };
33855
+
33856
+ const INTERACTION_KIND = {
33857
+ recording_button: "recording",
33858
+ chat_mic_button: "chat",
33859
+ attach_file_button: "chat",
33860
+ remove_file_button: "chat",
33861
+ edit_message_button: "chat",
33862
+ cancel_edit_message_button: "chat",
33863
+ send_edit_message_button: "chat",
33864
+ copy_human_message_button: "chat",
33865
+ copy_ai_message_button: "chat",
33866
+ settings_button: "settings",
33867
+ settings_back_button: "settings",
33868
+ settings_section_button: "settings",
33869
+ select_audio_environment: "settings",
33870
+ compile_summary_button: "report",
33871
+ regenerate_summary_button: "report",
33872
+ generate_extras_button: "report",
33873
+ expand_transcription_button: "transcript",
33874
+ history_thread_item: "history",
33875
+ close_widget_button: "widget",
33876
+ main_menu_button: "widget",
33877
+ play_panel_button: "widget"
33878
+ };
33879
+ const CLICK_FALLBACK_KIND = "widget";
33880
+ const RECORDING_MODES = ["consultation", "dictation"];
33881
+ const AUDIO_LOSS_CAUSES = ["mic", "network", "server"];
33882
+ const readNumber = (payload, key) => {
33883
+ const value = payload?.[key];
33884
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
33885
+ };
33886
+ const readMode = (payload) => {
33887
+ const value = payload?.mode;
33888
+ return typeof value === "string" && RECORDING_MODES.includes(value) ? value : "consultation";
33889
+ };
33890
+ const readCause = (payload) => {
33891
+ const value = payload?.cause;
33892
+ return typeof value === "string" && AUDIO_LOSS_CAUSES.includes(value) ? value : "server";
33893
+ };
33894
+ const fanOutAppEvent = (input) => {
33895
+ try {
33896
+ const { event_type, event_name, payload } = input;
33897
+ if (event_type === "click") {
33898
+ emitInteraction(INTERACTION_KIND[event_name] ?? CLICK_FALLBACK_KIND);
33899
+ }
33900
+ switch (event_name) {
33901
+ case "recording_started":
33902
+ resetRecordingHeartbeat();
33903
+ SdkEventBus.emit("recording.started", { mode: readMode(payload) });
33904
+ break;
33905
+ case "recording_stopped":
33906
+ SdkEventBus.emit("recording.stopped", {
33907
+ mode: readMode(payload),
33908
+ durationSeconds: readNumber(payload, "duration_seconds")
33909
+ });
33910
+ break;
33911
+ // The mic/network emitter reports the length of the gap once audio
33912
+ // recovers. The server-close emitter has no gap to measure — capture
33913
+ // is torn down on the spot — and reports the recording position
33914
+ // instead, so fall back to that rather than hand the host a silent 0.
33915
+ case "audio_lost":
33916
+ SdkEventBus.emit("recording.audio_lost", {
33917
+ cause: readCause(payload),
33918
+ durationSeconds: readNumber(payload, "duration_seconds") || readNumber(payload, "recording_position_seconds")
33919
+ }, "warn");
33920
+ break;
33921
+ case "mic_disconnected":
33922
+ SdkEventBus.emit("recording.microphone_disconnected", {}, "warn");
33923
+ break;
33924
+ // A report request is in flight. The host must suppress its idle
33925
+ // timer until report.settled, or it will close the widget during
33926
+ // generation — which looks exactly like idleness and loses the note.
33927
+ // openReportBracket ignores a second click while one is in flight, so
33928
+ // the pair stays balanced.
33929
+ case "compile_summary_button":
33930
+ case "regenerate_summary_button":
33931
+ openReportBracket();
33932
+ break;
33933
+ case "close_widget_button":
33934
+ SdkEventBus.emit("lifecycle.closed", {});
33935
+ break;
33936
+ default:
33937
+ break;
33938
+ }
33939
+ } catch {
33940
+ }
33941
+ };
33942
+
33652
33943
  const EventTracker = {
33653
33944
  track(input) {
33945
+ fanOutAppEvent(input);
33654
33946
  const event = {
33655
33947
  event_type: input.event_type,
33656
33948
  event_name: input.event_name,
@@ -36923,6 +37215,7 @@ const useAudioProcessor = ({ stream, socket, isServerReady, enabled, connectionL
36923
37215
  const audioData16kHz = resampleTo16kHZ(input, audioContext.sampleRate);
36924
37216
  socket.send(audioData16kHz);
36925
37217
  lastSendAtRef.current = Date.now();
37218
+ emitRecordingHeartbeat();
36926
37219
  }
36927
37220
  };
36928
37221
  audioTracks.forEach((t) => {
@@ -38356,6 +38649,7 @@ const useReportPreviewState = ({ descriptors, report }) => {
38356
38649
  });
38357
38650
  }, []);
38358
38651
  const setScalarEdit = React.useCallback((entryKey, value) => {
38652
+ emitTyping("note");
38359
38653
  setEdits((prev) => {
38360
38654
  const next = new Map(prev);
38361
38655
  next.set(entryKey, value);
@@ -38363,6 +38657,7 @@ const useReportPreviewState = ({ descriptors, report }) => {
38363
38657
  });
38364
38658
  }, []);
38365
38659
  const setRowFieldEdit = React.useCallback((entryKey, rowIndex, fieldKey, value) => {
38660
+ emitTyping("note");
38366
38661
  setEdits((prev) => {
38367
38662
  const next = new Map(prev);
38368
38663
  next.set(rowFieldEditKey(entryKey, rowIndex, fieldKey), value);
@@ -38370,6 +38665,7 @@ const useReportPreviewState = ({ descriptors, report }) => {
38370
38665
  });
38371
38666
  }, []);
38372
38667
  const setScalarGapValue = React.useCallback((key, value) => {
38668
+ emitTyping("note");
38373
38669
  setFilledScalarGaps((prev) => {
38374
38670
  const next = new Map(prev);
38375
38671
  next.set(key, value);
@@ -39462,6 +39758,7 @@ const useReportGeneration = (options) => {
39462
39758
  } finally {
39463
39759
  setState((prev) => ({ ...prev, generating: false }));
39464
39760
  regenerateInflightRef.current = false;
39761
+ closeReportBracket(false);
39465
39762
  }
39466
39763
  }, [
39467
39764
  abortIfBlocked,
@@ -39501,6 +39798,7 @@ const useReportGeneration = (options) => {
39501
39798
  handleReport?.(result);
39502
39799
  }
39503
39800
  trackEvent("event", "summary_compiled");
39801
+ closeReportBracket(true);
39504
39802
  if (patientId && doctorId) {
39505
39803
  await saveDayData({
39506
39804
  patientId,
@@ -39642,6 +39940,7 @@ const useReportGeneration = (options) => {
39642
39940
  }
39643
39941
  } finally {
39644
39942
  generateInflightRef.current = false;
39943
+ closeReportBracket(false);
39645
39944
  setUserPendingClick(false);
39646
39945
  const finalPid = appointmentData?.patientId;
39647
39946
  const finalDid = appointmentData?.doctorId;
@@ -163083,29 +163382,24 @@ const ChatFooter = ({ inputValue, inputIsValid, inputMaxLength, textareaRef, onI
163083
163382
  isLoading: generateState.isUserReportLoading,
163084
163383
  onClick: () => generateState.tryStartGenerate(generateState.showRegenerateReport ? "regenerate" : "generate")
163085
163384
  }
163086
- ), generateState && showExtras && !generateState.isRecording && !generateState.enabled && !generateState.connectionLoading && jsxRuntimeExports.jsx(ExtrasButtons, { categories, disabled: reportLoading || isActivationBlocked })] }), jsxRuntimeExports.jsxs("form", { onSubmit, className: "omniscribe_chat-view-combined-footer-row", children: [jsxRuntimeExports.jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: "image/*,.pdf", onChange: onFileSelect, style: { display: "none" } }), jsxRuntimeExports.jsxs("div", { className: `omniscribe_chat-view-combined-input-container${uploadedFiles.length > 0 ? " omniscribe_chat-view-combined-input-container--with-files" : ""}`, children: [uploadedFiles.length > 0 && jsxRuntimeExports.jsx("div", { className: "omniscribe_chat-view-combined-files-row", children: jsxRuntimeExports.jsx(FilePreview, { files: uploadedFiles, onRemove: onFileRemove }) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-view-combined-input-row", children: [jsxRuntimeExports.jsx(Tooltip, { message: formatMessage({ id: "Attach file" }), side: "top", children: jsxRuntimeExports.jsx("button", { type: "button", className: "omniscribe_chat-view-combined-clip-icon", onClick: () => {
163385
+ ), generateState && showExtras && !generateState.isRecording && !generateState.enabled && !generateState.connectionLoading && jsxRuntimeExports.jsx(ExtrasButtons, { categories, disabled: reportLoading || isActivationBlocked })] }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-view-combined-footer-row", children: [jsxRuntimeExports.jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: "image/*,.pdf", onChange: onFileSelect, style: { display: "none" } }), jsxRuntimeExports.jsxs("div", { className: `omniscribe_chat-view-combined-input-container${uploadedFiles.length > 0 ? " omniscribe_chat-view-combined-input-container--with-files" : ""}`, children: [uploadedFiles.length > 0 && jsxRuntimeExports.jsx("div", { className: "omniscribe_chat-view-combined-files-row", children: jsxRuntimeExports.jsx(FilePreview, { files: uploadedFiles, onRemove: onFileRemove }) }), jsxRuntimeExports.jsxs("div", { className: "omniscribe_chat-view-combined-input-row", children: [jsxRuntimeExports.jsx(Tooltip, { message: formatMessage({ id: "Attach file" }), side: "top", children: jsxRuntimeExports.jsx("button", { type: "button", className: "omniscribe_chat-view-combined-clip-icon", onClick: () => {
163087
163386
  trackEvent("click", "attach_file_button");
163088
163387
  onAttachClick();
163089
163388
  }, disabled: uploadedFiles.length >= MAX_FILES, "aria-label": formatMessage({ id: "Attach file" }), children: jsxRuntimeExports.jsx("svg", { width: "12", height: "12", 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, "data-testid": "sofia-chat-input", value: inputValue, variant: "secondary", onChange: onInputChange, onKeyDown: (e) => {
163090
163389
  if (e.key === "Enter" && !e.shiftKey && !e.metaKey) {
163091
163390
  e.preventDefault();
163092
- const el = e.target;
163093
- const form = el?.closest("form");
163094
- form?.requestSubmit();
163391
+ onSubmit(e);
163095
163392
  }
163096
163393
  }, maxLength: inputMaxLength, className: "omniscribe_chat-view-combined-textarea no-scrollbar text-p", placeholder: formatMessage({
163097
163394
  id: "What do you need to know?"
163098
163395
  }) }), isLoading ? jsxRuntimeExports.jsx("button", { type: "button", "data-testid": "sofia-chat-stop", onClick: onStop, className: "omniscribe_chat-view-combined-send-btn omniscribe_chat-view-combined-stop-btn", title: formatMessage({ id: "Stop" }), children: jsxRuntimeExports.jsx(SquareIcon, { width: 10, height: 10 }) }) : inputValue.length > 0 ? jsxRuntimeExports.jsx("button", {
163099
163396
  // Intentionally `type="button"` (not "submit"): some host
163100
- // platforms (e.g. IQVIA Clear/CMP) treat any submit-typed
163101
- // button as a sign-out trigger. We submit the form
163102
- // explicitly via requestSubmit() instead. SOF-524.
163397
+ // platforms treat any submit-typed
163398
+ // button as a sign-out trigger / page reload. The click
163399
+ // calls onSubmit directly — no form, no submit event. SOF-524.
163103
163400
  type: "button",
163104
163401
  "data-testid": "sofia-chat-send",
163105
- onClick: (e) => {
163106
- const form = e.currentTarget.closest("form");
163107
- form?.requestSubmit();
163108
- },
163402
+ onClick: onSubmit,
163109
163403
  className: "omniscribe_chat-view-combined-send-btn",
163110
163404
  disabled: isLoading || !inputIsValid,
163111
163405
  title: formatMessage({ id: "Send" }),
@@ -163663,6 +163957,7 @@ const ChatView = () => {
163663
163957
  appointmentData?.doctorId
163664
163958
  ]);
163665
163959
  const handleInputChange = (e) => {
163960
+ emitTyping("chat");
163666
163961
  input.onChange(e);
163667
163962
  setInputIsValid(InputValidator.validate(e.target.value, CHAT_INPUT_VALIDATION).isValid);
163668
163963
  };
@@ -166458,6 +166753,9 @@ const SessionProvider = ({ children }) => {
166458
166753
  prevPatientIdRef.current = patientId;
166459
166754
  setSessionId(patientId ? generateUuid() : null);
166460
166755
  }, [patientId]);
166756
+ reactExports.useEffect(() => {
166757
+ SdkEventBus.setSessionId(sessionId);
166758
+ }, [sessionId]);
166461
166759
  return jsxRuntimeExports.jsx(SessionContext.Provider, { value: { sessionId }, children });
166462
166760
  };
166463
166761
 
@@ -166629,7 +166927,7 @@ const BrowserCapabilityProbe = () => {
166629
166927
  useBrowserCapabilityCheck();
166630
166928
  return null;
166631
166929
  };
166632
- const Omniscribe = ({ baseurl, wssurl, apikey, userid, patientid, templateid = "", template, toolsargs, isopen, setIsOpen, patientdata, transcriptorselectvalues, handleReport, renderReportContent, handleFill, toast, sofiatitle, language, isscreenloading, disableactions, isonlychat, disablegenerate, debug, usermedicalspecialty, setGetLastReport, insertionPreviewClassNames, onReportApply, updateTemplate, templateExtras, handleExtras }) => {
166930
+ const Omniscribe = ({ baseurl, wssurl, apikey, userid, patientid, templateid = "", template, toolsargs, isopen, setIsOpen, patientdata, transcriptorselectvalues, handleReport, renderReportContent, handleFill, toast, sofiatitle, language, isscreenloading, disableactions, isonlychat, disablegenerate, debug, usermedicalspecialty, setGetLastReport, insertionPreviewClassNames, onReportApply, updateTemplate, templateExtras, handleExtras, onEvent, eventSubscriptions }) => {
166633
166931
  const templateFields = template ?? toolsargs;
166634
166932
  const effectiveBaseUrl = reactExports.useMemo(() => resolveBaseUrlFromApiKey(apikey, baseurl), [apikey, baseurl]);
166635
166933
  const safeLanguage = isSupportedLanguage(language) ? language : void 0;
@@ -166669,6 +166967,25 @@ const Omniscribe = ({ baseurl, wssurl, apikey, userid, patientid, templateid = "
166669
166967
  reactExports.useEffect(() => {
166670
166968
  logger.setDebugMode(debug || false);
166671
166969
  }, [debug]);
166970
+ const onEventRef = reactExports.useRef(onEvent);
166971
+ onEventRef.current = onEvent;
166972
+ const hasEventHandler = onEvent !== void 0;
166973
+ const subscriptionsRef = reactExports.useRef(eventSubscriptions);
166974
+ subscriptionsRef.current = eventSubscriptions;
166975
+ const subscriptions = subscriptionKey(eventSubscriptions);
166976
+ reactExports.useEffect(() => {
166977
+ SdkEventBus.setSubscription(subscriptionsRef.current);
166978
+ }, [subscriptions]);
166979
+ reactExports.useEffect(() => {
166980
+ if (!hasEventHandler)
166981
+ return;
166982
+ return SdkEventBus.setHandler((event) => onEventRef.current?.(event));
166983
+ }, [hasEventHandler]);
166984
+ reactExports.useEffect(() => {
166985
+ if (hasEventHandler && !eventSubscriptions?.length) {
166986
+ logger.warn('[Sofia SDK] onEvent was provided without eventSubscriptions, so no events will be delivered. Pass e.g. ["recording.*", "activity.*"].');
166987
+ }
166988
+ }, [hasEventHandler, eventSubscriptions]);
166672
166989
  reactExports.useEffect(() => {
166673
166990
  if (apikey && apikey.trim() !== "") {
166674
166991
  setEncryptionSeed(apikey);
@@ -166852,6 +167169,10 @@ const r2wcProps = {
166852
167169
  transcriptorselectvalues: "json",
166853
167170
  toast: "json",
166854
167171
  insertionPreviewClassNames: "json",
167172
+ // Which SDK events `onEvent` receives: exact names, family wildcards
167173
+ // ('recording.*'), or '*'. Not in SENSITIVE_ATTRS — a subscription list
167174
+ // carries no PHI, and leaving it in the DOM keeps the wiring inspectable.
167175
+ eventSubscriptions: "json",
166855
167176
  // Function props
166856
167177
  handleReport: "function",
166857
167178
  // NOTE: this kebab-case alias has been here historically. r2wc writes any
@@ -166868,9 +167189,11 @@ const r2wcProps = {
166868
167189
  handleFill: "function",
166869
167190
  onReportApply: "function",
166870
167191
  updateTemplate: "function",
166871
- handleExtras: "function"
167192
+ handleExtras: "function",
167193
+ onEvent: "function"
166872
167194
  };
166873
- const JSON_ATTRS = new Set(Object.entries(r2wcProps).filter(([, type]) => type === "json").map(([prop]) => prop.toLowerCase()));
167195
+ const toAttributeName = (prop) => prop.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
167196
+ const JSON_ATTRS = new Set(Object.entries(r2wcProps).filter(([, type]) => type === "json").map(([prop]) => toAttributeName(prop)));
166874
167197
  const SofiaSDK = s$1(Omniscribe, {
166875
167198
  props: r2wcProps,
166876
167199
  shadow: "open"
@@ -166883,7 +167206,8 @@ const FUNCTION_PROPS = [
166883
167206
  "renderReportContent",
166884
167207
  "handleFill",
166885
167208
  "onReportApply",
166886
- "updateTemplate"
167209
+ "updateTemplate",
167210
+ "onEvent"
166887
167211
  ];
166888
167212
  const R2WC_PROPS = Symbol.for("r2wc.props");
166889
167213
  const R2WC_RENDER = Symbol.for("r2wc.render");
@@ -169186,7 +169510,7 @@ const zig$1 = /*#__PURE__*/_mergeNamespaces({
169186
169510
  default: zig
169187
169511
  }, [zigExports]);
169188
169512
 
169189
- 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/* ------------------------------------------------------------------ */\n/* Theming hooks (host-overridable). */\n/* */\n/* CSS custom properties defined on the `<sofia-sdk>` element inherit */\n/* across the shadow DOM boundary. Hosts override any of these on the */\n/* element to retheme the SDK without touching internals: */\n/* */\n/* <sofia-sdk style=\"--omniscribe-primary: #1f6f5f\"></sofia-sdk> */\n/* */\n/* Internal tokens that map to a host override use */\n/* `var(--omniscribe-*, <default>)`. */\n/* */\n/* Available hooks: */\n/* --omniscribe-font-family */\n/* --omniscribe-primary main brand / primary action */\n/* --omniscribe-primary-soft light tint of primary */\n/* --omniscribe-secondary secondary action */\n/* --omniscribe-secondary-hover secondary hover state */\n/* --omniscribe-accent highlight / report color */\n/* --omniscribe-warning gap / warning chrome */\n/* --omniscribe-text primary text */\n/* --omniscribe-text-muted secondary text */\n/* --omniscribe-surface card / panel background */\n/* --omniscribe-surface-alt header / footer / hover bg */\n/* --omniscribe-border primary border */\n/* --omniscribe-border-soft in-card separators */\n/* */\n/* The insertion-preview modal has its own (more granular) variables */\n/* documented in InsertionPreviewModal.css. */\n/* ------------------------------------------------------------------ */\n\n/* Color scheme of the shadow subtree. Defaults to light so native */\n/* form controls (<select>, <input>) and assistant-ui surfaces don't */\n/* follow the host OS dark mode. A host that themes the SDK dark */\n/* (e.g. the radiology reading room) sets --omniscribe-color-scheme: */\n/* dark so native controls render light-on-dark and stay legible. */\n:host {\n color-scheme: var(--omniscribe-color-scheme, light);\n}\n\n#Omniscribe {\n font-family: var(--omniscribe-font-family, 'Lato', sans-serif);\n color-scheme: var(--omniscribe-color-scheme, light);\n /* define colors */\n --active: #0a3785;\n --background-primary: var(--omniscribe-primary-soft, #e7effd);\n --warning: var(--omniscribe-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: #252a32;\n --active-black: #252a32;\n --placeholder: #a4adbc;\n --line: var(--omniscribe-border, #e5e7ec);\n --custom-black: #13161a;\n --primary: var(--omniscribe-primary, #105bdb);\n --border: var(--omniscribe-border, #e5e7ec);\n --white: var(--omniscribe-surface, #fdfdfd);\n --omni: #daf2ff;\n --omni-secondary: rgba(219, 219, 219, 0.75);\n --primary-button: var(--omniscribe-primary, #105bdb);\n --primary-text: #36a3cf;\n --primary-900: var(--omniscribe-primary, #061044);\n --blue-100: var(--omniscribe-primary-soft, #dbeafe);\n --blue-200: var(--omniscribe-primary-soft, #bfdbfe);\n --blue-500: var(--omniscribe-primary, #105bdb);\n --blue-600: var(--omniscribe-primary, #2563eb);\n --blue-700: var(--omniscribe-primary, #1d4ed8);\n --report: var(--primary-button);\n --gray: #616161;\n --black: #1b2125;\n --sky-blue: var(--omniscribe-primary-soft, #dbecff);\n --blue: var(--omniscribe-primary, #5886ba);\n --blue-600: var(--omniscribe-primary, #0b1962);\n --background: var(--omniscribe-surface-alt, #f3f3f3bb);\n --foreground: var(--omniscribe-text, oklch(0.145 0 0));\n --primary: var(--omniscribe-primary, #061044);\n --primary-foreground: var(--omniscribe-on-accent, oklch(0.985 0 0));\n --secondary: var(--omniscribe-secondary, #132caa);\n --secondary-foreground: var(--omniscribe-on-accent, #fff);\n --secondary-hover: var(--omniscribe-secondary-hover, #2847e7);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: var(--omniscribe-surface-alt, oklch(0.97 0 0));\n --accent-foreground: var(--omniscribe-text, 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: var(--omniscribe-border, 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: 14.4px;\n --text-xs--letter-spacing: 0.05px;\n --text-sm: 14px;\n --text-sm--line-height: 16.8px;\n --text-xs--letter-spacing: 0.05px;\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: 12px;\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-xs {\n font-size: var(--text-xs) !important;\n font-weight: var(--font-weight-normal);\n line-height: var(--text-xs--line-height);\n letter-spacing: var(--text-xs--letter-spacing);\n }\n .text-p {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-normal);\n letter-spacing: var(--text-sm--letter-spacing);\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/chat/components/AudioCutsWarningDialog.css */\n/* The shared Modal overlay uses position: absolute anchored to its\n nearest positioned ancestor — which in our case is the chat footer,\n not the widget root. That puts the modal at the bottom of the widget.\n Override to position: fixed so the overlay covers the full viewport\n and the modal truly centers regardless of where in the React tree it\n was rendered. */\n.omniscribe_modal-overlay:has(.omniscribe_audio-cuts-modal) {\n position: fixed;\n inset: 0;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n}\n\n.omniscribe_audio-cuts-modal {\n width: 480px;\n max-width: 90vw;\n padding: 24px !important;\n}\n\n/* Override Modal's giant default h2 size for this dialog. */\n.omniscribe_audio-cuts-modal .omniscribe_modal-title-container {\n margin-bottom: 16px;\n align-items: flex-start;\n}\n\n.omniscribe_audio-cuts-modal .omniscribe_modal-title {\n font-size: 18px;\n line-height: 1.3;\n font-weight: 700;\n letter-spacing: -0.01em;\n color: var(--color-gray-900, #0f172a);\n}\n\n.omniscribe_audio-cuts-body {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Summary card: warning icon + paragraph in a soft container. */\n.omniscribe_audio-cuts-summary {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.omniscribe_audio-cuts-summary-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n background-color: #fef3c7;\n color: #b45309;\n}\n\n.omniscribe_audio-cuts-summary-text {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n color: var(--color-gray-800, #1f2937);\n flex: 1;\n}\n\n/* Cut list: rounded gray container, clock icon per row, no bullets. */\n.omniscribe_audio-cuts-list {\n margin: 0;\n padding: 12px 14px;\n border-radius: 12px;\n background-color: var(--omniscribe-surface-alt, #f9fafb);\n border: 1px solid var(--color-gray-200, #e5e7eb);\n list-style: none;\n max-height: 240px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_audio-cuts-item {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--omniscribe-text-muted, #374151);\n font-variant-numeric: tabular-nums;\n font-size: 13px;\n line-height: 1.4;\n}\n\n.omniscribe_audio-cuts-item-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--omniscribe-text-muted, #6b7280);\n}\n\n/* Action row: right-aligned, secondary as text-link, primary as blue pill. */\n.omniscribe_audio-cuts-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 16px;\n margin-top: 4px;\n}\n\n.omniscribe_audio-cuts-secondary {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px 12px;\n font-size: 14px;\n font-weight: 500;\n color: var(--omniscribe-text-muted, #374151);\n border-radius: 9999px;\n transition: background-color 0.15s ease;\n}\n\n.omniscribe_audio-cuts-secondary:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--color-gray-900, #0f172a);\n}\n\n.omniscribe_audio-cuts-primary {\n border-radius: 9999px !important;\n gap: 8px;\n padding-block: 10px !important;\n padding-inline: 18px !important;\n height: auto !important;\n font-weight: 600;\n}\n\n\n/* Source: modules/chat/components/ChatView.css */\n.omniscribe_chat-view-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_chat-view-container-history-cont {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 0;\n z-index: 30;\n height: 100%;\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n display: block;\n border-top-left-radius: 12px;\n border-bottom-left-radius: 12px;\n overflow: hidden;\n background-color: var(--omniscribe-surface, white);\n transition:\n width 300ms cubic-bezier(0.4, 0, 0.2, 1),\n min-width 300ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.omniscribe_chat-view-container-history-cont-open {\n width: 33%;\n}\n\n/* Overlay that covers the chat when history is open */\n.omniscribe_chat-view-overlay {\n position: absolute;\n inset: 0;\n background-color: rgba(0, 0, 0, 0.4);\n z-index: 25;\n opacity: 0;\n pointer-events: none;\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n border-radius: 12px;\n}\n\n.omniscribe_chat-view-overlay-visible {\n opacity: 1;\n pointer-events: auto;\n}\n\n.omniscribe_chat-view-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 border-bottom-right-radius: 12px;\n}\n\n.omniscribe_chat-view-stick-to-bottom {\n font-size: 14px;\n}\n.omniscribe_chat-view-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/* Disable scroll when SummaryLoading is shown */\n.omniscribe_chat-view-stick-to-bottom-content--no-scroll {\n overflow-y: hidden;\n}\n\n.omniscribe_chat-view-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}\n\n.omniscribe_chat-view-footer-container {\n position: sticky;\n display: flex;\n background-color: var(--omniscribe-surface, white);\n flex-direction: column;\n align-items: center;\n bottom: 0;\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n border-bottom-left-radius: 12px;\n border-bottom-right-radius: 12px;\n}\n\n/*\n * The footer is sticky inside the scroll container, so mid-scroll the\n * conversation passes behind it and was cut off mid-line — text simply ended\n * where the buttons began. This is not a spacing problem: at rest the content\n * clears the footer. What was missing is a boundary, so the last visible line\n * dissolves into the footer's surface instead of being guillotined by it.\n */\n.omniscribe_chat-view-footer-container::before {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: 100%;\n /*\n * Tall enough to dissolve two or three lines. A short band is worse than no\n * band at all: at one line-height it ghosts a single row of text and reads as\n * a rendering fault rather than a transition.\n */\n height: 64px;\n pointer-events: none;\n /* Fallback first: browsers without color-mix keep this. */\n background: linear-gradient(\n to bottom,\n transparent,\n var(--omniscribe-surface, #fff)\n );\n /*\n * Fading to `transparent` interpolates through transparent BLACK, which\n * greys the middle of the band. Fading from the surface colour at zero alpha\n * keeps it clean and still themable.\n */\n background: linear-gradient(\n to bottom,\n color-mix(in srgb, var(--omniscribe-surface, #fff) 0%, transparent) 0%,\n var(--omniscribe-surface, #fff) 100%\n );\n}\n\n/*\n * Floats over the conversation, so it needs to be opaque. It inherited the\n * outline button's translucent fill, which let the text underneath read\n * straight through it — the label and the message competing in the same\n * pixels. A solid fill plus a shadow is what makes it read as a control\n * sitting above the content rather than printed onto it.\n */\n/*\n * Pinned to the footer's top edge, not to the viewport.\n *\n * It used to be `position: fixed; bottom: 17%`, i.e. anchored to the browser\n * window: its distance from the composer depended on the window height, and at\n * common sizes it landed ON the action buttons — measured 3px below the\n * footer's top edge. Anchoring to the footer instead means it tracks whatever\n * the footer currently is: with or without the action row, with the\n * transcription panel expanded, with files attached.\n */\n.omniscribe_chat-view-footer-scroll-to-bottom {\n position: absolute;\n bottom: calc(100% + 12px);\n left: 50%;\n transform: translateX(-50%);\n z-index: 2;\n}\n\n/*\n * Qualified with `.omniscribe_button` on purpose. The outline variant sets the\n * same properties at equal specificity and `button.css` is concatenated after\n * this file, so a single-class selector here loses on source order alone.\n */\n.omniscribe_button.omniscribe_chat-view-footer-scroll-to-bottom {\n background-color: var(--omniscribe-surface, #fff);\n border: 1px solid var(--omniscribe-border, #e5e7ec);\n box-shadow: 0 2px 10px rgba(16, 23, 37, 0.16);\n}\n\n.omniscribe_button.omniscribe_chat-view-footer-scroll-to-bottom:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n}\n\n.omniscribe_chat-view-down-btn {\n width: calc(0.25rem /* 4px */ * 4);\n height: calc(0.25rem /* 4px */ * 4);\n}\n\n/* Combined Footer - Frame 532 Design */\n.omniscribe_chat-view-combined-footer {\n width: 100%;\n padding-bottom: 12px;\n background-color: var(--omniscribe-surface, white);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n position: relative;\n}\n\n/* Action row — no background of its own; only the pills carry a border */\n.omniscribe_chat-footer-actions-row {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n padding-inline: calc(var(--spacing) * 4);\n padding-bottom: 8px;\n flex-shrink: 0;\n min-width: 0;\n width: 100%;\n box-sizing: border-box;\n transition: padding-top 0.5s ease;\n}\n\n/* With the transcription expanded, keeps the buttons off the panel's bottom\n line (the expanded wrapper's border-bottom). */\n.omniscribe_transcription-panel-wrapper--expanded\n + .omniscribe_chat-footer-actions-row {\n padding-top: 10px;\n}\n\n.omniscribe_chat-view-combined-footer-row {\n display: flex;\n flex-direction: row;\n align-items: end;\n box-sizing: border-box;\n width: 100%;\n gap: 8px;\n flex-shrink: 0;\n background-color: var(--omniscribe-surface, white);\n overflow: hidden;\n padding-inline: calc(var(--spacing) * 4);\n padding-top: 7px;\n}\n\n/* Frame 34 - Input container */\n.omniscribe_chat-view-combined-input-container {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n padding: 8px;\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 20px;\n background-color: var(--omniscribe-surface, white);\n gap: 0;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease;\n box-sizing: border-box;\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);\n margin-bottom: 7px;\n margin-right: 1px;\n}\n\n/* When files are attached, change border-radius to rounded rectangle */\n/*\n * Attaching a file must not resize the composer. There is deliberately no\n * max-width here: the base rule is `flex: 1`, and capping it made the composer\n * jump from the full footer width down to a fixed size the moment a file was\n * added — a leftover from a narrower Figma frame, and the only place that\n * number appeared. Several files scroll horizontally inside\n * `.omniscribe_chat-view-combined-files-row`, which owns `overflow-x: auto`.\n */\n.omniscribe_chat-view-combined-input-container--with-files {\n gap: 12px;\n align-items: flex-start;\n min-width: 0;\n overflow: hidden;\n}\n\n/* Files row inside input container - horizontal scroll, no wrapping */\n.omniscribe_chat-view-combined-files-row {\n display: flex;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n padding-bottom: 4px;\n scrollbar-width: thin;\n min-width: 0;\n}\n\n.omniscribe_chat-view-combined-files-row::-webkit-scrollbar {\n height: 4px;\n}\n\n.omniscribe_chat-view-combined-files-row::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.omniscribe_chat-view-combined-files-row::-webkit-scrollbar-thumb {\n background-color: var(--color-gray-300, #d1d5db);\n border-radius: 4px;\n}\n\n/* Input row with clip icon, textarea, and action button */\n.omniscribe_chat-view-combined-input-row {\n display: flex;\n align-items: center;\n width: 100%;\n gap: 4px;\n}\n\n/* Clip icon */\n.omniscribe_chat-view-combined-clip-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n height: 24px;\n border-radius: 9999px;\n background-color: var(--omniscribe-surface, white);\n cursor: pointer;\n transition: background-color 0.2s ease;\n border: solid 1px var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_chat-view-combined-clip-icon:hover {\n background-color: var(--omniscribe-surface-alt, #e5e7eb);\n color: var(--color-gray-600);\n}\n\n/* Action button inside input */\n.omniscribe_chat-view-combined-action-btn {\n flex-shrink: 0;\n}\n\n.omniscribe_chat-view-combined-textarea {\n flex: 1;\n resize: none;\n border: none !important;\n outline: none !important;\n box-shadow: none !important;\n min-height: 20px;\n max-height: 56px;\n font-weight: 500 !important;\n padding: 0 !important;\n background: transparent;\n color: var(--omniscribe-text-muted, #4a5364);\n height: 20px;\n}\n\n.omniscribe_chat-view-combined-textarea::placeholder {\n color: var(--omniscribe-text-muted, #9ca3af);\n}\n\n.omniscribe_chat-view-combined-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.omniscribe_chat-view-combined-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n border-radius: 9999px;\n background-color: var(--secondary, #132caa);\n color: white;\n cursor: pointer;\n transition: background-color 0.2s ease;\n flex-shrink: 0;\n}\n\n.omniscribe_chat-view-combined-send-btn:hover:not(:disabled) {\n background-color: var(--secondary-hover, #2847e7);\n}\n\n.omniscribe_chat-view-combined-send-btn:disabled {\n background-color: var(--omniscribe-surface-alt, #dfe2e7);\n cursor: not-allowed;\n}\n\n/* Stop button - red variant of send button */\n.omniscribe_chat-view-combined-stop-btn {\n background-color: var(--secondary, #132caa);\n}\n\n.omniscribe_chat-view-combined-stop-btn:hover {\n background-color: var(--secondary, #132caa);\n}\n\n/* Drag-and-drop overlay */\n.omniscribe_chat-view-drag-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(37, 99, 235, 0.05);\n border: 2px dashed var(--blue-600, #2563eb);\n border-radius: var(--radius);\n z-index: 10;\n pointer-events: none;\n}\n\n.omniscribe_chat-view-drag-overlay-text {\n color: var(--blue-600, #2563eb);\n font-size: var(--text-sm);\n font-weight: var(--font-weight-medium);\n}\n\n\n/* Source: modules/chat/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/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(--omniscribe-text, #13161a);\n line-height: 21.6px;\n font-size: 18px !important;\n font-weight: 500 !important;\n}\n\n.omniscribe_predefined-title {\n margin-bottom: 8px;\n word-break: break-word;\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 word-break: break-word;\n}\n\n.omniscribe_predefined-questions-content {\n background-color: var(--background-primary, #e7effd) !important;\n color: var(--primary, #105bdb) !important;\n border-radius: 999px !important;\n text-align: left;\n padding-top: 4px;\n padding-right: 16px;\n padding-bottom: 4px;\n padding-left: 16px;\n width: fit-content;\n height: fit-content;\n}\n\n\n/* Source: modules/chat/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 flex-direction: column;\n padding-top: calc(var(--spacing) * 13);\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: var(--omniscribe-text, #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/history/ChatHistory.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 margin: 8px;\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) * 4);\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(--omniscribe-text, #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 var(--omniscribe-border, #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-header {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 16px;\n background: var(--omniscribe-surface, white);\n border-bottom: 1px solid var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_thread-history-header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n border: none;\n background: none;\n cursor: pointer;\n padding: 0;\n}\n\n.omniscribe_thread-history-header-title {\n margin: 0;\n color: var(--omniscribe-text, #252a32);\n font-size: 14px;\n font-weight: 500;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_thread-history-new-chat-btn {\n margin: 12px 0 0 12px;\n border-radius: 8px;\n gap: 4px;\n padding-block: 4px;\n}\n\n.omniscribe_thread-history-new-chat-btn:hover:not(:disabled) {\n background-color: #0f2080;\n}\n\n.omniscribe_thread-history-new-chat-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\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-tooltip {\n padding: calc(0.25rem /* 4px */ * 4);\n}\n\n/* Processing thread indicator */\n.omniscribe_thread-list-btn.omniscribe_thread-processing {\n position: relative;\n}\n\n.omniscribe_thread-list-btn.omniscribe_thread-processing::before {\n content: '';\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n width: 6px;\n height: 6px;\n background: var(--secondary, #132caa);\n border-radius: 50%;\n animation: omniscribe_pulse 1.5s infinite;\n}\n\n.omniscribe_thread-list-btn.omniscribe_thread-processing\n .omniscribe_thread-list-text {\n padding-left: 12px;\n}\n\n@keyframes omniscribe_pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.4;\n }\n}\n\n\n/* Source: modules/chat/components/input/AudioBars.css */\n/* Granola-style animated audio bars: 3 rounded bars (short / tall / medium).\n Accent-colored and \"dancing\" while recording, muted and static otherwise. */\n.omniscribe_audio-bars {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n}\n\n.omniscribe_audio-bar {\n width: 3.5px;\n background-color: var(--omniscribe-primary, #1a73e8);\n border-radius: 9999px;\n transition:\n height 0.15s ease,\n background-color 0.2s ease;\n}\n\n/* Muted gray when not recording */\n.omniscribe_audio-bar--inactive {\n background-color: var(--grey-700, #9ca3af);\n}\n\n/* Live mode — heights are driven per-frame from the mic level, so use a\n short linear transition that dampens the movement without lagging it */\n.omniscribe_audio-bar--live {\n transition:\n height 0.08s linear,\n background-color 0.2s ease;\n}\n\n/* Static heights: short / tall / medium (Granola pattern) */\n.omniscribe_audio-bar--1 {\n height: 50%;\n}\n\n.omniscribe_audio-bar--2 {\n height: 100%;\n}\n\n.omniscribe_audio-bar--3 {\n height: 65%;\n}\n\n/* Dancing equalizer animation while recording */\n.omniscribe_audio-bar--animating.omniscribe_audio-bar--1 {\n animation: omniscribe-audio-dance-1 0.9s ease-in-out infinite;\n}\n\n.omniscribe_audio-bar--animating.omniscribe_audio-bar--2 {\n animation: omniscribe-audio-dance-2 1.1s ease-in-out infinite;\n}\n\n.omniscribe_audio-bar--animating.omniscribe_audio-bar--3 {\n animation: omniscribe-audio-dance-3 1s ease-in-out infinite;\n}\n\n/* The dance is decorative — it runs while connecting, when there is no stream\n to visualise yet. The --live bars are deliberately left out: those track\n real microphone input, so they are information, not decoration. */\n@media (prefers-reduced-motion: reduce) {\n .omniscribe_audio-bar--animating.omniscribe_audio-bar--1,\n .omniscribe_audio-bar--animating.omniscribe_audio-bar--2,\n .omniscribe_audio-bar--animating.omniscribe_audio-bar--3 {\n animation: none;\n }\n}\n\n@keyframes omniscribe-audio-dance-1 {\n 0%,\n 100% {\n height: 50%;\n }\n 25% {\n height: 85%;\n }\n 50% {\n height: 35%;\n }\n 75% {\n height: 70%;\n }\n}\n\n@keyframes omniscribe-audio-dance-2 {\n 0%,\n 100% {\n height: 100%;\n }\n 30% {\n height: 55%;\n }\n 60% {\n height: 90%;\n }\n 80% {\n height: 65%;\n }\n}\n\n@keyframes omniscribe-audio-dance-3 {\n 0%,\n 100% {\n height: 65%;\n }\n 20% {\n height: 95%;\n }\n 55% {\n height: 45%;\n }\n 85% {\n height: 80%;\n }\n}\n\n\n/* Source: modules/chat/components/input/ExtrasButtons.css */\n/*\n * Category names come from the host's templateExtras schema, so their length is\n * not ours to control. Left unbounded, one long name grew its pill until it\n * pushed the overflow trigger — and with it every remaining category — off the\n * right edge of the widget, with no way to reach them.\n *\n * The row cannot simply clip: the overflow menu is absolutely positioned and\n * opens upwards, so `overflow: hidden` on the row would cut the menu instead.\n * The pills give up the space themselves: they are the only shrinkable items in\n * the row, capped, and their label truncates.\n */\n/* Qualified: `.omniscribe_action-btn` is shared with the generate button and\n lives in another file, so an unqualified rule here would depend on which\n stylesheet the bundler concatenates last. */\n.omniscribe_action-btn.omniscribe_extras-btn {\n min-width: 0;\n max-width: 180px;\n flex-shrink: 1;\n}\n\n.omniscribe_extras-btn-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Overflow container for extras categories beyond the first two. */\n.omniscribe_extras-overflow {\n position: relative;\n display: inline-flex;\n /* Never squeezed out: it is the only route to the remaining categories. */\n flex-shrink: 0;\n}\n\n/* Three-dots trigger — mirrors the neutral pill styling of the action row. */\n.omniscribe_extras-overflow-trigger {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n padding: 0;\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 9999px;\n background-color: var(--omniscribe-surface, #ffffff);\n color: var(--grey-700, #6f7d95);\n cursor: pointer;\n transition:\n background-color 0.2s ease,\n color 0.2s ease,\n border-color 0.2s ease;\n}\n\n.omniscribe_extras-overflow-trigger:hover,\n.omniscribe_extras-overflow-trigger--open {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--omniscribe-text, #13161a);\n}\n\n/* Dropdown floats UP above the trigger (footer sits at the bottom), with a\n gap so it doesn't sit flush against the action buttons row. */\n.omniscribe_extras-overflow-menu {\n position: absolute;\n bottom: calc(100% + 12px);\n right: 0;\n z-index: 20;\n min-width: 160px;\n padding: 4px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n background-color: var(--omniscribe-surface, #ffffff);\n border: 1px solid var(--border, #e5e7eb);\n border-radius: var(--radius-lg, 12px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);\n}\n\n.omniscribe_extras-overflow-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 10px;\n border: none;\n border-radius: 8px;\n background-color: transparent;\n color: var(--omniscribe-text, #13161a);\n text-align: left;\n white-space: nowrap;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.omniscribe_extras-overflow-item:hover:not(:disabled) {\n background-color: var(--omniscribe-primary-soft, #e8f0fe);\n color: var(--omniscribe-primary, #1a73e8);\n}\n\n.omniscribe_extras-overflow-item:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n\n/* Source: modules/chat/components/input/FilePreview.css */\n/* File Preview Container - Figma Frame 532 */\n.omniscribe_file-preview-container {\n display: contents;\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: var(--omniscribe-surface-alt, #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: var(--omniscribe-surface-alt, #e8edf5);\n border-radius: 12px;\n}\n\n/* Document card */\n/* Document card - matches Figma design */\n.omniscribe_file-preview-document {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background-color: var(--omniscribe-surface, white);\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 16px;\n position: relative;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n flex-shrink: 0;\n max-height: 38px;\n}\n\n.omniscribe_file-preview-document-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 46px;\n height: 46px;\n background-color: #dc3545;\n border-radius: var(--radius-lg, 12px);\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: 16px;\n}\n\n.omniscribe_file-preview-document-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--grey-900);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 180px;\n}\n\n.omniscribe_file-preview-document-type {\n font-size: 12px;\n color: var(--grey-700);\n font-weight: 500;\n}\n\n/* Individual image thumbnail - larger size matching Figma */\n.omniscribe_file-preview-image {\n position: relative;\n width: 64px;\n height: 64px;\n border-radius: 16px;\n background-color: #1a1a2e;\n flex-shrink: 0;\n /* overflow: visible to allow X button to show outside bounds */\n}\n\n.omniscribe_file-preview-image-img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 16px;\n /* Apply overflow hidden to the image itself */\n overflow: hidden;\n}\n\n.omniscribe_file-preview-image-placeholder {\n width: 100%;\n height: 100%;\n background-color: var(--omniscribe-surface-alt, #e8edf5);\n border-radius: 16px;\n}\n\n/* Remove button - blue circle with X - positioned inside bounds */\n.omniscribe_file-preview-remove-btn {\n position: absolute;\n top: 4px;\n right: 4px;\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: var(--blue-600, #2563eb);\n color: white;\n cursor: pointer;\n padding: 0;\n transition: background-color 0.2s ease;\n z-index: 2;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.omniscribe_file-preview-remove-btn:hover {\n background-color: var(--blue-700, #1d4ed8);\n}\n\n.omniscribe_file-preview-remove-btn--image {\n top: 4px;\n right: 4px;\n width: 20px;\n height: 20px;\n}\n\n\n/* Source: modules/chat/components/input/MicrophoneButton.css */\n/* Microphone Button Styles */\n.microphone-button {\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: 24px !important;\n height: 24px !important;\n min-width: 24px !important;\n min-height: 24px !important;\n padding: 0 !important;\n border-radius: 9999px !important;\n border: none !important;\n background-color: var(--omniscribe-surface-alt, #f3f4f6) !important;\n box-shadow: none !important;\n transition: background-color 0.2s ease !important;\n flex-shrink: 0;\n}\n\n.microphone-button:hover:not(:disabled) {\n background-color: var(--omniscribe-surface-alt, #e5e7eb) !important;\n}\n\n.microphone-button--recording {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n background-color: #fee2e2 !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/input/TranscribeDropdown.css */\n/* Ensure tooltip trigger properly wraps the button in flex context */\n.omniscribe_thread-combined-footer-row > .tooltip-trigger {\n display: flex;\n flex-shrink: 0;\n}\n\n/* Granola-style transcribe pill: [bars chevron] ··· [stop square | text]\n A single flat capsule — no nested containers, no shadow, and its chrome\n stays constant across idle/recording/paused (only the bars change). */\n.omniscribe_transcribe-dropdown {\n display: flex;\n align-items: center;\n gap: 18px;\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 9999px;\n background-color: var(--omniscribe-surface, white);\n transition:\n background-color 0.15s ease,\n border-color 0.15s ease;\n font-size: var(--font-size-100, 13px);\n font-weight: 500;\n color: var(--omniscribe-text, #1f2937);\n white-space: nowrap;\n overflow: hidden;\n flex-shrink: 0;\n padding: 10px 18px;\n}\n\n.omniscribe_transcribe-dropdown:hover:not(\n .omniscribe_transcribe-dropdown--disabled\n ) {\n background-color: var(--omniscribe-surface-alt, #fafafa);\n border-color: var(--color-gray-300, #d1d5db);\n}\n\n/* Left group: bars + chevron sit flat inside the capsule (no inner pill) */\n.omniscribe_transcribe-controls-group {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n/* Bars & chevron buttons — chromeless icon buttons */\n.omniscribe_transcribe-bars-button,\n.omniscribe_transcribe-chevron-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n.omniscribe_transcribe-bars-button:disabled,\n.omniscribe_transcribe-chevron-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Right: plain accent text control (Granola's \"Resume\") — no chrome */\n.omniscribe_transcribe-text-button {\n display: flex;\n align-items: center;\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n font-size: inherit;\n font-weight: 500;\n color: var(--omniscribe-primary, #1a73e8);\n}\n\n.omniscribe_transcribe-text-button:hover:not(:disabled) {\n color: var(--blue-700, #1558d6);\n}\n\n.omniscribe_transcribe-text-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Right: play triangle shown when idle/paused — no chrome, accent color */\n.omniscribe_transcribe-play-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--omniscribe-primary, #1a73e8);\n transition: color 0.15s ease;\n}\n\n.omniscribe_transcribe-play-button:hover:not(:disabled) {\n color: var(--blue-700, #1558d6);\n}\n\n.omniscribe_transcribe-play-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Right: filled rounded stop square shown while recording — no chrome */\n.omniscribe_transcribe-stop-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--omniscribe-text-muted, #5f6368);\n transition: color 0.15s ease;\n}\n\n.omniscribe_transcribe-stop-button:hover:not(:disabled) {\n color: var(--omniscribe-text, #1f2937);\n}\n\n.omniscribe_transcribe-stop-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.omniscribe_transcribe-dropdown--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.omniscribe_transcribe-dropdown-label {\n text-align: left;\n white-space: nowrap;\n}\n\n/* Chevron points up (panel closed) and rotates to down when expanded */\n.omniscribe_transcribe-dropdown-chevron {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--omniscribe-text-muted, #6b7280);\n transition:\n transform 0.2s ease,\n color 0.2s ease;\n}\n\n.omniscribe_transcribe-dropdown-chevron--expanded {\n transform: rotate(180deg);\n}\n\n.omniscribe_transcribe-dropdown:hover .omniscribe_transcribe-dropdown-chevron {\n color: var(--omniscribe-text, #374151);\n}\n\n/* Connection status pill - inline banner replacing toasts.\n Three states: reconnecting (neutral), disconnected (red), restored (dark). */\n.omniscribe_connection-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 9999px;\n white-space: nowrap;\n flex-shrink: 0;\n font-weight: 500;\n margin-inline: 8px;\n}\n\n.omniscribe_connection-pill-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.omniscribe_connection-pill-icon--spin {\n animation: omniscribe-connection-spin 1s linear infinite;\n}\n\n@keyframes omniscribe-connection-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.omniscribe_connection-pill--reconnecting {\n background-color: var(--omniscribe-surface-alt, #f9fafb);\n border: 1px solid var(--color-gray-200, #e5e7eb);\n color: var(--omniscribe-text-muted, #374151);\n}\n\n.omniscribe_connection-pill--disconnected {\n background-color: #fdecec;\n border: 1px solid #f8c7c7;\n color: #b42318;\n padding-right: 4px;\n}\n\n.omniscribe_connection-pill--restored {\n background-color: #1f2937;\n border: 1px solid #1f2937;\n color: #ffffff;\n}\n\n.omniscribe_connection-pill-retry {\n border-radius: 9999px !important;\n gap: 4px;\n padding-block: 3px !important;\n padding-inline: 8px !important;\n height: auto !important;\n background-color: #d92d20 !important;\n color: #ffffff !important;\n border: none !important;\n margin-left: 2px;\n}\n\n.omniscribe_connection-pill-retry:hover:not(:disabled) {\n background-color: #b42318 !important;\n}\n\n/* Action buttons - unified style for Generate, Petitions, Extras */\n.omniscribe_action-btn {\n /* Fixed-label actions keep their size; only the extras pills, whose labels\n are host-defined and can be arbitrarily long, give up space. */\n flex-shrink: 0;\n border-radius: 9999px !important;\n gap: 6px;\n padding-block: 6px !important;\n padding-inline: 12px !important;\n /* Match height of controls-group (border + padding + content) */\n min-height: 32px !important;\n font-size: var(--font-size-100, 13px) !important;\n font-weight: 500 !important;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08) !important;\n transition: all 0.15s ease !important;\n display: inline-flex !important;\n align-items: center !important;\n}\n\n.omniscribe_action-btn:hover:not(:disabled) {\n background-color: var(--blue-700, #1558d6) !important;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12) !important;\n}\n\n.omniscribe_action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Collapsed state - vertical pill with light theme */\n.omniscribe_transcribe-collapsed {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 8px;\n background-color: var(--omniscribe-surface, white);\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 9999px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n/* Passive activity indicator — live bars while recording */\n.omniscribe_transcribe-collapsed-bars {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n}\n\n.omniscribe_transcribe-collapsed-play {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n border-radius: 50%;\n background-color: transparent;\n color: var(--omniscribe-primary, #1a73e8);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.omniscribe_transcribe-collapsed-play:hover:not(:disabled) {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n transform: scale(1.05);\n}\n\n.omniscribe_transcribe-collapsed-play:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.omniscribe_transcribe-collapsed-play--recording {\n box-shadow: 0 0 8px rgba(26, 115, 232, 0.2);\n}\n\n.omniscribe_transcribe-collapsed-expand {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 50%;\n background-color: transparent;\n color: var(--omniscribe-text-muted, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.omniscribe_transcribe-collapsed-expand:hover:not(:disabled) {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--omniscribe-text, #374151);\n}\n\n\n/* Source: modules/chat/components/input/TranscriptionPanel.css */\n/* Expand/collapse wrapper — absolutely positioned upwards so it does NOT\n push the actions row or the form. Being out of the flow, animating the\n height causes no footer reflow: the panel unfolds upwards (same\n animation as the previous version). */\n.omniscribe_transcription-panel-wrapper {\n position: absolute;\n bottom: 100%;\n left: 0;\n right: 0;\n height: 0;\n overflow: hidden;\n opacity: 0;\n pointer-events: none;\n transition:\n height 0.5s ease,\n opacity 0.5s ease;\n}\n\n.omniscribe_transcription-panel-wrapper--expanded {\n height: calc(var(--content-height) * 0.55);\n opacity: 1;\n pointer-events: auto;\n border-bottom: 1px solid var(--border, #e5e7eb);\n}\n\n/* TranscriptionPanel - Frame 655 from Figma */\n.omniscribe_transcription-panel {\n width: 100%;\n height: 100%;\n background-color: var(--omniscribe-surface, #ffffff);\n border: 1px solid var(--border, #e5e7eb);\n border-top-left-radius: var(--radius-lg, 12px);\n border-top-right-radius: var(--radius-lg, 12px);\n overflow: hidden;\n margin-bottom: 8px;\n display: flex;\n flex-direction: column;\n}\n\n/* Header with action buttons */\n.omniscribe_transcription-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--border);\n}\n\n.omniscribe_transcription-panel-header-section {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 4px;\n}\n\n.omniscribe_transcription-panel-actions {\n display: flex;\n align-items: center;\n gap: 1px;\n margin-right: 2px;\n}\n\n.omniscribe_transcription-panel-action-btn {\n width: 100%;\n height: auto;\n transition:\n background-color 0.2s ease,\n color 0.2s ease;\n}\n\n.omniscribe_transcription-panel-close {\n border-radius: 9999px;\n border: none;\n padding-inline: 5px !important;\n padding-block: 2.5px !important;\n margin-block: 5.5px;\n transition:\n background-color 0.2s ease,\n color 0.2s ease;\n}\n\n.omniscribe_transcription-panel-close:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--color-gray-600, #4b5563);\n}\n\n/* Body container */\n.omniscribe_transcription-panel-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 150px;\n overflow: hidden;\n}\n\n/* Idle state - white background with blue text */\n.omniscribe_transcription-panel-idle {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n gap: 16px;\n padding: 24px;\n}\n\n.omniscribe_transcription-panel-idle-text {\n font-size: 16px;\n font-weight: 500;\n color: var(--color-primary, #2563eb);\n text-align: center;\n margin: 0;\n}\n\n.omniscribe_transcription-panel-play-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border: none;\n border-radius: 9999px;\n background-color: var(--omniscribe-primary-soft, #e7effd);\n cursor: pointer;\n transition:\n transform 0.2s ease,\n box-shadow 0.2s ease;\n}\n\n.omniscribe_transcription-panel-play-btn:hover {\n transform: scale(1.05);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n}\n\n.omniscribe_transcription-panel-play-btn svg {\n color: var(--omniscribe-primary, #2563eb);\n}\n\n/* Content state - transcription display */\n.omniscribe_transcription-panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n max-height: 220px;\n}\n\n.omniscribe_transcription-panel-message {\n margin-bottom: 8px;\n text-align: left;\n width: fit-content;\n background-color: var(--omniscribe-surface-alt, #f6f7f9);\n padding: 4px;\n border-radius: 8px;\n color: var(--omniscribe-text, #13161a);\n line-height: 1.7 !important;\n}\n\n/* Audio-loss divider rendered between segments where a recording cut\n occurred. Visually separates captured speech from the gap so the doctor\n can spot lost portions while reviewing the transcription. */\n.omniscribe_transcription-panel-cut {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-block: 10px;\n padding-inline: 4px;\n}\n\n.omniscribe_transcription-panel-cut-line {\n flex: 1;\n height: 1px;\n background-color: #fed7aa;\n}\n\n.omniscribe_transcription-panel-cut-label {\n flex-shrink: 0;\n padding: 2px 10px;\n border-radius: 9999px;\n background-color: #fff7ed;\n border: 1px solid #fed7aa;\n color: #c2410c;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n}\n\n/* Scrollbar styles */\n.omniscribe_transcription-panel-content::-webkit-scrollbar {\n width: 6px;\n}\n\n.omniscribe_transcription-panel-content::-webkit-scrollbar-thumb {\n border-radius: 10px;\n background-color: var(--color-gray-300, #d1d5db);\n}\n\n.omniscribe_transcription-panel-content::-webkit-scrollbar-track {\n background-color: transparent;\n}\n\n/* Firefox */\n.omniscribe_transcription-panel-content {\n scrollbar-width: thin;\n scrollbar-color: var(--color-gray-300, #d1d5db) transparent;\n}\n\n/* Processing skeleton indicator */\n.omniscribe_transcription-panel-processing {\n padding-top: 5px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n/* Processing skeleton indicator */\n.omniscribe_transcription-processing {\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_transcription-processing-lines {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_transcription-skeleton-line {\n height: 14px;\n width: 70%;\n}\n\n.omniscribe_transcription-skeleton-line--short {\n width: 40%;\n}\n\n.omniscribe_transcription-processing-text {\n font-size: var(--text-xs);\n color: var(--omni-secondary, #6b7280);\n}\n\n\n/* Source: modules/chat/components/markdown/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: var(--omniscribe-surface, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-text, #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: var(--omniscribe-text-muted, #4b5563);\n}\n\n.omniscribe_link-menu-content {\n padding: 0.375rem;\n}\n\n\n/* Source: modules/chat/components/markdown/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: var(--omniscribe-surface, #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: var(--omniscribe-text-muted, #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/markdown/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/markdown/MarkdownText.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/markdown/tooltip-icon-button.css */\n/* Tooltip icon button styles */\n.omniscribe_tooltip-icon-button-btn {\n padding: 4px;\n min-width: auto;\n min-height: auto;\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: 0;\n}\n\n\n/* Source: modules/chat/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/messages/AssistantMessageLoading.css */\n/* Assistant message loading animation */\n.omniscribe_assistant-message-loading-container {\n display: flex;\n align-items: center;\n padding: 8px 0;\n}\n\n.omniscribe_assistant-message-loading {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.omniscribe_assistant-message-loading-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: #666;\n animation: omniscribe-assistant-dot-flashing 1.4s infinite linear;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(1) {\n animation-delay: -0.32s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(2) {\n animation-delay: -0.16s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(3) {\n animation-delay: 0s;\n}\n\n@keyframes omniscribe-assistant-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/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/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: var(--omniscribe-text-muted, #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/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: var(--omniscribe-surface-alt, #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/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: var(--omniscribe-surface-alt, #f5f5f5);\n border: 1px solid var(--omniscribe-border, #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: var(--omniscribe-surface-alt, #f8f9fa);\n color: var(--omniscribe-text-muted, #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: var(--omniscribe-surface-alt, #f8f9fa);\n color: var(--omniscribe-text-muted, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-surface, #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: var(--omniscribe-text, #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: var(--omniscribe-surface-alt, #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: var(--omniscribe-surface-alt, #f8f9fa);\n border: 1px solid var(--omniscribe-border, #e0e0e0);\n transition: background-color 0.2s ease;\n max-width: 280px;\n}\n\n.omniscribe_message-document:hover {\n background-color: var(--omniscribe-surface-alt, #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: var(--omniscribe-text, #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: var(--omniscribe-text-muted, #6c757d);\n}\n\n.omniscribe_message-documents-count {\n margin-top: 4px;\n font-size: 11px;\n color: var(--omniscribe-text-muted, #6c757d);\n font-style: italic;\n}\n\n\n/* Source: modules/chat/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/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: var(--omniscribe-surface, #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: var(--omniscribe-text, #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: var(--omniscribe-text-muted, #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/header/components/ConfigHeader.css */\n/* Config Header Styles */\n.omniscribe_config-view {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n max-height: 17px;\n padding: 16px;\n}\n\n.omniscribe_config-back-group {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n background: none;\n border: none;\n padding: 0;\n}\n\n.omniscribe_config-back-label {\n margin: 0;\n color: var(--omniscribe-text, #000000);\n font-size: 14px;\n font-weight: 700;\n line-height: 17px;\n}\n\n.omniscribe_config-close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n background-color: var(--omniscribe-surface-alt, #edeff2);\n border: 1px solid var(--omniscribe-border, #e5e7ec);\n border-radius: var(--Radius-radius-round, 99999px);\n cursor: pointer;\n color: var(--omniscribe-text, #000000);\n font-size: 14px;\n line-height: 1;\n padding: 0;\n}\n\n\n/* Source: modules/header/components/ConnectedButtons.css */\n/* Connected Buttons Styles */\n.omniscribe_connected-buttons {\n display: flex;\n border-radius: var(--Radius-radius-medium, 8px);\n border: 1px solid var(--omniscribe-border, #e5e7ec);\n overflow: hidden;\n}\n\n.omniscribe_connected-btn-left {\n border: none !important;\n border-radius: 0 !important;\n border-right: 1px solid var(--omniscribe-border, #e5e7ec) !important;\n}\n\n.omniscribe_connected-btn-right {\n border: none !important;\n border-radius: 0 !important;\n}\n\n/* Ensure connected buttons have consistent styling */\n.omniscribe_connected-buttons .omniscribe_utility-btns {\n min-height: 40px;\n}\n\n\n/* Source: modules/header/components/ConsentIndicator.css */\n.omniscribe_consent-indicator {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: var(--Font-Weight-Regular, 400);\n line-height: var(--text-xs--line-height, 14.4px);\n letter-spacing: var(--text-xs--letter-spacing, 0.05px);\n white-space: nowrap;\n margin-right: 8px;\n gap: 4px;\n border: 1px solid var(--border, #e5e7ec);\n color: var(--omniscribe-text-muted, #4a5364);\n}\n\n.omniscribe_consent-indicator-tooltip {\n border-radius: var(--radius-lg, 12px) !important;\n border: 1px solid var(--border, #e5e7ec) !important;\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25) !important;\n display: flex !important;\n padding: 10px 8px !important;\n font-size: 10px !important;\n font-weight: 400 !important;\n line-height: var(--text-xs--line-height, 14.4px) !important;\n letter-spacing: var(--text-xs--letter-spacing, 0.05px) !important;\n}\n\n/* SOF-844: express refusal of AI use. Distinct from \"not signed yet\" — the\n whole point of the third state is that they must not look alike. */\n.omniscribe_consent-indicator--refused {\n background-color: var(--omniscribe-danger-soft, #fee2e2);\n color: var(--omniscribe-danger, #b91c1c);\n border-color: var(--omniscribe-danger, #b91c1c);\n}\n\n/* SOF-845: the consent may be signed and the assistant still blocked by another\n rule. The badge stays truthful about the consent, but must not read as \"all\n clear\" at a glance while recording is disabled. */\n.omniscribe_consent-indicator--blocked {\n background-color: var(--omniscribe-warning-soft, #fef3c7);\n color: var(--omniscribe-warning, #92400e);\n border-color: var(--omniscribe-warning, #92400e);\n}\n\n\n/* Source: modules/header/components/MainHeader.css */\n/* Main Header Styles */\n.omniscribe_main-header {\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.omniscribe_main-header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n border: none;\n background: none;\n cursor: pointer;\n}\n\n.omniscribe_main-header-title {\n margin: 0;\n color: var(--omniscribe-text, #252a32);\n font-size: 14px;\n font-weight: 500;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_main-header-separator {\n width: 1px;\n align-self: stretch;\n margin: -16px 0;\n background-color: var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_main-header-spacer {\n flex: 1;\n}\n\n.omniscribe_main-header-settings {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n border: none;\n background: none;\n cursor: pointer;\n}\n\n.omniscribe_main-header-close {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n border: none;\n background: none;\n cursor: pointer;\n}\n\n\n/* Source: modules/header/components/UtilityButton.css */\n/* Utility Button Styles */\n.omniscribe_utility-btn-audio {\n min-height: 40px; /* Match connected buttons height */\n}\n\n.omniscribe_utility-btn-right {\n /* Settings button specific styles can be added here */\n}\n\n/* Base utility button styles are inherited from parent UtilityButtons.css */\n\n\n/* Source: modules/header/components/WarningBanner.css */\n/* Warning Banner Styles */\n.omniscribe_warning-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n background-color: var(--omniscribe-surface-alt, #f6f7f9);\n border-top: 1px solid var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_warning-banner-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n padding: 0;\n border: none;\n background-color: var(--omniscribe-border, #e5e7ec);\n border-radius: 50%;\n cursor: pointer;\n flex-shrink: 0;\n}\n\n.omniscribe_warning-banner-close:hover {\n background-color: #d1d5db;\n}\n\n.omniscribe_warning-banner-text {\n font-size: 12px;\n font-weight: 400;\n line-height: 1.25;\n color: var(--omniscribe-text-muted, #4a5364);\n}\n\n\n/* Source: modules/header/section/UtilityButtons.css */\n.omniscribe_header-wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n background-color: var(--omniscribe-surface, #ffffff);\n border-top-right-radius: 12px;\n border-top-left-radius: 12px;\n}\n\n.omniscribe_utility-btns-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n background-color: var(--omniscribe-surface, #ffffff);\n overflow: hidden;\n border-bottom: 1px solid var(--omniscribe-border, #e5e7ec);\n align-self: stretch;\n border-top-right-radius: inherit;\n border-top-left-radius: inherit;\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(--omniscribe-surface-alt, #f6f7f9) !important;\n border: none !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(--omniscribe-border, #e5e7ec);\n position: relative;\n padding: 8px;\n display: flex;\n align-items: center;\n\n &:hover {\n background-color: var(--omniscribe-surface-alt, #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(--omniscribe-surface-alt, #f6f7f9);\n border: 1px solid var(--omniscribe-primary, #105bdb);\n}\n\n.omniscribe_btn-label {\n margin-left: 6px;\n font-size: 14px;\n color: var(--omniscribe-text, #212529);\n font-weight: 500;\n}\n\n.omniscribe_btn-label-active {\n color: var(--omniscribe-primary, #105bdb);\n}\n\n.omniscribe_btn-label-inactive {\n color: var(--omniscribe-text, #212529);\n}\n\n.omniscribe_icon {\n color: var(--active-black);\n}\n\n.omniscribe_icon-active {\n color: var(--omniscribe-primary, #105bdb);\n}\n\n\n/* Source: modules/insertionPreview/InsertionPreviewModal.css */\n/* Insertion Preview Modal — ported from the demo's .sugg-* styles\n (dev-tools/demo/src/style.css:715-891). Uses BEM-style naming under\n omniscribe_insertion-preview to stay scoped inside the SDK shadow DOM.\n\n Theming hooks (set on the `<sofia-sdk>` element, they cross the shadow\n boundary; classes don't):\n\n --omniscribe-insertion-preview-reserve px reserved for chat widget on the right\n --omniscribe-insertion-preview-primary brand color (selection / apply button)\n --omniscribe-insertion-preview-primary-soft soft pill background using primary\n --omniscribe-insertion-preview-primary-text text color sitting on primary-soft\n --omniscribe-insertion-preview-accent attention color (gaps)\n --omniscribe-insertion-preview-accent-soft soft pill background using accent\n --omniscribe-insertion-preview-accent-bg gap-section background\n --omniscribe-insertion-preview-text primary text\n --omniscribe-insertion-preview-text-muted secondary text / chrome\n --omniscribe-insertion-preview-border panel + group border\n --omniscribe-insertion-preview-border-soft in-panel separators\n --omniscribe-insertion-preview-input-border form-control border\n --omniscribe-insertion-preview-checkbox-border unchecked checkbox stroke\n --omniscribe-insertion-preview-surface panel background\n --omniscribe-insertion-preview-surface-alt header / footer / hover background\n\n Defaults cascade THROUGH the main SDK tokens (`--omniscribe-*`) before\n falling back to a hard-coded literal. So:\n\n 1. If the host sets `--omniscribe-insertion-preview-primary` →\n only the modal picks it up (per-surface theming).\n 2. Else if the host sets `--omniscribe-primary` (the chat-widget\n token) → BOTH chat and modal share it (unified theme — the\n out-of-the-box experience).\n 3. Else → falls back to the hard-coded SDK default (Sofia blue),\n matching the chat widget's stock look.\n\n Tokens without a chat-widget counterpart (accent / text-muted /\n border-soft / surface-alt etc.) keep their own defaults. */\n\n.omniscribe_insertion-preview__backdrop,\n.omniscribe_insertion-preview__panel {\n --_primary: var(\n --omniscribe-insertion-preview-primary,\n var(--omniscribe-primary, #105bdb)\n );\n --_primary-soft: var(\n --omniscribe-insertion-preview-primary-soft,\n var(--omniscribe-primary-soft, #e7effd)\n );\n --_primary-text: var(\n --omniscribe-insertion-preview-primary-text,\n var(--omniscribe-primary, #105bdb)\n );\n --_accent: var(--omniscribe-insertion-preview-accent, #c77700);\n --_accent-soft: var(--omniscribe-insertion-preview-accent-soft, #fdebc6);\n --_accent-bg: var(--omniscribe-insertion-preview-accent-bg, #fffbf1);\n --_text: var(\n --omniscribe-insertion-preview-text,\n var(--omniscribe-text, #1f2733)\n );\n --_text-muted: var(\n --omniscribe-insertion-preview-text-muted,\n var(--omniscribe-text-muted, #6a7385)\n );\n --_border: var(\n --omniscribe-insertion-preview-border,\n var(--omniscribe-border, #e5e7ec)\n );\n --_border-soft: var(\n --omniscribe-insertion-preview-border-soft,\n var(--omniscribe-border, #eef1f6)\n );\n --_input-border: var(\n --omniscribe-insertion-preview-input-border,\n var(--omniscribe-border, #d6dbe5)\n );\n --_checkbox-border: var(\n --omniscribe-insertion-preview-checkbox-border,\n #b7bfcc\n );\n --_surface: var(\n --omniscribe-insertion-preview-surface,\n var(--omniscribe-surface, #fff)\n );\n --_surface-alt: var(\n --omniscribe-insertion-preview-surface-alt,\n var(--omniscribe-surface-alt, #f6f8fb)\n );\n}\n\n/* The modal must sit above every other surface in the SDK shadow DOM\n (chat panel, toasts, tooltips). 2147483640+ ensures that even with a\n max-int z-index race, the modal wins. */\n.omniscribe_insertion-preview__backdrop {\n position: fixed;\n inset: 0;\n background: rgba(15, 27, 45, 0.42);\n backdrop-filter: blur(2px);\n -webkit-backdrop-filter: blur(2px);\n z-index: 2147483640;\n animation: omniscribe_insertion-preview__fade 0.18s ease-out;\n}\n@keyframes omniscribe_insertion-preview__fade {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n/* `--omniscribe-insertion-preview-reserve` lets the host budget space\n for a floating chat widget so the panel centers in the area NOT\n covered by it. Default: 0px → centered in the full viewport. */\n.omniscribe_insertion-preview__panel {\n position: fixed;\n top: 50%;\n left: calc((100vw - var(--omniscribe-insertion-preview-reserve, 0px)) / 2);\n transform: translate(-50%, -50%);\n z-index: 2147483641;\n width: 680px;\n max-width: calc(\n 100vw - var(--omniscribe-insertion-preview-reserve, 0px) - 32px\n );\n max-height: 84vh;\n background: var(--_surface);\n border: 1px solid var(--_border);\n border-radius: 14px;\n box-shadow: 0 24px 64px rgba(15, 27, 45, 0.18);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: omniscribe_insertion-preview__in 0.22s ease-out;\n font-family: 'Lato', sans-serif;\n color: var(--_text);\n}\n\n/* Below 1100px there isn't room to sit beside the widget; centered\n fallback (will overlap the widget — same trade-off as the demo). */\n@media (max-width: 1100px) {\n .omniscribe_insertion-preview__panel {\n left: 50%;\n width: 92vw;\n max-width: 720px;\n }\n}\n@keyframes omniscribe_insertion-preview__in {\n from {\n opacity: 0;\n transform: translate(-50%, calc(-50% + 8px)) scale(0.985);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n.omniscribe_insertion-preview__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n border-bottom: 1px solid var(--_border);\n background: var(--_surface-alt);\n}\n.omniscribe_insertion-preview__title {\n margin: 0;\n font-size: 13px;\n font-weight: 600;\n}\n.omniscribe_insertion-preview__close {\n background: transparent;\n border: 0;\n color: var(--_text-muted);\n font-size: 18px;\n line-height: 1;\n padding: 2px 6px;\n border-radius: 4px;\n cursor: pointer;\n}\n.omniscribe_insertion-preview__close:hover {\n background: var(--_border-soft);\n color: var(--_text);\n}\n\n.omniscribe_insertion-preview__sub {\n margin: 0;\n padding: 8px 14px;\n font-size: 11.5px;\n color: var(--_text-muted);\n border-bottom: 1px solid var(--_border-soft);\n}\n\n.omniscribe_insertion-preview__body {\n flex: 1;\n overflow-y: auto;\n padding: 4px 0;\n}\n\n.omniscribe_insertion-preview__group {\n border-bottom: 1px solid var(--_border-soft);\n}\n.omniscribe_insertion-preview__group:last-child {\n border-bottom: 0;\n}\n.omniscribe_insertion-preview__group-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px 4px;\n}\n/* The parent label of an array-of-objects group lives inside .group-head\n which already supplies 14px left padding. Without zeroing the inner\n .row padding here, the parent ends up doubly indented (28px) while\n children directly under the section have a single 14px — making the\n parent appear LEFT-shifted relative to its own children. */\n.omniscribe_insertion-preview__group-head .omniscribe_insertion-preview__row {\n padding: 0;\n}\n.omniscribe_insertion-preview__group-name {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--_text-muted);\n}\n.omniscribe_insertion-preview__group-count {\n background: var(--_primary-soft);\n color: var(--_primary-text);\n font-size: 10.5px;\n font-weight: 600;\n border-radius: 999px;\n padding: 1px 7px;\n}\n\n.omniscribe_insertion-preview__row {\n display: grid;\n grid-template-columns: 16px 1fr;\n gap: 10px;\n padding: 8px 14px;\n align-items: flex-start;\n cursor: pointer;\n border-radius: 6px;\n}\n.omniscribe_insertion-preview__row:hover {\n background: var(--_surface-alt);\n}\n.omniscribe_insertion-preview__row-checkbox {\n appearance: none;\n width: 14px;\n height: 14px;\n border: 1px solid var(--_checkbox-border);\n border-radius: 3px;\n background: var(--_surface);\n margin-top: 2px;\n cursor: pointer;\n}\n.omniscribe_insertion-preview__row-checkbox:checked {\n background: var(--_primary);\n border-color: var(--_primary);\n background-image: url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>\");\n background-repeat: no-repeat;\n background-position: center;\n}\n.omniscribe_insertion-preview__row-body {\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.omniscribe_insertion-preview__row-label {\n font-size: 12.5px;\n font-weight: 600;\n color: var(--_text);\n margin-bottom: 8px;\n}\n.omniscribe_insertion-preview__row-preview {\n font-size: 11.5px;\n color: var(--_text-muted);\n word-break: break-word;\n}\n.omniscribe_insertion-preview__row-line {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 2px 0;\n}\n.omniscribe_insertion-preview__row-line-text {\n flex: 1;\n}\n\n.omniscribe_insertion-preview__row-edit {\n margin-top: 4px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.omniscribe_insertion-preview__row-edit-grid {\n display: grid;\n grid-template-columns: 140px 1fr;\n gap: 6px 12px;\n align-items: center;\n}\n.omniscribe_insertion-preview__row-edit-label {\n font-size: 11px;\n color: var(--_text-muted);\n}\n\n.omniscribe_insertion-preview__edit {\n font: inherit;\n font-size: 12px;\n color: var(--_text);\n border: 1px solid var(--_input-border);\n border-radius: 4px;\n padding: 4px 8px;\n background: var(--_surface);\n width: 100%;\n box-sizing: border-box;\n}\n.omniscribe_insertion-preview__edit--prose {\n min-height: 60px;\n resize: vertical;\n}\n.omniscribe_insertion-preview__edit--toggle {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n border: 0;\n padding: 0;\n background: transparent;\n}\n.omniscribe_insertion-preview__edit--multi-enum {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n border: 0;\n padding: 0;\n background: transparent;\n}\n.omniscribe_insertion-preview__edit__chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n border: 1px solid var(--_input-border);\n border-radius: 999px;\n padding: 2px 8px;\n cursor: pointer;\n}\n.omniscribe_insertion-preview__edit__chip--on {\n background: var(--_primary);\n color: #fff;\n border-color: var(--_primary);\n}\n.omniscribe_insertion-preview__edit__chip input {\n display: none;\n}\n\n/* Searchable enum select */\n.omniscribe_insertion-preview__searchable-select {\n position: relative;\n width: 100%;\n}\n.omniscribe_insertion-preview__searchable-select__trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n font: inherit;\n font-size: 12px;\n border: 1px solid var(--_input-border);\n border-radius: 4px;\n padding: 4px 8px;\n background: var(--_surface);\n cursor: pointer;\n text-align: left;\n}\n.omniscribe_insertion-preview__searchable-select__chevron {\n color: var(--_text-muted);\n}\n.omniscribe_insertion-preview__searchable-select__dropdown {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n z-index: 5;\n background: var(--_surface);\n border: 1px solid var(--_input-border);\n border-radius: 4px;\n box-shadow: 0 8px 24px rgba(15, 27, 45, 0.12);\n max-height: 200px;\n display: flex;\n flex-direction: column;\n}\n.omniscribe_insertion-preview__searchable-select__search {\n font: inherit;\n font-size: 12px;\n border: 0;\n border-bottom: 1px solid var(--_border-soft);\n padding: 6px 8px;\n outline: none;\n}\n.omniscribe_insertion-preview__searchable-select__list {\n list-style: none;\n margin: 0;\n padding: 4px 0;\n overflow-y: auto;\n}\n.omniscribe_insertion-preview__searchable-select__option {\n padding: 4px 10px;\n font-size: 12px;\n cursor: pointer;\n}\n.omniscribe_insertion-preview__searchable-select__option:hover,\n.omniscribe_insertion-preview__searchable-select__option--selected {\n background: var(--_surface-alt);\n}\n.omniscribe_insertion-preview__searchable-select__option--custom {\n color: var(--_text-muted);\n font-style: italic;\n}\n\n.omniscribe_insertion-preview__row--will-replace {\n background: rgba(199, 119, 0, 0.06);\n}\n.omniscribe_insertion-preview__row-tag {\n font-size: 10px;\n font-weight: 600;\n background: var(--_accent-soft);\n color: var(--_accent);\n padding: 2px 6px;\n border-radius: 999px;\n align-self: flex-start;\n margin-top: 1px;\n}\n\n/* Gaps group */\n.omniscribe_insertion-preview__group--gaps {\n background: var(--_accent-bg);\n border-top: 1px solid var(--_border);\n}\n.omniscribe_insertion-preview__group-name--gap {\n color: var(--_accent);\n}\n.omniscribe_insertion-preview__group-count--gap {\n background: var(--_accent-soft);\n color: var(--_accent);\n}\n.omniscribe_insertion-preview__row--gap {\n grid-template-columns: 18px 1fr;\n cursor: default;\n}\n.omniscribe_insertion-preview__row--gap:hover {\n background: rgba(199, 119, 0, 0.06);\n}\n.omniscribe_insertion-preview__gap-icon {\n color: var(--_accent);\n margin-top: 1px;\n}\n.omniscribe_insertion-preview__row-preview--gap {\n color: var(--_accent);\n}\n\n.omniscribe_insertion-preview__footer {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding: 10px 14px;\n border-top: 1px solid var(--_border);\n background: var(--_surface-alt);\n}\n.omniscribe_insertion-preview__btn {\n font: inherit;\n font-size: 12px;\n font-weight: 600;\n border: 1px solid var(--_input-border);\n background: var(--_surface);\n border-radius: 6px;\n padding: 6px 14px;\n cursor: pointer;\n color: var(--_text);\n}\n.omniscribe_insertion-preview__btn--primary {\n background: var(--_primary);\n color: #fff;\n border-color: var(--_primary);\n}\n.omniscribe_insertion-preview__btn--primary:disabled {\n background: #a3b1ad;\n border-color: #a3b1ad;\n cursor: not-allowed;\n}\n\n/* \"Edit with voice\" — secondary action style. Picks up the host's\n --omniscribe-secondary token (falls back to a neutral teal). */\n.omniscribe_insertion-preview__btn--voice {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: var(--_surface);\n color: var(--_primary);\n border-color: var(--_primary);\n}\n.omniscribe_insertion-preview__btn--voice:hover {\n background: var(--_primary-soft);\n}\n.omniscribe_insertion-preview__btn-icon {\n display: inline-block;\n vertical-align: middle;\n flex-shrink: 0;\n}\n.omniscribe_insertion-preview__btn-icon--stop {\n width: 10px;\n height: 10px;\n background: currentColor;\n border-radius: 1px;\n}\n\n/* While recording the voice button morphs into a destructive-styled\n \"Stop\" button so the action reads as final. */\n.omniscribe_insertion-preview__btn--voice-stop {\n background: #dc3545;\n color: #fff;\n border-color: #dc3545;\n}\n.omniscribe_insertion-preview__btn--voice-stop:hover {\n background: #c82333;\n border-color: #c82333;\n}\n\n/* Voice status banner — rendered just under the modal header while the\n chat surface is recording / starting / generating. */\n.omniscribe_insertion-preview__voice-banner {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 14px;\n font-size: 12px;\n border-bottom: 1px solid var(--_border-soft);\n background: var(--_surface-alt);\n color: var(--_text);\n}\n.omniscribe_insertion-preview__voice-banner--recording {\n background: rgba(220, 53, 69, 0.08);\n color: #b21f2c;\n}\n.omniscribe_insertion-preview__voice-banner--generating {\n background: var(--_primary-soft);\n color: var(--_primary-text);\n}\n.omniscribe_insertion-preview__voice-pulse {\n width: 10px;\n height: 10px;\n border-radius: 999px;\n background: #dc3545;\n animation: omniscribe_insertion-preview__pulse 1s ease-in-out infinite;\n flex-shrink: 0;\n}\n@keyframes omniscribe_insertion-preview__pulse {\n 0%,\n 100% {\n opacity: 0.4;\n transform: scale(0.85);\n }\n 50% {\n opacity: 1;\n transform: scale(1.15);\n }\n}\n.omniscribe_insertion-preview__voice-spinner {\n width: 12px;\n height: 12px;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: 999px;\n animation: omniscribe_insertion-preview__spin 0.8s linear infinite;\n flex-shrink: 0;\n display: inline-block;\n}\n@keyframes omniscribe_insertion-preview__spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Tiny visual cue on the panel itself while recording. */\n.omniscribe_insertion-preview__panel--voice {\n border-color: rgba(220, 53, 69, 0.4);\n}\n.omniscribe_insertion-preview__close:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n.omniscribe_insertion-preview__footer-spacer {\n flex: 1;\n}\n\n/* Mandatory styling — distinct from the soft amber gap treatment so the\n doctor immediately sees what's blocking. Red border + red pill. */\n.omniscribe_insertion-preview__row--mandatory {\n background: rgba(220, 53, 69, 0.06);\n border-left: 3px solid #dc3545;\n}\n.omniscribe_insertion-preview__row--mandatory\n .omniscribe_insertion-preview__row-preview--gap,\n.omniscribe_insertion-preview__row--mandatory\n .omniscribe_insertion-preview__row-label {\n color: var(--omniscribe-text, #1f2733);\n}\n.omniscribe_insertion-preview__gap-icon--mandatory {\n color: #dc3545;\n}\n.omniscribe_insertion-preview__row-edit-grid--mandatory {\n background: rgba(220, 53, 69, 0.04);\n border-radius: 4px;\n padding: 4px 6px;\n}\n.omniscribe_insertion-preview__mandatory-pill {\n display: inline-block;\n margin-left: 8px;\n padding: 1px 6px;\n font-size: 9.5px;\n font-weight: 700;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n background: #dc3545;\n color: #fff;\n border-radius: 999px;\n}\n.omniscribe_insertion-preview__sub--blocking {\n color: #dc3545;\n font-weight: 600;\n}\n\n/* AI-suggested field: the agent inferred this from context rather\n than from an explicit doctor statement. We tint the editor\n background so the doctor visually distinguishes it from\n confirmed-from-dictation fields, and a small ✨ pill on the\n label tells them what it means. Less alarming than the\n mandatory-red treatment because the field IS filled — we just\n want the doctor to double-check it. */\n.omniscribe_insertion-preview__row-edit-grid--suggested {\n background: rgba(176, 122, 255, 0.06);\n border-left: 2px solid #b07aff;\n border-radius: 4px;\n padding: 4px 6px;\n}\n.omniscribe_insertion-preview__suggested-pill {\n display: inline-block;\n margin-left: 8px;\n padding: 1px 7px;\n font-size: 9.5px;\n font-weight: 600;\n letter-spacing: 0.03em;\n background: rgba(176, 122, 255, 0.12);\n color: #6f48b8;\n border: 1px solid rgba(176, 122, 255, 0.5);\n border-radius: 999px;\n}\n\n/* SOF-659 — read-only \"Attachments\" section (file previews by type). */\n.omniscribe_insertion-preview__attachments {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.omniscribe_insertion-preview__attachments__list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.omniscribe_insertion-preview__attachment {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 8px;\n overflow: hidden;\n background: rgba(0, 0, 0, 0.02);\n}\n\n.omniscribe_insertion-preview__attachment--image {\n display: block;\n max-width: 100%;\n max-height: 240px;\n object-fit: contain;\n}\n\n.omniscribe_insertion-preview__attachment--audio {\n width: 100%;\n padding: 8px;\n}\n\n.omniscribe_insertion-preview__attachment--pdf {\n width: 100%;\n height: 360px;\n border: none;\n}\n\n.omniscribe_insertion-preview__attachment--text {\n margin: 0;\n padding: 10px 12px;\n max-height: 200px;\n overflow: auto;\n font-size: 12px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.omniscribe_insertion-preview__attachment--file {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 12px;\n}\n\n.omniscribe_insertion-preview__attachment__name {\n font-size: 13px;\n color: #333;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\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/DraggableCollapsed.css */\n/* Draggable Collapsed Container */\n.omniscribe_draggable-collapsed {\n position: fixed;\n bottom: 20px;\n right: 20px;\n cursor: grab;\n z-index: 9999;\n transition: transform 0.1s ease-out;\n user-select: none;\n touch-action: none;\n}\n\n.omniscribe_draggable-collapsed--dragging {\n cursor: grabbing;\n transition: none;\n}\n\n/* Horizontal mode - rotated 90 degrees */\n.omniscribe_draggable-collapsed--horizontal {\n bottom: 20px;\n}\n\n.omniscribe_draggable-collapsed--horizontal .omniscribe_transcribe-collapsed {\n flex-direction: row;\n transform: none;\n}\n\n/* RTL support */\n[dir='rtl'] .omniscribe_draggable-collapsed {\n right: auto;\n left: 20px;\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(--omniscribe-border, var(--light-border));\n box-shadow: 0px 4px 4px 0px #00000040;\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 border-radius: 12px;\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/settings/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 var(--omniscribe-border, #e5e7ec);\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n line-height: 1.5;\n color: var(--omniscribe-text, #374151);\n background-color: var(--omniscribe-surface, white);\n resize: none;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.omniscribe_chat-prompt-textarea::placeholder {\n color: var(--omniscribe-text-muted, #9ca3af);\n font-style: italic;\n}\n\n.omniscribe_chat-character-count {\n font-size: 12px;\n color: var(--omniscribe-text-muted, #6b7280);\n align-self: flex-start;\n}\n\n\n/* Source: modules/settings/components/chat/PromptCustomization.css */\n.omniscribe_chat-prompt-title {\n font-size: 14px;\n font-weight: 400;\n color: var(--omniscribe-text, #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(--omniscribe-primary, #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/settings/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 /* Let the label shrink inside the row so a long name can wrap instead of\n pushing the row wider. */\n flex: 1;\n min-width: 0;\n}\n\n.omniscribe_source-checkbox {\n width: 16px;\n height: 16px;\n accent-color: var(--primary, #105bdb);\n cursor: pointer;\n}\n\n.omniscribe_source-name {\n flex: 1;\n min-width: 0;\n /* A source name with no spaces (e.g. a bare domain) has no wrap points, so\n without this it overflows the row. `anywhere` breaks it only when needed. */\n overflow-wrap: anywhere;\n font-size: 12px;\n color: var(--omniscribe-text, #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: var(--primary, #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: var(--omniscribe-text, #1f2937);\n}\n\n\n/* Source: modules/settings/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: var(--omniscribe-text, #252a32);\n margin: 0;\n}\n\n.omniscribe_source-selector-description {\n font-size: 14px;\n color: var(--omniscribe-text-muted, #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: 105px;\n max-height: 285px;\n border-radius: 12px;\n border: 1px solid var(--omniscribe-border, #e5e7ec);\n background: var(--omniscribe-surface, #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: 105px;\n}\n\n\n/* Source: modules/settings/section/Configuration.css */\n.omniscribe_config-content {\n width: 650px;\n max-height: 590px;\n opacity: 1;\n background-color: var(--omniscribe-surface, #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: var(--omniscribe-surface-alt, #f9fafb);\n}\n\n.omniscribe_config-item:focus {\n outline: none;\n background-color: var(--omniscribe-surface-alt, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-text, #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: var(--omniscribe-text-muted, #4a5364);\n}\n\n.omniscribe_config-item-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--omniscribe-text-muted, #9ca3af);\n flex-shrink: 0;\n}\n\n/* Sub-screen styles */\n.omniscribe_config-subscreen-header {\n display: flex;\n align-items: center;\n padding: 16px 16px 8px 16px;\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: 18px;\n font-weight: 500;\n color: var(--omniscribe-text, #252a32);\n line-height: 21.6px;\n}\n\n.omniscribe_config-subscreen-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 16px;\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 /* no-border variant */\n}\n\n.omniscribe_config-subscreen-content-template {\n flex: 1;\n overflow-y: auto;\n padding-bottom: 50px;\n}\n\n.omniscribe_config-section-label {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--omniscribe-text, #374151);\n line-height: 1.4;\n}\n\n.omniscribe_config-language-section {\n display: flex;\n flex-direction: column;\n}\n\n/* Audio-environment (VAD) section: titled control with helper text below. */\n.omniscribe_config-audio-env {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 16px;\n}\n\n.omniscribe_config-language-section-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--omniscribe-text, #374151);\n margin-bottom: 8px;\n}\n\n.omniscribe_config-subscreen-description,\n.omniscribe_config-subscreen-subdescription {\n margin: 0 0 0 0;\n font-size: 14px;\n line-height: 18px;\n color: var(--omniscribe-text, #13161a);\n font-weight: 400;\n}\n\n.omniscribe_config-subscreen-subdescription {\n font-style: italic;\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 var(--omniscribe-border, #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: var(--omniscribe-surface, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-border, #e5e8eb);\n color: var(--omniscribe-text-muted, #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: var(--omniscribe-surface-alt, #f9fafb);\n border: 1px solid var(--omniscribe-border, #e5e8eb);\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.omniscribe_config-dictionary-row:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n border-color: var(--omniscribe-border, #d1d5db);\n}\n\n.omniscribe_config-dictionary-cell {\n flex: 1;\n font-size: 14px;\n line-height: 20px;\n color: var(--omniscribe-text, #374151);\n word-break: break-word;\n font-weight: 500;\n}\n\n.omniscribe_config-dictionary-arrow {\n color: var(--omniscribe-text-muted, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-text-muted, #6b7280);\n font-size: 14px;\n line-height: 20px;\n background-color: var(--omniscribe-surface-alt, #f9fafb);\n border: 2px dashed var(--omniscribe-border, #e5e8eb);\n border-radius: 12px;\n font-style: italic;\n}\n\n/* Template specific styles */\n\n/* General prompt section */\n.omniscribe_template-general-prompt-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-bottom: 8px;\n}\n\n.omniscribe_template-section-title {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--omniscribe-text, #374151);\n line-height: 1.4;\n}\n\n.omniscribe_template-section-subtitle {\n margin: 0;\n font-size: 13px;\n font-weight: 400;\n color: var(--omniscribe-text-muted, #6b7280);\n line-height: 1.4;\n}\n\n.omniscribe_template-general-prompt-textarea {\n width: 100%;\n min-height: 80px;\n max-height: 200px;\n padding: 12px;\n border: 1px solid var(--omniscribe-border, #e5e7ec);\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n line-height: 1.5;\n color: var(--omniscribe-text, #374151);\n background-color: var(--omniscribe-surface, white);\n resize: vertical;\n box-sizing: border-box;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.omniscribe_template-general-prompt-textarea::placeholder {\n color: var(--omniscribe-text-muted, #9ca3af);\n font-style: italic;\n}\n\n.omniscribe_template-general-prompt-textarea:focus {\n border-color: #3b5edb;\n box-shadow: 0 0 0 3px rgba(59, 94, 219, 0.1);\n}\n\n/* Fields section */\n.omniscribe_template-fields-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-top: 8px;\n}\n\n.omniscribe_template-field {\n background: var(--omniscribe-surface, white);\n border-bottom: 1px solid var(--omniscribe-border, #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 0;\n background: var(--omniscribe-surface, #ffffff);\n}\n\n.omniscribe_template-field-checkbox {\n background: none;\n border: none;\n padding: 0;\n margin-right: 12px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.omniscribe_template-field-label {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: var(--omniscribe-text, #2c3e50);\n}\n\n.omniscribe_template-field-prompt-btn {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n flex-shrink: 0;\n}\n\n.omniscribe_template-field-prompt-btn:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n}\n\n.omniscribe_template-field-content {\n padding: 0 0 12px 34px;\n background: var(--omniscribe-surface, white);\n}\n\n.omniscribe_template-textarea {\n width: 100%;\n min-height: 80px;\n max-height: 300px;\n padding: 12px;\n border: 1px solid var(--omniscribe-border, #e1e8ed);\n border-radius: 6px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n background: var(--omniscribe-surface, white);\n box-sizing: border-box;\n overflow-y: auto;\n}\n\n.omniscribe_template-textarea:focus {\n outline: none;\n border-color: #3b5edb;\n box-shadow: 0 0 0 3px rgba(59, 94, 219, 0.1);\n}\n\n.omniscribe_template-character-count {\n margin-top: 8px;\n font-size: 12px;\n color: var(--omniscribe-text-muted, #95a5a6);\n display: flex;\n}\n\n/* Template fields container */\n.omniscribe_template-fields {\n display: flex;\n flex-direction: column;\n background: var(--omniscribe-surface, 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: var(--omniscribe-surface-alt, #f6f7f9);\n color: var(--omniscribe-text-muted, #4a5364);\n padding: 8px 24px;\n font-weight: 700;\n line-height: 16.8px;\n font-size: 14px;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n border-bottom-left-radius: 12px;\n border-bottom-right-radius: 12px;\n}\n\n\n/* Source: modules/transcription/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/transcription/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: var(--omniscribe-surface, 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/* Processing skeleton indicator */\n.omniscribe_transcription-processing {\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_transcription-processing-lines {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_transcription-skeleton-line {\n height: 14px;\n width: 70%;\n}\n\n.omniscribe_transcription-skeleton-line--short {\n width: 40%;\n}\n\n.omniscribe_transcription-processing-text {\n font-size: var(--text-xs);\n color: var(--omni-secondary, #6b7280);\n}\n\n\n/* Source: modules/transcription/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/transcription/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/transcription/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: var(--omniscribe-surface-alt, #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 var(--omniscribe-border, #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 var(--omniscribe-border, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-text-muted, #a4adbc);\n}\n\n.omniscribe_audio-recorder-refresh-icon {\n color: var(--omniscribe-text, #252a32);\n}\n\n.omniscribe_audio-recorder-star-icon {\n cursor: pointer;\n display: inline-block;\n}\n\n\n/* Source: shared/components/ActivationGuardDialog.css */\n/* The shared Modal overlay is absolutely positioned against its nearest\n positioned ancestor, which for this dialog is wherever the provider happens\n to sit in the tree. Force fixed so it centers over the viewport. */\n.omniscribe_modal-overlay:has(.omniscribe_activation-guard-modal) {\n position: fixed;\n inset: 0;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n}\n\n.omniscribe_activation-guard-modal {\n width: 480px;\n max-width: 90vw;\n padding: 24px !important;\n}\n\n/* Override Modal's default h2 size for this dialog. */\n.omniscribe_activation-guard-modal .omniscribe_modal-title-container {\n margin-bottom: 16px;\n align-items: flex-start;\n}\n\n.omniscribe_activation-guard-modal .omniscribe_modal-title {\n font-size: 18px;\n line-height: 1.3;\n font-weight: 700;\n letter-spacing: -0.01em;\n color: var(--color-gray-900, #0f172a);\n}\n\n.omniscribe_activation-guard-body {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.omniscribe_activation-guard-summary {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.omniscribe_activation-guard-summary-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n background-color: #fef3c7;\n color: #b45309;\n}\n\n.omniscribe_activation-guard-summary-text {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n color: var(--color-gray-800, #1f2937);\n flex: 1;\n}\n\n.omniscribe_activation-guard-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 16px;\n margin-top: 4px;\n}\n\n.omniscribe_activation-guard-secondary {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px 12px;\n font-size: 14px;\n font-weight: 500;\n color: var(--omniscribe-text-muted, #374151);\n border-radius: 9999px;\n transition: background-color 0.15s ease;\n}\n\n.omniscribe_activation-guard-secondary:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--color-gray-900, #0f172a);\n}\n\n.omniscribe_activation-guard-primary {\n border-radius: 9999px !important;\n gap: 8px;\n padding-block: 10px !important;\n padding-inline: 18px !important;\n height: auto !important;\n font-weight: 600;\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/app-skeleton.css */\n.omniscribe_app-skeleton {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--white);\n border-radius: 12px;\n}\n\n/* Header */\n.omniscribe_app-skeleton-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 16px;\n border-bottom: 1px solid var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_app-skeleton-header-left,\n.omniscribe_app-skeleton-header-right {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.omniscribe_app-skeleton-icon {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n}\n\n.omniscribe_app-skeleton-title {\n width: 48px;\n height: 20px;\n border-radius: 4px;\n}\n\n.omniscribe_app-skeleton-badge {\n width: 150px;\n height: 32px;\n border-radius: 99999px;\n}\n\n/* Disclaimer banner */\n.omniscribe_app-skeleton-banner {\n padding: 6px 16px;\n border-bottom: 1px solid var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_app-skeleton-banner-text {\n width: 100%;\n height: 16px;\n border-radius: 4px;\n}\n\n/* Content */\n.omniscribe_app-skeleton-content {\n flex: 1;\n padding: 20px;\n}\n\n.omniscribe_app-skeleton-welcome {\n width: 240px;\n height: 28px;\n border-radius: 4px;\n margin-bottom: 10px;\n}\n\n.omniscribe_app-skeleton-suggestions {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.omniscribe_app-skeleton-suggestion {\n height: 25px;\n border-radius: 99999px;\n}\n\n.omniscribe_app-skeleton-suggestion--long {\n width: 320px;\n}\n\n.omniscribe_app-skeleton-suggestion--longer {\n width: 380px;\n}\n\n.omniscribe_app-skeleton-suggestion--medium {\n width: 280px;\n}\n\n/* Bottom bar */\n.omniscribe_app-skeleton-bottom {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n border-top: 1px solid var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_app-skeleton-transcribe-btn {\n width: 140px;\n height: 40px;\n border-radius: 99999px;\n flex-shrink: 0;\n}\n\n.omniscribe_app-skeleton-input {\n flex: 1;\n height: 40px;\n border-radius: 99999px;\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 /* Enabled buttons must show the pointer affordance; the base rule never set\n it, so variants without their own cursor (e.g. outline, used by the chat\n mic button) rendered the default arrow. `:disabled` below overrides it. */\n cursor: pointer;\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 pointer-events: cursor;\n cursor: pointer;\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: var(--secondary-hover) !important;\n }\n &:disabled {\n background-color: var(--omniscribe-surface-alt, #edeff2);\n cursor: not-allowed;\n color: var(--omniscribe-text-muted, #d5d9e0);\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: var(--primary-button);\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: var(--omniscribe-surface, white);\n border: 1px solid var(--omniscribe-border, #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 var(--omniscribe-border, #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: var(--omniscribe-text-muted, #6b7280);\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.omniscribe_feedback-close:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--omniscribe-text, #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: var(--omniscribe-surface, white);\n color: var(--omniscribe-text, black);\n border: 1px solid var(--omniscribe-border, #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 top: 7px;\n left: 17%;\n z-index: 10000;\n background: var(--omniscribe-surface, white);\n border: 1px solid var(--omniscribe-border, #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 top: 20px;\n left: 17%;\n}\n\n.omniscribe_feedback-sending {\n position: absolute;\n z-index: 10000;\n background: var(--omniscribe-surface, white);\n color: var(--omniscribe-text, black);\n border: 1px solid var(--omniscribe-border, #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 top: 20px;\n left: 17%;\n z-index: 10000;\n background: var(--omniscribe-surface, white);\n color: var(--omniscribe-text, black);\n border: 1px solid var(--omniscribe-border, #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/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.omniscribe_app-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n flex: 1;\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(--omniscribe-border, var(--light-border));\n cursor: pointer;\n}\n.omniscribe_select-button:disabled {\n cursor: not-allowed;\n opacity: 0.6;\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(--omniscribe-border, 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) * 44);\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(--omniscribe-surface-alt, 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(--omniscribe-border, #e5e7ec);\n flex-shrink: 0;\n}\n\n.omniscribe_separator--horizontal {\n height: 0;\n width: 100%;\n border-top: 1px solid var(--omniscribe-border, #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(--omniscribe-border, #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-stack {\n position: fixed;\n top: calc(var(--spacing) * 4);\n right: calc(var(--spacing) * 4);\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n z-index: 9999;\n pointer-events: none;\n}\n\n.omniscribe_toast-item {\n border-radius: var(--radius);\n padding: calc(var(--spacing) * 4);\n width: calc(var(--spacing) * 120);\n display: flex;\n align-items: flex-start;\n transition:\n transform 300ms cubic-bezier(0.4, 0, 0.2, 1),\n opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);\n pointer-events: auto;\n}\n\n.omniscribe_toast-item-danger {\n background-color: var(--color-red-500);\n}\n.omniscribe_toast-item-black {\n background-color: var(--black);\n}\n.omniscribe_toast-item-show {\n transform: translateX(0);\n opacity: 1;\n}\n.omniscribe_toast-item-hide {\n transform: translateX(120%);\n opacity: 0;\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 flex: 1;\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.omniscribe_toast-close {\n background: none;\n border: none;\n color: var(--white);\n font-size: 18px;\n cursor: pointer;\n padding: calc(var(--spacing) * 1) calc(var(--spacing) * 2);\n align-self: flex-start;\n opacity: 0.8;\n}\n.omniscribe_toast-close:hover {\n opacity: 1;\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: var(--omniscribe-text, #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 var(--secondary, #132caa);\n}\n\n.omniscribe_toggle-switch-checked {\n background-color: var(--secondary, #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 /* High-contrast fill that sits on top of the track — must contrast the */\n /* track color, not inherit the panel surface (which would vanish in a */\n /* dark theme). Hosts theming dark set --omniscribe-on-accent to a dark */\n /* ink; light hosts fall back to white (unchanged). */\n background-color: var(--omniscribe-on-accent, 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: var(--omniscribe-text-muted, #6b7280);\n min-width: 70px;\n}\n\n.omniscribe_toggle-switch-checked + .omniscribe_toggle-status {\n color: var(--omniscribe-text-muted, #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-flex;\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: var(--omniscribe-surface, #ffffff);\n color: var(--omniscribe-text, #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: var(--omniscribe-surface, #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\n\n/* Source: test/mocks/empty.css */\n/* Empty CSS file for mocking styles */\n";
169513
+ 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/* ------------------------------------------------------------------ */\n/* Theming hooks (host-overridable). */\n/* */\n/* CSS custom properties defined on the `<sofia-sdk>` element inherit */\n/* across the shadow DOM boundary. Hosts override any of these on the */\n/* element to retheme the SDK without touching internals: */\n/* */\n/* <sofia-sdk style=\"--omniscribe-primary: #1f6f5f\"></sofia-sdk> */\n/* */\n/* Internal tokens that map to a host override use */\n/* `var(--omniscribe-*, <default>)`. */\n/* */\n/* Available hooks: */\n/* --omniscribe-font-family */\n/* --omniscribe-primary main brand / primary action */\n/* --omniscribe-primary-soft light tint of primary */\n/* --omniscribe-secondary secondary action */\n/* --omniscribe-secondary-hover secondary hover state */\n/* --omniscribe-accent highlight / report color */\n/* --omniscribe-warning gap / warning chrome */\n/* --omniscribe-text primary text */\n/* --omniscribe-text-muted secondary text */\n/* --omniscribe-surface card / panel background */\n/* --omniscribe-surface-alt header / footer / hover bg */\n/* --omniscribe-border primary border */\n/* --omniscribe-border-soft in-card separators */\n/* */\n/* The insertion-preview modal has its own (more granular) variables */\n/* documented in InsertionPreviewModal.css. */\n/* ------------------------------------------------------------------ */\n\n/* Color scheme of the shadow subtree. Defaults to light so native */\n/* form controls (<select>, <input>) and assistant-ui surfaces don't */\n/* follow the host OS dark mode. A host that themes the SDK dark */\n/* (e.g. the radiology reading room) sets --omniscribe-color-scheme: */\n/* dark so native controls render light-on-dark and stay legible. */\n:host {\n color-scheme: var(--omniscribe-color-scheme, light);\n}\n\n#Omniscribe {\n font-family: var(--omniscribe-font-family, 'Lato', sans-serif);\n color-scheme: var(--omniscribe-color-scheme, light);\n /* define colors */\n --active: #0a3785;\n --background-primary: var(--omniscribe-primary-soft, #e7effd);\n --warning: var(--omniscribe-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: #252a32;\n --active-black: #252a32;\n --placeholder: #a4adbc;\n --line: var(--omniscribe-border, #e5e7ec);\n --custom-black: #13161a;\n --primary: var(--omniscribe-primary, #105bdb);\n --border: var(--omniscribe-border, #e5e7ec);\n --white: var(--omniscribe-surface, #fdfdfd);\n --omni: #daf2ff;\n --omni-secondary: rgba(219, 219, 219, 0.75);\n --primary-button: var(--omniscribe-primary, #105bdb);\n --primary-text: #36a3cf;\n --primary-900: var(--omniscribe-primary, #061044);\n --blue-100: var(--omniscribe-primary-soft, #dbeafe);\n --blue-200: var(--omniscribe-primary-soft, #bfdbfe);\n --blue-500: var(--omniscribe-primary, #105bdb);\n --blue-600: var(--omniscribe-primary, #2563eb);\n --blue-700: var(--omniscribe-primary, #1d4ed8);\n --report: var(--primary-button);\n --gray: #616161;\n --black: #1b2125;\n --sky-blue: var(--omniscribe-primary-soft, #dbecff);\n --blue: var(--omniscribe-primary, #5886ba);\n --blue-600: var(--omniscribe-primary, #0b1962);\n --background: var(--omniscribe-surface-alt, #f3f3f3bb);\n --foreground: var(--omniscribe-text, oklch(0.145 0 0));\n --primary: var(--omniscribe-primary, #061044);\n --primary-foreground: var(--omniscribe-on-accent, oklch(0.985 0 0));\n --secondary: var(--omniscribe-secondary, #132caa);\n --secondary-foreground: var(--omniscribe-on-accent, #fff);\n --secondary-hover: var(--omniscribe-secondary-hover, #2847e7);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: var(--omniscribe-surface-alt, oklch(0.97 0 0));\n --accent-foreground: var(--omniscribe-text, 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: var(--omniscribe-border, 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: 14.4px;\n --text-xs--letter-spacing: 0.05px;\n --text-sm: 14px;\n --text-sm--line-height: 16.8px;\n --text-xs--letter-spacing: 0.05px;\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: 12px;\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-xs {\n font-size: var(--text-xs) !important;\n font-weight: var(--font-weight-normal);\n line-height: var(--text-xs--line-height);\n letter-spacing: var(--text-xs--letter-spacing);\n }\n .text-p {\n font-size: var(--text-sm);\n font-weight: var(--font-weight-normal);\n letter-spacing: var(--text-sm--letter-spacing);\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/chat/components/AudioCutsWarningDialog.css */\n/* The shared Modal overlay uses position: absolute anchored to its\n nearest positioned ancestor — which in our case is the chat footer,\n not the widget root. That puts the modal at the bottom of the widget.\n Override to position: fixed so the overlay covers the full viewport\n and the modal truly centers regardless of where in the React tree it\n was rendered. */\n.omniscribe_modal-overlay:has(.omniscribe_audio-cuts-modal) {\n position: fixed;\n inset: 0;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n}\n\n.omniscribe_audio-cuts-modal {\n width: 480px;\n max-width: 90vw;\n padding: 24px !important;\n}\n\n/* Override Modal's giant default h2 size for this dialog. */\n.omniscribe_audio-cuts-modal .omniscribe_modal-title-container {\n margin-bottom: 16px;\n align-items: flex-start;\n}\n\n.omniscribe_audio-cuts-modal .omniscribe_modal-title {\n font-size: 18px;\n line-height: 1.3;\n font-weight: 700;\n letter-spacing: -0.01em;\n color: var(--color-gray-900, #0f172a);\n}\n\n.omniscribe_audio-cuts-body {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Summary card: warning icon + paragraph in a soft container. */\n.omniscribe_audio-cuts-summary {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.omniscribe_audio-cuts-summary-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n background-color: #fef3c7;\n color: #b45309;\n}\n\n.omniscribe_audio-cuts-summary-text {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n color: var(--color-gray-800, #1f2937);\n flex: 1;\n}\n\n/* Cut list: rounded gray container, clock icon per row, no bullets. */\n.omniscribe_audio-cuts-list {\n margin: 0;\n padding: 12px 14px;\n border-radius: 12px;\n background-color: var(--omniscribe-surface-alt, #f9fafb);\n border: 1px solid var(--color-gray-200, #e5e7eb);\n list-style: none;\n max-height: 240px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_audio-cuts-item {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--omniscribe-text-muted, #374151);\n font-variant-numeric: tabular-nums;\n font-size: 13px;\n line-height: 1.4;\n}\n\n.omniscribe_audio-cuts-item-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--omniscribe-text-muted, #6b7280);\n}\n\n/* Action row: right-aligned, secondary as text-link, primary as blue pill. */\n.omniscribe_audio-cuts-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 16px;\n margin-top: 4px;\n}\n\n.omniscribe_audio-cuts-secondary {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px 12px;\n font-size: 14px;\n font-weight: 500;\n color: var(--omniscribe-text-muted, #374151);\n border-radius: 9999px;\n transition: background-color 0.15s ease;\n}\n\n.omniscribe_audio-cuts-secondary:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--color-gray-900, #0f172a);\n}\n\n.omniscribe_audio-cuts-primary {\n border-radius: 9999px !important;\n gap: 8px;\n padding-block: 10px !important;\n padding-inline: 18px !important;\n height: auto !important;\n font-weight: 600;\n}\n\n\n/* Source: modules/chat/components/ChatView.css */\n.omniscribe_chat-view-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_chat-view-container-history-cont {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 0;\n z-index: 30;\n height: 100%;\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n display: block;\n border-top-left-radius: 12px;\n border-bottom-left-radius: 12px;\n overflow: hidden;\n background-color: var(--omniscribe-surface, white);\n transition:\n width 300ms cubic-bezier(0.4, 0, 0.2, 1),\n min-width 300ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.omniscribe_chat-view-container-history-cont-open {\n width: 33%;\n}\n\n/* Overlay that covers the chat when history is open */\n.omniscribe_chat-view-overlay {\n position: absolute;\n inset: 0;\n background-color: rgba(0, 0, 0, 0.4);\n z-index: 25;\n opacity: 0;\n pointer-events: none;\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 300ms;\n border-radius: 12px;\n}\n\n.omniscribe_chat-view-overlay-visible {\n opacity: 1;\n pointer-events: auto;\n}\n\n.omniscribe_chat-view-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 border-bottom-right-radius: 12px;\n}\n\n.omniscribe_chat-view-stick-to-bottom {\n font-size: 14px;\n}\n.omniscribe_chat-view-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/* Disable scroll when SummaryLoading is shown */\n.omniscribe_chat-view-stick-to-bottom-content--no-scroll {\n overflow-y: hidden;\n}\n\n.omniscribe_chat-view-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}\n\n.omniscribe_chat-view-footer-container {\n position: sticky;\n display: flex;\n background-color: var(--omniscribe-surface, white);\n flex-direction: column;\n align-items: center;\n bottom: 0;\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n border-bottom-left-radius: 12px;\n border-bottom-right-radius: 12px;\n}\n\n/*\n * The footer is sticky inside the scroll container, so mid-scroll the\n * conversation passes behind it and was cut off mid-line — text simply ended\n * where the buttons began. This is not a spacing problem: at rest the content\n * clears the footer. What was missing is a boundary, so the last visible line\n * dissolves into the footer's surface instead of being guillotined by it.\n */\n.omniscribe_chat-view-footer-container::before {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: 100%;\n /*\n * Tall enough to dissolve two or three lines. A short band is worse than no\n * band at all: at one line-height it ghosts a single row of text and reads as\n * a rendering fault rather than a transition.\n */\n height: 64px;\n pointer-events: none;\n /* Fallback first: browsers without color-mix keep this. */\n background: linear-gradient(\n to bottom,\n transparent,\n var(--omniscribe-surface, #fff)\n );\n /*\n * Fading to `transparent` interpolates through transparent BLACK, which\n * greys the middle of the band. Fading from the surface colour at zero alpha\n * keeps it clean and still themable.\n */\n background: linear-gradient(\n to bottom,\n color-mix(in srgb, var(--omniscribe-surface, #fff) 0%, transparent) 0%,\n var(--omniscribe-surface, #fff) 100%\n );\n}\n\n/*\n * Floats over the conversation, so it needs to be opaque. It inherited the\n * outline button's translucent fill, which let the text underneath read\n * straight through it — the label and the message competing in the same\n * pixels. A solid fill plus a shadow is what makes it read as a control\n * sitting above the content rather than printed onto it.\n */\n/*\n * Pinned to the footer's top edge, not to the viewport.\n *\n * It used to be `position: fixed; bottom: 17%`, i.e. anchored to the browser\n * window: its distance from the composer depended on the window height, and at\n * common sizes it landed ON the action buttons — measured 3px below the\n * footer's top edge. Anchoring to the footer instead means it tracks whatever\n * the footer currently is: with or without the action row, with the\n * transcription panel expanded, with files attached.\n */\n.omniscribe_chat-view-footer-scroll-to-bottom {\n position: absolute;\n bottom: calc(100% + 12px);\n left: 50%;\n transform: translateX(-50%);\n z-index: 2;\n}\n\n/*\n * Qualified with `.omniscribe_button` on purpose. The outline variant sets the\n * same properties at equal specificity and `button.css` is concatenated after\n * this file, so a single-class selector here loses on source order alone.\n */\n.omniscribe_button.omniscribe_chat-view-footer-scroll-to-bottom {\n background-color: var(--omniscribe-surface, #fff);\n border: 1px solid var(--omniscribe-border, #e5e7ec);\n box-shadow: 0 2px 10px rgba(16, 23, 37, 0.16);\n}\n\n.omniscribe_button.omniscribe_chat-view-footer-scroll-to-bottom:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n}\n\n.omniscribe_chat-view-down-btn {\n width: calc(0.25rem /* 4px */ * 4);\n height: calc(0.25rem /* 4px */ * 4);\n}\n\n/* Combined Footer - Frame 532 Design */\n.omniscribe_chat-view-combined-footer {\n width: 100%;\n padding-bottom: 12px;\n background-color: var(--omniscribe-surface, white);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n position: relative;\n}\n\n/* Action row — no background of its own; only the pills carry a border */\n.omniscribe_chat-footer-actions-row {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n padding-inline: calc(var(--spacing) * 4);\n padding-bottom: 8px;\n flex-shrink: 0;\n min-width: 0;\n width: 100%;\n box-sizing: border-box;\n transition: padding-top 0.5s ease;\n}\n\n/* With the transcription expanded, keeps the buttons off the panel's bottom\n line (the expanded wrapper's border-bottom). */\n.omniscribe_transcription-panel-wrapper--expanded\n + .omniscribe_chat-footer-actions-row {\n padding-top: 10px;\n}\n\n.omniscribe_chat-view-combined-footer-row {\n display: flex;\n flex-direction: row;\n align-items: end;\n box-sizing: border-box;\n width: 100%;\n gap: 8px;\n flex-shrink: 0;\n background-color: var(--omniscribe-surface, white);\n overflow: hidden;\n padding-inline: calc(var(--spacing) * 4);\n padding-top: 7px;\n}\n\n/* Frame 34 - Input container */\n.omniscribe_chat-view-combined-input-container {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n padding: 8px;\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 20px;\n background-color: var(--omniscribe-surface, white);\n gap: 0;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease;\n box-sizing: border-box;\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);\n margin-bottom: 7px;\n margin-right: 1px;\n}\n\n/* When files are attached, change border-radius to rounded rectangle */\n/*\n * Attaching a file must not resize the composer. There is deliberately no\n * max-width here: the base rule is `flex: 1`, and capping it made the composer\n * jump from the full footer width down to a fixed size the moment a file was\n * added — a leftover from a narrower Figma frame, and the only place that\n * number appeared. Several files scroll horizontally inside\n * `.omniscribe_chat-view-combined-files-row`, which owns `overflow-x: auto`.\n */\n.omniscribe_chat-view-combined-input-container--with-files {\n gap: 12px;\n align-items: flex-start;\n min-width: 0;\n overflow: hidden;\n}\n\n/* Files row inside input container - horizontal scroll, no wrapping */\n.omniscribe_chat-view-combined-files-row {\n display: flex;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n gap: 8px;\n width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n padding-bottom: 4px;\n scrollbar-width: thin;\n min-width: 0;\n}\n\n.omniscribe_chat-view-combined-files-row::-webkit-scrollbar {\n height: 4px;\n}\n\n.omniscribe_chat-view-combined-files-row::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.omniscribe_chat-view-combined-files-row::-webkit-scrollbar-thumb {\n background-color: var(--color-gray-300, #d1d5db);\n border-radius: 4px;\n}\n\n/* Input row with clip icon, textarea, and action button */\n.omniscribe_chat-view-combined-input-row {\n display: flex;\n align-items: center;\n width: 100%;\n gap: 4px;\n}\n\n/* Clip icon */\n.omniscribe_chat-view-combined-clip-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n height: 24px;\n border-radius: 9999px;\n background-color: var(--omniscribe-surface, white);\n cursor: pointer;\n transition: background-color 0.2s ease;\n border: solid 1px var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_chat-view-combined-clip-icon:hover {\n background-color: var(--omniscribe-surface-alt, #e5e7eb);\n color: var(--color-gray-600);\n}\n\n/* Action button inside input */\n.omniscribe_chat-view-combined-action-btn {\n flex-shrink: 0;\n}\n\n.omniscribe_chat-view-combined-textarea {\n flex: 1;\n resize: none;\n border: none !important;\n outline: none !important;\n box-shadow: none !important;\n min-height: 20px;\n max-height: 56px;\n font-weight: 500 !important;\n padding: 0 !important;\n background: transparent;\n color: var(--omniscribe-text-muted, #4a5364);\n height: 20px;\n}\n\n.omniscribe_chat-view-combined-textarea::placeholder {\n color: var(--omniscribe-text-muted, #9ca3af);\n}\n\n.omniscribe_chat-view-combined-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.omniscribe_chat-view-combined-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n border-radius: 9999px;\n background-color: var(--secondary, #132caa);\n color: white;\n cursor: pointer;\n transition: background-color 0.2s ease;\n flex-shrink: 0;\n}\n\n.omniscribe_chat-view-combined-send-btn:hover:not(:disabled) {\n background-color: var(--secondary-hover, #2847e7);\n}\n\n.omniscribe_chat-view-combined-send-btn:disabled {\n background-color: var(--omniscribe-surface-alt, #dfe2e7);\n cursor: not-allowed;\n}\n\n/* Stop button - red variant of send button */\n.omniscribe_chat-view-combined-stop-btn {\n background-color: var(--secondary, #132caa);\n}\n\n.omniscribe_chat-view-combined-stop-btn:hover {\n background-color: var(--secondary, #132caa);\n}\n\n/* Drag-and-drop overlay */\n.omniscribe_chat-view-drag-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(37, 99, 235, 0.05);\n border: 2px dashed var(--blue-600, #2563eb);\n border-radius: var(--radius);\n z-index: 10;\n pointer-events: none;\n}\n\n.omniscribe_chat-view-drag-overlay-text {\n color: var(--blue-600, #2563eb);\n font-size: var(--text-sm);\n font-weight: var(--font-weight-medium);\n}\n\n\n/* Source: modules/chat/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/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(--omniscribe-text, #13161a);\n line-height: 21.6px;\n font-size: 18px !important;\n font-weight: 500 !important;\n}\n\n.omniscribe_predefined-title {\n margin-bottom: 8px;\n word-break: break-word;\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 word-break: break-word;\n}\n\n.omniscribe_predefined-questions-content {\n background-color: var(--background-primary, #e7effd) !important;\n color: var(--primary, #105bdb) !important;\n border-radius: 999px !important;\n text-align: left;\n padding-top: 4px;\n padding-right: 16px;\n padding-bottom: 4px;\n padding-left: 16px;\n width: fit-content;\n height: fit-content;\n}\n\n\n/* Source: modules/chat/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 flex-direction: column;\n padding-top: calc(var(--spacing) * 13);\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: var(--omniscribe-text, #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/history/ChatHistory.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 margin: 8px;\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) * 4);\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(--omniscribe-text, #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 var(--omniscribe-border, #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-header {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 16px;\n background: var(--omniscribe-surface, white);\n border-bottom: 1px solid var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_thread-history-header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n border: none;\n background: none;\n cursor: pointer;\n padding: 0;\n}\n\n.omniscribe_thread-history-header-title {\n margin: 0;\n color: var(--omniscribe-text, #252a32);\n font-size: 14px;\n font-weight: 500;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_thread-history-new-chat-btn {\n margin: 12px 0 0 12px;\n border-radius: 8px;\n gap: 4px;\n padding-block: 4px;\n}\n\n.omniscribe_thread-history-new-chat-btn:hover:not(:disabled) {\n background-color: #0f2080;\n}\n\n.omniscribe_thread-history-new-chat-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\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-tooltip {\n padding: calc(0.25rem /* 4px */ * 4);\n}\n\n/* Processing thread indicator */\n.omniscribe_thread-list-btn.omniscribe_thread-processing {\n position: relative;\n}\n\n.omniscribe_thread-list-btn.omniscribe_thread-processing::before {\n content: '';\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n width: 6px;\n height: 6px;\n background: var(--secondary, #132caa);\n border-radius: 50%;\n animation: omniscribe_pulse 1.5s infinite;\n}\n\n.omniscribe_thread-list-btn.omniscribe_thread-processing\n .omniscribe_thread-list-text {\n padding-left: 12px;\n}\n\n@keyframes omniscribe_pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.4;\n }\n}\n\n\n/* Source: modules/chat/components/input/AudioBars.css */\n/* Granola-style animated audio bars: 3 rounded bars (short / tall / medium).\n Accent-colored and \"dancing\" while recording, muted and static otherwise. */\n.omniscribe_audio-bars {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n}\n\n.omniscribe_audio-bar {\n width: 3.5px;\n background-color: var(--omniscribe-primary, #1a73e8);\n border-radius: 9999px;\n transition:\n height 0.15s ease,\n background-color 0.2s ease;\n}\n\n/* Muted gray when not recording */\n.omniscribe_audio-bar--inactive {\n background-color: var(--grey-700, #9ca3af);\n}\n\n/* Live mode — heights are driven per-frame from the mic level, so use a\n short linear transition that dampens the movement without lagging it */\n.omniscribe_audio-bar--live {\n transition:\n height 0.08s linear,\n background-color 0.2s ease;\n}\n\n/* Static heights: short / tall / medium (Granola pattern) */\n.omniscribe_audio-bar--1 {\n height: 50%;\n}\n\n.omniscribe_audio-bar--2 {\n height: 100%;\n}\n\n.omniscribe_audio-bar--3 {\n height: 65%;\n}\n\n/* Dancing equalizer animation while recording */\n.omniscribe_audio-bar--animating.omniscribe_audio-bar--1 {\n animation: omniscribe-audio-dance-1 0.9s ease-in-out infinite;\n}\n\n.omniscribe_audio-bar--animating.omniscribe_audio-bar--2 {\n animation: omniscribe-audio-dance-2 1.1s ease-in-out infinite;\n}\n\n.omniscribe_audio-bar--animating.omniscribe_audio-bar--3 {\n animation: omniscribe-audio-dance-3 1s ease-in-out infinite;\n}\n\n/* The dance is decorative — it runs while connecting, when there is no stream\n to visualise yet. The --live bars are deliberately left out: those track\n real microphone input, so they are information, not decoration. */\n@media (prefers-reduced-motion: reduce) {\n .omniscribe_audio-bar--animating.omniscribe_audio-bar--1,\n .omniscribe_audio-bar--animating.omniscribe_audio-bar--2,\n .omniscribe_audio-bar--animating.omniscribe_audio-bar--3 {\n animation: none;\n }\n}\n\n@keyframes omniscribe-audio-dance-1 {\n 0%,\n 100% {\n height: 50%;\n }\n 25% {\n height: 85%;\n }\n 50% {\n height: 35%;\n }\n 75% {\n height: 70%;\n }\n}\n\n@keyframes omniscribe-audio-dance-2 {\n 0%,\n 100% {\n height: 100%;\n }\n 30% {\n height: 55%;\n }\n 60% {\n height: 90%;\n }\n 80% {\n height: 65%;\n }\n}\n\n@keyframes omniscribe-audio-dance-3 {\n 0%,\n 100% {\n height: 65%;\n }\n 20% {\n height: 95%;\n }\n 55% {\n height: 45%;\n }\n 85% {\n height: 80%;\n }\n}\n\n\n/* Source: modules/chat/components/input/ExtrasButtons.css */\n/*\n * Category names come from the host's templateExtras schema, so their length is\n * not ours to control. Left unbounded, one long name grew its pill until it\n * pushed the overflow trigger — and with it every remaining category — off the\n * right edge of the widget, with no way to reach them.\n *\n * The row cannot simply clip: the overflow menu is absolutely positioned and\n * opens upwards, so `overflow: hidden` on the row would cut the menu instead.\n * The pills give up the space themselves: they are the only shrinkable items in\n * the row, capped, and their label truncates.\n */\n/* Qualified: `.omniscribe_action-btn` is shared with the generate button and\n lives in another file, so an unqualified rule here would depend on which\n stylesheet the bundler concatenates last. */\n.omniscribe_action-btn.omniscribe_extras-btn {\n min-width: 0;\n max-width: 180px;\n flex-shrink: 1;\n}\n\n.omniscribe_extras-btn-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Overflow container for extras categories beyond the first two. */\n.omniscribe_extras-overflow {\n position: relative;\n display: inline-flex;\n /* Never squeezed out: it is the only route to the remaining categories. */\n flex-shrink: 0;\n}\n\n/* Three-dots trigger — mirrors the neutral pill styling of the action row. */\n.omniscribe_extras-overflow-trigger {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n padding: 0;\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 9999px;\n background-color: var(--omniscribe-surface, #ffffff);\n color: var(--grey-700, #6f7d95);\n cursor: pointer;\n transition:\n background-color 0.2s ease,\n color 0.2s ease,\n border-color 0.2s ease;\n}\n\n.omniscribe_extras-overflow-trigger:hover,\n.omniscribe_extras-overflow-trigger--open {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--omniscribe-text, #13161a);\n}\n\n/* Dropdown floats UP above the trigger (footer sits at the bottom), with a\n gap so it doesn't sit flush against the action buttons row. */\n.omniscribe_extras-overflow-menu {\n position: absolute;\n bottom: calc(100% + 12px);\n right: 0;\n z-index: 20;\n min-width: 160px;\n padding: 4px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n background-color: var(--omniscribe-surface, #ffffff);\n border: 1px solid var(--border, #e5e7eb);\n border-radius: var(--radius-lg, 12px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);\n}\n\n.omniscribe_extras-overflow-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 10px;\n border: none;\n border-radius: 8px;\n background-color: transparent;\n color: var(--omniscribe-text, #13161a);\n text-align: left;\n white-space: nowrap;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.omniscribe_extras-overflow-item:hover:not(:disabled) {\n background-color: var(--omniscribe-primary-soft, #e8f0fe);\n color: var(--omniscribe-primary, #1a73e8);\n}\n\n.omniscribe_extras-overflow-item:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n\n/* Source: modules/chat/components/input/FilePreview.css */\n/* File Preview Container - Figma Frame 532 */\n.omniscribe_file-preview-container {\n display: contents;\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: var(--omniscribe-surface-alt, #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: var(--omniscribe-surface-alt, #e8edf5);\n border-radius: 12px;\n}\n\n/* Document card */\n/* Document card - matches Figma design */\n.omniscribe_file-preview-document {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background-color: var(--omniscribe-surface, white);\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 16px;\n position: relative;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n flex-shrink: 0;\n max-height: 38px;\n}\n\n.omniscribe_file-preview-document-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 46px;\n height: 46px;\n background-color: #dc3545;\n border-radius: var(--radius-lg, 12px);\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: 16px;\n}\n\n.omniscribe_file-preview-document-title {\n font-size: 14px;\n font-weight: 500;\n color: var(--grey-900);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 180px;\n}\n\n.omniscribe_file-preview-document-type {\n font-size: 12px;\n color: var(--grey-700);\n font-weight: 500;\n}\n\n/* Individual image thumbnail - larger size matching Figma */\n.omniscribe_file-preview-image {\n position: relative;\n width: 64px;\n height: 64px;\n border-radius: 16px;\n background-color: #1a1a2e;\n flex-shrink: 0;\n /* overflow: visible to allow X button to show outside bounds */\n}\n\n.omniscribe_file-preview-image-img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 16px;\n /* Apply overflow hidden to the image itself */\n overflow: hidden;\n}\n\n.omniscribe_file-preview-image-placeholder {\n width: 100%;\n height: 100%;\n background-color: var(--omniscribe-surface-alt, #e8edf5);\n border-radius: 16px;\n}\n\n/* Remove button - blue circle with X - positioned inside bounds */\n.omniscribe_file-preview-remove-btn {\n position: absolute;\n top: 4px;\n right: 4px;\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: var(--blue-600, #2563eb);\n color: white;\n cursor: pointer;\n padding: 0;\n transition: background-color 0.2s ease;\n z-index: 2;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.omniscribe_file-preview-remove-btn:hover {\n background-color: var(--blue-700, #1d4ed8);\n}\n\n.omniscribe_file-preview-remove-btn--image {\n top: 4px;\n right: 4px;\n width: 20px;\n height: 20px;\n}\n\n\n/* Source: modules/chat/components/input/MicrophoneButton.css */\n/* Microphone Button Styles */\n.microphone-button {\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: 24px !important;\n height: 24px !important;\n min-width: 24px !important;\n min-height: 24px !important;\n padding: 0 !important;\n border-radius: 9999px !important;\n border: none !important;\n background-color: var(--omniscribe-surface-alt, #f3f4f6) !important;\n box-shadow: none !important;\n transition: background-color 0.2s ease !important;\n flex-shrink: 0;\n}\n\n.microphone-button:hover:not(:disabled) {\n background-color: var(--omniscribe-surface-alt, #e5e7eb) !important;\n}\n\n.microphone-button--recording {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n background-color: #fee2e2 !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/input/TranscribeDropdown.css */\n/* Ensure tooltip trigger properly wraps the button in flex context */\n.omniscribe_thread-combined-footer-row > .tooltip-trigger {\n display: flex;\n flex-shrink: 0;\n}\n\n/* Granola-style transcribe pill: [bars chevron] ··· [stop square | text]\n A single flat capsule — no nested containers, no shadow, and its chrome\n stays constant across idle/recording/paused (only the bars change). */\n.omniscribe_transcribe-dropdown {\n display: flex;\n align-items: center;\n gap: 18px;\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 9999px;\n background-color: var(--omniscribe-surface, white);\n transition:\n background-color 0.15s ease,\n border-color 0.15s ease;\n font-size: var(--font-size-100, 13px);\n font-weight: 500;\n color: var(--omniscribe-text, #1f2937);\n white-space: nowrap;\n overflow: hidden;\n flex-shrink: 0;\n padding: 10px 18px;\n}\n\n.omniscribe_transcribe-dropdown:hover:not(\n .omniscribe_transcribe-dropdown--disabled\n ) {\n background-color: var(--omniscribe-surface-alt, #fafafa);\n border-color: var(--color-gray-300, #d1d5db);\n}\n\n/* Left group: bars + chevron sit flat inside the capsule (no inner pill) */\n.omniscribe_transcribe-controls-group {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n/* Bars & chevron buttons — chromeless icon buttons */\n.omniscribe_transcribe-bars-button,\n.omniscribe_transcribe-chevron-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n.omniscribe_transcribe-bars-button:disabled,\n.omniscribe_transcribe-chevron-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Right: plain accent text control (Granola's \"Resume\") — no chrome */\n.omniscribe_transcribe-text-button {\n display: flex;\n align-items: center;\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n font-size: inherit;\n font-weight: 500;\n color: var(--omniscribe-primary, #1a73e8);\n}\n\n.omniscribe_transcribe-text-button:hover:not(:disabled) {\n color: var(--blue-700, #1558d6);\n}\n\n.omniscribe_transcribe-text-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Right: play triangle shown when idle/paused — no chrome, accent color */\n.omniscribe_transcribe-play-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--omniscribe-primary, #1a73e8);\n transition: color 0.15s ease;\n}\n\n.omniscribe_transcribe-play-button:hover:not(:disabled) {\n color: var(--blue-700, #1558d6);\n}\n\n.omniscribe_transcribe-play-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Right: filled rounded stop square shown while recording — no chrome */\n.omniscribe_transcribe-stop-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--omniscribe-text-muted, #5f6368);\n transition: color 0.15s ease;\n}\n\n.omniscribe_transcribe-stop-button:hover:not(:disabled) {\n color: var(--omniscribe-text, #1f2937);\n}\n\n.omniscribe_transcribe-stop-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.omniscribe_transcribe-dropdown--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.omniscribe_transcribe-dropdown-label {\n text-align: left;\n white-space: nowrap;\n}\n\n/* Chevron points up (panel closed) and rotates to down when expanded */\n.omniscribe_transcribe-dropdown-chevron {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--omniscribe-text-muted, #6b7280);\n transition:\n transform 0.2s ease,\n color 0.2s ease;\n}\n\n.omniscribe_transcribe-dropdown-chevron--expanded {\n transform: rotate(180deg);\n}\n\n.omniscribe_transcribe-dropdown:hover .omniscribe_transcribe-dropdown-chevron {\n color: var(--omniscribe-text, #374151);\n}\n\n/* Connection status pill - inline banner replacing toasts.\n Three states: reconnecting (neutral), disconnected (red), restored (dark). */\n.omniscribe_connection-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 9999px;\n white-space: nowrap;\n flex-shrink: 0;\n font-weight: 500;\n margin-inline: 8px;\n}\n\n.omniscribe_connection-pill-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.omniscribe_connection-pill-icon--spin {\n animation: omniscribe-connection-spin 1s linear infinite;\n}\n\n@keyframes omniscribe-connection-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.omniscribe_connection-pill--reconnecting {\n background-color: var(--omniscribe-surface-alt, #f9fafb);\n border: 1px solid var(--color-gray-200, #e5e7eb);\n color: var(--omniscribe-text-muted, #374151);\n}\n\n.omniscribe_connection-pill--disconnected {\n background-color: #fdecec;\n border: 1px solid #f8c7c7;\n color: #b42318;\n padding-right: 4px;\n}\n\n.omniscribe_connection-pill--restored {\n background-color: #1f2937;\n border: 1px solid #1f2937;\n color: #ffffff;\n}\n\n.omniscribe_connection-pill-retry {\n border-radius: 9999px !important;\n gap: 4px;\n padding-block: 3px !important;\n padding-inline: 8px !important;\n height: auto !important;\n background-color: #d92d20 !important;\n color: #ffffff !important;\n border: none !important;\n margin-left: 2px;\n}\n\n.omniscribe_connection-pill-retry:hover:not(:disabled) {\n background-color: #b42318 !important;\n}\n\n/* Action buttons - unified style for Generate, Petitions, Extras */\n.omniscribe_action-btn {\n /* Fixed-label actions keep their size; only the extras pills, whose labels\n are host-defined and can be arbitrarily long, give up space. */\n flex-shrink: 0;\n border-radius: 9999px !important;\n gap: 6px;\n padding-block: 6px !important;\n padding-inline: 12px !important;\n /* Match height of controls-group (border + padding + content) */\n min-height: 32px !important;\n font-size: var(--font-size-100, 13px) !important;\n font-weight: 500 !important;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08) !important;\n transition: all 0.15s ease !important;\n display: inline-flex !important;\n align-items: center !important;\n}\n\n.omniscribe_action-btn:hover:not(:disabled) {\n background-color: var(--blue-700, #1558d6) !important;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12) !important;\n}\n\n.omniscribe_action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Collapsed state - vertical pill with light theme */\n.omniscribe_transcribe-collapsed {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 8px;\n background-color: var(--omniscribe-surface, white);\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 9999px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n/* Passive activity indicator — live bars while recording */\n.omniscribe_transcribe-collapsed-bars {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n}\n\n.omniscribe_transcribe-collapsed-play {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n border-radius: 50%;\n background-color: transparent;\n color: var(--omniscribe-primary, #1a73e8);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.omniscribe_transcribe-collapsed-play:hover:not(:disabled) {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n transform: scale(1.05);\n}\n\n.omniscribe_transcribe-collapsed-play:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.omniscribe_transcribe-collapsed-play--recording {\n box-shadow: 0 0 8px rgba(26, 115, 232, 0.2);\n}\n\n.omniscribe_transcribe-collapsed-expand {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 50%;\n background-color: transparent;\n color: var(--omniscribe-text-muted, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.omniscribe_transcribe-collapsed-expand:hover:not(:disabled) {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--omniscribe-text, #374151);\n}\n\n\n/* Source: modules/chat/components/input/TranscriptionPanel.css */\n/* Expand/collapse wrapper — absolutely positioned upwards so it does NOT\n push the actions row or the form. Being out of the flow, animating the\n height causes no footer reflow: the panel unfolds upwards (same\n animation as the previous version). */\n.omniscribe_transcription-panel-wrapper {\n position: absolute;\n bottom: 100%;\n left: 0;\n right: 0;\n height: 0;\n overflow: hidden;\n opacity: 0;\n pointer-events: none;\n transition:\n height 0.5s ease,\n opacity 0.5s ease;\n}\n\n.omniscribe_transcription-panel-wrapper--expanded {\n height: calc(var(--content-height) * 0.55);\n opacity: 1;\n pointer-events: auto;\n border-bottom: 1px solid var(--border, #e5e7eb);\n}\n\n/* TranscriptionPanel - Frame 655 from Figma */\n.omniscribe_transcription-panel {\n width: 100%;\n height: 100%;\n background-color: var(--omniscribe-surface, #ffffff);\n border: 1px solid var(--border, #e5e7eb);\n border-top-left-radius: var(--radius-lg, 12px);\n border-top-right-radius: var(--radius-lg, 12px);\n overflow: hidden;\n margin-bottom: 8px;\n display: flex;\n flex-direction: column;\n}\n\n/* Header with action buttons */\n.omniscribe_transcription-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--border);\n}\n\n.omniscribe_transcription-panel-header-section {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 4px;\n}\n\n.omniscribe_transcription-panel-actions {\n display: flex;\n align-items: center;\n gap: 1px;\n margin-right: 2px;\n}\n\n.omniscribe_transcription-panel-action-btn {\n width: 100%;\n height: auto;\n transition:\n background-color 0.2s ease,\n color 0.2s ease;\n}\n\n.omniscribe_transcription-panel-close {\n border-radius: 9999px;\n border: none;\n padding-inline: 5px !important;\n padding-block: 2.5px !important;\n margin-block: 5.5px;\n transition:\n background-color 0.2s ease,\n color 0.2s ease;\n}\n\n.omniscribe_transcription-panel-close:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--color-gray-600, #4b5563);\n}\n\n/* Body container */\n.omniscribe_transcription-panel-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 150px;\n overflow: hidden;\n}\n\n/* Idle state - white background with blue text */\n.omniscribe_transcription-panel-idle {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n gap: 16px;\n padding: 24px;\n}\n\n.omniscribe_transcription-panel-idle-text {\n font-size: 16px;\n font-weight: 500;\n color: var(--color-primary, #2563eb);\n text-align: center;\n margin: 0;\n}\n\n.omniscribe_transcription-panel-play-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border: none;\n border-radius: 9999px;\n background-color: var(--omniscribe-primary-soft, #e7effd);\n cursor: pointer;\n transition:\n transform 0.2s ease,\n box-shadow 0.2s ease;\n}\n\n.omniscribe_transcription-panel-play-btn:hover {\n transform: scale(1.05);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n}\n\n.omniscribe_transcription-panel-play-btn svg {\n color: var(--omniscribe-primary, #2563eb);\n}\n\n/* Content state - transcription display */\n.omniscribe_transcription-panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n max-height: 220px;\n}\n\n.omniscribe_transcription-panel-message {\n margin-bottom: 8px;\n text-align: left;\n width: fit-content;\n background-color: var(--omniscribe-surface-alt, #f6f7f9);\n padding: 4px;\n border-radius: 8px;\n color: var(--omniscribe-text, #13161a);\n line-height: 1.7 !important;\n}\n\n/* Audio-loss divider rendered between segments where a recording cut\n occurred. Visually separates captured speech from the gap so the doctor\n can spot lost portions while reviewing the transcription. */\n.omniscribe_transcription-panel-cut {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-block: 10px;\n padding-inline: 4px;\n}\n\n.omniscribe_transcription-panel-cut-line {\n flex: 1;\n height: 1px;\n background-color: #fed7aa;\n}\n\n.omniscribe_transcription-panel-cut-label {\n flex-shrink: 0;\n padding: 2px 10px;\n border-radius: 9999px;\n background-color: #fff7ed;\n border: 1px solid #fed7aa;\n color: #c2410c;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n}\n\n/* Scrollbar styles */\n.omniscribe_transcription-panel-content::-webkit-scrollbar {\n width: 6px;\n}\n\n.omniscribe_transcription-panel-content::-webkit-scrollbar-thumb {\n border-radius: 10px;\n background-color: var(--color-gray-300, #d1d5db);\n}\n\n.omniscribe_transcription-panel-content::-webkit-scrollbar-track {\n background-color: transparent;\n}\n\n/* Firefox */\n.omniscribe_transcription-panel-content {\n scrollbar-width: thin;\n scrollbar-color: var(--color-gray-300, #d1d5db) transparent;\n}\n\n/* Processing skeleton indicator */\n.omniscribe_transcription-panel-processing {\n padding-top: 5px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n/* Processing skeleton indicator */\n.omniscribe_transcription-processing {\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_transcription-processing-lines {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_transcription-skeleton-line {\n height: 14px;\n width: 70%;\n}\n\n.omniscribe_transcription-skeleton-line--short {\n width: 40%;\n}\n\n.omniscribe_transcription-processing-text {\n font-size: var(--text-xs);\n color: var(--omni-secondary, #6b7280);\n}\n\n\n/* Source: modules/chat/components/markdown/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: var(--omniscribe-surface, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-text, #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: var(--omniscribe-text-muted, #4b5563);\n}\n\n.omniscribe_link-menu-content {\n padding: 0.375rem;\n}\n\n\n/* Source: modules/chat/components/markdown/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: var(--omniscribe-surface, #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: var(--omniscribe-text-muted, #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/markdown/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/markdown/MarkdownText.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/markdown/tooltip-icon-button.css */\n/* Tooltip icon button styles */\n.omniscribe_tooltip-icon-button-btn {\n padding: 4px;\n min-width: auto;\n min-height: auto;\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: 0;\n}\n\n\n/* Source: modules/chat/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/messages/AssistantMessageLoading.css */\n/* Assistant message loading animation */\n.omniscribe_assistant-message-loading-container {\n display: flex;\n align-items: center;\n padding: 8px 0;\n}\n\n.omniscribe_assistant-message-loading {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.omniscribe_assistant-message-loading-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: #666;\n animation: omniscribe-assistant-dot-flashing 1.4s infinite linear;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(1) {\n animation-delay: -0.32s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(2) {\n animation-delay: -0.16s;\n}\n\n.omniscribe_assistant-message-loading-dot:nth-child(3) {\n animation-delay: 0s;\n}\n\n@keyframes omniscribe-assistant-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/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/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: var(--omniscribe-text-muted, #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/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: var(--omniscribe-surface-alt, #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/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: var(--omniscribe-surface-alt, #f5f5f5);\n border: 1px solid var(--omniscribe-border, #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: var(--omniscribe-surface-alt, #f8f9fa);\n color: var(--omniscribe-text-muted, #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: var(--omniscribe-surface-alt, #f8f9fa);\n color: var(--omniscribe-text-muted, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-surface, #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: var(--omniscribe-text, #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: var(--omniscribe-surface-alt, #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: var(--omniscribe-surface-alt, #f8f9fa);\n border: 1px solid var(--omniscribe-border, #e0e0e0);\n transition: background-color 0.2s ease;\n max-width: 280px;\n}\n\n.omniscribe_message-document:hover {\n background-color: var(--omniscribe-surface-alt, #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: var(--omniscribe-text, #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: var(--omniscribe-text-muted, #6c757d);\n}\n\n.omniscribe_message-documents-count {\n margin-top: 4px;\n font-size: 11px;\n color: var(--omniscribe-text-muted, #6c757d);\n font-style: italic;\n}\n\n\n/* Source: modules/chat/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/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: var(--omniscribe-surface, #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: var(--omniscribe-text, #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: var(--omniscribe-text-muted, #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/header/components/ConfigHeader.css */\n/* Config Header Styles */\n.omniscribe_config-view {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n max-height: 17px;\n padding: 16px;\n}\n\n.omniscribe_config-back-group {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n background: none;\n border: none;\n padding: 0;\n}\n\n.omniscribe_config-back-label {\n margin: 0;\n color: var(--omniscribe-text, #000000);\n font-size: 14px;\n font-weight: 700;\n line-height: 17px;\n}\n\n.omniscribe_config-close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n background-color: var(--omniscribe-surface-alt, #edeff2);\n border: 1px solid var(--omniscribe-border, #e5e7ec);\n border-radius: var(--Radius-radius-round, 99999px);\n cursor: pointer;\n color: var(--omniscribe-text, #000000);\n font-size: 14px;\n line-height: 1;\n padding: 0;\n}\n\n\n/* Source: modules/header/components/ConnectedButtons.css */\n/* Connected Buttons Styles */\n.omniscribe_connected-buttons {\n display: flex;\n border-radius: var(--Radius-radius-medium, 8px);\n border: 1px solid var(--omniscribe-border, #e5e7ec);\n overflow: hidden;\n}\n\n.omniscribe_connected-btn-left {\n border: none !important;\n border-radius: 0 !important;\n border-right: 1px solid var(--omniscribe-border, #e5e7ec) !important;\n}\n\n.omniscribe_connected-btn-right {\n border: none !important;\n border-radius: 0 !important;\n}\n\n/* Ensure connected buttons have consistent styling */\n.omniscribe_connected-buttons .omniscribe_utility-btns {\n min-height: 40px;\n}\n\n\n/* Source: modules/header/components/ConsentIndicator.css */\n.omniscribe_consent-indicator {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: var(--Font-Weight-Regular, 400);\n line-height: var(--text-xs--line-height, 14.4px);\n letter-spacing: var(--text-xs--letter-spacing, 0.05px);\n white-space: nowrap;\n margin-right: 8px;\n gap: 4px;\n border: 1px solid var(--border, #e5e7ec);\n color: var(--omniscribe-text-muted, #4a5364);\n}\n\n.omniscribe_consent-indicator-tooltip {\n border-radius: var(--radius-lg, 12px) !important;\n border: 1px solid var(--border, #e5e7ec) !important;\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25) !important;\n display: flex !important;\n padding: 10px 8px !important;\n font-size: 10px !important;\n font-weight: 400 !important;\n line-height: var(--text-xs--line-height, 14.4px) !important;\n letter-spacing: var(--text-xs--letter-spacing, 0.05px) !important;\n}\n\n/* SOF-844: express refusal of AI use. Distinct from \"not signed yet\" — the\n whole point of the third state is that they must not look alike. */\n.omniscribe_consent-indicator--refused {\n background-color: var(--omniscribe-danger-soft, #fee2e2);\n color: var(--omniscribe-danger, #b91c1c);\n border-color: var(--omniscribe-danger, #b91c1c);\n}\n\n/* SOF-845: the consent may be signed and the assistant still blocked by another\n rule. The badge stays truthful about the consent, but must not read as \"all\n clear\" at a glance while recording is disabled. */\n.omniscribe_consent-indicator--blocked {\n background-color: var(--omniscribe-warning-soft, #fef3c7);\n color: var(--omniscribe-warning, #92400e);\n border-color: var(--omniscribe-warning, #92400e);\n}\n\n\n/* Source: modules/header/components/MainHeader.css */\n/* Main Header Styles */\n.omniscribe_main-header {\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.omniscribe_main-header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n border: none;\n background: none;\n cursor: pointer;\n}\n\n.omniscribe_main-header-title {\n margin: 0;\n color: var(--omniscribe-text, #252a32);\n font-size: 14px;\n font-weight: 500;\n line-height: 16.8px;\n letter-spacing: 0.05px;\n}\n\n.omniscribe_main-header-separator {\n width: 1px;\n align-self: stretch;\n margin: -16px 0;\n background-color: var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_main-header-spacer {\n flex: 1;\n}\n\n.omniscribe_main-header-settings {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n border: none;\n background: none;\n cursor: pointer;\n}\n\n.omniscribe_main-header-close {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n border: none;\n background: none;\n cursor: pointer;\n}\n\n\n/* Source: modules/header/components/UtilityButton.css */\n/* Utility Button Styles */\n.omniscribe_utility-btn-audio {\n min-height: 40px; /* Match connected buttons height */\n}\n\n.omniscribe_utility-btn-right {\n /* Settings button specific styles can be added here */\n}\n\n/* Base utility button styles are inherited from parent UtilityButtons.css */\n\n\n/* Source: modules/header/components/WarningBanner.css */\n/* Warning Banner Styles */\n.omniscribe_warning-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n background-color: var(--omniscribe-surface-alt, #f6f7f9);\n border-top: 1px solid var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_warning-banner-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n padding: 0;\n border: none;\n background-color: var(--omniscribe-border, #e5e7ec);\n border-radius: 50%;\n cursor: pointer;\n flex-shrink: 0;\n}\n\n.omniscribe_warning-banner-close:hover {\n background-color: #d1d5db;\n}\n\n.omniscribe_warning-banner-text {\n font-size: 12px;\n font-weight: 400;\n line-height: 1.25;\n color: var(--omniscribe-text-muted, #4a5364);\n}\n\n\n/* Source: modules/header/section/UtilityButtons.css */\n.omniscribe_header-wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n background-color: var(--omniscribe-surface, #ffffff);\n border-top-right-radius: 12px;\n border-top-left-radius: 12px;\n}\n\n.omniscribe_utility-btns-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n background-color: var(--omniscribe-surface, #ffffff);\n overflow: hidden;\n border-bottom: 1px solid var(--omniscribe-border, #e5e7ec);\n align-self: stretch;\n border-top-right-radius: inherit;\n border-top-left-radius: inherit;\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(--omniscribe-surface-alt, #f6f7f9) !important;\n border: none !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(--omniscribe-border, #e5e7ec);\n position: relative;\n padding: 8px;\n display: flex;\n align-items: center;\n\n &:hover {\n background-color: var(--omniscribe-surface-alt, #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(--omniscribe-surface-alt, #f6f7f9);\n border: 1px solid var(--omniscribe-primary, #105bdb);\n}\n\n.omniscribe_btn-label {\n margin-left: 6px;\n font-size: 14px;\n color: var(--omniscribe-text, #212529);\n font-weight: 500;\n}\n\n.omniscribe_btn-label-active {\n color: var(--omniscribe-primary, #105bdb);\n}\n\n.omniscribe_btn-label-inactive {\n color: var(--omniscribe-text, #212529);\n}\n\n.omniscribe_icon {\n color: var(--active-black);\n}\n\n.omniscribe_icon-active {\n color: var(--omniscribe-primary, #105bdb);\n}\n\n\n/* Source: modules/insertionPreview/InsertionPreviewModal.css */\n/* Insertion Preview Modal — ported from the demo's .sugg-* styles\n (dev-tools/demo/src/style.css:715-891). Uses BEM-style naming under\n omniscribe_insertion-preview to stay scoped inside the SDK shadow DOM.\n\n Theming hooks (set on the `<sofia-sdk>` element, they cross the shadow\n boundary; classes don't):\n\n --omniscribe-insertion-preview-reserve px reserved for chat widget on the right\n --omniscribe-insertion-preview-primary brand color (selection / apply button)\n --omniscribe-insertion-preview-primary-soft soft pill background using primary\n --omniscribe-insertion-preview-primary-text text color sitting on primary-soft\n --omniscribe-insertion-preview-accent attention color (gaps)\n --omniscribe-insertion-preview-accent-soft soft pill background using accent\n --omniscribe-insertion-preview-accent-bg gap-section background\n --omniscribe-insertion-preview-text primary text\n --omniscribe-insertion-preview-text-muted secondary text / chrome\n --omniscribe-insertion-preview-border panel + group border\n --omniscribe-insertion-preview-border-soft in-panel separators\n --omniscribe-insertion-preview-input-border form-control border\n --omniscribe-insertion-preview-checkbox-border unchecked checkbox stroke\n --omniscribe-insertion-preview-surface panel background\n --omniscribe-insertion-preview-surface-alt header / footer / hover background\n\n Defaults cascade THROUGH the main SDK tokens (`--omniscribe-*`) before\n falling back to a hard-coded literal. So:\n\n 1. If the host sets `--omniscribe-insertion-preview-primary` →\n only the modal picks it up (per-surface theming).\n 2. Else if the host sets `--omniscribe-primary` (the chat-widget\n token) → BOTH chat and modal share it (unified theme — the\n out-of-the-box experience).\n 3. Else → falls back to the hard-coded SDK default (Sofia blue),\n matching the chat widget's stock look.\n\n Tokens without a chat-widget counterpart (accent / text-muted /\n border-soft / surface-alt etc.) keep their own defaults. */\n\n.omniscribe_insertion-preview__backdrop,\n.omniscribe_insertion-preview__panel {\n --_primary: var(\n --omniscribe-insertion-preview-primary,\n var(--omniscribe-primary, #105bdb)\n );\n --_primary-soft: var(\n --omniscribe-insertion-preview-primary-soft,\n var(--omniscribe-primary-soft, #e7effd)\n );\n --_primary-text: var(\n --omniscribe-insertion-preview-primary-text,\n var(--omniscribe-primary, #105bdb)\n );\n --_accent: var(--omniscribe-insertion-preview-accent, #c77700);\n --_accent-soft: var(--omniscribe-insertion-preview-accent-soft, #fdebc6);\n --_accent-bg: var(--omniscribe-insertion-preview-accent-bg, #fffbf1);\n --_text: var(\n --omniscribe-insertion-preview-text,\n var(--omniscribe-text, #1f2733)\n );\n --_text-muted: var(\n --omniscribe-insertion-preview-text-muted,\n var(--omniscribe-text-muted, #6a7385)\n );\n --_border: var(\n --omniscribe-insertion-preview-border,\n var(--omniscribe-border, #e5e7ec)\n );\n --_border-soft: var(\n --omniscribe-insertion-preview-border-soft,\n var(--omniscribe-border, #eef1f6)\n );\n --_input-border: var(\n --omniscribe-insertion-preview-input-border,\n var(--omniscribe-border, #d6dbe5)\n );\n --_checkbox-border: var(\n --omniscribe-insertion-preview-checkbox-border,\n #b7bfcc\n );\n --_surface: var(\n --omniscribe-insertion-preview-surface,\n var(--omniscribe-surface, #fff)\n );\n --_surface-alt: var(\n --omniscribe-insertion-preview-surface-alt,\n var(--omniscribe-surface-alt, #f6f8fb)\n );\n}\n\n/* The modal must sit above every other surface in the SDK shadow DOM\n (chat panel, toasts, tooltips). 2147483640+ ensures that even with a\n max-int z-index race, the modal wins. */\n.omniscribe_insertion-preview__backdrop {\n position: fixed;\n inset: 0;\n background: rgba(15, 27, 45, 0.42);\n backdrop-filter: blur(2px);\n -webkit-backdrop-filter: blur(2px);\n z-index: 2147483640;\n animation: omniscribe_insertion-preview__fade 0.18s ease-out;\n}\n@keyframes omniscribe_insertion-preview__fade {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n/* `--omniscribe-insertion-preview-reserve` lets the host budget space\n for a floating chat widget so the panel centers in the area NOT\n covered by it. Default: 0px → centered in the full viewport. */\n.omniscribe_insertion-preview__panel {\n position: fixed;\n top: 50%;\n left: calc((100vw - var(--omniscribe-insertion-preview-reserve, 0px)) / 2);\n transform: translate(-50%, -50%);\n z-index: 2147483641;\n width: 680px;\n max-width: calc(\n 100vw - var(--omniscribe-insertion-preview-reserve, 0px) - 32px\n );\n max-height: 84vh;\n background: var(--_surface);\n border: 1px solid var(--_border);\n border-radius: 14px;\n box-shadow: 0 24px 64px rgba(15, 27, 45, 0.18);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: omniscribe_insertion-preview__in 0.22s ease-out;\n font-family: 'Lato', sans-serif;\n color: var(--_text);\n}\n\n/* Below 1100px there isn't room to sit beside the widget; centered\n fallback (will overlap the widget — same trade-off as the demo). */\n@media (max-width: 1100px) {\n .omniscribe_insertion-preview__panel {\n left: 50%;\n width: 92vw;\n max-width: 720px;\n }\n}\n@keyframes omniscribe_insertion-preview__in {\n from {\n opacity: 0;\n transform: translate(-50%, calc(-50% + 8px)) scale(0.985);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n.omniscribe_insertion-preview__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n border-bottom: 1px solid var(--_border);\n background: var(--_surface-alt);\n}\n.omniscribe_insertion-preview__title {\n margin: 0;\n font-size: 13px;\n font-weight: 600;\n}\n.omniscribe_insertion-preview__close {\n background: transparent;\n border: 0;\n color: var(--_text-muted);\n font-size: 18px;\n line-height: 1;\n padding: 2px 6px;\n border-radius: 4px;\n cursor: pointer;\n}\n.omniscribe_insertion-preview__close:hover {\n background: var(--_border-soft);\n color: var(--_text);\n}\n\n.omniscribe_insertion-preview__sub {\n margin: 0;\n padding: 8px 14px;\n font-size: 11.5px;\n color: var(--_text-muted);\n border-bottom: 1px solid var(--_border-soft);\n}\n\n.omniscribe_insertion-preview__body {\n flex: 1;\n overflow-y: auto;\n padding: 4px 0;\n}\n\n.omniscribe_insertion-preview__group {\n border-bottom: 1px solid var(--_border-soft);\n}\n.omniscribe_insertion-preview__group:last-child {\n border-bottom: 0;\n}\n.omniscribe_insertion-preview__group-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px 4px;\n}\n/* The parent label of an array-of-objects group lives inside .group-head\n which already supplies 14px left padding. Without zeroing the inner\n .row padding here, the parent ends up doubly indented (28px) while\n children directly under the section have a single 14px — making the\n parent appear LEFT-shifted relative to its own children. */\n.omniscribe_insertion-preview__group-head .omniscribe_insertion-preview__row {\n padding: 0;\n}\n.omniscribe_insertion-preview__group-name {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--_text-muted);\n}\n.omniscribe_insertion-preview__group-count {\n background: var(--_primary-soft);\n color: var(--_primary-text);\n font-size: 10.5px;\n font-weight: 600;\n border-radius: 999px;\n padding: 1px 7px;\n}\n\n.omniscribe_insertion-preview__row {\n display: grid;\n grid-template-columns: 16px 1fr;\n gap: 10px;\n padding: 8px 14px;\n align-items: flex-start;\n cursor: pointer;\n border-radius: 6px;\n}\n.omniscribe_insertion-preview__row:hover {\n background: var(--_surface-alt);\n}\n.omniscribe_insertion-preview__row-checkbox {\n appearance: none;\n width: 14px;\n height: 14px;\n border: 1px solid var(--_checkbox-border);\n border-radius: 3px;\n background: var(--_surface);\n margin-top: 2px;\n cursor: pointer;\n}\n.omniscribe_insertion-preview__row-checkbox:checked {\n background: var(--_primary);\n border-color: var(--_primary);\n background-image: url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>\");\n background-repeat: no-repeat;\n background-position: center;\n}\n.omniscribe_insertion-preview__row-body {\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.omniscribe_insertion-preview__row-label {\n font-size: 12.5px;\n font-weight: 600;\n color: var(--_text);\n margin-bottom: 8px;\n}\n.omniscribe_insertion-preview__row-preview {\n font-size: 11.5px;\n color: var(--_text-muted);\n word-break: break-word;\n}\n.omniscribe_insertion-preview__row-line {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 2px 0;\n}\n.omniscribe_insertion-preview__row-line-text {\n flex: 1;\n}\n\n.omniscribe_insertion-preview__row-edit {\n margin-top: 4px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.omniscribe_insertion-preview__row-edit-grid {\n display: grid;\n grid-template-columns: 140px 1fr;\n gap: 6px 12px;\n align-items: center;\n}\n.omniscribe_insertion-preview__row-edit-label {\n font-size: 11px;\n color: var(--_text-muted);\n}\n\n.omniscribe_insertion-preview__edit {\n font: inherit;\n font-size: 12px;\n color: var(--_text);\n border: 1px solid var(--_input-border);\n border-radius: 4px;\n padding: 4px 8px;\n background: var(--_surface);\n width: 100%;\n box-sizing: border-box;\n}\n.omniscribe_insertion-preview__edit--prose {\n min-height: 60px;\n resize: vertical;\n}\n.omniscribe_insertion-preview__edit--toggle {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n border: 0;\n padding: 0;\n background: transparent;\n}\n.omniscribe_insertion-preview__edit--multi-enum {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n border: 0;\n padding: 0;\n background: transparent;\n}\n.omniscribe_insertion-preview__edit__chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n border: 1px solid var(--_input-border);\n border-radius: 999px;\n padding: 2px 8px;\n cursor: pointer;\n}\n.omniscribe_insertion-preview__edit__chip--on {\n background: var(--_primary);\n color: #fff;\n border-color: var(--_primary);\n}\n.omniscribe_insertion-preview__edit__chip input {\n display: none;\n}\n\n/* Searchable enum select */\n.omniscribe_insertion-preview__searchable-select {\n position: relative;\n width: 100%;\n}\n.omniscribe_insertion-preview__searchable-select__trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n font: inherit;\n font-size: 12px;\n border: 1px solid var(--_input-border);\n border-radius: 4px;\n padding: 4px 8px;\n background: var(--_surface);\n cursor: pointer;\n text-align: left;\n}\n.omniscribe_insertion-preview__searchable-select__chevron {\n color: var(--_text-muted);\n}\n.omniscribe_insertion-preview__searchable-select__dropdown {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n z-index: 5;\n background: var(--_surface);\n border: 1px solid var(--_input-border);\n border-radius: 4px;\n box-shadow: 0 8px 24px rgba(15, 27, 45, 0.12);\n max-height: 200px;\n display: flex;\n flex-direction: column;\n}\n.omniscribe_insertion-preview__searchable-select__search {\n font: inherit;\n font-size: 12px;\n border: 0;\n border-bottom: 1px solid var(--_border-soft);\n padding: 6px 8px;\n outline: none;\n}\n.omniscribe_insertion-preview__searchable-select__list {\n list-style: none;\n margin: 0;\n padding: 4px 0;\n overflow-y: auto;\n}\n.omniscribe_insertion-preview__searchable-select__option {\n padding: 4px 10px;\n font-size: 12px;\n cursor: pointer;\n}\n.omniscribe_insertion-preview__searchable-select__option:hover,\n.omniscribe_insertion-preview__searchable-select__option--selected {\n background: var(--_surface-alt);\n}\n.omniscribe_insertion-preview__searchable-select__option--custom {\n color: var(--_text-muted);\n font-style: italic;\n}\n\n.omniscribe_insertion-preview__row--will-replace {\n background: rgba(199, 119, 0, 0.06);\n}\n.omniscribe_insertion-preview__row-tag {\n font-size: 10px;\n font-weight: 600;\n background: var(--_accent-soft);\n color: var(--_accent);\n padding: 2px 6px;\n border-radius: 999px;\n align-self: flex-start;\n margin-top: 1px;\n}\n\n/* Gaps group */\n.omniscribe_insertion-preview__group--gaps {\n background: var(--_accent-bg);\n border-top: 1px solid var(--_border);\n}\n.omniscribe_insertion-preview__group-name--gap {\n color: var(--_accent);\n}\n.omniscribe_insertion-preview__group-count--gap {\n background: var(--_accent-soft);\n color: var(--_accent);\n}\n.omniscribe_insertion-preview__row--gap {\n grid-template-columns: 18px 1fr;\n cursor: default;\n}\n.omniscribe_insertion-preview__row--gap:hover {\n background: rgba(199, 119, 0, 0.06);\n}\n.omniscribe_insertion-preview__gap-icon {\n color: var(--_accent);\n margin-top: 1px;\n}\n.omniscribe_insertion-preview__row-preview--gap {\n color: var(--_accent);\n}\n\n.omniscribe_insertion-preview__footer {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding: 10px 14px;\n border-top: 1px solid var(--_border);\n background: var(--_surface-alt);\n}\n.omniscribe_insertion-preview__btn {\n font: inherit;\n font-size: 12px;\n font-weight: 600;\n border: 1px solid var(--_input-border);\n background: var(--_surface);\n border-radius: 6px;\n padding: 6px 14px;\n cursor: pointer;\n color: var(--_text);\n}\n.omniscribe_insertion-preview__btn--primary {\n background: var(--_primary);\n color: #fff;\n border-color: var(--_primary);\n}\n.omniscribe_insertion-preview__btn--primary:disabled {\n background: #a3b1ad;\n border-color: #a3b1ad;\n cursor: not-allowed;\n}\n\n/* \"Edit with voice\" — secondary action style. Picks up the host's\n --omniscribe-secondary token (falls back to a neutral teal). */\n.omniscribe_insertion-preview__btn--voice {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: var(--_surface);\n color: var(--_primary);\n border-color: var(--_primary);\n}\n.omniscribe_insertion-preview__btn--voice:hover {\n background: var(--_primary-soft);\n}\n.omniscribe_insertion-preview__btn-icon {\n display: inline-block;\n vertical-align: middle;\n flex-shrink: 0;\n}\n.omniscribe_insertion-preview__btn-icon--stop {\n width: 10px;\n height: 10px;\n background: currentColor;\n border-radius: 1px;\n}\n\n/* While recording the voice button morphs into a destructive-styled\n \"Stop\" button so the action reads as final. */\n.omniscribe_insertion-preview__btn--voice-stop {\n background: #dc3545;\n color: #fff;\n border-color: #dc3545;\n}\n.omniscribe_insertion-preview__btn--voice-stop:hover {\n background: #c82333;\n border-color: #c82333;\n}\n\n/* Voice status banner — rendered just under the modal header while the\n chat surface is recording / starting / generating. */\n.omniscribe_insertion-preview__voice-banner {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 14px;\n font-size: 12px;\n border-bottom: 1px solid var(--_border-soft);\n background: var(--_surface-alt);\n color: var(--_text);\n}\n.omniscribe_insertion-preview__voice-banner--recording {\n background: rgba(220, 53, 69, 0.08);\n color: #b21f2c;\n}\n.omniscribe_insertion-preview__voice-banner--generating {\n background: var(--_primary-soft);\n color: var(--_primary-text);\n}\n.omniscribe_insertion-preview__voice-pulse {\n width: 10px;\n height: 10px;\n border-radius: 999px;\n background: #dc3545;\n animation: omniscribe_insertion-preview__pulse 1s ease-in-out infinite;\n flex-shrink: 0;\n}\n@keyframes omniscribe_insertion-preview__pulse {\n 0%,\n 100% {\n opacity: 0.4;\n transform: scale(0.85);\n }\n 50% {\n opacity: 1;\n transform: scale(1.15);\n }\n}\n.omniscribe_insertion-preview__voice-spinner {\n width: 12px;\n height: 12px;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: 999px;\n animation: omniscribe_insertion-preview__spin 0.8s linear infinite;\n flex-shrink: 0;\n display: inline-block;\n}\n@keyframes omniscribe_insertion-preview__spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Tiny visual cue on the panel itself while recording. */\n.omniscribe_insertion-preview__panel--voice {\n border-color: rgba(220, 53, 69, 0.4);\n}\n.omniscribe_insertion-preview__close:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n.omniscribe_insertion-preview__footer-spacer {\n flex: 1;\n}\n\n/* Mandatory styling — distinct from the soft amber gap treatment so the\n doctor immediately sees what's blocking. Red border + red pill. */\n.omniscribe_insertion-preview__row--mandatory {\n background: rgba(220, 53, 69, 0.06);\n border-left: 3px solid #dc3545;\n}\n.omniscribe_insertion-preview__row--mandatory\n .omniscribe_insertion-preview__row-preview--gap,\n.omniscribe_insertion-preview__row--mandatory\n .omniscribe_insertion-preview__row-label {\n color: var(--omniscribe-text, #1f2733);\n}\n.omniscribe_insertion-preview__gap-icon--mandatory {\n color: #dc3545;\n}\n.omniscribe_insertion-preview__row-edit-grid--mandatory {\n background: rgba(220, 53, 69, 0.04);\n border-radius: 4px;\n padding: 4px 6px;\n}\n.omniscribe_insertion-preview__mandatory-pill {\n display: inline-block;\n margin-left: 8px;\n padding: 1px 6px;\n font-size: 9.5px;\n font-weight: 700;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n background: #dc3545;\n color: #fff;\n border-radius: 999px;\n}\n.omniscribe_insertion-preview__sub--blocking {\n color: #dc3545;\n font-weight: 600;\n}\n\n/* AI-suggested field: the agent inferred this from context rather\n than from an explicit doctor statement. We tint the editor\n background so the doctor visually distinguishes it from\n confirmed-from-dictation fields, and a small ✨ pill on the\n label tells them what it means. Less alarming than the\n mandatory-red treatment because the field IS filled — we just\n want the doctor to double-check it. */\n.omniscribe_insertion-preview__row-edit-grid--suggested {\n background: rgba(176, 122, 255, 0.06);\n border-left: 2px solid #b07aff;\n border-radius: 4px;\n padding: 4px 6px;\n}\n.omniscribe_insertion-preview__suggested-pill {\n display: inline-block;\n margin-left: 8px;\n padding: 1px 7px;\n font-size: 9.5px;\n font-weight: 600;\n letter-spacing: 0.03em;\n background: rgba(176, 122, 255, 0.12);\n color: #6f48b8;\n border: 1px solid rgba(176, 122, 255, 0.5);\n border-radius: 999px;\n}\n\n/* SOF-659 — read-only \"Attachments\" section (file previews by type). */\n.omniscribe_insertion-preview__attachments {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.omniscribe_insertion-preview__attachments__list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.omniscribe_insertion-preview__attachment {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 8px;\n overflow: hidden;\n background: rgba(0, 0, 0, 0.02);\n}\n\n.omniscribe_insertion-preview__attachment--image {\n display: block;\n max-width: 100%;\n max-height: 240px;\n object-fit: contain;\n}\n\n.omniscribe_insertion-preview__attachment--audio {\n width: 100%;\n padding: 8px;\n}\n\n.omniscribe_insertion-preview__attachment--pdf {\n width: 100%;\n height: 360px;\n border: none;\n}\n\n.omniscribe_insertion-preview__attachment--text {\n margin: 0;\n padding: 10px 12px;\n max-height: 200px;\n overflow: auto;\n font-size: 12px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.omniscribe_insertion-preview__attachment--file {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 12px;\n}\n\n.omniscribe_insertion-preview__attachment__name {\n font-size: 13px;\n color: #333;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\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/DraggableCollapsed.css */\n/* Draggable Collapsed Container */\n.omniscribe_draggable-collapsed {\n position: fixed;\n bottom: 20px;\n right: 20px;\n cursor: grab;\n z-index: 9999;\n transition: transform 0.1s ease-out;\n user-select: none;\n touch-action: none;\n}\n\n.omniscribe_draggable-collapsed--dragging {\n cursor: grabbing;\n transition: none;\n}\n\n/* Horizontal mode - rotated 90 degrees */\n.omniscribe_draggable-collapsed--horizontal {\n bottom: 20px;\n}\n\n.omniscribe_draggable-collapsed--horizontal .omniscribe_transcribe-collapsed {\n flex-direction: row;\n transform: none;\n}\n\n/* RTL support */\n[dir='rtl'] .omniscribe_draggable-collapsed {\n right: auto;\n left: 20px;\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(--omniscribe-border, var(--light-border));\n box-shadow: 0px 4px 4px 0px #00000040;\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 border-radius: 12px;\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/settings/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 var(--omniscribe-border, #e5e7ec);\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n line-height: 1.5;\n color: var(--omniscribe-text, #374151);\n background-color: var(--omniscribe-surface, white);\n resize: none;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.omniscribe_chat-prompt-textarea::placeholder {\n color: var(--omniscribe-text-muted, #9ca3af);\n font-style: italic;\n}\n\n.omniscribe_chat-character-count {\n font-size: 12px;\n color: var(--omniscribe-text-muted, #6b7280);\n align-self: flex-start;\n}\n\n\n/* Source: modules/settings/components/chat/PromptCustomization.css */\n.omniscribe_chat-prompt-title {\n font-size: 14px;\n font-weight: 400;\n color: var(--omniscribe-text, #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(--omniscribe-primary, #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/settings/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 /* Let the label shrink inside the row so a long name can wrap instead of\n pushing the row wider. */\n flex: 1;\n min-width: 0;\n}\n\n.omniscribe_source-checkbox {\n width: 16px;\n height: 16px;\n accent-color: var(--primary, #105bdb);\n cursor: pointer;\n}\n\n.omniscribe_source-name {\n flex: 1;\n min-width: 0;\n /* A source name with no spaces (e.g. a bare domain) has no wrap points, so\n without this it overflows the row. `anywhere` breaks it only when needed. */\n overflow-wrap: anywhere;\n font-size: 12px;\n color: var(--omniscribe-text, #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: var(--primary, #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: var(--omniscribe-text, #1f2937);\n}\n\n\n/* Source: modules/settings/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: var(--omniscribe-text, #252a32);\n margin: 0;\n}\n\n.omniscribe_source-selector-description {\n font-size: 14px;\n color: var(--omniscribe-text-muted, #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: 105px;\n max-height: 285px;\n border-radius: 12px;\n border: 1px solid var(--omniscribe-border, #e5e7ec);\n background: var(--omniscribe-surface, #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: 105px;\n}\n\n\n/* Source: modules/settings/section/Configuration.css */\n.omniscribe_config-content {\n width: 650px;\n max-height: 590px;\n opacity: 1;\n background-color: var(--omniscribe-surface, #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: var(--omniscribe-surface-alt, #f9fafb);\n}\n\n.omniscribe_config-item:focus {\n outline: none;\n background-color: var(--omniscribe-surface-alt, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-text, #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: var(--omniscribe-text-muted, #4a5364);\n}\n\n.omniscribe_config-item-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--omniscribe-text-muted, #9ca3af);\n flex-shrink: 0;\n}\n\n/* Sub-screen styles */\n.omniscribe_config-subscreen-header {\n display: flex;\n align-items: center;\n padding: 16px 16px 8px 16px;\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: 18px;\n font-weight: 500;\n color: var(--omniscribe-text, #252a32);\n line-height: 21.6px;\n}\n\n.omniscribe_config-subscreen-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 16px;\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 /* no-border variant */\n}\n\n.omniscribe_config-subscreen-content-template {\n flex: 1;\n overflow-y: auto;\n padding-bottom: 50px;\n}\n\n.omniscribe_config-section-label {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--omniscribe-text, #374151);\n line-height: 1.4;\n}\n\n.omniscribe_config-language-section {\n display: flex;\n flex-direction: column;\n}\n\n/* Audio-environment (VAD) section: titled control with helper text below. */\n.omniscribe_config-audio-env {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 16px;\n}\n\n.omniscribe_config-language-section-title {\n font-size: 16px;\n font-weight: 600;\n color: var(--omniscribe-text, #374151);\n margin-bottom: 8px;\n}\n\n.omniscribe_config-subscreen-description,\n.omniscribe_config-subscreen-subdescription {\n margin: 0 0 0 0;\n font-size: 14px;\n line-height: 18px;\n color: var(--omniscribe-text, #13161a);\n font-weight: 400;\n}\n\n.omniscribe_config-subscreen-subdescription {\n font-style: italic;\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 var(--omniscribe-border, #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: var(--omniscribe-surface, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-border, #e5e8eb);\n color: var(--omniscribe-text-muted, #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: var(--omniscribe-surface-alt, #f9fafb);\n border: 1px solid var(--omniscribe-border, #e5e8eb);\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.omniscribe_config-dictionary-row:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n border-color: var(--omniscribe-border, #d1d5db);\n}\n\n.omniscribe_config-dictionary-cell {\n flex: 1;\n font-size: 14px;\n line-height: 20px;\n color: var(--omniscribe-text, #374151);\n word-break: break-word;\n font-weight: 500;\n}\n\n.omniscribe_config-dictionary-arrow {\n color: var(--omniscribe-text-muted, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-text-muted, #6b7280);\n font-size: 14px;\n line-height: 20px;\n background-color: var(--omniscribe-surface-alt, #f9fafb);\n border: 2px dashed var(--omniscribe-border, #e5e8eb);\n border-radius: 12px;\n font-style: italic;\n}\n\n/* Template specific styles */\n\n/* General prompt section */\n.omniscribe_template-general-prompt-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-bottom: 8px;\n}\n\n.omniscribe_template-section-title {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--omniscribe-text, #374151);\n line-height: 1.4;\n}\n\n.omniscribe_template-section-subtitle {\n margin: 0;\n font-size: 13px;\n font-weight: 400;\n color: var(--omniscribe-text-muted, #6b7280);\n line-height: 1.4;\n}\n\n.omniscribe_template-general-prompt-textarea {\n width: 100%;\n min-height: 80px;\n max-height: 200px;\n padding: 12px;\n border: 1px solid var(--omniscribe-border, #e5e7ec);\n border-radius: 8px;\n font-size: 14px;\n font-family: inherit;\n line-height: 1.5;\n color: var(--omniscribe-text, #374151);\n background-color: var(--omniscribe-surface, white);\n resize: vertical;\n box-sizing: border-box;\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.omniscribe_template-general-prompt-textarea::placeholder {\n color: var(--omniscribe-text-muted, #9ca3af);\n font-style: italic;\n}\n\n.omniscribe_template-general-prompt-textarea:focus {\n border-color: #3b5edb;\n box-shadow: 0 0 0 3px rgba(59, 94, 219, 0.1);\n}\n\n/* Fields section */\n.omniscribe_template-fields-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-top: 8px;\n}\n\n.omniscribe_template-field {\n background: var(--omniscribe-surface, white);\n border-bottom: 1px solid var(--omniscribe-border, #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 0;\n background: var(--omniscribe-surface, #ffffff);\n}\n\n.omniscribe_template-field-checkbox {\n background: none;\n border: none;\n padding: 0;\n margin-right: 12px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.omniscribe_template-field-label {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: var(--omniscribe-text, #2c3e50);\n}\n\n.omniscribe_template-field-prompt-btn {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n flex-shrink: 0;\n}\n\n.omniscribe_template-field-prompt-btn:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n}\n\n.omniscribe_template-field-content {\n padding: 0 0 12px 34px;\n background: var(--omniscribe-surface, white);\n}\n\n.omniscribe_template-textarea {\n width: 100%;\n min-height: 80px;\n max-height: 300px;\n padding: 12px;\n border: 1px solid var(--omniscribe-border, #e1e8ed);\n border-radius: 6px;\n font-size: 14px;\n font-family: inherit;\n resize: vertical;\n background: var(--omniscribe-surface, white);\n box-sizing: border-box;\n overflow-y: auto;\n}\n\n.omniscribe_template-textarea:focus {\n outline: none;\n border-color: #3b5edb;\n box-shadow: 0 0 0 3px rgba(59, 94, 219, 0.1);\n}\n\n.omniscribe_template-character-count {\n margin-top: 8px;\n font-size: 12px;\n color: var(--omniscribe-text-muted, #95a5a6);\n display: flex;\n}\n\n/* Template fields container */\n.omniscribe_template-fields {\n display: flex;\n flex-direction: column;\n background: var(--omniscribe-surface, 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: var(--omniscribe-surface-alt, #f6f7f9);\n color: var(--omniscribe-text-muted, #4a5364);\n padding: 8px 24px;\n font-weight: 700;\n line-height: 16.8px;\n font-size: 14px;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n border-bottom-left-radius: 12px;\n border-bottom-right-radius: 12px;\n}\n\n\n/* Source: modules/transcription/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: var(--omniscribe-surface, 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/* Processing skeleton indicator */\n.omniscribe_transcription-processing {\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_transcription-processing-lines {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.omniscribe_transcription-skeleton-line {\n height: 14px;\n width: 70%;\n}\n\n.omniscribe_transcription-skeleton-line--short {\n width: 40%;\n}\n\n.omniscribe_transcription-processing-text {\n font-size: var(--text-xs);\n color: var(--omni-secondary, #6b7280);\n}\n\n\n/* Source: modules/transcription/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/transcription/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/transcription/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: var(--omniscribe-surface-alt, #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 var(--omniscribe-border, #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 var(--omniscribe-border, #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: var(--omniscribe-text-muted, #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: var(--omniscribe-text-muted, #a4adbc);\n}\n\n.omniscribe_audio-recorder-refresh-icon {\n color: var(--omniscribe-text, #252a32);\n}\n\n.omniscribe_audio-recorder-star-icon {\n cursor: pointer;\n display: inline-block;\n}\n\n\n/* Source: shared/components/ActivationGuardDialog.css */\n/* The shared Modal overlay is absolutely positioned against its nearest\n positioned ancestor, which for this dialog is wherever the provider happens\n to sit in the tree. Force fixed so it centers over the viewport. */\n.omniscribe_modal-overlay:has(.omniscribe_activation-guard-modal) {\n position: fixed;\n inset: 0;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n}\n\n.omniscribe_activation-guard-modal {\n width: 480px;\n max-width: 90vw;\n padding: 24px !important;\n}\n\n/* Override Modal's default h2 size for this dialog. */\n.omniscribe_activation-guard-modal .omniscribe_modal-title-container {\n margin-bottom: 16px;\n align-items: flex-start;\n}\n\n.omniscribe_activation-guard-modal .omniscribe_modal-title {\n font-size: 18px;\n line-height: 1.3;\n font-weight: 700;\n letter-spacing: -0.01em;\n color: var(--color-gray-900, #0f172a);\n}\n\n.omniscribe_activation-guard-body {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.omniscribe_activation-guard-summary {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.omniscribe_activation-guard-summary-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n background-color: #fef3c7;\n color: #b45309;\n}\n\n.omniscribe_activation-guard-summary-text {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n color: var(--color-gray-800, #1f2937);\n flex: 1;\n}\n\n.omniscribe_activation-guard-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 16px;\n margin-top: 4px;\n}\n\n.omniscribe_activation-guard-secondary {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px 12px;\n font-size: 14px;\n font-weight: 500;\n color: var(--omniscribe-text-muted, #374151);\n border-radius: 9999px;\n transition: background-color 0.15s ease;\n}\n\n.omniscribe_activation-guard-secondary:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--color-gray-900, #0f172a);\n}\n\n.omniscribe_activation-guard-primary {\n border-radius: 9999px !important;\n gap: 8px;\n padding-block: 10px !important;\n padding-inline: 18px !important;\n height: auto !important;\n font-weight: 600;\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/app-skeleton.css */\n.omniscribe_app-skeleton {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--white);\n border-radius: 12px;\n}\n\n/* Header */\n.omniscribe_app-skeleton-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 16px;\n border-bottom: 1px solid var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_app-skeleton-header-left,\n.omniscribe_app-skeleton-header-right {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.omniscribe_app-skeleton-icon {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n}\n\n.omniscribe_app-skeleton-title {\n width: 48px;\n height: 20px;\n border-radius: 4px;\n}\n\n.omniscribe_app-skeleton-badge {\n width: 150px;\n height: 32px;\n border-radius: 99999px;\n}\n\n/* Disclaimer banner */\n.omniscribe_app-skeleton-banner {\n padding: 6px 16px;\n border-bottom: 1px solid var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_app-skeleton-banner-text {\n width: 100%;\n height: 16px;\n border-radius: 4px;\n}\n\n/* Content */\n.omniscribe_app-skeleton-content {\n flex: 1;\n padding: 20px;\n}\n\n.omniscribe_app-skeleton-welcome {\n width: 240px;\n height: 28px;\n border-radius: 4px;\n margin-bottom: 10px;\n}\n\n.omniscribe_app-skeleton-suggestions {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.omniscribe_app-skeleton-suggestion {\n height: 25px;\n border-radius: 99999px;\n}\n\n.omniscribe_app-skeleton-suggestion--long {\n width: 320px;\n}\n\n.omniscribe_app-skeleton-suggestion--longer {\n width: 380px;\n}\n\n.omniscribe_app-skeleton-suggestion--medium {\n width: 280px;\n}\n\n/* Bottom bar */\n.omniscribe_app-skeleton-bottom {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n border-top: 1px solid var(--omniscribe-border, #e5e7ec);\n}\n\n.omniscribe_app-skeleton-transcribe-btn {\n width: 140px;\n height: 40px;\n border-radius: 99999px;\n flex-shrink: 0;\n}\n\n.omniscribe_app-skeleton-input {\n flex: 1;\n height: 40px;\n border-radius: 99999px;\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 /* Enabled buttons must show the pointer affordance; the base rule never set\n it, so variants without their own cursor (e.g. outline, used by the chat\n mic button) rendered the default arrow. `:disabled` below overrides it. */\n cursor: pointer;\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 pointer-events: cursor;\n cursor: pointer;\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: var(--secondary-hover) !important;\n }\n &:disabled {\n background-color: var(--omniscribe-surface-alt, #edeff2);\n cursor: not-allowed;\n color: var(--omniscribe-text-muted, #d5d9e0);\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: var(--primary-button);\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: var(--omniscribe-surface, white);\n border: 1px solid var(--omniscribe-border, #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 var(--omniscribe-border, #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: var(--omniscribe-text-muted, #6b7280);\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.omniscribe_feedback-close:hover {\n background-color: var(--omniscribe-surface-alt, #f3f4f6);\n color: var(--omniscribe-text, #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: var(--omniscribe-surface, white);\n color: var(--omniscribe-text, black);\n border: 1px solid var(--omniscribe-border, #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 top: 7px;\n left: 17%;\n z-index: 10000;\n background: var(--omniscribe-surface, white);\n border: 1px solid var(--omniscribe-border, #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 top: 20px;\n left: 17%;\n}\n\n.omniscribe_feedback-sending {\n position: absolute;\n z-index: 10000;\n background: var(--omniscribe-surface, white);\n color: var(--omniscribe-text, black);\n border: 1px solid var(--omniscribe-border, #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 top: 20px;\n left: 17%;\n z-index: 10000;\n background: var(--omniscribe-surface, white);\n color: var(--omniscribe-text, black);\n border: 1px solid var(--omniscribe-border, #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/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.omniscribe_app-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n flex: 1;\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(--omniscribe-border, var(--light-border));\n cursor: pointer;\n}\n.omniscribe_select-button:disabled {\n cursor: not-allowed;\n opacity: 0.6;\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(--omniscribe-border, 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) * 44);\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(--omniscribe-surface-alt, 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(--omniscribe-border, #e5e7ec);\n flex-shrink: 0;\n}\n\n.omniscribe_separator--horizontal {\n height: 0;\n width: 100%;\n border-top: 1px solid var(--omniscribe-border, #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(--omniscribe-border, #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-stack {\n position: fixed;\n top: calc(var(--spacing) * 4);\n right: calc(var(--spacing) * 4);\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n z-index: 9999;\n pointer-events: none;\n}\n\n.omniscribe_toast-item {\n border-radius: var(--radius);\n padding: calc(var(--spacing) * 4);\n width: calc(var(--spacing) * 120);\n display: flex;\n align-items: flex-start;\n transition:\n transform 300ms cubic-bezier(0.4, 0, 0.2, 1),\n opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);\n pointer-events: auto;\n}\n\n.omniscribe_toast-item-danger {\n background-color: var(--color-red-500);\n}\n.omniscribe_toast-item-black {\n background-color: var(--black);\n}\n.omniscribe_toast-item-show {\n transform: translateX(0);\n opacity: 1;\n}\n.omniscribe_toast-item-hide {\n transform: translateX(120%);\n opacity: 0;\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 flex: 1;\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.omniscribe_toast-close {\n background: none;\n border: none;\n color: var(--white);\n font-size: 18px;\n cursor: pointer;\n padding: calc(var(--spacing) * 1) calc(var(--spacing) * 2);\n align-self: flex-start;\n opacity: 0.8;\n}\n.omniscribe_toast-close:hover {\n opacity: 1;\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: var(--omniscribe-text, #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 var(--secondary, #132caa);\n}\n\n.omniscribe_toggle-switch-checked {\n background-color: var(--secondary, #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 /* High-contrast fill that sits on top of the track — must contrast the */\n /* track color, not inherit the panel surface (which would vanish in a */\n /* dark theme). Hosts theming dark set --omniscribe-on-accent to a dark */\n /* ink; light hosts fall back to white (unchanged). */\n background-color: var(--omniscribe-on-accent, 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: var(--omniscribe-text-muted, #6b7280);\n min-width: 70px;\n}\n\n.omniscribe_toggle-switch-checked + .omniscribe_toggle-status {\n color: var(--omniscribe-text-muted, #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-flex;\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: var(--omniscribe-surface, #ffffff);\n color: var(--omniscribe-text, #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: var(--omniscribe-surface, #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\n\n/* Source: test/mocks/empty.css */\n/* Empty CSS file for mocking styles */\n";
169190
169514
 
169191
169515
  const injectedCss$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
169192
169516
  __proto__: null,