codex-overleaf-link 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +272 -311
  2. package/README.zh-CN.md +287 -326
  3. package/extension/bootstrap/background.js +47 -10
  4. package/extension/bootstrap/manifest.template.json +9 -4
  5. package/extension/bootstrap/popup.html +10 -16
  6. package/extension/bootstrap/update.js +25 -2
  7. package/extension/runtime-manifest.json +3 -1
  8. package/extension/src/background.js +28 -3
  9. package/extension/src/backgroundSharedSessions.js +380 -0
  10. package/extension/src/backgroundUpdateCoordinator.js +442 -379
  11. package/extension/src/content/activeTurnControl.js +8 -0
  12. package/extension/src/content/assetTransferBroker.js +186 -12
  13. package/extension/src/content/changeHistoryView.js +175 -0
  14. package/extension/src/content/composerAttachments.js +24 -22
  15. package/extension/src/content/composerPanel.js +23 -8
  16. package/extension/src/content/contentRuntime.js +572 -571
  17. package/extension/src/content/diagnosticsController.js +1 -2
  18. package/extension/src/content/diagnosticsExport.js +222 -0
  19. package/extension/src/content/diagnosticsPanel.js +48 -19
  20. package/extension/src/content/diffReviewPanel.js +8 -5
  21. package/extension/src/content/generated/content.bundle.js +8974 -1781
  22. package/extension/src/content/generated/content.bundle.meta.json +22 -3
  23. package/extension/src/content/legacyGlobalRegistry.js +19 -1
  24. package/extension/src/content/localSkillsPanel.js +42 -7
  25. package/extension/src/content/markdownDomRenderer.js +9 -4
  26. package/extension/src/content/modelPicker.js +1 -1
  27. package/extension/src/content/pageBridgeClient.js +18 -3
  28. package/extension/src/content/panelMaintenance.js +51 -120
  29. package/extension/src/content/panelRenderer.js +4 -0
  30. package/extension/src/content/pendingInputView.js +109 -76
  31. package/extension/src/content/providerSettingsCoordinator.js +17 -6
  32. package/extension/src/content/providerSettingsDialog.js +661 -108
  33. package/extension/src/content/recentProjects.js +364 -356
  34. package/extension/src/content/runActivitySummary.js +631 -0
  35. package/extension/src/content/runController.js +3 -1
  36. package/extension/src/content/runFailureNotice.js +14 -1
  37. package/extension/src/content/runGuidanceController.js +4 -3
  38. package/extension/src/content/runPresence.js +306 -0
  39. package/extension/src/content/runQueueScheduler.js +2 -1
  40. package/extension/src/content/runResultActions.js +123 -3
  41. package/extension/src/content/runTimelineView.js +194 -164
  42. package/extension/src/content/scopedPersistenceCoordinator.js +2 -1
  43. package/extension/src/content/scopedPersistencePanelState.js +45 -2
  44. package/extension/src/content/selectionContextView.js +300 -0
  45. package/extension/src/content/sessionPersistence.js +10 -2
  46. package/extension/src/content/settingsPanel.js +93 -54
  47. package/extension/src/content/settingsWorkbench.js +374 -0
  48. package/extension/src/content/sharedSessionViewSync.js +72 -0
  49. package/extension/src/content/subagentActivityView.js +195 -0
  50. package/extension/src/content/trackedChangeCaptureController.js +7 -3
  51. package/extension/src/content/updateNotice.js +121 -50
  52. package/extension/src/content/writebackController.js +257 -0
  53. package/extension/src/content/writebackOrchestrator.js +146 -141
  54. package/extension/src/content/writebackPlan.js +231 -0
  55. package/extension/src/content/writebackRecovery.js +122 -0
  56. package/extension/src/content/writingStyleSettings.js +576 -0
  57. package/extension/src/content/writtenChangesView.js +152 -0
  58. package/extension/src/page/binaryAssetUploader.js +97 -19
  59. package/extension/src/page/overleafProjectSnapshot.js +1 -0
  60. package/extension/src/page/referenceProjects.js +148 -0
  61. package/extension/src/page/saveState.js +58 -3
  62. package/extension/src/page/snapshotRouter.js +44 -13
  63. package/extension/src/page/textCoordinates.js +102 -0
  64. package/extension/src/page/textFileCreator.js +350 -59
  65. package/extension/src/page/trackedChangeCapture.js +42 -56
  66. package/extension/src/page/trackedChangeOwnership.js +198 -0
  67. package/extension/src/page/trackedChangeReplay.js +164 -0
  68. package/extension/src/page/trackedChangesLifecycle.js +139 -150
  69. package/extension/src/page/treeOperations.js +36 -29
  70. package/extension/src/page/writebackReceiptJournal.js +112 -0
  71. package/extension/src/page/writebackRouter.js +176 -136
  72. package/extension/src/pageBridge.js +59 -101
  73. package/extension/src/popup.js +203 -59
  74. package/extension/src/shared/agentTranscript.js +18 -4
  75. package/extension/src/shared/auditRecords.js +71 -0
  76. package/extension/src/shared/changeHistoryModel.js +94 -0
  77. package/extension/src/shared/compatibility.js +1 -1
  78. package/extension/src/shared/compileAdapter.js +42 -0
  79. package/extension/src/shared/failureReasons.js +20 -0
  80. package/extension/src/shared/globalPreferences.js +1 -1
  81. package/extension/src/shared/i18n.js +187 -65
  82. package/extension/src/shared/managedUpdateProjection.js +6 -3
  83. package/extension/src/shared/pageRpcContract.js +7 -1
  84. package/extension/src/shared/providerProfiles.js +109 -0
  85. package/extension/src/shared/runActivityModel.js +361 -0
  86. package/extension/src/shared/runExecutionSnapshot.js +8 -2
  87. package/extension/src/shared/runExecutionSnapshotCodec.js +16 -4
  88. package/extension/src/shared/scopedPersistenceBrowserAdapter.js +6 -3
  89. package/extension/src/shared/selectionContext.js +28 -0
  90. package/extension/src/shared/sessionState.js +97 -6
  91. package/extension/src/shared/sharedSessionBridge.js +288 -0
  92. package/extension/src/shared/storageDb.js +23 -55
  93. package/extension/src/shared/storageMigration.js +3 -0
  94. package/extension/src/shared/storageRunActions.js +54 -4
  95. package/extension/src/shared/storageValuePruning.js +40 -0
  96. package/extension/src/shared/subagentActivityModel.js +174 -0
  97. package/extension/src/shared/undoOperations.js +87 -0
  98. package/extension/src/shared/updateConsent.js +37 -8
  99. package/extension/src/shared/writebackIntent.js +62 -0
  100. package/extension/src/shared/writebackSettlement.js +29 -10
  101. package/extension/src/shared/writingStyle.js +33 -0
  102. package/extension/styles/panel.css +2136 -744
  103. package/extension/styles/popup.css +110 -0
  104. package/native-host/src/anthropicBridgeRequest.js +2 -1
  105. package/native-host/src/codexModelRecovery.js +107 -0
  106. package/native-host/src/codexPromptAssembly.js +2 -0
  107. package/native-host/src/codexProviderLaunch.js +3 -3
  108. package/native-host/src/codexRuntimeIdentity.js +1 -0
  109. package/native-host/src/codexSessionRunner.js +146 -177
  110. package/native-host/src/codexSessionTiming.js +71 -0
  111. package/native-host/src/managedInstall.js +5 -4
  112. package/native-host/src/nativeEnvironment.js +70 -0
  113. package/native-host/src/nativeQuotas.js +15 -8
  114. package/native-host/src/overleafWorkspaceRules.js +16 -0
  115. package/native-host/src/processStopBarrier.js +80 -0
  116. package/native-host/src/providerModelCatalog.js +4 -3
  117. package/native-host/src/providerProfile.js +13 -1
  118. package/native-host/src/providerReasoning.js +9 -5
  119. package/native-host/src/providerStore.js +4 -0
  120. package/native-host/src/readProgressGuard.js +84 -17
  121. package/native-host/src/releaseTransport.js +14 -5
  122. package/native-host/src/selectionScope.js +58 -0
  123. package/native-host/src/skills/parallel-subagents/SKILL.md +31 -3
  124. package/native-host/src/skills/writing-style-builder/SKILL.md +146 -0
  125. package/native-host/src/subagentBroker.js +102 -98
  126. package/native-host/src/subagentTelemetry.js +316 -0
  127. package/native-host/src/subagentWorkspace.js +103 -0
  128. package/native-host/src/subagentWorkspacePath.js +31 -0
  129. package/native-host/src/taskRunnerRuntime.js +55 -5
  130. package/native-host/src/turnAttachments.js +113 -0
  131. package/native-host/src/updateManager.js +122 -12
  132. package/native-host/src/updateNetworkControl.js +75 -0
  133. package/native-host/src/updateTrust.js +21 -2
  134. package/native-host/src/vendor/pdfjs/LICENSE +177 -0
  135. package/native-host/src/vendor/pdfjs/SOURCE.txt +3 -0
  136. package/native-host/src/vendor/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
  137. package/native-host/src/vendor/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
  138. package/native-host/src/vendor/pdfjs/cmaps/78-H.bcmap +0 -0
  139. package/native-host/src/vendor/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
  140. package/native-host/src/vendor/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
  141. package/native-host/src/vendor/pdfjs/cmaps/78-V.bcmap +0 -0
  142. package/native-host/src/vendor/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
  143. package/native-host/src/vendor/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
  144. package/native-host/src/vendor/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
  145. package/native-host/src/vendor/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
  146. package/native-host/src/vendor/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
  147. package/native-host/src/vendor/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
  148. package/native-host/src/vendor/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
  149. package/native-host/src/vendor/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
  150. package/native-host/src/vendor/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
  151. package/native-host/src/vendor/pdfjs/cmaps/Add-H.bcmap +0 -0
  152. package/native-host/src/vendor/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
  153. package/native-host/src/vendor/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
  154. package/native-host/src/vendor/pdfjs/cmaps/Add-V.bcmap +0 -0
  155. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
  156. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
  157. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
  158. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
  159. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
  160. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
  161. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
  162. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  163. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
  164. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
  165. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
  166. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
  167. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
  168. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
  169. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  170. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
  171. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
  172. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
  173. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
  174. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
  175. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
  176. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
  177. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  178. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
  179. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
  180. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
  181. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  182. package/native-host/src/vendor/pdfjs/cmaps/B5-H.bcmap +0 -0
  183. package/native-host/src/vendor/pdfjs/cmaps/B5-V.bcmap +0 -0
  184. package/native-host/src/vendor/pdfjs/cmaps/B5pc-H.bcmap +0 -0
  185. package/native-host/src/vendor/pdfjs/cmaps/B5pc-V.bcmap +0 -0
  186. package/native-host/src/vendor/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
  187. package/native-host/src/vendor/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
  188. package/native-host/src/vendor/pdfjs/cmaps/CNS1-H.bcmap +0 -0
  189. package/native-host/src/vendor/pdfjs/cmaps/CNS1-V.bcmap +0 -0
  190. package/native-host/src/vendor/pdfjs/cmaps/CNS2-H.bcmap +0 -0
  191. package/native-host/src/vendor/pdfjs/cmaps/CNS2-V.bcmap +3 -0
  192. package/native-host/src/vendor/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
  193. package/native-host/src/vendor/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
  194. package/native-host/src/vendor/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
  195. package/native-host/src/vendor/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
  196. package/native-host/src/vendor/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
  197. package/native-host/src/vendor/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
  198. package/native-host/src/vendor/pdfjs/cmaps/EUC-H.bcmap +0 -0
  199. package/native-host/src/vendor/pdfjs/cmaps/EUC-V.bcmap +0 -0
  200. package/native-host/src/vendor/pdfjs/cmaps/Ext-H.bcmap +0 -0
  201. package/native-host/src/vendor/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
  202. package/native-host/src/vendor/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
  203. package/native-host/src/vendor/pdfjs/cmaps/Ext-V.bcmap +0 -0
  204. package/native-host/src/vendor/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
  205. package/native-host/src/vendor/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
  206. package/native-host/src/vendor/pdfjs/cmaps/GB-H.bcmap +4 -0
  207. package/native-host/src/vendor/pdfjs/cmaps/GB-V.bcmap +0 -0
  208. package/native-host/src/vendor/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
  209. package/native-host/src/vendor/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
  210. package/native-host/src/vendor/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
  211. package/native-host/src/vendor/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
  212. package/native-host/src/vendor/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
  213. package/native-host/src/vendor/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
  214. package/native-host/src/vendor/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
  215. package/native-host/src/vendor/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
  216. package/native-host/src/vendor/pdfjs/cmaps/GBT-H.bcmap +0 -0
  217. package/native-host/src/vendor/pdfjs/cmaps/GBT-V.bcmap +0 -0
  218. package/native-host/src/vendor/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
  219. package/native-host/src/vendor/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
  220. package/native-host/src/vendor/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
  221. package/native-host/src/vendor/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
  222. package/native-host/src/vendor/pdfjs/cmaps/H.bcmap +0 -0
  223. package/native-host/src/vendor/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
  224. package/native-host/src/vendor/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
  225. package/native-host/src/vendor/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
  226. package/native-host/src/vendor/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
  227. package/native-host/src/vendor/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
  228. package/native-host/src/vendor/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
  229. package/native-host/src/vendor/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
  230. package/native-host/src/vendor/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
  231. package/native-host/src/vendor/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
  232. package/native-host/src/vendor/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
  233. package/native-host/src/vendor/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
  234. package/native-host/src/vendor/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
  235. package/native-host/src/vendor/pdfjs/cmaps/Hankaku.bcmap +0 -0
  236. package/native-host/src/vendor/pdfjs/cmaps/Hiragana.bcmap +0 -0
  237. package/native-host/src/vendor/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
  238. package/native-host/src/vendor/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
  239. package/native-host/src/vendor/pdfjs/cmaps/KSC-H.bcmap +0 -0
  240. package/native-host/src/vendor/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
  241. package/native-host/src/vendor/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
  242. package/native-host/src/vendor/pdfjs/cmaps/KSC-V.bcmap +0 -0
  243. package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
  244. package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  245. package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  246. package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
  247. package/native-host/src/vendor/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
  248. package/native-host/src/vendor/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
  249. package/native-host/src/vendor/pdfjs/cmaps/Katakana.bcmap +0 -0
  250. package/native-host/src/vendor/pdfjs/cmaps/LICENSE +36 -0
  251. package/native-host/src/vendor/pdfjs/cmaps/NWP-H.bcmap +0 -0
  252. package/native-host/src/vendor/pdfjs/cmaps/NWP-V.bcmap +0 -0
  253. package/native-host/src/vendor/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
  254. package/native-host/src/vendor/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
  255. package/native-host/src/vendor/pdfjs/cmaps/Roman.bcmap +0 -0
  256. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  257. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  258. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  259. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  260. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  261. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  262. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  263. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  264. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
  265. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
  266. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
  267. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
  268. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
  269. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
  270. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
  271. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
  272. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  273. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  274. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  275. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  276. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  277. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  278. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  279. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  280. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  281. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  282. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  283. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  284. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  285. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  286. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  287. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  288. package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  289. package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  290. package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  291. package/native-host/src/vendor/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  292. package/native-host/src/vendor/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  293. package/native-host/src/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  294. package/native-host/src/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  295. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
  296. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
  297. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
  298. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
  299. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
  300. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
  301. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
  302. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
  303. package/native-host/src/vendor/pdfjs/cmaps/V.bcmap +0 -0
  304. package/native-host/src/vendor/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
  305. package/native-host/src/vendor/pdfjs/pdf.mjs +26740 -0
  306. package/native-host/src/vendor/pdfjs/pdf.worker.mjs +62201 -0
  307. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
  308. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
  309. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
  310. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
  311. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
  312. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
  313. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
  314. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
  315. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
  316. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
  317. package/native-host/src/vendor/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
  318. package/native-host/src/vendor/pdfjs/standard_fonts/LICENSE_LIBERATION +102 -0
  319. package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
  320. package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  321. package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
  322. package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
  323. package/native-host/src/writingStyleEvidence.js +102 -0
  324. package/native-host/src/writingStylePdfWorker.js +35 -0
  325. package/native-host/src/writingStyleProfile.js +165 -0
  326. package/native-host/src/writingStyleRuntime.js +447 -0
  327. package/package.json +1 -1
@@ -2,6 +2,303 @@
2
2
  --codex-overleaf-panel-width: 380px;
3
3
  }
4
4
 
5
+ /* Independent child-conversation view. Execution and the composer stay mounted. */
6
+ #codex-overleaf-panel .run-subagents { margin: 12px 0 16px; min-width: 0; }
7
+ #codex-overleaf-panel .run-subagents[hidden] { display: none !important; }
8
+ #codex-overleaf-panel .run-subagents-heading { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 5px; color: var(--tl-fg-3); font-size: 12px; }
9
+ #codex-overleaf-panel .run-subagents-count { margin-left: auto; font-variant-numeric: tabular-nums; }
10
+ #codex-overleaf-panel .run-subagent-row { display: flex; align-items: center; gap: 10px; width: 100%; min-width: 0; min-height: 52px; padding: 9px 8px; margin: 0; text-align: left; border: 0; border-radius: 7px; background: transparent; color: var(--tl-fg-2); box-shadow: none; cursor: pointer; }
11
+ #codex-overleaf-panel .run-subagent-row:hover { background: var(--tl-hover); }
12
+ #codex-overleaf-panel .run-subagent-row > .run-workflow-icon { flex: 0 0 16px; color: var(--tl-fg-3); }
13
+ #codex-overleaf-panel .run-subagent-row[data-state="running"] > .run-workflow-icon { color: var(--tl-run); }
14
+ #codex-overleaf-panel .run-subagent-copy { display: grid; gap: 3px; flex: 1; min-width: 0; }
15
+ #codex-overleaf-panel .run-subagent-name { font-size: 13px; font-weight: 500; color: var(--tl-fg-1); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
16
+ #codex-overleaf-panel .run-subagent-activity { font-size: 12px; line-height: 1.5; color: var(--tl-fg-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
17
+ #codex-overleaf-panel .run-subagent-tail { flex: 0 0 auto; display: grid; gap: 3px; justify-items: end; font-size: 11px; font-weight: 400; color: var(--tl-fg-3); }
18
+ #codex-overleaf-panel .run-subagent-time { font-variant-numeric: tabular-nums; }
19
+ #codex-overleaf-panel .run-subagent-row[data-state="failed"] .run-subagent-tail { color: var(--tl-fail); }
20
+ #codex-overleaf-panel .run-subagent-row[data-state="completed"] .run-subagent-tail { color: var(--tl-ok); }
21
+ #codex-overleaf-panel .run-presentation-workflow .run-activity-list { display: grid; }
22
+ #codex-overleaf-panel .codex-subagent-view { position: absolute; z-index: 30; inset: 0; display: flex; flex-direction: column; min-width: 0; overflow: hidden; background: var(--tl-surface-0); color: var(--tl-fg-1); font: inherit; }
23
+ #codex-overleaf-panel .codex-subagent-view [hidden] { display: none !important; }
24
+ #codex-overleaf-panel .codex-subagent-view-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px 8px; }
25
+ #codex-overleaf-panel .codex-subagent-back,
26
+ #codex-overleaf-panel .codex-subagent-sibling,
27
+ #codex-overleaf-panel .codex-subagent-latest { min-height: 32px; margin: 0; padding: 5px 8px; border: 1px solid transparent; border-radius: 6px; background: transparent; color: var(--tl-fg-2); box-shadow: none; font: inherit; font-size: 12px; cursor: pointer; }
28
+ #codex-overleaf-panel .codex-subagent-back:hover,
29
+ #codex-overleaf-panel .codex-subagent-sibling:hover { background: var(--tl-hover); }
30
+ #codex-overleaf-panel .codex-subagent-readonly { font-size: 11px; color: var(--tl-fg-3); }
31
+ #codex-overleaf-panel .codex-subagent-parent { display: grid; gap: 4px; padding: 7px 22px 12px; font-size: 12px; line-height: 1.5; color: var(--tl-fg-3); min-width: 0; }
32
+ #codex-overleaf-panel .codex-subagent-parent-label { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
33
+ #codex-overleaf-panel .codex-subagent-parent-count { font-size: 11px; }
34
+ #codex-overleaf-panel .codex-subagent-siblings { display: flex; flex-wrap: wrap; gap: 4px; padding: 0 18px 10px; flex: 0 0 auto; max-height: 116px; overflow-y: auto; }
35
+ #codex-overleaf-panel .codex-subagent-sibling { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
36
+ #codex-overleaf-panel .codex-subagent-sibling[aria-pressed="true"] { background: var(--tl-hover); color: var(--tl-fg-1); }
37
+ #codex-overleaf-panel .codex-subagent-body { flex: 1; min-height: 0; min-width: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; padding: 12px 22px 24px; scrollbar-gutter: stable; }
38
+ #codex-overleaf-panel .codex-subagent-title { margin: 0 0 6px; font-size: 17px; line-height: 1.4; font-weight: 600; overflow-wrap: anywhere; }
39
+ #codex-overleaf-panel .codex-subagent-meta { font-size: 11px; color: var(--tl-fg-3); line-height: 1.5; margin-bottom: 18px; }
40
+ #codex-overleaf-panel .codex-subagent-assignment { margin-bottom: 18px; font-size: 12px; color: var(--tl-fg-3); }
41
+ #codex-overleaf-panel .codex-subagent-assignment summary { cursor: pointer; padding: 5px 0; }
42
+ #codex-overleaf-panel .codex-subagent-assignment p { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 12px; line-height: 1.6; }
43
+ #codex-overleaf-panel .codex-subagent-empty,
44
+ #codex-overleaf-panel .codex-subagent-history-note { font-size: 12px; line-height: 1.6; color: var(--tl-fg-3); margin: 12px 0; }
45
+ #codex-overleaf-panel .codex-subagent-latest { align-self: center; background: var(--tl-surface-2); border-color: var(--tl-border); }
46
+ #codex-overleaf-panel .codex-subagent-footer { flex: 0 0 auto; padding: 12px 22px; font-size: 11px; color: var(--tl-fg-3); }
47
+ #codex-overleaf-panel .codex-subagent-view :is(pre, code) { max-width: 100%; overflow-wrap: anywhere; }
48
+ #codex-overleaf-panel :is(.run-subagent-row, .codex-subagent-back, .codex-subagent-sibling, .codex-subagent-latest):focus-visible { outline: 2px solid var(--tl-accent); outline-offset: 2px; }
49
+ @media (pointer: coarse) {
50
+ #codex-overleaf-panel :is(.codex-subagent-back, .codex-subagent-sibling, .codex-subagent-latest) { min-height: 44px; }
51
+ }
52
+
53
+ /* Protocol-brand marks inherit the provider dialog's light/dark foreground. */
54
+ .codex-provider-dialog-root .codex-provider-nav-mark .codex-provider-brand-icon,
55
+ .codex-provider-dialog-root .codex-provider-template-mark .codex-provider-brand-icon {
56
+ display: block;
57
+ flex: 0 0 22px;
58
+ width: 22px;
59
+ height: 22px;
60
+ fill: currentColor;
61
+ }
62
+
63
+ /* Minimal model setup keeps optional controls available without front-loading them. */
64
+ .codex-provider-dialog-root .codex-provider-model-editor.is-minimal { width: min(540px, calc(100vw - 32px)); }
65
+ .codex-provider-dialog-root .is-minimal .codex-provider-model-editor-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 20px 22px 18px; }
66
+ .codex-provider-dialog-root .codex-provider-model-close { display: grid; place-items: center; flex: 0 0 28px; width: 28px; height: 28px; padding: 0; border: 0; border-radius: 6px; background: transparent; color: var(--provider-muted); cursor: pointer; }
67
+ .codex-provider-dialog-root .codex-provider-model-close:hover { background: var(--provider-hover); color: var(--provider-text); }
68
+ .codex-provider-dialog-root .codex-provider-model-close svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; }
69
+ .codex-provider-dialog-root .codex-provider-model-basics { display: grid; gap: 18px; }
70
+ .codex-provider-dialog-root .codex-provider-model-types-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 8px; color: var(--provider-field-label); font-size: 12px; }
71
+ .codex-provider-dialog-root .codex-provider-model-types-head small { color: var(--provider-muted); font-size: 11px; }
72
+ .codex-provider-dialog-root .codex-provider-type-options { display: flex; flex-wrap: wrap; gap: 8px; }
73
+ .codex-provider-dialog-root .codex-provider-type-chip { box-sizing: border-box; display: inline-flex; align-items: center; gap: 7px; min-height: 34px; margin: 0; padding: 6px 10px; border: 1px solid var(--provider-checkbox-border); border-radius: 7px; color: var(--provider-text); font-size: 12px; cursor: pointer; }
74
+ .codex-provider-dialog-root .codex-provider-type-chip.is-fixed { cursor: default; border-color: var(--provider-line); background: var(--provider-bg); }
75
+ .codex-provider-dialog-root .codex-provider-type-chip small { font-size: 10px; color: var(--provider-muted); }
76
+ .codex-provider-dialog-root .codex-provider-type-chip svg { width: 14px; height: 14px; fill: none; stroke: var(--provider-accent); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
77
+ .codex-provider-dialog-root .codex-provider-type-chip input { appearance: auto; position: static; width: 14px; height: 14px; min-width: 14px; min-height: 14px; margin: 0; opacity: 1; accent-color: var(--provider-accent); }
78
+ .codex-provider-dialog-root .codex-provider-type-chip:has(input:checked) { border-color: var(--provider-accent); background: color-mix(in srgb, var(--provider-accent) 10%, var(--provider-surface)); }
79
+ .codex-provider-dialog-root .codex-provider-type-chip:has(input:focus-visible) { outline: 2px solid var(--provider-accent); outline-offset: 2px; }
80
+ .codex-provider-dialog-root .codex-provider-model-settings { margin-top: 12px; }
81
+ .codex-provider-dialog-root .codex-provider-model-basics + .codex-provider-model-settings { margin-top: 22px; }
82
+ .codex-provider-dialog-root .codex-provider-model-settings > summary { display: flex; align-items: center; gap: 8px; min-height: 34px; padding: 4px 0; color: var(--provider-text); font-size: 12px; cursor: pointer; list-style: none; }
83
+ .codex-provider-dialog-root .codex-provider-model-settings > summary::-webkit-details-marker { display: none; }
84
+ .codex-provider-dialog-root .codex-provider-model-settings > summary::before { content: ""; width: 5px; height: 5px; flex: 0 0 5px; margin-right: 3px; border-top: 1px solid currentColor; border-right: 1px solid currentColor; transform: rotate(45deg); color: var(--provider-muted); }
85
+ .codex-provider-dialog-root .codex-provider-model-settings[open] > summary::before { transform: rotate(135deg); }
86
+ .codex-provider-dialog-root .codex-provider-model-settings > summary small { min-width: 0; max-width: 65%; margin-left: auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--provider-muted); font-size: 11px; }
87
+ .codex-provider-dialog-root .codex-provider-model-settings > summary:focus-visible { outline: 2px solid var(--provider-accent); outline-offset: 2px; border-radius: 4px; }
88
+ .codex-provider-dialog-root .codex-provider-model-settings-body { padding: 8px 0 6px; }
89
+ .codex-provider-dialog-root .codex-provider-model-settings-body .codex-provider-effort-chips { margin-bottom: 16px; }
90
+ .codex-provider-dialog-root .is-minimal .codex-provider-model-editor-foot { align-items: center; flex-wrap: wrap; gap: 8px; padding-top: 12px; }
91
+ .codex-provider-dialog-root .is-minimal .codex-provider-model-editor-foot > small { flex: 1; margin-right: auto; color: var(--provider-muted); font-size: 10px; line-height: 1.4; }
92
+
93
+ /* Provider confirmations belong to the plugin's top layer, not window.confirm. */
94
+ .codex-provider-dialog-root .codex-provider-confirmation {
95
+ box-sizing: border-box;
96
+ width: min(440px, calc(100vw - 32px));
97
+ max-height: calc(100dvh - 40px);
98
+ margin: auto;
99
+ padding: 0;
100
+ overflow: auto;
101
+ border: 1px solid var(--provider-line);
102
+ border-radius: 12px;
103
+ background: var(--provider-surface);
104
+ color: var(--provider-text);
105
+ box-shadow: var(--provider-shadow);
106
+ font: inherit;
107
+ }
108
+ .codex-provider-dialog-root .codex-provider-confirmation:not([open]) { display: none; }
109
+ .codex-provider-dialog-root .codex-provider-confirmation::backdrop { background: var(--provider-backdrop); }
110
+ .codex-provider-dialog-root .codex-provider-confirmation header { padding: 20px 22px 0; }
111
+ .codex-provider-dialog-root .codex-provider-confirm-brand { color: var(--provider-muted); font-size: 11px; }
112
+ .codex-provider-dialog-root .codex-provider-confirmation h3 { margin: 8px 0 0; color: var(--provider-text); font-size: 17px; font-weight: 650; line-height: 1.4; }
113
+ .codex-provider-dialog-root .codex-provider-confirmation p { margin: 12px 0 0; padding: 0 22px; font-size: 13px; line-height: 1.65; overflow-wrap: anywhere; }
114
+ .codex-provider-dialog-root .codex-provider-confirmation footer { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; padding: 20px 22px; }
115
+ .codex-provider-dialog-root .codex-provider-confirmation button { min-height: 36px; white-space: normal; }
116
+ .codex-provider-dialog-root .codex-provider-confirmation .codex-provider-danger-button { border-color: var(--provider-danger); color: var(--provider-danger); }
117
+ .codex-provider-dialog-root .codex-provider-confirmation button:hover { background: var(--provider-hover); }
118
+
119
+ /* Provider workspace: ZCode-inspired resource navigation and model-level drafts. */
120
+ .codex-provider-dialog-root.codex-provider-v2 .codex-provider-dialog {
121
+ width: min(940px, calc(100vw - 32px));
122
+ height: min(760px, calc(100dvh - 32px));
123
+ max-height: calc(100dvh - 32px);
124
+ background: var(--provider-surface);
125
+ border-radius: 14px;
126
+ }
127
+ .codex-provider-v2 .codex-provider-dialog-head { padding: 18px 22px; gap: 14px; }
128
+ .codex-provider-v2 .codex-provider-dialog-head h2 { font-size: 17px; font-weight: 650; }
129
+ .codex-provider-v2 .codex-provider-dialog-head p { line-height: 1.5; }
130
+ .codex-provider-v2 .codex-provider-dialog-body { grid-template-columns: 208px minmax(0, 1fr); }
131
+ .codex-provider-v2 .codex-provider-list { display: flex; flex-direction: column; gap: 12px; padding: 14px 10px; background: var(--provider-bg); }
132
+ .codex-provider-v2 .codex-provider-nav-items { flex: 1; min-height: 0; overflow: auto; }
133
+ .codex-provider-v2 .codex-provider-row { display: flex; flex-direction: row; align-items: center; gap: 10px; padding: 10px; }
134
+ .codex-provider-v2 .codex-provider-row[aria-current="true"] { box-shadow: none; background: var(--provider-hover); }
135
+ .codex-provider-v2 .codex-provider-nav-copy { display: grid; gap: 4px; min-width: 0; flex: 1; }
136
+ .codex-provider-v2 .codex-provider-nav-mark,
137
+ .codex-provider-v2 .codex-provider-template-mark { display: grid; place-items: center; flex: 0 0 30px; width: 30px; height: 30px; border: 1px solid var(--provider-line); border-radius: 8px; background: var(--provider-surface); color: var(--provider-text); font-size: 13px; font-weight: 650; }
138
+ .codex-provider-v2 .codex-provider-add { flex: 0 0 auto; margin: 0; padding: 10px; font-size: 12px; }
139
+ .codex-provider-v2 .codex-provider-search { display: block; min-width: 0; }
140
+ .codex-provider-v2 .codex-provider-search input { box-sizing: border-box; width: 100%; min-width: 0; padding: 8px 10px; border: 1px solid var(--provider-line); border-radius: 7px; background: transparent; color: var(--provider-text); font: inherit; font-size: 12px; }
141
+ .codex-provider-v2 .codex-provider-search input::placeholder { color: var(--provider-muted); opacity: 1; }
142
+ .codex-provider-v2 .codex-provider-detail { padding: 24px 28px; background: var(--provider-surface); }
143
+ .codex-provider-v2 .codex-provider-detail-titleline { margin-bottom: 20px; align-items: center; }
144
+ .codex-provider-v2 .codex-provider-detail-titleline > div { min-width: 0; flex: 1; }
145
+ .codex-provider-v2 .codex-provider-name-field { display: block; }
146
+ .codex-provider-v2 .codex-provider-name-field > span,
147
+ .codex-provider-v2 .codex-provider-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
148
+ .codex-provider-v2 .codex-provider-name-field input { min-height: 32px; padding: 2px 5px; margin-left: -5px; border-color: transparent; background: transparent; font-size: 20px; font-weight: 650; }
149
+ .codex-provider-v2 .codex-provider-name-field input:hover { border-color: var(--provider-line); }
150
+ .codex-provider-v2 .codex-provider-detail-titleline p { font-size: 11px; }
151
+ .codex-provider-v2 .codex-provider-form-grid { gap: 14px 16px; }
152
+ .codex-provider-v2 .codex-provider-field { gap: 6px; font-weight: 500; }
153
+ .codex-provider-v2 .codex-provider-field :is(input,select,textarea) { min-height: 36px; font-size: 13px; color: var(--provider-text); background: var(--provider-control-bg); }
154
+ .codex-provider-v2 .codex-provider-secret-row { align-items: stretch; gap: 5px; }
155
+ .codex-provider-v2 .codex-provider-secret-row input { flex: 1; min-width: 0; }
156
+ .codex-provider-v2 .codex-provider-inline-button { padding: 0 9px; min-height: 30px; font-weight: 500; }
157
+ .codex-provider-v2 .codex-provider-inline-button:hover { background: var(--provider-hover); }
158
+ .codex-provider-v2 .codex-provider-model-section { margin-top: 28px; }
159
+ .codex-provider-v2 .codex-provider-section-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
160
+ .codex-provider-v2 .codex-provider-section-head h4 { margin: 0; font-size: 13px; font-weight: 650; color: var(--provider-text); }
161
+ .codex-provider-v2 .codex-provider-section-head h4 span { margin-left: 6px; font-size: 11px; font-weight: 450; color: var(--provider-muted); }
162
+ .codex-provider-v2 .codex-provider-section-head p,
163
+ .codex-provider-v2 .codex-provider-help { margin: 5px 0 12px; color: var(--provider-muted); font-size: 11px; line-height: 1.6; }
164
+ .codex-provider-v2 .codex-provider-section-head p { margin-bottom: 0; }
165
+ .codex-provider-v2 .codex-provider-model-list { margin-top: 8px; display: grid; gap: 5px; }
166
+ .codex-provider-v2 .codex-provider-model-row { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; column-gap: 10px; padding: 11px 10px; background: var(--provider-bg); border-radius: 9px; }
167
+ .codex-provider-v2 .codex-provider-model-identity { display: grid; gap: 4px; min-width: 0; padding: 0; border: 0; background: transparent; color: var(--provider-text); text-align: left; cursor: pointer; }
168
+ .codex-provider-v2 .codex-provider-model-identity strong { display: flex; align-items: baseline; gap: 7px; flex-wrap: wrap; font-size: 13px; font-weight: 600; overflow-wrap: anywhere; }
169
+ .codex-provider-v2 .codex-provider-model-identity code { font-size: 11px; padding: 0; background: transparent; color: var(--provider-muted); overflow-wrap: anywhere; }
170
+ .codex-provider-v2 .codex-provider-model-identity small { font-size: 11px; color: var(--provider-muted); }
171
+ .codex-provider-v2 .codex-provider-default-tag { color: var(--provider-accent); font-size: 10px; font-weight: 500; }
172
+ .codex-provider-v2 .codex-provider-model-actions { display: flex; align-items: center; gap: 1px; }
173
+ .codex-provider-v2 .codex-provider-model-action { display: grid; place-items: center; width: 28px; height: 28px; border: 0; border-radius: 6px; background: transparent; color: var(--provider-muted); cursor: pointer; }
174
+ .codex-provider-v2 .codex-provider-model-action:hover { color: var(--provider-text); background: var(--provider-hover); }
175
+ .codex-provider-v2 .codex-provider-model-action[data-selected="true"] { color: var(--provider-accent); }
176
+ .codex-provider-v2 .codex-provider-model-action[data-provider-model-action="remove"]:hover { color: var(--provider-danger); }
177
+ .codex-provider-v2 .codex-provider-model-action svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
178
+ .codex-provider-v2 .codex-provider-model-status { grid-column: 1/-1; margin-top: 5px; font-size: 10px; color: var(--provider-muted); line-height: 1.4; overflow-wrap: anywhere; }
179
+ .codex-provider-v2 .codex-provider-model-status[data-tone="success"] { color: var(--provider-accent); }
180
+ .codex-provider-v2 .codex-provider-model-status[data-tone="failed"] { color: var(--provider-danger); }
181
+ .codex-provider-v2 .codex-provider-model-empty { padding: 22px 14px; border: 1px dashed var(--provider-line); border-radius: 9px; color: var(--provider-muted); font-size: 12px; line-height: 1.65; }
182
+ .codex-provider-v2 .codex-provider-advanced { margin-top: 24px; border: 0; padding: 0; }
183
+ .codex-provider-v2 .codex-provider-advanced summary { padding: 8px 0; font-weight: 500; }
184
+ .codex-provider-v2 .codex-provider-advanced[open] summary { margin-bottom: 8px; }
185
+ .codex-provider-v2 .codex-provider-disclosure { margin-top: 24px; background: var(--provider-bg); color: var(--provider-muted); padding: 10px 12px; }
186
+ .codex-provider-v2 .codex-provider-test-row { background: transparent; border: 0; padding: 12px 0 0; box-shadow: none; gap: 8px; }
187
+ .codex-provider-v2 .codex-provider-test-copy > span { display: none; }
188
+ .codex-provider-v2 .codex-provider-test-controls { grid-template-columns: minmax(0,1fr) auto; }
189
+ .codex-provider-v2 .codex-provider-test-select-shell select { min-height: 34px; font-weight: 450; font-size: 12px; background: var(--provider-control-bg); }
190
+ .codex-provider-v2 .codex-provider-test-select-shell select:hover { background: var(--provider-hover); border-color: var(--provider-line); }
191
+ .codex-provider-v2 .codex-provider-test-button { min-height: 34px; background: var(--provider-control-bg); border-color: var(--provider-line); color: var(--provider-text); box-shadow: none; font-weight: 500; transform: none; }
192
+ .codex-provider-v2 .codex-provider-test-button:not(:disabled):hover { background: var(--provider-hover); color: var(--provider-text); transform: none; }
193
+ .codex-provider-v2 .codex-provider-dialog-foot { min-height: 62px; padding: 12px 20px; gap: 12px; background: var(--provider-surface); }
194
+ .codex-provider-v2 .codex-provider-footer-actions { flex-wrap: wrap; justify-content: flex-end; }
195
+ .codex-provider-v2 .codex-provider-secondary-button[data-provider-action="save"]:not(:disabled) { background: var(--provider-control-bg); border-color: var(--provider-line); color: var(--provider-text); box-shadow: none; }
196
+ .codex-provider-v2 .codex-provider-secondary-button[data-provider-action="save"]:not(:disabled):hover { background: var(--provider-hover); }
197
+ .codex-provider-v2 .codex-provider-template-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
198
+ .codex-provider-v2 .codex-provider-template-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin: 22px 0; }
199
+ .codex-provider-v2 .codex-provider-template { display: flex; align-items: center; gap: 12px; min-height: 82px; padding: 14px; background: transparent; border: 1px solid var(--provider-line); border-radius: 10px; color: var(--provider-text); text-align: left; cursor: pointer; }
200
+ .codex-provider-v2 .codex-provider-template:hover { background: var(--provider-hover); }
201
+ .codex-provider-v2 .codex-provider-template > span:nth-child(2) { flex: 1; min-width: 0; }
202
+ .codex-provider-v2 .codex-provider-template strong { display: block; font-size: 13px; font-weight: 600; }
203
+ .codex-provider-v2 .codex-provider-template small { display: block; margin-top: 5px; font-size: 10px; line-height: 1.5; color: var(--provider-muted); }
204
+ .codex-provider-v2 .codex-provider-model-editor { box-sizing: border-box; width: min(570px,calc(100vw - 32px)); max-height: calc(100dvh - 40px); margin: auto; padding: 0; border: 1px solid var(--provider-line); border-radius: 12px; background: var(--provider-surface); color: var(--provider-text); font: inherit; box-shadow: var(--provider-shadow); }
205
+ .codex-provider-v2 .codex-provider-model-editor[open] { display: flex; flex-direction: column; }
206
+ .codex-provider-v2 .codex-provider-model-editor:not([open]) { display: none; }
207
+ .codex-provider-v2 .codex-provider-model-editor::backdrop { background: var(--provider-backdrop); }
208
+ .codex-provider-v2 .codex-provider-model-editor-head { flex: 0 0 auto; padding: 20px 22px 12px; }
209
+ .codex-provider-v2 .codex-provider-model-editor-head h3 { margin: 0; font-size: 17px; font-weight: 650; }
210
+ .codex-provider-v2 .codex-provider-model-editor-head p { margin: 7px 0 0; font-size: 11px; line-height: 1.5; color: var(--provider-muted); }
211
+ .codex-provider-v2 .codex-provider-model-editor-body { padding: 8px 22px 16px; overflow: auto; min-height: 0; }
212
+ .codex-provider-v2 .codex-provider-model-editor-foot { display: flex; flex: 0 0 auto; justify-content: flex-end; gap: 8px; padding: 14px 22px; }
213
+ .codex-provider-v2 .codex-provider-model-checkbox { display: flex; align-items: center; gap: 8px; margin: 16px 0; color: var(--provider-text); font-size: 12px; }
214
+ .codex-provider-v2 .codex-provider-model-checkbox input { accent-color: var(--provider-accent); }
215
+ .codex-provider-v2 .codex-provider-model-reasoning h4 { margin: 20px 0 0; font-size: 12px; font-weight: 600; }
216
+ .codex-provider-v2 .codex-provider-effort-chips { display: flex; flex-wrap: wrap; gap: 7px; }
217
+ .codex-provider-v2 .codex-provider-effort-chips label { cursor: pointer; }
218
+ .codex-provider-v2 .codex-provider-effort-chips input { position: absolute; opacity: 0; width: 1px; height: 1px; }
219
+ .codex-provider-v2 .codex-provider-effort-chips span { display: block; padding: 5px 9px; border: 1px solid var(--provider-line); border-radius: 6px; font-size: 12px; color: var(--provider-muted); }
220
+ .codex-provider-v2 .codex-provider-effort-chips input:checked + span { border-color: var(--provider-accent); color: var(--provider-accent); background: var(--provider-hover); }
221
+ .codex-provider-v2 .codex-provider-effort-chips input:focus-visible + span { outline: 2px solid var(--provider-accent); outline-offset: 2px; }
222
+ .codex-provider-v2 .codex-provider-model-error { color: var(--provider-danger); font-size: 12px; line-height: 1.6; }
223
+ .codex-provider-v2 [hidden] { display: none !important; }
224
+ @media (max-width: 660px) {
225
+ .codex-provider-v2 .codex-provider-dialog-body { grid-template-columns: 1fr; grid-template-rows: auto minmax(0,1fr); }
226
+ .codex-provider-v2 .codex-provider-list { display: flex; flex-direction: row; align-items: center; padding: 8px; gap: 6px; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--provider-line); }
227
+ .codex-provider-v2 .codex-provider-list > .codex-provider-search { display: none; }
228
+ .codex-provider-v2 .codex-provider-nav-items { display: flex; flex: 1 0 auto; gap: 4px; }
229
+ .codex-provider-v2 .codex-provider-row { flex: 0 0 140px; }
230
+ .codex-provider-v2 .codex-provider-add { flex: 0 0 auto; width: auto; white-space: nowrap; }
231
+ .codex-provider-v2 .codex-provider-detail { padding: 18px 16px; }
232
+ .codex-provider-v2 .codex-provider-dialog-foot { flex-wrap: wrap; padding: 10px 14px; }
233
+ .codex-provider-v2 .codex-provider-operation-status { flex: 1 1 100%; }
234
+ .codex-provider-v2 .codex-provider-footer-actions { width: 100%; }
235
+ .codex-provider-v2 .codex-provider-template-grid { grid-template-columns: 1fr; }
236
+ .codex-provider-v2 .codex-provider-form-grid { grid-template-columns: 1fr; }
237
+ }
238
+
239
+ /* Keep transcript scrolling vertical; wide content owns its own scroller. */
240
+ #codex-overleaf-panel .col-log.col-log {
241
+ box-sizing: border-box;
242
+ min-width: 0;
243
+ max-width: 100%;
244
+ overflow-x: hidden;
245
+ overflow-y: auto;
246
+ padding-inline: 4px;
247
+ scroll-padding-inline: 4px;
248
+ }
249
+
250
+ #codex-overleaf-panel .col-log :is(
251
+ .transcript-turn,
252
+ .transcript-turn-main,
253
+ .run-report,
254
+ .run-completion-report,
255
+ .run-final-answer,
256
+ .run-stream,
257
+ .run-stream-text,
258
+ .run-work-block,
259
+ .run-workflow-message,
260
+ .run-workflow-tool-body
261
+ ) {
262
+ box-sizing: border-box;
263
+ min-width: 0;
264
+ max-width: 100%;
265
+ }
266
+
267
+ #codex-overleaf-panel .col-log :is(
268
+ .run-final-answer,
269
+ .run-stream-text,
270
+ .run-workflow-message
271
+ ) > * {
272
+ box-sizing: border-box;
273
+ min-width: 0;
274
+ max-width: 100%;
275
+ }
276
+
277
+ #codex-overleaf-panel .col-log :is(
278
+ .run-final-answer__meta-label,
279
+ .run-final-answer__meta-value,
280
+ .codex-line-reference
281
+ ) {
282
+ min-width: 0;
283
+ max-width: 100%;
284
+ white-space: normal;
285
+ overflow-wrap: anywhere;
286
+ }
287
+
288
+ /* Preserve long code/formulas and table columns without widening the log. */
289
+ #codex-overleaf-panel .col-log :is(pre, .run-markdown-table, .run-math--display) {
290
+ box-sizing: border-box;
291
+ min-width: 0;
292
+ max-width: 100%;
293
+ overflow-x: auto;
294
+ overflow-y: hidden;
295
+ overscroll-behavior-x: contain;
296
+ }
297
+
298
+ #codex-overleaf-panel .col-log .run-markdown-table {
299
+ display: block;
300
+ }
301
+
5
302
  /* Rich response geometry is shared by streaming and settled output. Repeated
6
303
  class selectors intentionally outrank older component-local declarations. */
7
304
  #codex-overleaf-panel .run-stream-text.run-stream-text,
@@ -132,6 +429,497 @@
132
429
  justify-content: center;
133
430
  }
134
431
 
432
+ /* Settings workbench: the native top layer is independent of sidebar width. */
433
+ #codex-overleaf-panel .codex-settings-workbench {
434
+ --wb-surface: #20252a;
435
+ --wb-rail: #1a1f24;
436
+ --wb-input: #292f36;
437
+ --wb-line: #3b444d;
438
+ --wb-fg: var(--tl-fg-1, #e6e9ed);
439
+ --wb-muted: #a5aeb9;
440
+ --wb-green: #97c7a5;
441
+ --wb-green-soft: #293c31;
442
+ --wb-switch: #8cbf9a;
443
+ --wb-thumb: #152b1c;
444
+ color-scheme: dark;
445
+ position: fixed;
446
+ inset: 0;
447
+ margin: auto;
448
+ padding: 0;
449
+ width: min(940px, calc(100vw - 40px));
450
+ height: min(660px, calc(100vh - 40px));
451
+ height: min(660px, calc(100dvh - 40px));
452
+ max-width: none;
453
+ max-height: none;
454
+ overflow: hidden;
455
+ border: 1px solid var(--wb-line);
456
+ border-radius: 15px;
457
+ background: var(--wb-surface);
458
+ color: var(--wb-fg);
459
+ font: inherit;
460
+ font-size: 14px;
461
+ line-height: 1.5;
462
+ box-shadow: 0 22px 80px #00000040;
463
+ }
464
+ #codex-overleaf-panel[data-theme="light"] .codex-settings-workbench {
465
+ --wb-surface: #fafbfc;
466
+ --wb-rail: #f0f2f4;
467
+ --wb-input: #f0f2f4;
468
+ --wb-line: #d2d8df;
469
+ --wb-muted: #636d79;
470
+ --wb-green: #2c7044;
471
+ --wb-green-soft: #e5efe7;
472
+ --wb-switch: #377c4c;
473
+ --wb-thumb: #ffffff;
474
+ color-scheme: light;
475
+ }
476
+ #codex-overleaf-panel .codex-settings-workbench:not([open]) { display: none; }
477
+ #codex-overleaf-panel .codex-settings-workbench[open] { display: flex; flex-direction: column; animation: codexSettingsEnter 140ms ease-out; }
478
+ #codex-overleaf-panel .codex-settings-workbench::backdrop { background: #15201966; }
479
+ #codex-overleaf-panel .codex-settings-workbench [hidden] { display: none !important; }
480
+ #codex-overleaf-panel .codex-wb-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 20px 26px 18px; flex-shrink: 0; }
481
+ #codex-overleaf-panel .codex-wb-heading h2 { margin: 0; color: var(--wb-fg); font-size: 21px; line-height: 1.4; font-weight: 600; letter-spacing: -.35px; }
482
+ #codex-overleaf-panel .codex-wb-heading p { margin: 4px 0 0; color: var(--wb-muted); font-size: 12px; line-height: 1.5; }
483
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-close { flex: 0 0 32px; width: 32px; height: 32px; min-height: 32px; padding: 0; margin: 0; border: 1px solid transparent; border-radius: 7px; background: transparent; color: var(--wb-muted); font-size: 23px; line-height: 1; box-shadow: none; }
484
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-close:hover { color: var(--wb-fg); background: var(--wb-input); border-color: var(--wb-line); }
485
+ #codex-overleaf-panel .codex-wb-layout { display: grid; grid-template-columns: 205px minmax(0, 1fr); min-height: 0; flex: 1; }
486
+ #codex-overleaf-panel .codex-wb-sidebar { display: flex; flex-direction: column; min-height: 0; gap: 22px; padding: 18px 13px; background: var(--wb-rail); overflow-y: auto; }
487
+ #codex-overleaf-panel .codex-wb-filters { display: flex; gap: 3px; padding: 3px; background: var(--wb-surface); border-radius: 8px; }
488
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-filters button { flex: 1; min-width: 0; min-height: 31px; padding: 5px 6px; border: 0; border-radius: 5px; background: transparent; color: var(--wb-muted); box-shadow: none; font-size: 11px; font-weight: 500; white-space: normal; line-height: 1.5; }
489
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-filters button[aria-pressed="true"] { color: var(--wb-fg); background: var(--wb-input); }
490
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-filters button:disabled { opacity: .45; cursor: not-allowed; }
491
+ #codex-overleaf-panel .codex-wb-nav { display: flex; flex-direction: column; gap: 5px; }
492
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-nav-button { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 39px; margin: 0; padding: 9px 10px; border: 0; border-radius: 8px; background: transparent; box-shadow: none; color: var(--wb-muted); text-align: left; white-space: normal; font-size: 12.5px; font-weight: 500; line-height: 1.5; }
493
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-nav-button:hover { background: var(--wb-input); color: var(--wb-fg); }
494
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-nav-button[aria-selected="true"] { background: var(--wb-green-soft); color: var(--wb-green); }
495
+ #codex-overleaf-panel .codex-wb-nav-icon { display: flex; align-items: center; width: 16px; flex-shrink: 0; }
496
+ #codex-overleaf-panel .codex-wb-nav-icon .codex-icon { width: 16px; height: 16px; }
497
+ #codex-overleaf-panel .codex-wb-brand { margin-top: auto; padding: 12px 10px 0; color: var(--wb-muted); font-size: 11px; letter-spacing: .1px; }
498
+ #codex-overleaf-panel .codex-wb-main { display: flex; flex-direction: column; min-width: 0; min-height: 0; }
499
+ #codex-overleaf-panel .codex-wb-body { flex: 1; min-height: 0; min-width: 0; padding: 24px 30px; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
500
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-panel,
501
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel { display: block; min-height: 0; max-height: none; height: auto; width: 100%; padding: 0; margin: 0; border: 0; background: transparent; overflow: visible; box-shadow: none; }
502
+ #codex-overleaf-panel .codex-wb-page-title { margin: 0 0 23px; font-size: 20px; line-height: 1.45; font-weight: 600; letter-spacing: -.25px; color: var(--wb-fg); }
503
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-group,
504
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-scope { margin: 0 0 24px; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
505
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-group:last-child { margin-bottom: 0; }
506
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-group-head { display: flex; align-items: center; gap: 9px; padding: 0 0 10px; border: 0; background: transparent; color: var(--wb-muted); font-size: 12px; line-height: 1.5; }
507
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-group-title { flex: 1; min-width: 0; gap: 7px; flex-wrap: wrap; font-size: 12px; font-weight: 500; color: var(--wb-muted); }
508
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-group-icon { display: none; }
509
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-scope-label { flex-shrink: 0; font-size: 10.5px; font-weight: 400; color: var(--wb-muted); opacity: .9; margin-left: auto; }
510
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-saved { color: var(--wb-green); font-size: 11px; order: 3; margin-left: 0; }
511
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-card { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
512
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-row { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 46px; padding: 10px 0; border: 0; color: var(--wb-fg); }
513
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-row-label,
514
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-row-label { font-size: 13px; font-weight: 500; line-height: 1.55; color: var(--wb-fg); }
515
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-row { padding: 11px 0; border: 0; }
516
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-row-help,
517
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-row-sub { margin: 2px 0 14px; color: var(--wb-muted); font-size: 12px; font-weight: 400; line-height: 1.6; opacity: 1; }
518
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-row-sub { display: block; margin: 4px 0 0; }
519
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-note { font-size: 12px; line-height: 1.6; }
520
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-select,
521
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-textarea,
522
+ #codex-overleaf-panel .codex-settings-workbench .codex-custom-instructions-input { color: var(--wb-fg); background: var(--wb-input); border: 1px solid var(--wb-line); border-radius: 7px; padding: 9px 11px; font: inherit; font-size: 13px; line-height: 1.6; box-shadow: none; }
523
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-textarea,
524
+ #codex-overleaf-panel .codex-settings-workbench .codex-custom-instructions-input { display: block; width: 100%; min-height: 110px; resize: vertical; }
525
+ #codex-overleaf-panel .codex-settings-workbench .codex-custom-instructions-input { min-height: 190px; }
526
+ #codex-overleaf-panel .codex-settings-workbench textarea::placeholder { color: var(--wb-muted); opacity: .8; }
527
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-row .codex-set-select { width: auto; min-width: 145px; max-width: 55%; }
528
+ #codex-overleaf-panel .codex-settings-workbench input.codex-switch { appearance: none; -webkit-appearance: none; display: block; position: relative; flex: 0 0 36px; width: 36px; height: 22px; min-height: 22px; margin: 0; padding: 0; border: 1px solid var(--wb-line); border-radius: 20px; background: var(--wb-line); box-shadow: none; }
529
+ #codex-overleaf-panel .codex-settings-workbench input.codex-switch::before { content: none; }
530
+ #codex-overleaf-panel .codex-settings-workbench input.codex-switch::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--wb-surface); box-shadow: 0 1px 2px #00000025; transform: translateX(0); transition: transform 130ms ease; }
531
+ #codex-overleaf-panel .codex-settings-workbench input.codex-switch:checked { background: var(--wb-switch); border-color: var(--wb-switch); }
532
+ #codex-overleaf-panel .codex-settings-workbench input.codex-switch:checked::after { transform: translateX(14px); background: var(--wb-thumb); }
533
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-btn,
534
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-panel button:not(.codex-wb-theme-choice) { min-height: 34px; height: auto; line-height: 1.5; white-space: normal; }
535
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-btn { width: fit-content; max-width: 100%; padding: 7px 12px; border: 1px solid var(--wb-line); border-radius: 7px; color: var(--wb-fg); background: var(--wb-input); font-size: 12px; box-shadow: none; }
536
+ #codex-overleaf-panel .codex-settings-workbench .codex-provider-settings-entry { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 16px; }
537
+ #codex-overleaf-panel .codex-settings-workbench .codex-provider-settings-entry .codex-set-btn,
538
+ #codex-overleaf-panel .codex-settings-workbench [data-update-settings] button { width: auto; }
539
+ #codex-overleaf-panel .codex-settings-workbench .codex-provider-settings-summary { color: var(--wb-muted); font-size: 12px; }
540
+ #codex-overleaf-panel .codex-settings-workbench .codex-provider-experimental-badge { font-size: 10px; white-space: normal; }
541
+ #codex-overleaf-panel .codex-settings-workbench .codex-set-btn--danger { color: var(--tl-danger, #c6615e); }
542
+ #codex-overleaf-panel .codex-wb-themes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; margin: 0 0 11px; }
543
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-theme-choice { width: 100%; padding: 8px; border: 1px solid var(--wb-line); border-radius: 8px; background: transparent; color: var(--wb-fg); text-align: left; box-shadow: none; }
544
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-theme-choice[aria-checked="true"] { border-color: var(--wb-green); box-shadow: 0 0 0 1px var(--wb-green); }
545
+ #codex-overleaf-panel .codex-wb-theme-preview { display: flex; height: 64px; margin: 0 0 8px; border: 1px solid #ced6d2; border-radius: 4px; background: #fafbf9; overflow: hidden; }
546
+ #codex-overleaf-panel .codex-wb-theme-preview::before { content: ""; width: 24%; background: #e5eae6; flex-shrink: 0; }
547
+ #codex-overleaf-panel .codex-wb-theme-lines { display: block; flex: 1; padding: 12px 10px; }
548
+ #codex-overleaf-panel .codex-wb-theme-lines b { display: block; height: 4px; max-width: 76%; margin-bottom: 7px; border-radius: 2px; background: #becfc2; }
549
+ #codex-overleaf-panel .codex-wb-theme-lines b:nth-child(2) { width: 50%; background: #87ab91; }
550
+ #codex-overleaf-panel .codex-wb-theme-lines b:last-child { width: 62%; }
551
+ #codex-overleaf-panel .codex-wb-theme-preview[data-preview-theme="dark"] { background: #262d28; border-color: #49564d; }
552
+ #codex-overleaf-panel .codex-wb-theme-preview[data-preview-theme="dark"]::before { background: #18211b; }
553
+ #codex-overleaf-panel .codex-wb-theme-preview[data-preview-theme="dark"] b { background: #526b59; }
554
+ #codex-overleaf-panel .codex-wb-theme-preview[data-preview-theme="auto"] { background: linear-gradient(115deg, #fafbf9 50%, #262d28 50%); }
555
+ #codex-overleaf-panel .codex-wb-theme-caption { display: block; font-size: 12px; line-height: 1.6; }
556
+ #codex-overleaf-panel .codex-wb-footer { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; flex-shrink: 0; padding: 12px 30px 16px; color: var(--wb-muted); font-size: 11px; }
557
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-status { flex: 1; min-width: 0; margin: 0; padding: 0; font-size: 12px; line-height: 1.5; }
558
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-status:empty { display: none; }
559
+ #codex-overleaf-panel .codex-wb-footer:not(:has([data-project-settings-status]:not(:empty):not([hidden]))) { display: none; }
560
+ #codex-overleaf-panel[data-settings-workbench="true"][data-settings-workbench-open="true"] [data-settings-slot] { display: contents; }
561
+ #codex-overleaf-panel[data-settings-workbench="true"][data-settings-workbench-open="true"] [data-main] { display: flex; }
562
+ #codex-overleaf-panel[data-settings-workbench="true"][data-settings-workbench-open="true"] [data-composer-slot] { display: block; }
563
+ #codex-overleaf-panel .codex-settings-workbench :is(button, input, select, textarea, summary):focus-visible { outline: 2px solid var(--wb-green); outline-offset: 3px; }
564
+ @keyframes codexSettingsEnter { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
565
+ @media (max-width: 640px) {
566
+ #codex-overleaf-panel .codex-settings-workbench { width: calc(100vw - 20px); height: calc(100vh - 24px); height: calc(100dvh - 24px); border-radius: 12px; }
567
+ #codex-overleaf-panel .codex-wb-header { padding: 16px 18px; }
568
+ #codex-overleaf-panel .codex-wb-heading h2 { font-size: 19px; }
569
+ #codex-overleaf-panel .codex-wb-layout { display: flex; flex-direction: column; }
570
+ #codex-overleaf-panel .codex-wb-sidebar { padding: 0 12px 12px; gap: 9px; flex-shrink: 0; max-height: 40%; }
571
+ #codex-overleaf-panel .codex-wb-filters { align-self: flex-start; min-width: 205px; }
572
+ #codex-overleaf-panel .codex-wb-nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; }
573
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-nav-button { justify-content: center; padding: 7px 4px; min-height: 34px; font-size: 11px; text-align: center; }
574
+ #codex-overleaf-panel .codex-wb-nav-icon, #codex-overleaf-panel .codex-wb-brand { display: none; }
575
+ #codex-overleaf-panel .codex-wb-main { flex: 1; }
576
+ #codex-overleaf-panel .codex-wb-body { padding: 20px 18px; }
577
+ #codex-overleaf-panel .codex-wb-footer { padding: 10px 18px; }
578
+ #codex-overleaf-panel .codex-wb-page-title { font-size: 18px; margin-bottom: 18px; }
579
+ #codex-overleaf-panel .codex-wb-themes { gap: 8px; }
580
+ #codex-overleaf-panel .codex-wb-theme-preview { height: 44px; }
581
+ #codex-overleaf-panel .codex-wb-theme-caption { font-size: 11px; }
582
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-row { gap: 14px; }
583
+ #codex-overleaf-panel .codex-settings-workbench .codex-project-settings-row .codex-set-select { min-width: 112px; }
584
+ #codex-overleaf-panel .codex-settings-workbench .codex-provider-settings-entry { grid-template-columns: minmax(0, 1fr); }
585
+ }
586
+ @media (prefers-reduced-motion: reduce) {
587
+ #codex-overleaf-panel .codex-settings-workbench[open] { animation: none; }
588
+ #codex-overleaf-panel .codex-settings-workbench input.codex-switch::after { transition: none; }
589
+ }
590
+
591
+ /* Provider configuration shares the workbench canvas; nested editors stay modal. */
592
+ #codex-overleaf-panel .codex-wb-page[data-provider-embedded="true"] > [data-set-group="providers"] { display: none !important; }
593
+ #codex-overleaf-panel .codex-wb-provider-host:empty { display: none; }
594
+ #codex-overleaf-panel .codex-settings-workbench .codex-provider-dialog-root[data-embedded="true"] {
595
+ display: block;
596
+ position: static;
597
+ inset: auto;
598
+ width: 100%;
599
+ height: auto;
600
+ min-width: 0;
601
+ max-width: none;
602
+ min-height: 0;
603
+ max-height: none;
604
+ margin: 0;
605
+ padding: 0;
606
+ overflow: visible;
607
+ border: 0;
608
+ border-radius: 0;
609
+ background: transparent;
610
+ color: var(--wb-fg);
611
+ font: inherit;
612
+ box-shadow: none;
613
+ transform: none;
614
+ z-index: auto;
615
+ }
616
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] > .codex-provider-dialog {
617
+ display: flex;
618
+ flex-direction: column;
619
+ position: static;
620
+ inset: auto;
621
+ width: 100%;
622
+ height: auto;
623
+ min-width: 0;
624
+ min-height: 0;
625
+ max-width: none;
626
+ max-height: none;
627
+ margin: 0;
628
+ padding: 0;
629
+ overflow: visible;
630
+ border: 0;
631
+ border-radius: 0;
632
+ background: transparent;
633
+ color: var(--wb-fg);
634
+ box-shadow: none;
635
+ transform: none;
636
+ }
637
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] > [data-provider-backdrop],
638
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] [data-provider-dialog-title],
639
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-dialog-close { display: none; }
640
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-dialog-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 0 0 18px; border: 0; background: transparent; }
641
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-dialog-heading { flex: 1; min-width: 0; }
642
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-dialog-heading p { margin: 8px 0 0; font-size: 12px; line-height: 1.6; color: var(--wb-muted); }
643
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-dialog-body { display: flex; flex-direction: column; min-height: 0; overflow: visible; background: transparent; }
644
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-list { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; min-width: 0; max-width: none; padding: 0 0 18px; border: 0; background: transparent; overflow: visible; }
645
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-search { grid-column: 1; grid-row: 1; width: min(230px, 100%); margin: 0; }
646
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-add { grid-column: 2; grid-row: 1; width: auto; margin: 0; padding: 7px 10px; color: var(--wb-green); font-size: 12px; white-space: normal; }
647
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-nav-items { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: stretch; gap: 8px; }
648
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-row { display: flex; align-items: center; flex: 0 1 auto; gap: 8px; width: auto; min-width: 120px; max-width: 250px; margin: 0; padding: 9px 12px; border: 1px solid transparent; border-radius: 8px; background: var(--wb-input); box-shadow: none; color: var(--wb-fg); text-align: left; }
649
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-row[aria-current="true"] { border-color: var(--wb-green); background: var(--wb-green-soft); }
650
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-nav-mark { display: grid; place-items: center; flex-shrink: 0; width: 26px; height: 26px; border-radius: 6px; font-size: 12px; color: var(--wb-green); background: var(--wb-surface); }
651
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-row-main { font-size: 12px; font-weight: 500; line-height: 1.5; }
652
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-row-status { font-size: 10.5px; line-height: 1.5; color: var(--wb-muted); }
653
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-row-status[data-tone="active"] { color: var(--wb-green); }
654
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-detail { min-width: 0; padding: 8px 0 14px; overflow: visible; border: 0; background: transparent; }
655
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-detail-titleline { margin: 0 0 18px; }
656
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-detail-titleline h3,
657
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-template-head h3,
658
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-builtin h3 { margin: 0; font-size: 17px; line-height: 1.5; font-weight: 600; color: var(--wb-fg); }
659
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-detail-titleline p,
660
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-builtin p { margin: 5px 0 0; font-size: 12px; line-height: 1.65; color: var(--wb-muted); }
661
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px 18px; }
662
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-field { min-width: 0; gap: 6px; margin: 0; font-size: 12px; color: var(--wb-fg); }
663
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-field--wide { grid-column: 1 / -1; }
664
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] :is(input:not([type="checkbox"]), select, textarea) { min-width: 0; padding: 9px 11px; min-height: 35px; border: 1px solid var(--wb-line); border-radius: 7px; background: var(--wb-input); color: var(--wb-fg); font: inherit; font-size: 12px; line-height: 1.6; box-shadow: none; }
665
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-field :is(input:not([type="checkbox"]), select, textarea),
666
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-search input { width: 100%; }
667
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] input::placeholder,
668
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] textarea::placeholder { color: var(--wb-muted); opacity: .85; }
669
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-field small { font-size: 11px; line-height: 1.6; color: var(--wb-muted); }
670
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] input[type="checkbox"] { flex-shrink: 0; accent-color: var(--wb-green); }
671
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-capability-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 16px; }
672
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-template-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
673
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-template { min-width: 0; min-height: 78px; padding: 12px; gap: 10px; border: 1px solid var(--wb-line); border-radius: 9px; background: transparent; text-align: left; }
674
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-template:hover { background: var(--wb-input); }
675
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-template-mark { width: 30px; height: 30px; min-width: 30px; }
676
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-template-mark svg { width: 22px; height: 22px; }
677
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-template strong { font-size: 12px; line-height: 1.5; font-weight: 500; }
678
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-template small { font-size: 11px; line-height: 1.5; color: var(--wb-muted); }
679
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-builtin { padding: 20px; border: 0; border-radius: 10px; background: var(--wb-input); }
680
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-builtin-mark { width: 34px; height: 34px; }
681
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-dialog-foot { position: sticky; bottom: -24px; z-index: 1; display: flex; flex-direction: column; align-items: stretch; gap: 8px; margin: 0; padding: 14px 0; border: 0; background: var(--wb-surface); box-shadow: none; }
682
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-footer-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; width: 100%; }
683
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-footer-actions:empty,
684
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-operation-status:empty { display: none; }
685
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-operation-status { min-width: 0; font-size: 12px; line-height: 1.6; }
686
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] :is(.codex-provider-primary-button, .codex-provider-secondary-button, .codex-provider-danger-button, .codex-provider-inline-button) { min-height: 33px; height: auto; width: auto; max-width: 100%; padding: 7px 10px; border-radius: 7px; font-size: 12px; line-height: 1.5; white-space: normal; box-shadow: none; }
687
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-primary-button { color: var(--wb-thumb); background: var(--wb-switch); border-color: var(--wb-switch); }
688
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-secondary-button { color: var(--wb-fg); background: var(--wb-input); border-color: var(--wb-line); }
689
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-inline-button { color: var(--wb-muted); background: transparent; border-color: transparent; }
690
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-inline-button:hover { color: var(--wb-fg); border-color: var(--wb-line); background: var(--wb-input); }
691
+
692
+ /* Approved skills-list preview: dedicated page, compact icon rows, real switches. */
693
+ #codex-overleaf-panel[data-view="skills"] .codex-settings-workbench {
694
+ width: min(820px, calc(100vw - 40px));
695
+ height: min(550px, calc(100vh - 40px));
696
+ height: min(550px, calc(100dvh - 40px));
697
+ }
698
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel {
699
+ box-sizing: border-box;
700
+ width: 100%;
701
+ max-width: 500px;
702
+ margin: 0;
703
+ padding: 0 8px;
704
+ font-family: "Avenir Next", "PingFang SC", "Microsoft YaHei", sans-serif;
705
+ }
706
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-custom-instructions-head {
707
+ position: relative;
708
+ display: block;
709
+ margin: 0 0 25px;
710
+ padding: 0;
711
+ border: 0;
712
+ }
713
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-custom-instructions-title {
714
+ margin: 0;
715
+ color: var(--wb-fg);
716
+ font-size: 18px;
717
+ font-weight: 500;
718
+ line-height: 1.45;
719
+ letter-spacing: -.28px;
720
+ }
721
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel [data-skills-back] {
722
+ position: absolute;
723
+ inset-inline-start: -29px;
724
+ top: -2px;
725
+ display: flex;
726
+ align-items: center;
727
+ justify-content: center;
728
+ width: 27px;
729
+ min-width: 27px;
730
+ height: 30px;
731
+ min-height: 30px;
732
+ margin: 0;
733
+ padding: 0;
734
+ border: 0;
735
+ border-radius: 6px;
736
+ background: transparent;
737
+ color: var(--wb-muted);
738
+ box-shadow: none;
739
+ }
740
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel [data-skills-back] svg { width: 17px; height: 17px; }
741
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel [data-skills-back]:hover { background: var(--wb-input); color: var(--wb-fg); }
742
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-skills-master {
743
+ display: block;
744
+ box-sizing: border-box;
745
+ min-height: 0;
746
+ height: auto;
747
+ margin: 0 0 25px;
748
+ padding: 0;
749
+ border: 0;
750
+ border-radius: 0;
751
+ background: transparent;
752
+ box-shadow: none;
753
+ }
754
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-skills-master-row {
755
+ display: grid;
756
+ grid-template-columns: minmax(0, 1fr) 44px;
757
+ align-items: center;
758
+ gap: 12px;
759
+ min-height: 0;
760
+ padding: 0;
761
+ margin: 0;
762
+ border: 0;
763
+ border-radius: 0;
764
+ background: transparent;
765
+ }
766
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-skills-master-copy { min-width: 0; }
767
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-skills-master-row .codex-project-settings-row-label { font-size: 13px; font-weight: 500; line-height: 1.55; }
768
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-skills-help {
769
+ display: block;
770
+ margin: 3px 0 0;
771
+ color: var(--wb-muted);
772
+ font-size: 12px;
773
+ font-weight: 400;
774
+ line-height: 1.6;
775
+ }
776
+ #codex-overleaf-panel .codex-settings-workbench .codex-wb-skills-list-title { margin: 0 0 7px; color: var(--wb-muted); font-size: 11.5px; font-weight: 500; line-height: 1.5; }
777
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-divider { display: none; }
778
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-list {
779
+ display: flex;
780
+ flex-direction: column;
781
+ gap: 0;
782
+ max-height: none;
783
+ margin: 0 -12px;
784
+ padding: 0;
785
+ overflow: visible;
786
+ border: 0;
787
+ background: transparent;
788
+ }
789
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-row {
790
+ display: grid;
791
+ box-sizing: border-box;
792
+ grid-template-columns: 36px minmax(0, 1fr) auto;
793
+ align-items: center;
794
+ gap: 12px;
795
+ min-height: 0;
796
+ margin: 0;
797
+ padding: 12px;
798
+ border: 0;
799
+ border-radius: 8px;
800
+ background: transparent;
801
+ }
802
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-row:not([data-disabled="true"]):hover { background: var(--wb-input); }
803
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-icon {
804
+ display: flex;
805
+ align-items: center;
806
+ justify-content: center;
807
+ flex: 0 0 auto;
808
+ width: 36px;
809
+ height: 36px;
810
+ border-radius: 9px;
811
+ background: var(--wb-input);
812
+ color: var(--wb-muted);
813
+ }
814
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-icon svg { display: block; width: 18px; height: 18px; }
815
+ #codex-overleaf-panel .codex-settings-workbench .codex-local-skill-copy { min-width: 0; }
816
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-name {
817
+ display: block;
818
+ overflow: hidden;
819
+ color: var(--wb-fg);
820
+ font-size: 14px;
821
+ font-weight: 500;
822
+ line-height: 1.45;
823
+ letter-spacing: -.1px;
824
+ white-space: nowrap;
825
+ text-overflow: ellipsis;
826
+ }
827
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-description {
828
+ display: block;
829
+ margin-top: 2px;
830
+ overflow: hidden;
831
+ color: var(--wb-muted);
832
+ font-size: 12px;
833
+ font-weight: 400;
834
+ line-height: 1.5;
835
+ white-space: nowrap;
836
+ text-overflow: ellipsis;
837
+ }
838
+ #codex-overleaf-panel .codex-settings-workbench .codex-local-skill-controls { display: flex; align-items: center; justify-content: flex-end; gap: 8px; min-width: 44px; }
839
+ #codex-overleaf-panel .codex-settings-workbench .codex-local-skill-actions { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 6px; margin: 0; }
840
+ #codex-overleaf-panel .codex-settings-workbench .codex-local-skill-actions button { min-height: 29px; height: auto; padding: 4px 8px; font-size: 11px; line-height: 1.5; white-space: normal; }
841
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch {
842
+ position: relative;
843
+ display: block;
844
+ appearance: none;
845
+ -webkit-appearance: none;
846
+ align-self: center;
847
+ flex: 0 0 44px;
848
+ width: 44px;
849
+ min-width: 44px;
850
+ height: 34px;
851
+ min-height: 34px;
852
+ margin: 0;
853
+ padding: 0;
854
+ border: 0;
855
+ border-radius: 7px;
856
+ background: transparent;
857
+ box-shadow: none;
858
+ }
859
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch::before {
860
+ content: "";
861
+ position: absolute;
862
+ left: 6px;
863
+ top: 8px;
864
+ width: 32px;
865
+ height: 18px;
866
+ border-radius: 20px;
867
+ background: var(--wb-line);
868
+ transition: background 140ms ease;
869
+ }
870
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch::after {
871
+ content: "";
872
+ position: absolute;
873
+ left: 8px;
874
+ top: 10px;
875
+ width: 14px;
876
+ height: 14px;
877
+ border-radius: 50%;
878
+ background: var(--wb-surface);
879
+ box-shadow: 0 1px 2px #00000012;
880
+ transform: translateX(0);
881
+ transition: transform 140ms ease;
882
+ }
883
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch:checked { background: transparent; border-color: transparent; }
884
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch:checked::before { background: var(--wb-switch); }
885
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch:checked::after { background: var(--wb-thumb); transform: translateX(14px); }
886
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch:disabled { opacity: .45; }
887
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-row[data-disabled="true"] { opacity: 1; }
888
+ #codex-overleaf-panel .codex-settings-workbench .codex-local-skill-row[data-disabled="true"] .codex-local-skill-copy,
889
+ #codex-overleaf-panel .codex-settings-workbench .codex-local-skill-row[data-disabled="true"] .codex-local-skill-icon { opacity: .55; }
890
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-project-settings-empty { padding: 10px 12px; margin: 0; color: var(--wb-muted); font-size: 12px; line-height: 1.6; }
891
+ @media (max-width: 640px) {
892
+ #codex-overleaf-panel[data-view="skills"] .codex-settings-workbench { width: calc(100vw - 20px); height: calc(100vh - 24px); height: calc(100dvh - 24px); }
893
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-custom-instructions-title { font-size: 17px; }
894
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel [data-skills-back] { inset-inline-start: -21px; width: 23px; min-width: 23px; }
895
+ }
896
+ @media (max-width: 520px) {
897
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-row { grid-template-columns: 34px minmax(0, 1fr) auto; gap: 10px; }
898
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-icon { width: 34px; height: 34px; }
899
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel .codex-local-skill-name { font-size: 13px; }
900
+ #codex-overleaf-panel .codex-settings-workbench .codex-local-skill-row:has(.codex-local-skill-actions) .codex-local-skill-controls { grid-column: 2 / -1; justify-content: flex-end; }
901
+ }
902
+ @media (pointer: coarse) {
903
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch { height: 44px; min-height: 44px; }
904
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch::before { top: 13px; }
905
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch::after { top: 15px; }
906
+ }
907
+ @media (prefers-reduced-motion: reduce) {
908
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch::before,
909
+ #codex-overleaf-panel .codex-settings-workbench .codex-skills-panel input.codex-switch::after { transition: none; }
910
+ }
911
+
912
+ @media (max-width: 780px) {
913
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-form-grid,
914
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-capability-grid,
915
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-template-grid { grid-template-columns: minmax(0, 1fr); }
916
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-secret-row { flex-wrap: wrap; }
917
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-row { min-width: 0; max-width: 100%; }
918
+ }
919
+ @media (max-width: 640px) {
920
+ #codex-overleaf-panel .codex-provider-dialog-root[data-embedded="true"] .codex-provider-dialog-foot { bottom: -20px; }
921
+ }
922
+
135
923
  /* v2.1 provider profiles: detailed configuration lives in a viewport modal. */
136
924
  .codex-provider-settings-entry {
137
925
  display: flex;
@@ -176,6 +964,9 @@
176
964
  --provider-line: rgba(255, 255, 255, 0.12);
177
965
  --provider-muted: #a0a59f;
178
966
  --provider-accent: #79d58a;
967
+ --provider-checkbox-border: #8b958b;
968
+ --provider-checkbox-mark: #102016;
969
+ color-scheme: dark;
179
970
  --provider-danger: #ef8176;
180
971
  --provider-text: #eef0ec;
181
972
  --provider-field-label: #dfe3dd;
@@ -210,6 +1001,9 @@
210
1001
  --provider-line: rgba(31, 35, 40, 0.16);
211
1002
  --provider-muted: #5f6873;
212
1003
  --provider-accent: #247d3b;
1004
+ --provider-checkbox-border: #77828e;
1005
+ --provider-checkbox-mark: #ffffff;
1006
+ color-scheme: light;
213
1007
  --provider-danger: #bd352f;
214
1008
  --provider-text: #252a30;
215
1009
  --provider-field-label: #343b44;
@@ -553,7 +1347,7 @@
553
1347
  .codex-provider-operation-status { min-width: 0; color: var(--provider-muted); font-size: 11px; }
554
1348
  .codex-provider-operation-status[data-tone="success"] { color: var(--provider-accent); }
555
1349
  .codex-provider-operation-status[data-tone="failed"] { color: var(--provider-danger); }
556
- .codex-provider-operation-status[data-tone="progress"]::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 7px; border: 2px solid rgba(121, 213, 138, 0.3); border-top-color: var(--provider-accent); border-radius: 50%; animation: codex-provider-spin 0.8s linear infinite; }
1350
+ .codex-provider-operation-status[data-tone="progress"]::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 7px; border: 2px solid rgba(121, 213, 138, 0.3); border-top-color: var(--provider-accent); border-radius: 50%; animation: codex-provider-spin var(--tl-m-spin, 800ms) linear infinite; }
557
1351
 
558
1352
  .codex-provider-footer-actions { display: flex; align-items: center; gap: 8px; }
559
1353
  .codex-provider-footer-spacer { width: 8px; }
@@ -889,7 +1683,7 @@
889
1683
  }
890
1684
 
891
1685
  #codex-overleaf-panel .codex-vscode-head-actions [data-refresh][data-loading="true"] {
892
- animation: codex-refresh-spin 800ms linear infinite;
1686
+ animation: codex-refresh-spin var(--tl-m-spin, 800ms) linear infinite;
893
1687
  color: var(--tl-fg-1);
894
1688
  }
895
1689
 
@@ -928,15 +1722,48 @@
928
1722
  /* Aggregated health report: one scannable status row per check (Run all). */
929
1723
  #codex-overleaf-panel .codex-diagnostics-checks {
930
1724
  display: grid;
931
- gap: 8px;
1725
+ gap: 0;
932
1726
  margin-top: 4px;
933
1727
  }
934
1728
 
935
1729
  #codex-overleaf-panel .codex-diagnostics-check {
1730
+ min-width: 0;
1731
+ border-bottom: 1px solid var(--tl-border);
1732
+ }
1733
+
1734
+ #codex-overleaf-panel .codex-diagnostics-check:last-child {
1735
+ border-bottom: 0;
1736
+ }
1737
+
1738
+ #codex-overleaf-panel .codex-diagnostics-check > summary {
936
1739
  display: grid;
937
- grid-template-columns: 16px 1fr;
1740
+ grid-template-columns: 16px minmax(0, 1fr) 10px;
938
1741
  gap: 8px;
939
- align-items: start;
1742
+ align-items: center;
1743
+ padding: 10px 0;
1744
+ cursor: pointer;
1745
+ list-style: none;
1746
+ }
1747
+
1748
+ #codex-overleaf-panel .codex-diagnostics-check > summary::-webkit-details-marker {
1749
+ display: none;
1750
+ }
1751
+
1752
+ #codex-overleaf-panel .codex-diagnostics-check > summary::after {
1753
+ content: "";
1754
+ width: 5px;
1755
+ height: 5px;
1756
+ border-right: 1px solid var(--tl-fg-3);
1757
+ border-bottom: 1px solid var(--tl-fg-3);
1758
+ transform: rotate(-45deg);
1759
+ }
1760
+
1761
+ #codex-overleaf-panel .codex-diagnostics-check[open] > summary::after {
1762
+ transform: rotate(45deg);
1763
+ }
1764
+
1765
+ #codex-overleaf-panel .codex-diagnostics-check-text {
1766
+ margin: 0 0 10px 24px;
940
1767
  }
941
1768
 
942
1769
  #codex-overleaf-panel .codex-diagnostics-check-glyph::before {
@@ -1037,8 +1864,8 @@
1037
1864
  left: auto;
1038
1865
  margin: 0;
1039
1866
  box-sizing: border-box;
1040
- width: min(300px, calc(100vw - 24px));
1041
- max-width: calc(100vw - 24px);
1867
+ width: min(300px, calc(var(--codex-overleaf-panel-width) - 24px), calc(100vw - 24px));
1868
+ max-width: min(calc(var(--codex-overleaf-panel-width) - 24px), calc(100vw - 24px));
1042
1869
  max-height: calc(100vh - 24px);
1043
1870
  overflow: auto;
1044
1871
  overscroll-behavior: contain;
@@ -1091,6 +1918,8 @@
1091
1918
 
1092
1919
  #codex-overleaf-panel .codex-diagnostics-result {
1093
1920
  position: fixed;
1921
+ display: flex;
1922
+ flex-direction: column;
1094
1923
  z-index: 2147483647;
1095
1924
  top: 44px;
1096
1925
  right: 12px;
@@ -1099,10 +1928,10 @@
1099
1928
  margin: 0;
1100
1929
  padding: 0;
1101
1930
  box-sizing: border-box;
1102
- width: min(560px, calc(100vw - 24px));
1103
- max-width: calc(100vw - 24px);
1104
- max-height: min(640px, calc(100vh - 24px));
1105
- overflow: auto;
1931
+ width: min(400px, calc(var(--codex-overleaf-panel-width) - 24px), calc(100vw - 24px));
1932
+ max-width: min(calc(var(--codex-overleaf-panel-width) - 24px), calc(100vw - 24px));
1933
+ max-height: min(480px, calc(100vh - 24px));
1934
+ overflow: hidden;
1106
1935
  overscroll-behavior: contain;
1107
1936
  overflow-wrap: anywhere;
1108
1937
  color: var(--tl-fg-2);
@@ -1123,7 +1952,7 @@
1123
1952
  }
1124
1953
 
1125
1954
  #codex-overleaf-panel .codex-diagnostics-result[data-status="completed"] {
1126
- border-color: var(--tl-ok);
1955
+ border-color: var(--tl-border-strong);
1127
1956
  }
1128
1957
 
1129
1958
  #codex-overleaf-panel .codex-diagnostics-result[data-status="warning"] {
@@ -1134,15 +1963,16 @@
1134
1963
  border-color: var(--tl-fail);
1135
1964
  }
1136
1965
 
1137
- /* View-state rules: hide session elements when in settings/skills view, and vice versa */
1138
- #codex-overleaf-panel[data-view="settings"] .codex-vscode-head,
1139
- #codex-overleaf-panel[data-view="settings"] [data-main],
1140
- #codex-overleaf-panel[data-view="settings"] [data-probe-status],
1141
- #codex-overleaf-panel[data-view="settings"] [data-composer-slot],
1142
- #codex-overleaf-panel[data-view="skills"] .codex-vscode-head,
1143
- #codex-overleaf-panel[data-view="skills"] [data-main],
1144
- #codex-overleaf-panel[data-view="skills"] [data-probe-status],
1145
- #codex-overleaf-panel[data-view="skills"] [data-composer-slot] {
1966
+ /* Only embedded settings replace the session view. The modal workbench keeps
1967
+ the complete sidebar behind its backdrop, without reflowing the conversation. */
1968
+ #codex-overleaf-panel:not([data-settings-workbench="true"])[data-view="settings"] .codex-vscode-head,
1969
+ #codex-overleaf-panel:not([data-settings-workbench="true"])[data-view="settings"] [data-main],
1970
+ #codex-overleaf-panel:not([data-settings-workbench="true"])[data-view="settings"] [data-probe-status],
1971
+ #codex-overleaf-panel:not([data-settings-workbench="true"])[data-view="settings"] [data-composer-slot],
1972
+ #codex-overleaf-panel:not([data-settings-workbench="true"])[data-view="skills"] .codex-vscode-head,
1973
+ #codex-overleaf-panel:not([data-settings-workbench="true"])[data-view="skills"] [data-main],
1974
+ #codex-overleaf-panel:not([data-settings-workbench="true"])[data-view="skills"] [data-probe-status],
1975
+ #codex-overleaf-panel:not([data-settings-workbench="true"])[data-view="skills"] [data-composer-slot] {
1146
1976
  display: none;
1147
1977
  }
1148
1978
 
@@ -1466,11 +2296,20 @@
1466
2296
  }
1467
2297
 
1468
2298
  #codex-overleaf-panel .codex-set-saved {
2299
+ display: inline-flex;
2300
+ align-items: center;
2301
+ gap: 3px;
1469
2302
  color: var(--tl-ok);
1470
2303
  font-size: 10.5px;
1471
2304
  white-space: nowrap;
1472
2305
  animation: tl-fade-in 120ms ease;
1473
2306
  }
2307
+ #codex-overleaf-panel .codex-set-saved[hidden] { display: none; }
2308
+ #codex-overleaf-panel .codex-set-saved .codex-glyph { width: 12px; height: 12px; }
2309
+ #codex-overleaf-panel .codex-set-saved:not([hidden]) .codex-glyph path { stroke-dasharray: 15; animation: tl-check-draw 360ms var(--tl-m-ease) both; }
2310
+ #codex-overleaf-panel :is(.codex-model-config-check, .run-change-summary__check, .codex-diff-file-actions, .codex-diff-hunk-actions) .codex-glyph { display: block; }
2311
+ #codex-overleaf-panel :is(.codex-diff-file-actions, .codex-diff-hunk-actions) button .codex-glyph { width: 13px; height: 13px; margin: auto; }
2312
+ @keyframes tl-check-draw { from { stroke-dashoffset: 15; } }
1474
2313
 
1475
2314
  #codex-overleaf-panel .codex-set-note {
1476
2315
  margin-top: 6px;
@@ -1583,9 +2422,9 @@
1583
2422
  padding: 0 12px 12px;
1584
2423
  }
1585
2424
 
1586
- /* On the dedicated skills sub-page the card stands alone (no group header above
1587
- it), so it becomes a self-contained bordered surface with full padding. */
1588
- #codex-overleaf-panel .codex-skills-panel .codex-set-card {
2425
+ /* Legacy sidebar presentation only. The workbench owns its flat skills rows;
2426
+ this later rule must not restore the old card chrome there. */
2427
+ #codex-overleaf-panel:not([data-settings-workbench="true"]) .codex-skills-panel .codex-set-card {
1589
2428
  padding-top: 12px;
1590
2429
  border: 1px solid var(--tl-border);
1591
2430
  border-radius: var(--tl-r-md);
@@ -1707,6 +2546,7 @@
1707
2546
 
1708
2547
  #codex-overleaf-panel .codex-diagnostics-result-head {
1709
2548
  display: flex;
2549
+ flex: 0 0 auto;
1710
2550
  align-items: flex-start;
1711
2551
  justify-content: space-between;
1712
2552
  gap: 8px;
@@ -1714,6 +2554,10 @@
1714
2554
  border-bottom: 1px solid var(--tl-border);
1715
2555
  }
1716
2556
 
2557
+ #codex-overleaf-panel .codex-diagnostics-result-head > div {
2558
+ min-width: 0;
2559
+ }
2560
+
1717
2561
  #codex-overleaf-panel .codex-diagnostics-result-title {
1718
2562
  color: var(--tl-fg-1);
1719
2563
  font-size: 14px;
@@ -1730,8 +2574,32 @@
1730
2574
 
1731
2575
  #codex-overleaf-panel .codex-diagnostics-result-head button {
1732
2576
  flex: 0 0 auto;
1733
- width: 24px;
1734
- height: 24px;
2577
+ width: 28px;
2578
+ height: 28px;
2579
+ padding: 0;
2580
+ color: var(--tl-fg-3);
2581
+ font-size: 16px;
2582
+ line-height: 1;
2583
+ border: 0;
2584
+ border-radius: 6px;
2585
+ background: transparent;
2586
+ }
2587
+
2588
+ #codex-overleaf-panel .codex-diagnostics-result-head button:hover {
2589
+ color: var(--tl-fg-1);
2590
+ background: var(--tl-hover);
2591
+ }
2592
+
2593
+ #codex-overleaf-panel .codex-diagnostics-result-head button:focus-visible {
2594
+ outline: 2px solid var(--tl-accent);
2595
+ outline-offset: 2px;
2596
+ }
2597
+
2598
+ #codex-overleaf-panel .codex-diagnostics-result-scroll {
2599
+ flex: 1 1 auto;
2600
+ min-height: 0;
2601
+ overflow: auto;
2602
+ overscroll-behavior: contain;
1735
2603
  }
1736
2604
 
1737
2605
  #codex-overleaf-panel .codex-diagnostics-result-body {
@@ -1844,6 +2712,13 @@
1844
2712
  background: rgba(12, 12, 12, 0.68);
1845
2713
  }
1846
2714
  #codex-overleaf-panel .codex-plugin-confirm::backdrop { background: transparent; }
2715
+ #codex-overleaf-panel .codex-plugin-confirm[data-context="workbench"] {
2716
+ inset: 0;
2717
+ width: 100vw;
2718
+ padding: 20px;
2719
+ background: rgba(12, 12, 12, 0.45);
2720
+ }
2721
+ #codex-overleaf-panel .codex-plugin-confirm[data-context="workbench"] .codex-plugin-confirm-card { max-width: 440px; }
1847
2722
 
1848
2723
  #codex-overleaf-panel .codex-plugin-confirm-card {
1849
2724
  display: flex;
@@ -2004,7 +2879,7 @@
2004
2879
  border-top-color: var(--tl-accent);
2005
2880
  border-radius: 50%;
2006
2881
  vertical-align: -1px;
2007
- animation: codex-session-spin 800ms linear infinite;
2882
+ animation: codex-session-spin var(--tl-m-spin, 800ms) linear infinite;
2008
2883
  }
2009
2884
 
2010
2885
  @keyframes codex-session-spin {
@@ -2142,6 +3017,13 @@
2142
3017
  --tl-diff-add-fg: #89d185; /* added-line code text; darkened in light */
2143
3018
  --tl-r-sm: 4px;
2144
3019
  --tl-r-md: 8px;
3020
+ /* Motion tokens: one cadence for every spinner, fade and settle. */
3021
+ --tl-m-fast: 140ms;
3022
+ --tl-m-base: 240ms;
3023
+ --tl-m-slow: 420ms;
3024
+ --tl-m-spin: 800ms;
3025
+ --tl-m-ease: cubic-bezier(.2, .7, .2, 1);
3026
+ --tl-m-spring: cubic-bezier(.3, 1.45, .5, 1);
2145
3027
  }
2146
3028
 
2147
3029
  /* Light theme — remaps the token values for a light surface. Reached when
@@ -2399,7 +3281,7 @@
2399
3281
  border-top-color: var(--tl-run);
2400
3282
  border-radius: 50%;
2401
3283
  vertical-align: -1px;
2402
- animation: codex-session-spin 800ms linear infinite;
3284
+ animation: codex-session-spin var(--tl-m-spin, 800ms) linear infinite;
2403
3285
  }
2404
3286
 
2405
3287
  #codex-overleaf-panel .codex-session-menu-item-title {
@@ -2550,18 +3432,24 @@
2550
3432
  overflow-wrap: anywhere;
2551
3433
  }
2552
3434
 
3435
+ /* A right-aligned toolbar: buttons sit together at the end of the row. Each
3436
+ button used to claim margin-left:auto, so two visible buttons split the free
3437
+ space and Undo drifted into the middle. */
2553
3438
  #codex-overleaf-panel .run-turn-meta {
2554
3439
  display: flex;
2555
3440
  align-items: center;
2556
- gap: 8px;
3441
+ justify-content: flex-end;
3442
+ gap: 6px;
2557
3443
  min-height: 22px;
2558
3444
  margin: 6px 0 2px;
2559
3445
  color: var(--tl-fg-3);
2560
3446
  font-size: 11px;
2561
3447
  }
2562
3448
 
2563
- #codex-overleaf-panel .run-turn-meta [data-run-accept] {
2564
- margin-left: auto;
3449
+ #codex-overleaf-panel .run-turn-meta .run-edit-action,
3450
+ #codex-overleaf-panel .run-turn-meta .run-sync-action {
3451
+ flex: 0 0 30px;
3452
+ padding: 0;
2565
3453
  }
2566
3454
 
2567
3455
  #codex-overleaf-panel .run-result-actions {
@@ -2625,11 +3513,6 @@
2625
3513
 
2626
3514
  #codex-overleaf-panel .run-completed-time[hidden] { display: none; }
2627
3515
 
2628
- /* When Accept All is hidden, the Undo button takes the right-aligned slot. */
2629
- #codex-overleaf-panel .run-turn-meta [data-run-accept][hidden] + [data-run-undo] {
2630
- margin-left: auto;
2631
- }
2632
-
2633
3516
  #codex-overleaf-panel .run-turn-meta [data-run-accept],
2634
3517
  #codex-overleaf-panel .run-turn-meta [data-run-accept-confirm],
2635
3518
  #codex-overleaf-panel .run-turn-meta [data-run-accept-cancel] {
@@ -3133,6 +4016,228 @@
3133
4016
  transform: rotate(90deg);
3134
4017
  }
3135
4018
 
4019
+ /* Runtime workflow: chronological public messages and adjacent work items. */
4020
+ #codex-overleaf-panel .run-presentation-workflow .run-process summary {
4021
+ position: static;
4022
+ gap: 7px;
4023
+ min-height: 28px;
4024
+ padding: 3px 0;
4025
+ background: transparent;
4026
+ font-size: 12px;
4027
+ line-height: 1.5;
4028
+ flex-wrap: wrap;
4029
+ }
4030
+ /* The workflow header paints its own live state. Its summary is static, so a
4031
+ visible scan line would anchor to .codex-thread-section and sweep above the
4032
+ composer whenever any card is running. The selector must outrank the
4033
+ [data-status="running"] rule that shows it. */
4034
+ #codex-overleaf-panel .transcript-turn.run-presentation-workflow[data-status] .run-process summary .run-scan { display: none; }
4035
+ #codex-overleaf-panel .run-presentation-workflow[data-status="running"] .run-status {
4036
+ color: var(--tl-fg-3) !important;
4037
+ }
4038
+ #codex-overleaf-panel .run-presentation-workflow .run-process:not([open]) + .run-activity-list { display: grid; }
4039
+ #codex-overleaf-panel .run-workflow-list { gap: 0; margin-top: 5px; }
4040
+ #codex-overleaf-panel .run-workflow-list[data-expanded="false"] > .run-work-block:not([data-kind="guidance"]) { display: none; }
4041
+ #codex-overleaf-panel .run-presentation-workflow .run-guidance-list:empty,
4042
+ #codex-overleaf-panel .run-workflow-guidance:empty { display: none; }
4043
+ #codex-overleaf-panel .run-workflow-message {
4044
+ color: var(--tl-fg-1);
4045
+ font-size: 13px;
4046
+ line-height: 1.75;
4047
+ margin: 10px 0 13px;
4048
+ white-space: normal;
4049
+ overflow-wrap: anywhere;
4050
+ }
4051
+ #codex-overleaf-panel .run-workflow-message > :first-child { margin-top: 0; }
4052
+ /* Collapsed live peek: three one-line rows; new rows slide in at the bottom, the oldest fades out at the top. */
4053
+ #codex-overleaf-panel .run-peek { position: relative; height: calc(3 * 22px); margin: 2px 0 0 4px; overflow: hidden; cursor: pointer;
4054
+ transition: height var(--tl-m-base) var(--tl-m-ease); }
4055
+ #codex-overleaf-panel .run-peek[data-rows="0"], #codex-overleaf-panel .run-peek[data-rows="1"] { height: 22px; }
4056
+ #codex-overleaf-panel .run-peek[data-rows="2"] { height: calc(2 * 22px); }
4057
+ #codex-overleaf-panel .run-peek[data-overflow="true"] { -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 16px); mask-image: linear-gradient(to bottom, transparent 0, #000 16px); }
4058
+ #codex-overleaf-panel .run-peek[hidden], #codex-overleaf-panel .run-peek-more[hidden] { display: none !important; }
4059
+ #codex-overleaf-panel .run-peek-track { position: absolute; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; }
4060
+ #codex-overleaf-panel .run-peek-row { display: flex; align-items: center; gap: 7px; min-width: 0; height: 22px; color: var(--tl-fg-2); font-size: 12px; line-height: 22px; }
4061
+ #codex-overleaf-panel .run-peek-row.is-entering { animation: tl-peek-in 420ms var(--tl-m-ease); }
4062
+ #codex-overleaf-panel .run-peek-glyph { display: inline-grid; place-items: center; flex: none; width: 14px; height: 14px; color: var(--tl-fg-4); }
4063
+ #codex-overleaf-panel .run-peek-glyph svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
4064
+ #codex-overleaf-panel .run-peek-glyph .run-workflow-icon { padding: 0; flex: none; }
4065
+ #codex-overleaf-panel .run-peek-glyph .run-workflow-icon svg { width: 13px; height: 13px; }
4066
+ #codex-overleaf-panel .run-peek-row[data-kind="thought"] .run-peek-glyph::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--tl-fg-4); opacity: .75; }
4067
+ #codex-overleaf-panel .run-peek-row[data-kind="thought"][data-state="running"] .run-peek-glyph::before { background: var(--tl-run); opacity: 1; animation: tl-blink 1s steps(1) infinite; }
4068
+ #codex-overleaf-panel .run-peek-row[data-state="running"] .run-peek-glyph { color: var(--tl-run); }
4069
+ #codex-overleaf-panel .run-peek-row[data-state="running"] .run-peek-glyph svg { animation: tl-spin var(--tl-m-spin) linear infinite; }
4070
+ #codex-overleaf-panel .run-peek-row[data-kind="setup"][data-state="completed"] .run-peek-glyph { color: var(--tl-ok); }
4071
+ #codex-overleaf-panel .run-peek-row[data-state="warning"] .run-peek-glyph,
4072
+ #codex-overleaf-panel .run-peek-row[data-state="warning"] .run-peek-result { color: var(--tl-review); }
4073
+ #codex-overleaf-panel .run-peek-row[data-state="failed"] .run-peek-glyph,
4074
+ #codex-overleaf-panel .run-peek-row[data-state="failed"] .run-peek-result { color: var(--tl-fail); }
4075
+ #codex-overleaf-panel .run-peek-label { flex: none; font-weight: 560; font-variant-numeric: tabular-nums; }
4076
+ #codex-overleaf-panel .run-peek-label:empty { display: none; }
4077
+ #codex-overleaf-panel .run-peek-row[data-kind="thought"] .run-peek-label { color: var(--tl-fg-3); }
4078
+ #codex-overleaf-panel .run-peek-lead { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
4079
+ #codex-overleaf-panel .run-peek-row[data-kind="thought"] .run-peek-lead { color: var(--tl-fg-4); }
4080
+ #codex-overleaf-panel .run-peek-row[data-kind="tool"] .run-peek-lead { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11.5px; }
4081
+ #codex-overleaf-panel .run-peek-row[data-kind="setup"][data-state="running"] .run-peek-lead { color: var(--tl-fg-1); }
4082
+ #codex-overleaf-panel .run-peek-result { flex: none; margin-left: auto; padding-left: 8px; color: var(--tl-fg-4); font-size: 11px; font-variant-numeric: tabular-nums; }
4083
+ #codex-overleaf-panel .run-peek-more { display: block; margin: 0 0 2px 25px; min-height: 0; height: auto; padding: 0; border: 0; background: none; box-shadow: none; color: var(--tl-fg-4); font: inherit; font-size: 11px; cursor: pointer; }
4084
+ #codex-overleaf-panel .run-peek-more:hover { color: var(--tl-fg-1); }
4085
+ #codex-overleaf-panel .run-peek-more:focus-visible { outline: 2px solid var(--tl-accent); outline-offset: 1px; }
4086
+ @keyframes tl-peek-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
4087
+
4088
+ /* Start-up block: Send → project read → workspace → Codex → first model response. */
4089
+ #codex-overleaf-panel .run-setup { min-width: 0; margin: 6px 0 4px; border: 1px solid var(--tl-border); border-radius: var(--tl-r-md); background: var(--tl-surface-1); overflow: hidden; animation: tl-rise var(--tl-m-base) var(--tl-m-ease); }
4090
+ #codex-overleaf-panel .run-setup[hidden] { display: none !important; }
4091
+ #codex-overleaf-panel .run-setup-summary { display: flex; align-items: center; gap: 7px; min-height: 28px; padding: 4px 10px; list-style: none; color: var(--tl-fg-3); font-size: 12px; cursor: pointer; font-variant-numeric: tabular-nums; }
4092
+ #codex-overleaf-panel .run-setup-summary::-webkit-details-marker { display: none; }
4093
+ #codex-overleaf-panel .run-setup-summary:hover { color: var(--tl-fg-1); }
4094
+ #codex-overleaf-panel .run-setup-summary:focus-visible { outline: 2px solid var(--tl-accent); outline-offset: -2px; }
4095
+ #codex-overleaf-panel .run-setup-done { width: 12px; height: 12px; flex: none; background: currentColor; color: var(--tl-ok);
4096
+ -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='m3.5 8 3 3 6-6' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
4097
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='m3.5 8 3 3 6-6' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat; }
4098
+ #codex-overleaf-panel .run-setup-summary[data-notes="true"] .run-setup-done { color: var(--tl-review); }
4099
+ #codex-overleaf-panel .run-setup-summary::after { content: "›"; margin-left: auto; color: var(--tl-fg-4); transition: transform var(--tl-m-base) var(--tl-m-ease); }
4100
+ #codex-overleaf-panel .run-setup[open] > .run-setup-summary::after { transform: rotate(90deg); }
4101
+ #codex-overleaf-panel .run-setup[data-folded="false"] > .run-setup-summary { display: none; }
4102
+ #codex-overleaf-panel .run-setup-steps { display: grid; gap: 1px; padding: 6px 10px 7px; }
4103
+ #codex-overleaf-panel .run-setup[data-folded="true"] .run-setup-steps { border-top: 1px solid var(--tl-border); }
4104
+ #codex-overleaf-panel .run-setup-step { display: grid; grid-template-columns: 16px minmax(0, 1fr) auto; align-items: start; gap: 7px; padding: 3px 0; color: var(--tl-fg-2); font-size: 12px; line-height: 1.5; animation: tl-rise var(--tl-m-base) var(--tl-m-ease); }
4105
+ #codex-overleaf-panel .run-setup-glyph { display: inline-grid; place-items: center; width: 14px; height: 18px; color: var(--tl-ok); }
4106
+ #codex-overleaf-panel .run-setup-glyph svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
4107
+ #codex-overleaf-panel .run-setup-step[data-state="running"] .run-setup-glyph { color: var(--tl-run); }
4108
+ #codex-overleaf-panel .run-setup-step[data-state="running"] .run-setup-glyph svg { animation: tl-spin var(--tl-m-spin) linear infinite; }
4109
+ #codex-overleaf-panel .run-setup-step[data-state="running"] .run-setup-text { color: var(--tl-fg-1); }
4110
+ #codex-overleaf-panel .run-setup-step[data-state="warning"] .run-setup-glyph { color: var(--tl-review); }
4111
+ #codex-overleaf-panel .run-setup-text { min-width: 0; overflow-wrap: anywhere; }
4112
+ #codex-overleaf-panel .run-setup-note { display: block; color: var(--tl-review); font-size: 11.5px; }
4113
+ #codex-overleaf-panel .run-setup-calm { display: block; margin-top: 2px; color: var(--tl-fg-4); font-size: 11.5px; animation: tl-rise var(--tl-m-slow) var(--tl-m-ease); }
4114
+ #codex-overleaf-panel .run-setup-time { color: var(--tl-fg-4); font-size: 11px; font-variant-numeric: tabular-nums; }
4115
+
4116
+ /* Reasoning (CoT) rounds: live = last three lines streaming under a fade; settled = one quiet line. */
4117
+ #codex-overleaf-panel .run-workflow-thought { min-width: 0; max-width: 100%; margin: 3px 0; color: var(--tl-fg-3); font-size: 12px; line-height: 1.55; }
4118
+ #codex-overleaf-panel .run-workflow-thought-line { display: flex; align-items: baseline; gap: 7px; min-width: 0; padding: 3px 3px 3px 26px; border-radius: 6px; list-style: none; cursor: pointer; position: relative; }
4119
+ #codex-overleaf-panel .run-workflow-thought-line::-webkit-details-marker { display: none; }
4120
+ #codex-overleaf-panel .run-workflow-thought-line::before { content: ""; position: absolute; left: 8px; top: 9px; width: 6px; height: 6px; border-radius: 50%; background: var(--tl-fg-4); opacity: .7; }
4121
+ #codex-overleaf-panel .run-workflow-thought-line:hover { background: var(--tl-surface-1); }
4122
+ #codex-overleaf-panel .run-workflow-thought-line:focus-visible { outline: 2px solid var(--tl-accent); outline-offset: 2px; }
4123
+ #codex-overleaf-panel .run-workflow-thought-label { flex: none; font-weight: 560; color: var(--tl-fg-3); font-variant-numeric: tabular-nums; }
4124
+ #codex-overleaf-panel .run-workflow-thought-lead { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; color: var(--tl-fg-4); }
4125
+ #codex-overleaf-panel .run-workflow-thought-tail { display: none; flex-direction: column; justify-content: flex-end; max-height: calc(3 * 1.55em); overflow: hidden;
4126
+ margin-left: 26px; white-space: pre-wrap; overflow-wrap: anywhere;
4127
+ -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 1.2em); mask-image: linear-gradient(to bottom, transparent 0, #000 1.2em); }
4128
+ #codex-overleaf-panel .run-workflow-thought[data-live="true"] > .run-workflow-thought-line { display: none; }
4129
+ #codex-overleaf-panel .run-workflow-thought[data-live="true"] > .run-workflow-thought-tail { display: flex; }
4130
+ #codex-overleaf-panel .run-workflow-thought[data-live="true"] > .run-workflow-thought-tail > span::after { content: ""; display: inline-block; width: 6px; height: 1em; margin-left: 1px; vertical-align: -2px; background: var(--tl-run); opacity: .7; animation: tl-blink 1s steps(1) infinite; }
4131
+ #codex-overleaf-panel .run-workflow-thought-full { margin: 3px 0 6px 26px; padding: 6px 0 6px 10px; border-left: 2px solid var(--tl-border-strong); color: var(--tl-fg-3); overflow-wrap: anywhere; }
4132
+ #codex-overleaf-panel .run-workflow-thought[data-live="true"] > .run-workflow-thought-full { display: none; }
4133
+ #codex-overleaf-panel .run-workflow-thought-full > :first-child { margin-top: 0; }
4134
+ #codex-overleaf-panel .run-workflow-thought-full > :last-child { margin-bottom: 0; }
4135
+ #codex-overleaf-panel .run-workflow-message > :last-child { margin-bottom: 0; }
4136
+ #codex-overleaf-panel .run-workflow-guidance { margin: 15px 0; min-width: 0; }
4137
+ #codex-overleaf-panel .run-workflow-tool { min-width: 0; max-width: 100%; margin: 3px 0; }
4138
+ #codex-overleaf-panel .run-workflow-tool-summary {
4139
+ display: flex;
4140
+ align-items: flex-start;
4141
+ gap: 7px;
4142
+ min-height: 29px;
4143
+ min-width: 0;
4144
+ max-width: 100%;
4145
+ padding: 5px 3px;
4146
+ border-radius: 6px;
4147
+ color: var(--tl-fg-3);
4148
+ font-size: 12px;
4149
+ line-height: 1.6;
4150
+ list-style: none;
4151
+ cursor: pointer;
4152
+ }
4153
+ #codex-overleaf-panel .run-workflow-tool-summary::-webkit-details-marker { display: none; }
4154
+ #codex-overleaf-panel .run-workflow-tool-summary:hover { background: var(--tl-surface-1); }
4155
+ #codex-overleaf-panel .run-workflow-tool-summary:focus-visible {
4156
+ outline: 2px solid var(--tl-accent);
4157
+ outline-offset: 2px;
4158
+ }
4159
+ #codex-overleaf-panel .run-workflow-icon { display: inline-flex; flex: 0 0 16px; padding-top: 2px; color: var(--tl-fg-3); }
4160
+ #codex-overleaf-panel .run-workflow-icon svg { width: 16px; height: 16px; }
4161
+ #codex-overleaf-panel .run-workflow-tool-kind { flex: 0 1 auto; overflow-wrap: anywhere; }
4162
+ #codex-overleaf-panel .run-workflow-tool-target {
4163
+ flex: 1 1 90px;
4164
+ min-width: 0;
4165
+ color: var(--tl-fg-2);
4166
+ overflow-wrap: anywhere;
4167
+ display: -webkit-box;
4168
+ -webkit-box-orient: vertical;
4169
+ -webkit-line-clamp: 2;
4170
+ overflow: hidden;
4171
+ }
4172
+ #codex-overleaf-panel .run-workflow-tool-state { flex: 0 1 auto; margin-left: auto; font-size: 11px; text-align: right; }
4173
+ #codex-overleaf-panel .run-workflow-chevron {
4174
+ width: 5px; height: 5px;
4175
+ flex: 0 0 5px;
4176
+ border-right: 1px solid currentColor;
4177
+ border-top: 1px solid currentColor;
4178
+ transform: rotate(45deg);
4179
+ margin: 7px 4px 0 1px;
4180
+ opacity: .45;
4181
+ transition: transform 140ms ease, opacity 140ms ease;
4182
+ }
4183
+ #codex-overleaf-panel .run-workflow-tool[open] > summary .run-workflow-chevron { transform: rotate(135deg); opacity: .9; }
4184
+ #codex-overleaf-panel .run-workflow-tool-summary:hover .run-workflow-chevron { opacity: .9; }
4185
+ #codex-overleaf-panel .run-workflow-tool[data-state="running"] > summary .run-workflow-tool-state { color: var(--tl-ok); }
4186
+ #codex-overleaf-panel .run-workflow-tool[data-state="failed"] > summary .run-workflow-tool-state,
4187
+ #codex-overleaf-panel .run-workflow-tool[data-state="failed"] > summary .run-workflow-icon { color: var(--tl-fail); }
4188
+ #codex-overleaf-panel .run-workflow-tool[data-state="warning"] > summary .run-workflow-tool-state,
4189
+ #codex-overleaf-panel .run-workflow-tool[data-state="unknown"] > summary .run-workflow-tool-state,
4190
+ #codex-overleaf-panel .run-workflow-tool[data-state="triggered"] > summary .run-workflow-tool-state { color: var(--tl-review); }
4191
+ #codex-overleaf-panel .run-workflow-tool-body {
4192
+ margin: 4px 0 9px 26px;
4193
+ min-width: 0;
4194
+ color: var(--tl-fg-3);
4195
+ font-size: 12px;
4196
+ line-height: 1.65;
4197
+ }
4198
+ #codex-overleaf-panel .run-workflow-tool-body > .run-workflow-tool { margin: 1px 0; }
4199
+ #codex-overleaf-panel .run-workflow-tool-note { overflow-wrap: anywhere; margin-top: 4px; }
4200
+ #codex-overleaf-panel .run-workflow-command,
4201
+ #codex-overleaf-panel .run-workflow-output,
4202
+ #codex-overleaf-panel .run-workflow-patch {
4203
+ margin: 5px 0;
4204
+ padding: 8px 10px;
4205
+ border-radius: 6px;
4206
+ background: var(--tl-surface-1);
4207
+ color: var(--tl-fg-2);
4208
+ white-space: pre-wrap;
4209
+ overflow-wrap: anywhere;
4210
+ font-size: 11px;
4211
+ line-height: 1.65;
4212
+ }
4213
+ #codex-overleaf-panel .run-workflow-diff-count { display: inline-flex; gap: 5px; font-size: 11px; font-variant-numeric: tabular-nums; white-space: nowrap; }
4214
+ #codex-overleaf-panel .run-workflow-added,
4215
+ #codex-overleaf-panel .run-workflow-patch .is-added { color: var(--tl-ok); }
4216
+ #codex-overleaf-panel .run-workflow-removed,
4217
+ #codex-overleaf-panel .run-workflow-patch .is-removed { color: var(--tl-fail); }
4218
+ #codex-overleaf-panel .run-workflow-metrics { color: var(--tl-fg-3); font-size: 11px; }
4219
+ #codex-overleaf-panel .run-workflow-attention {
4220
+ display: block;
4221
+ width: 100%;
4222
+ background: transparent;
4223
+ border: 0;
4224
+ padding: 6px 0;
4225
+ color: var(--tl-review);
4226
+ font-size: 12px;
4227
+ text-align: left;
4228
+ line-height: 1.6;
4229
+ overflow-wrap: anywhere;
4230
+ cursor: pointer;
4231
+ }
4232
+ #codex-overleaf-panel .run-workflow-busy { color: var(--tl-fg-3); padding: 5px 0; font-size: 12px; }
4233
+ #codex-overleaf-panel .run-presentation-workflow [hidden] { display: none !important; }
4234
+ @media (pointer: coarse) {
4235
+ #codex-overleaf-panel .run-workflow-tool-summary { min-height: 40px; align-items: center; }
4236
+ }
4237
+ @media (prefers-reduced-motion: reduce) {
4238
+ #codex-overleaf-panel .run-workflow-chevron { transition: none; }
4239
+ }
4240
+
3136
4241
  #codex-overleaf-panel .run-completion-report {
3137
4242
  margin-top: 10px;
3138
4243
  }
@@ -3160,10 +4265,6 @@
3160
4265
  letter-spacing: 0.01em;
3161
4266
  }
3162
4267
 
3163
- #codex-overleaf-panel .run-completion-report[data-status="failed"] .run-system-label[data-system-label="conclusion"] {
3164
- color: var(--tl-fg-3);
3165
- }
3166
-
3167
4268
  #codex-overleaf-panel .run-final-answer .run-change-summary {
3168
4269
  display: flex;
3169
4270
  align-items: center;
@@ -3249,6 +4350,27 @@
3249
4350
  font: 12px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
3250
4351
  }
3251
4352
 
4353
+ /* Completion facts: one muted summary line; the meta rows sit behind it. */
4354
+ #codex-overleaf-panel .run-final-answer__facts { margin: 12px 0 0; }
4355
+ #codex-overleaf-panel .run-final-answer__facts-sum {
4356
+ display: flex; flex-wrap: wrap; align-items: center; gap: 2px 6px;
4357
+ box-sizing: border-box; width: calc(100% + 8px); min-height: 0; margin: 0 -4px; padding: 3px 4px;
4358
+ border: 0; border-radius: 6px; background: none; color: var(--tl-fg-3);
4359
+ font: inherit; font-size: 12px; line-height: 1.5; text-align: left; font-variant-numeric: tabular-nums; cursor: pointer;
4360
+ }
4361
+ #codex-overleaf-panel .run-final-answer__facts-sum:hover { background: var(--tl-surface-1); color: var(--tl-fg-2); }
4362
+ #codex-overleaf-panel .run-final-answer__facts-sum:focus-visible { outline: 2px solid var(--tl-accent); outline-offset: 1px; }
4363
+ #codex-overleaf-panel .run-final-answer__facts-sep { color: var(--tl-fg-4); }
4364
+ #codex-overleaf-panel .run-final-answer__fact[data-tone="warn"] { color: var(--tl-review); }
4365
+ #codex-overleaf-panel .run-final-answer__fact[data-tone="warn"][data-fact="skip"]::before { content: "\26A0\FE0E "; }
4366
+ #codex-overleaf-panel .run-final-answer__fact[data-tone="fail"] { color: var(--tl-fail); }
4367
+ #codex-overleaf-panel .run-final-answer__facts-more { display: inline-flex; align-items: center; gap: 2px; color: var(--tl-fg-4); }
4368
+ #codex-overleaf-panel .run-final-answer__facts-sum:hover .run-final-answer__facts-more { color: var(--tl-fg-2); }
4369
+ #codex-overleaf-panel .run-final-answer__facts-more .codex-glyph { width: 11px; height: 11px; transition: transform var(--m-base, 180ms) var(--m-ease, ease); }
4370
+ #codex-overleaf-panel .run-final-answer__facts[data-open="true"] .run-final-answer__facts-more .codex-glyph { transform: rotate(90deg); }
4371
+ #codex-overleaf-panel .run-final-answer__meta[hidden] { display: none; }
4372
+ #codex-overleaf-panel .run-final-answer__meta [data-tone="warn"] { color: var(--tl-review); }
4373
+
3252
4374
  #codex-overleaf-panel .run-final-answer__meta {
3253
4375
  margin: 14px 0 0;
3254
4376
  padding: 0;
@@ -3261,6 +4383,8 @@
3261
4383
  color: var(--tl-fg-3);
3262
4384
  }
3263
4385
 
4386
+ #codex-overleaf-panel .run-final-answer__facts .run-final-answer__meta { margin: 6px 0 2px; padding-left: 10px; border-left: 1px solid var(--tl-border); animation: tl-rise var(--m-base, 180ms) var(--m-ease, ease); }
4387
+
3264
4388
  #codex-overleaf-panel .run-final-answer__meta-label {
3265
4389
  margin: 0;
3266
4390
  color: var(--tl-fg-2);
@@ -3524,18 +4648,16 @@
3524
4648
  }
3525
4649
 
3526
4650
  #codex-overleaf-panel .codex-mode-row {
3527
- display: grid;
3528
- grid-template-columns: auto minmax(0, 1fr);
4651
+ display: flex;
4652
+ flex-wrap: wrap;
3529
4653
  align-items: center;
3530
- gap: 7px;
3531
- border-top: 1px solid var(--tl-border);
3532
- padding: 5px 8px 0;
4654
+ gap: 6px 8px;
4655
+ border-top: 0;
4656
+ padding: 8px 8px 0;
3533
4657
  }
3534
4658
 
3535
4659
  #codex-overleaf-panel .codex-mode-label {
3536
- color: var(--tl-fg-3);
3537
- font-size: 11px;
3538
- white-space: nowrap;
4660
+ display: none;
3539
4661
  }
3540
4662
 
3541
4663
  /* Mode switch (Ask/Auto) — a real segmented control: a bordered track
@@ -3543,11 +4665,12 @@
3543
4665
  (distinct from the active accent-wash fill) so hover never reads as active. */
3544
4666
  #codex-overleaf-panel .codex-mode-switch {
3545
4667
  display: grid;
3546
- grid-template-columns: repeat(2, minmax(0, 1fr));
4668
+ grid-template-columns: repeat(2, minmax(36px, 1fr));
4669
+ flex: 0 0 auto;
3547
4670
  gap: 2px;
3548
4671
  min-width: 0;
3549
4672
  padding: 2px;
3550
- border: 1px solid var(--tl-border);
4673
+ border: 1px solid transparent;
3551
4674
  border-radius: var(--tl-r-sm);
3552
4675
  background: var(--tl-surface-2);
3553
4676
  }
@@ -3653,113 +4776,132 @@
3653
4776
  display: none;
3654
4777
  }
3655
4778
 
3656
- #codex-overleaf-panel .codex-attachment-strip {
3657
- display: flex;
3658
- min-height: 46px;
3659
- gap: 7px;
3660
- padding: 8px 8px 0;
3661
- overflow-x: auto;
3662
- }
3663
-
3664
- #codex-overleaf-panel .codex-attachment-strip[hidden] {
3665
- display: none;
3666
- }
3667
-
3668
- #codex-overleaf-panel .run-attachments {
3669
- margin: 0 0 8px;
3670
- }
3671
-
4779
+ #codex-overleaf-panel .codex-attachment-strip,
3672
4780
  #codex-overleaf-panel .codex-attachment-preview-list {
3673
4781
  display: flex;
3674
4782
  align-items: flex-start;
3675
- gap: 7px;
4783
+ gap: 10px;
3676
4784
  overflow-x: auto;
4785
+ min-width: 0;
4786
+ padding: 10px 10px 6px;
4787
+ scrollbar-width: thin;
3677
4788
  }
3678
-
3679
- #codex-overleaf-panel .codex-attachment-preview-list[hidden] {
3680
- display: none;
3681
- }
3682
-
4789
+ #codex-overleaf-panel .codex-attachment-strip[hidden],
4790
+ #codex-overleaf-panel .codex-attachment-preview-list[hidden] { display: none; }
4791
+ /* Sent attachments sit right-aligned above the message bubble they belong to.
4792
+ The first card takes the free space (not justify-content) so a long strip
4793
+ still scrolls from its first card. */
4794
+ #codex-overleaf-panel .run-attachments { margin: 0 0 6px; padding: 2px 0 4px; }
4795
+ #codex-overleaf-panel .run-attachments > :first-child { margin-left: auto; }
4796
+ #codex-overleaf-panel .run-selection { display: flex; justify-content: flex-end; min-width: 0; margin: 0 0 6px; font-size: 12px; line-height: 1.5; }
4797
+ #codex-overleaf-panel .run-selection[hidden] { display: none; }
4798
+ #codex-overleaf-panel .run-selection[data-run-selection] details { min-width: 0; max-width: 100%; }
4799
+ #codex-overleaf-panel .run-selection details[open] { flex: 1 1 auto; }
3683
4800
  #codex-overleaf-panel .codex-attachment-preview-card {
3684
4801
  position: relative;
3685
- display: inline-flex;
3686
- width: 104px;
3687
- min-width: 104px;
3688
- height: 74px;
3689
- flex-direction: column;
3690
- align-items: center;
3691
- justify-content: center;
4802
+ box-sizing: border-box;
4803
+ flex: 0 0 82px;
4804
+ width: 82px;
4805
+ min-width: 0;
4806
+ padding: 4px;
4807
+ display: grid;
3692
4808
  gap: 4px;
3693
- overflow: hidden;
3694
4809
  border: 1px solid var(--tl-border-strong);
3695
- border-radius: 8px;
3696
- background: var(--tl-surface-1);
4810
+ border-radius: 10px;
4811
+ background: var(--tl-surface-0);
3697
4812
  color: var(--tl-fg-2);
3698
- padding: 6px;
3699
- font-size: 11px;
3700
4813
  }
3701
-
3702
- #codex-overleaf-panel button.codex-attachment-preview-card {
4814
+ #codex-overleaf-panel button.codex-attachment-preview-open {
4815
+ display: block;
4816
+ box-sizing: border-box;
4817
+ width: 72px;
4818
+ height: 64px;
4819
+ min-height: 0;
4820
+ padding: 0;
4821
+ border: 0;
4822
+ border-radius: 6px;
4823
+ background: var(--tl-surface-1);
4824
+ box-shadow: none;
4825
+ overflow: hidden;
3703
4826
  cursor: zoom-in;
3704
4827
  }
3705
-
3706
- #codex-overleaf-panel .codex-attachment-preview-card img {
4828
+ #codex-overleaf-panel .codex-attachment-preview-open img {
4829
+ display: block;
3707
4830
  width: 100%;
3708
- min-height: 0;
3709
- flex: 1 1 auto;
3710
- object-fit: cover;
3711
- border-radius: 5px;
3712
- background: var(--tl-surface-0);
4831
+ height: 100%;
4832
+ object-fit: contain;
3713
4833
  }
3714
-
3715
- #codex-overleaf-panel .codex-attachment-file-icon {
3716
- display: inline-flex;
3717
- width: 34px;
3718
- height: 40px;
4834
+ #codex-overleaf-panel .codex-attachment-preview-card[data-kind="file"] {
4835
+ flex-basis: 190px;
4836
+ width: 190px;
4837
+ max-width: 80%;
4838
+ min-height: 64px;
4839
+ grid-template-columns: 30px minmax(0, 1fr);
3719
4840
  align-items: center;
3720
- justify-content: center;
3721
- border: 1px solid var(--tl-border-strong);
4841
+ gap: 8px;
4842
+ padding: 10px 24px 10px 10px;
4843
+ }
4844
+ #codex-overleaf-panel .codex-attachment-file-icon {
4845
+ display: grid;
4846
+ place-items: center;
4847
+ width: 30px;
4848
+ height: 36px;
3722
4849
  border-radius: 5px;
3723
4850
  background: var(--tl-surface-2);
3724
- color: var(--tl-fg-1);
3725
- font-size: 10px;
3726
- font-weight: 700;
4851
+ color: var(--tl-fg-2);
4852
+ font-size: 9px;
4853
+ font-weight: 600;
3727
4854
  }
3728
-
3729
4855
  #codex-overleaf-panel .codex-attachment-preview-meta {
3730
4856
  display: grid;
3731
- width: 100%;
3732
4857
  min-width: 0;
3733
- gap: 1px;
4858
+ gap: 3px;
3734
4859
  }
3735
-
3736
4860
  #codex-overleaf-panel .codex-attachment-preview-name,
3737
4861
  #codex-overleaf-panel .codex-attachment-preview-size {
3738
4862
  min-width: 0;
3739
4863
  overflow: hidden;
3740
4864
  text-overflow: ellipsis;
3741
4865
  white-space: nowrap;
4866
+ font-size: 11px;
4867
+ line-height: 16px;
3742
4868
  }
3743
-
3744
- #codex-overleaf-panel .codex-attachment-preview-size {
3745
- color: var(--tl-fg-3);
4869
+ #codex-overleaf-panel .codex-attachment-preview-card[data-kind="image"] .codex-attachment-preview-name {
4870
+ text-align: center;
3746
4871
  font-size: 10px;
3747
4872
  }
3748
-
3749
- #codex-overleaf-panel .codex-attachment-preview-remove {
4873
+ #codex-overleaf-panel .codex-attachment-preview-size { color: var(--tl-fg-3); }
4874
+ #codex-overleaf-panel button.codex-attachment-preview-remove {
3750
4875
  position: absolute;
3751
- top: 3px;
3752
- right: 3px;
3753
- width: 18px;
3754
- height: 18px;
4876
+ z-index: 1;
4877
+ top: -5px;
4878
+ right: -5px;
4879
+ display: grid;
4880
+ place-items: center;
4881
+ box-sizing: border-box;
4882
+ width: 24px;
4883
+ height: 24px;
4884
+ min-height: 0;
4885
+ padding: 0;
4886
+ border: 1px solid var(--tl-border-strong);
3755
4887
  border-radius: 50%;
3756
- background: rgba(0, 0, 0, 0.62);
3757
- color: var(--tl-fg-3);
3758
- }
3759
-
3760
- #codex-overleaf-panel .codex-attachment-preview-remove:hover {
3761
- background: var(--tl-hover);
4888
+ background: var(--tl-surface-0);
3762
4889
  color: var(--tl-fg-1);
4890
+ box-shadow: 0 1px 4px rgba(0,0,0,.12);
4891
+ font-size: 16px;
4892
+ line-height: 1;
4893
+ opacity: 0;
4894
+ }
4895
+ #codex-overleaf-panel .codex-attachment-preview-card:hover .codex-attachment-preview-remove,
4896
+ #codex-overleaf-panel .codex-attachment-preview-card:focus-within .codex-attachment-preview-remove { opacity: 1; }
4897
+ #codex-overleaf-panel button.codex-attachment-preview-remove:hover { background: var(--tl-hover); }
4898
+ #codex-overleaf-panel .codex-attachment-preview-open:focus-visible,
4899
+ #codex-overleaf-panel .codex-attachment-preview-remove:focus-visible {
4900
+ outline: 2px solid var(--tl-accent, #2f73b8);
4901
+ outline-offset: 2px;
4902
+ }
4903
+ @media (hover: none) {
4904
+ #codex-overleaf-panel button.codex-attachment-preview-remove { opacity: 1; }
3763
4905
  }
3764
4906
 
3765
4907
  #codex-overleaf-panel .codex-attachment-preview-dialog {
@@ -3807,10 +4949,10 @@
3807
4949
 
3808
4950
  #codex-overleaf-panel .codex-composer-toolbar {
3809
4951
  display: grid;
3810
- grid-template-columns: 26px 54px 70px minmax(0, 1fr) minmax(96px, 156px) 28px;
4952
+ grid-template-columns: 28px minmax(0, 1fr) 28px;
3811
4953
  align-items: center;
3812
- gap: 4px;
3813
- padding: 4px 6px 6px;
4954
+ gap: 6px;
4955
+ padding: 6px 8px 8px;
3814
4956
  }
3815
4957
 
3816
4958
  #codex-overleaf-panel .codex-composer-toolbar button,
@@ -3829,62 +4971,112 @@
3829
4971
  min-width: 26px;
3830
4972
  }
3831
4973
 
4974
+ /* Independent native checkbox preferences; the visual check is decorative. */
4975
+ #codex-overleaf-panel .codex-write-preferences {
4976
+ display: flex;
4977
+ flex: 0 0 auto;
4978
+ flex-wrap: wrap;
4979
+ align-items: center;
4980
+ gap: 4px;
4981
+ max-width: 100%;
4982
+ margin-left: auto;
4983
+ }
4984
+
3832
4985
  #codex-overleaf-panel .codex-review-toggle,
3833
4986
  #codex-overleaf-panel .codex-recompile-toggle {
3834
4987
  position: relative;
3835
- overflow: hidden;
3836
- padding: 0 8px;
3837
- cursor: pointer;
3838
- white-space: nowrap;
3839
- }
3840
-
3841
- #codex-overleaf-panel .codex-review-toggle {
3842
- min-width: 54px;
3843
- }
3844
-
3845
- #codex-overleaf-panel .codex-recompile-toggle {
3846
- min-width: 70px;
3847
- }
3848
-
3849
- #codex-overleaf-panel .codex-review-toggle:hover,
3850
- #codex-overleaf-panel .codex-recompile-toggle:hover {
3851
- background: var(--tl-hover);
4988
+ gap: 4px;
4989
+ min-width: 0;
4990
+ min-height: 30px;
4991
+ padding: 3px 5px;
4992
+ color: var(--tl-fg-3);
4993
+ background: transparent;
4994
+ border: 1px solid transparent;
4995
+ cursor: pointer;
4996
+ white-space: nowrap;
4997
+ transition: background-color 120ms ease, border-color 120ms ease;
3852
4998
  }
3853
4999
 
3854
5000
  #codex-overleaf-panel .codex-review-toggle input,
3855
5001
  #codex-overleaf-panel .codex-recompile-toggle input {
3856
5002
  position: absolute;
5003
+ width: 1px;
5004
+ height: 1px;
5005
+ margin: 0;
3857
5006
  opacity: 0;
3858
5007
  pointer-events: none;
3859
5008
  }
3860
5009
 
3861
5010
  #codex-overleaf-panel .codex-review-label,
3862
5011
  #codex-overleaf-panel .codex-recompile-label {
3863
- overflow: hidden;
3864
- font-size: 11px;
3865
- line-height: 1;
3866
- text-overflow: ellipsis;
5012
+ font-size: 12px;
5013
+ line-height: 1.3;
3867
5014
  white-space: nowrap;
3868
5015
  }
3869
5016
 
5017
+ #codex-overleaf-panel .codex-composer-option-icon,
5018
+ #codex-overleaf-panel .codex-composer-option-check {
5019
+ flex: 0 0 auto;
5020
+ width: 14px;
5021
+ height: 14px;
5022
+ fill: none;
5023
+ stroke: currentColor;
5024
+ stroke-width: 1.7;
5025
+ stroke-linecap: round;
5026
+ stroke-linejoin: round;
5027
+ pointer-events: none;
5028
+ }
5029
+
5030
+ #codex-overleaf-panel .codex-composer-option-check {
5031
+ width: 12px;
5032
+ height: 12px;
5033
+ opacity: 0;
5034
+ }
5035
+
3870
5036
  #codex-overleaf-panel .codex-review-toggle:has(input:checked),
3871
5037
  #codex-overleaf-panel .codex-recompile-toggle:has(input:checked) {
3872
5038
  color: var(--tl-ok);
3873
- background: var(--tl-ok-wash);
5039
+ background: transparent;
5040
+ }
5041
+
5042
+ #codex-overleaf-panel .codex-review-toggle input:checked ~ .codex-composer-option-check,
5043
+ #codex-overleaf-panel .codex-recompile-toggle input:checked ~ .codex-composer-option-check {
5044
+ opacity: 1;
3874
5045
  }
3875
5046
 
5047
+ #codex-overleaf-panel .codex-review-toggle:hover,
5048
+ #codex-overleaf-panel .codex-recompile-toggle:hover,
3876
5049
  #codex-overleaf-panel .codex-review-toggle:has(input:focus-visible),
3877
5050
  #codex-overleaf-panel .codex-recompile-toggle:has(input:focus-visible) {
3878
- outline: 1px solid var(--tl-accent);
5051
+ background: var(--tl-hover);
5052
+ border-color: var(--tl-border);
5053
+ }
5054
+
5055
+ #codex-overleaf-panel .codex-review-toggle:has(input:focus-visible),
5056
+ #codex-overleaf-panel .codex-recompile-toggle:has(input:focus-visible) {
5057
+ outline: 2px solid var(--tl-accent);
3879
5058
  outline-offset: 2px;
3880
5059
  }
3881
5060
 
5061
+ #codex-overleaf-panel .codex-review-toggle:has(input:disabled),
5062
+ #codex-overleaf-panel .codex-recompile-toggle:has(input:disabled) {
5063
+ opacity: 0.5;
5064
+ cursor: not-allowed;
5065
+ }
5066
+
5067
+ @media (pointer: coarse) {
5068
+ #codex-overleaf-panel .codex-review-toggle,
5069
+ #codex-overleaf-panel .codex-recompile-toggle {
5070
+ min-height: 42px;
5071
+ }
5072
+ }
5073
+
3882
5074
  #codex-overleaf-panel .codex-model-config {
3883
5075
  position: relative;
3884
- grid-column: 5;
5076
+ grid-column: 2;
3885
5077
  justify-self: end;
3886
- width: 100%;
3887
- max-width: 156px;
5078
+ width: auto;
5079
+ max-width: 100%;
3888
5080
  min-width: 0;
3889
5081
  }
3890
5082
 
@@ -3894,11 +5086,9 @@
3894
5086
  border: 1px solid transparent;
3895
5087
  outline: none;
3896
5088
  justify-content: flex-start;
3897
- background-color: var(--tl-surface-2);
3898
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M2 3.5 5 6.5 8 3.5' fill='none' stroke='%23bdbdbd' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
3899
- background-repeat: no-repeat;
3900
- background-position: right 4px center;
3901
- background-size: 10px 10px;
5089
+ position: relative;
5090
+ background-color: transparent;
5091
+ background-image: none;
3902
5092
  color: var(--tl-fg-2);
3903
5093
  gap: 5px;
3904
5094
  overflow: hidden;
@@ -3908,12 +5098,32 @@
3908
5098
  white-space: nowrap;
3909
5099
  }
3910
5100
 
5101
+ #codex-overleaf-panel .codex-model-config-button::after {
5102
+ content: "";
5103
+ position: absolute;
5104
+ right: 7px;
5105
+ top: 50%;
5106
+ width: 5px;
5107
+ height: 5px;
5108
+ border-right: 1px solid var(--tl-fg-3);
5109
+ border-bottom: 1px solid var(--tl-fg-3);
5110
+ transform: translateY(-70%) rotate(45deg);
5111
+ pointer-events: none;
5112
+ }
5113
+
3911
5114
  #codex-overleaf-panel .codex-model-config-button[data-active="true"],
3912
- #codex-overleaf-panel .codex-model-config-button:hover {
5115
+ #codex-overleaf-panel .codex-model-config-button[aria-expanded="true"],
5116
+ #codex-overleaf-panel .codex-model-config-button:hover,
5117
+ #codex-overleaf-panel .codex-model-config-button:focus-visible {
3913
5118
  background-color: var(--tl-hover);
3914
5119
  border-color: var(--tl-border);
3915
5120
  }
3916
5121
 
5122
+ #codex-overleaf-panel .codex-model-config-button:focus-visible {
5123
+ outline: 2px solid var(--tl-accent);
5124
+ outline-offset: 2px;
5125
+ }
5126
+
3917
5127
  #codex-overleaf-panel .codex-model-config-button [data-model-display] {
3918
5128
  flex: 0 1 auto;
3919
5129
  min-width: 0;
@@ -3927,8 +5137,8 @@
3927
5137
 
3928
5138
  #codex-overleaf-panel .codex-model-config-button [data-reasoning-display] {
3929
5139
  flex: 0 0 auto;
3930
- border-left: 1px solid var(--tl-border);
3931
- padding-left: 5px;
5140
+ border-left: 0;
5141
+ padding-left: 0;
3932
5142
  max-width: 56px;
3933
5143
  overflow: hidden;
3934
5144
  color: var(--tl-fg-3);
@@ -4036,7 +5246,7 @@
4036
5246
 
4037
5247
  #codex-overleaf-panel .codex-composer-toolbar [data-run] {
4038
5248
  position: relative;
4039
- grid-column: 6;
5249
+ grid-column: 3;
4040
5250
  width: 28px;
4041
5251
  min-width: 28px;
4042
5252
  padding: 0;
@@ -4068,7 +5278,7 @@
4068
5278
  border-top-color: #ffffff;
4069
5279
  border-radius: 50%;
4070
5280
  transform: translate(-50%, -50%);
4071
- animation: codex-run-spin 800ms linear infinite;
5281
+ animation: codex-run-spin var(--tl-m-spin, 800ms) linear infinite;
4072
5282
  }
4073
5283
 
4074
5284
  #codex-overleaf-panel .codex-composer-toolbar [data-run]:hover {
@@ -4081,141 +5291,53 @@
4081
5291
  }
4082
5292
  }
4083
5293
 
5294
+ /* Queued follow-ups: one card docked on top of the composer (shares its border). */
4084
5295
  #codex-overleaf-panel .codex-pending-inputs {
4085
5296
  display: grid;
4086
- gap: 0;
4087
- margin: 0 6px 7px;
4088
- padding: 7px 4px 0;
4089
- border-top: 1px solid var(--tl-border);
4090
- }
4091
-
4092
- #codex-overleaf-panel .codex-pending-inputs[hidden] {
4093
- display: none;
4094
- }
4095
-
4096
- #codex-overleaf-panel .codex-pending-input {
4097
- display: grid;
4098
- grid-template-columns: 20px minmax(0, 1fr) auto;
4099
- align-items: center;
4100
- gap: 7px;
4101
- min-width: 0;
4102
- padding: 8px 5px;
4103
- border-top: 1px solid var(--tl-border);
4104
- background: transparent;
4105
- }
4106
-
4107
- #codex-overleaf-panel .codex-pending-input:first-of-type {
4108
- border-top: 0;
4109
- }
4110
-
4111
- #codex-overleaf-panel .codex-pending-input:hover,
4112
- #codex-overleaf-panel .codex-pending-input:focus-within {
4113
- border-radius: 8px;
4114
- background: var(--tl-hover);
4115
- }
4116
-
4117
- #codex-overleaf-panel .codex-pending-input-marker {
4118
- display: inline-grid;
4119
- place-items: center;
4120
- color: var(--tl-fg-3);
4121
- }
4122
-
4123
- #codex-overleaf-panel .codex-pending-input[data-status="paused"] .codex-pending-input-marker {
4124
- color: var(--tl-warn);
4125
- }
4126
-
4127
- #codex-overleaf-panel .codex-pending-input[data-status="steering"] .codex-pending-input-marker,
4128
- #codex-overleaf-panel .codex-pending-input[data-status="executing"] .codex-pending-input-marker {
4129
- color: var(--tl-accent);
4130
- }
4131
-
4132
- #codex-overleaf-panel .codex-pending-input-copy {
4133
- display: grid;
4134
- min-width: 0;
4135
- gap: 3px;
4136
- }
4137
-
4138
- #codex-overleaf-panel .codex-pending-input-status {
4139
- color: var(--tl-fg-3);
4140
- font-size: 10.5px;
4141
- font-weight: 500;
4142
- }
4143
-
4144
- #codex-overleaf-panel .codex-pending-input-text {
4145
- color: var(--tl-fg-1);
4146
- font-size: 13px;
4147
- line-height: 1.4;
4148
- overflow-wrap: anywhere;
4149
- white-space: pre-wrap;
4150
- }
4151
-
4152
- #codex-overleaf-panel .codex-pending-input-actions {
4153
- display: inline-flex;
4154
- gap: 4px;
4155
- color: var(--tl-fg-3);
4156
- opacity: 0.72;
4157
- }
4158
-
4159
- #codex-overleaf-panel .codex-pending-input:hover .codex-pending-input-actions,
4160
- #codex-overleaf-panel .codex-pending-input:focus-within .codex-pending-input-actions {
4161
- opacity: 1;
4162
- }
4163
-
4164
- #codex-overleaf-panel .codex-pending-input-actions button {
4165
- min-height: 24px;
4166
- padding: 0 8px;
4167
- border-radius: 6px;
4168
- color: var(--tl-fg-2);
5297
+ margin: 8px 8px 0;
5298
+ padding: 7px 10px 6px;
5299
+ border: 1px solid var(--tl-border);
5300
+ border-bottom: 0;
5301
+ border-radius: 8px 8px 0 0;
4169
5302
  background: var(--tl-surface-2);
4170
- font-size: 11px;
4171
- }
4172
-
4173
- #codex-overleaf-panel .codex-pending-input-actions button:hover {
4174
- color: var(--tl-fg-1);
4175
- background: var(--tl-hover);
4176
- }
4177
-
4178
- #codex-overleaf-panel .codex-pending-input-actions button:disabled {
4179
- opacity: 0.45;
4180
- }
4181
-
4182
- #codex-overleaf-panel .codex-pending-input-actions .codex-pending-input-icon {
4183
- display: inline-grid;
4184
- place-items: center;
4185
- width: 26px;
4186
- min-width: 26px;
4187
- min-height: 26px;
4188
- padding: 0;
4189
- border-color: transparent;
4190
- background: transparent;
4191
- }
4192
-
4193
- #codex-overleaf-panel .codex-pending-input-icon svg {
4194
- width: 16px;
4195
- height: 16px;
4196
- fill: none;
4197
- stroke: currentColor;
4198
- stroke-width: 1.6;
4199
- stroke-linecap: round;
4200
- stroke-linejoin: round;
4201
- }
4202
-
4203
- #codex-overleaf-panel .codex-pending-input-marker svg {
4204
- width: 15px;
4205
- height: 15px;
4206
- fill: none;
4207
- stroke: currentColor;
4208
- stroke-width: 1.55;
4209
- stroke-linecap: round;
4210
- stroke-linejoin: round;
4211
- }
4212
-
4213
- #codex-overleaf-panel .codex-pending-input-icon[data-action="guide"]:hover {
4214
- color: var(--tl-accent);
4215
- }
4216
-
4217
- #codex-overleaf-panel .codex-pending-input-icon[data-action="remove"]:hover {
4218
- color: var(--tl-fail);
5303
+ animation: tl-rise var(--tl-m-base) var(--tl-m-ease);
5304
+ }
5305
+ #codex-overleaf-panel .codex-pending-inputs[hidden] { display: none; }
5306
+ #codex-overleaf-panel .codex-pending-inputs:not([hidden]) + .codex-composer { margin-top: 0; border-top-left-radius: 0; border-top-right-radius: 0; }
5307
+ #codex-overleaf-panel .codex-pending-head { display: flex; align-items: center; gap: 6px; min-height: 18px; color: var(--tl-fg-3); font-size: 11px; font-weight: 560; }
5308
+ #codex-overleaf-panel .codex-pending-head svg,
5309
+ #codex-overleaf-panel .codex-pending-steer svg,
5310
+ #codex-overleaf-panel .codex-pending-input-remove svg { width: 12px; height: 12px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
5311
+ #codex-overleaf-panel .codex-pending-count { margin-left: auto; color: var(--tl-fg-4); font-weight: 500; font-variant-numeric: tabular-nums; }
5312
+ #codex-overleaf-panel .codex-pending-resume { margin-left: 6px; min-height: 20px; padding: 0 8px; border: 1px solid currentColor; border-radius: 999px; background: transparent; color: inherit; font: inherit; font-size: 10.5px; box-shadow: none; cursor: pointer; }
5313
+ #codex-overleaf-panel .codex-pending-inputs[data-state="paused"] .codex-pending-head { color: var(--tl-review); }
5314
+ #codex-overleaf-panel .codex-pending-inputs[data-state="steering"] .codex-pending-head,
5315
+ #codex-overleaf-panel .codex-pending-inputs[data-state="executing"] .codex-pending-head { color: var(--tl-accent); }
5316
+ #codex-overleaf-panel .codex-pending-inputs[data-state="steering"] .codex-pending-head-label { background: linear-gradient(90deg, var(--tl-accent) 0 38%, var(--tl-fg-1) 50%, var(--tl-accent) 62% 100%); background-size: 250% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; animation: tl-shimmer 1.8s linear infinite; }
5317
+ #codex-overleaf-panel .codex-pending-list { display: grid; margin: 5px 0 0; padding: 0; list-style: none; }
5318
+ #codex-overleaf-panel .codex-pending-input { display: grid; grid-template-columns: 14px minmax(0, 1fr) auto; align-items: start; gap: 6px; min-width: 0; padding: 4px 0; border-top: 1px solid var(--tl-border); }
5319
+ #codex-overleaf-panel .codex-pending-input:first-child { border-top: 0; }
5320
+ #codex-overleaf-panel .codex-pending-number { padding-top: 1px; color: var(--tl-fg-4); font-size: 10.5px; font-variant-numeric: tabular-nums; text-align: right; }
5321
+ #codex-overleaf-panel .codex-pending-input-text { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; min-width: 0; min-height: 0; height: auto; padding: 0 2px; border: 0; border-radius: 4px; background: none; box-shadow: none; color: var(--tl-fg-2); font: inherit; font-size: 12.5px; line-height: 1.5; text-align: left; white-space: pre-wrap; overflow-wrap: anywhere; cursor: text; }
5322
+ #codex-overleaf-panel .codex-pending-input-text:hover:not(:disabled) { color: var(--tl-fg-1); background: var(--tl-hover); }
5323
+ #codex-overleaf-panel .codex-pending-input-text:disabled { cursor: default; opacity: 1; }
5324
+ #codex-overleaf-panel .codex-pending-input-actions { display: inline-flex; align-items: center; gap: 2px; }
5325
+ #codex-overleaf-panel .codex-pending-steer { display: inline-flex; align-items: center; gap: 4px; min-height: 22px; height: auto; padding: 0 8px; border: 1px solid var(--tl-border-strong); border-radius: 999px; background: var(--tl-surface-1); box-shadow: none; color: var(--tl-accent); font-size: 11px; font-weight: 560; white-space: nowrap; cursor: pointer; transition: border-color var(--tl-m-fast), background var(--tl-m-fast); }
5326
+ #codex-overleaf-panel .codex-pending-steer:hover:not(:disabled) { border-color: var(--tl-accent); background: var(--tl-surface-0); }
5327
+ #codex-overleaf-panel .codex-pending-steer:disabled { color: var(--tl-fg-4); cursor: not-allowed; }
5328
+ #codex-overleaf-panel .codex-pending-input-remove { display: inline-grid; place-items: center; width: 22px; min-width: 22px; height: 22px; min-height: 22px; padding: 0; border: 0; border-radius: 5px; background: transparent; box-shadow: none; color: var(--tl-fg-4); opacity: 0; cursor: pointer; transition: opacity var(--tl-m-fast); }
5329
+ #codex-overleaf-panel .codex-pending-input:hover .codex-pending-input-remove,
5330
+ #codex-overleaf-panel .codex-pending-input:focus-within .codex-pending-input-remove,
5331
+ #codex-overleaf-panel .codex-pending-input-remove:focus-visible { opacity: 1; }
5332
+ #codex-overleaf-panel .codex-pending-input-remove:hover:not(:disabled) { color: var(--tl-fail); background: var(--tl-hover); }
5333
+ #codex-overleaf-panel .codex-pending-input-remove:disabled { opacity: 0 !important; }
5334
+ #codex-overleaf-panel .codex-pending-more { display: block; width: 100%; min-height: 0; height: auto; margin-top: 2px; padding: 3px 0 1px 20px; border: 0; background: none; box-shadow: none; color: var(--tl-fg-3); font: inherit; font-size: 11.5px; text-align: left; cursor: pointer; }
5335
+ #codex-overleaf-panel .codex-pending-more:hover { color: var(--tl-fg-1); }
5336
+ #codex-overleaf-panel .codex-pending-hint { margin: 3px 0 0 20px; color: var(--tl-fg-4); font-size: 11px; }
5337
+ #codex-overleaf-panel :is(.codex-pending-input-text, .codex-pending-steer, .codex-pending-more, .codex-pending-resume):focus-visible { outline: 2px solid var(--tl-accent); outline-offset: 1px; }
5338
+ @media (pointer: coarse) { #codex-overleaf-panel .codex-pending-input-remove { opacity: 1; } }
5339
+ @media (prefers-reduced-motion: reduce) {
5340
+ #codex-overleaf-panel .codex-pending-inputs, #codex-overleaf-panel .codex-pending-head-label { animation: none !important; }
4219
5341
  }
4220
5342
 
4221
5343
  #codex-overleaf-panel .codex-composer-toolbar [data-add-context][data-active="true"],
@@ -4297,7 +5419,7 @@
4297
5419
  display: block;
4298
5420
  stroke-dasharray: 28 14;
4299
5421
  transform-origin: 10px 10px;
4300
- animation: codex-context-sync-spin 850ms linear infinite;
5422
+ animation: codex-context-sync-spin var(--tl-m-spin, 800ms) linear infinite;
4301
5423
  }
4302
5424
 
4303
5425
  #codex-overleaf-panel .codex-context-sync-status[data-state="exact-loading"] {
@@ -4794,425 +5916,240 @@
4794
5916
  flex-direction: column;
4795
5917
  min-height: 0;
4796
5918
  overflow-y: auto;
4797
- padding: 14px 12px 12px;
4798
- gap: 12px;
4799
- }
4800
-
4801
- #codex-overleaf-panel .recent-projects-welcome {
4802
- display: flex;
4803
- flex-direction: column;
4804
- gap: 4px;
4805
- padding-bottom: 4px;
4806
- border-bottom: 1px solid var(--tl-border);
4807
- }
4808
-
4809
- #codex-overleaf-panel .recent-projects-welcome-title {
4810
- color: var(--tl-fg-1);
4811
- font-size: 14px;
4812
- font-weight: 650;
4813
- letter-spacing: 0;
5919
+ padding: 22px 18px 16px;
5920
+ gap: 20px;
4814
5921
  }
4815
5922
 
4816
- #codex-overleaf-panel .recent-projects-welcome-subtitle {
5923
+ #codex-overleaf-panel .recent-projects-welcome { display: grid; gap: 5px; padding: 0 4px; }
5924
+ #codex-overleaf-panel .recent-projects-eyebrow {
4817
5925
  color: var(--tl-fg-3);
4818
- font-size: 12px;
4819
- line-height: 1.4;
4820
- }
4821
-
4822
- #codex-overleaf-panel [data-recent-projects-list] {
4823
- display: flex;
4824
- flex-direction: column;
4825
- gap: 0;
5926
+ font-size: 10px;
5927
+ font-weight: 550;
5928
+ letter-spacing: 0.09em;
5929
+ margin-bottom: 3px;
4826
5930
  }
4827
-
5931
+ #codex-overleaf-panel .recent-projects-welcome-title { color: var(--tl-fg-1); font-size: 16px; font-weight: 600; line-height: 1.4; }
5932
+ #codex-overleaf-panel .recent-projects-welcome-subtitle { color: var(--tl-fg-3); font-size: 11.5px; line-height: 1.5; }
5933
+ #codex-overleaf-panel [data-recent-projects-list] { min-width: 0; }
4828
5934
  #codex-overleaf-panel .recent-projects-empty,
4829
5935
  #codex-overleaf-panel .recent-projects-degraded {
4830
- border: 1px dashed var(--tl-border-strong);
4831
- border-radius: 6px;
4832
- background: var(--tl-surface-1);
4833
- color: var(--tl-fg-3);
5936
+ padding: 12px 4px;
5937
+ color: var(--tl-fg-2);
5938
+ font-size: 13px;
5939
+ line-height: 1.6;
5940
+ }
5941
+ #codex-overleaf-panel .recent-projects-loading { display: block; padding: 10px 4px; color: var(--tl-fg-3); font-size: 12px; }
5942
+ #codex-overleaf-panel .recent-projects-filter { display: flex; align-items: center; gap: 10px; min-width: 0; padding: 0 4px; }
5943
+ #codex-overleaf-panel .recent-projects-filter > button {
5944
+ flex: 0 0 auto;
5945
+ padding: 3px 0;
5946
+ border: 0;
5947
+ background: transparent;
5948
+ color: var(--tl-ok);
4834
5949
  font-size: 12px;
4835
- line-height: 1.45;
4836
- padding: 14px 12px;
5950
+ cursor: pointer;
4837
5951
  }
4838
-
4839
- /* Dashboard per-project session management: expand a row to list, rename, or
4840
- delete that project's sessions without entering it. */
4841
- #codex-overleaf-panel .recent-projects-row-wrap {
5952
+ #codex-overleaf-panel .recent-projects-filter > button::before { content: "\2190"; margin-inline-end: 5px; }
5953
+ #codex-overleaf-panel .recent-projects-filter > span { min-width: 0; color: var(--tl-fg-3); font-size: 11px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
5954
+ #codex-overleaf-panel .recent-projects-session-row {
4842
5955
  position: relative;
4843
5956
  display: grid;
4844
- gap: 0;
4845
- border-bottom: 1px solid rgba(128, 128, 128, 0.12);
4846
- }
4847
-
4848
- #codex-overleaf-panel .recent-projects-row-wrap::before {
4849
- content: "";
4850
- position: absolute;
4851
- top: 14px;
4852
- bottom: 14px;
4853
- left: 0;
4854
- width: 2px;
4855
- border-radius: 999px;
4856
- background: var(--tl-border-strong);
4857
- opacity: 0.65;
4858
- }
4859
-
4860
- #codex-overleaf-panel .recent-projects-row-wrap:has(.badge-completed)::before,
4861
- #codex-overleaf-panel .recent-projects-row-wrap:has(.badge-accepted)::before,
4862
- #codex-overleaf-panel .recent-projects-row-wrap:has(.badge-background-completed)::before {
4863
- background: var(--tl-ok);
4864
- }
4865
-
4866
- #codex-overleaf-panel .recent-projects-row-wrap:has(.badge-stale)::before,
4867
- #codex-overleaf-panel .recent-projects-row-wrap:has(.badge-interrupted)::before,
4868
- #codex-overleaf-panel .recent-projects-row-wrap:has(.badge-needs-review)::before,
4869
- #codex-overleaf-panel .recent-projects-row-wrap:has(.badge-needs-review-after-navigation)::before {
4870
- background: var(--tl-review);
4871
- }
4872
-
4873
- #codex-overleaf-panel .recent-projects-row-wrap:has(.badge-failed)::before,
4874
- #codex-overleaf-panel .recent-projects-row-wrap:has(.badge-abandoned-after-navigation)::before {
4875
- background: var(--tl-fail);
5957
+ grid-template-columns: minmax(0, 1fr) 24px;
5958
+ align-items: center;
5959
+ gap: 4px;
5960
+ min-width: 0;
5961
+ padding: 9px 5px;
5962
+ border-radius: 6px;
4876
5963
  }
4877
-
4878
- #codex-overleaf-panel .recent-projects-row-head {
4879
- position: relative;
5964
+ #codex-overleaf-panel .recent-projects-session-copy { display: grid; gap: 4px; min-width: 0; }
5965
+ #codex-overleaf-panel .recent-projects-session-title {
4880
5966
  display: block;
4881
- }
4882
-
4883
- #codex-overleaf-panel .recent-projects-row-head [data-recent-projects-row] {
4884
- width: 100%;
4885
5967
  min-width: 0;
4886
- }
4887
-
4888
- #codex-overleaf-panel .recent-projects-row-cleanup {
4889
- flex: 0 0 auto;
4890
- width: 26px;
4891
- border-radius: var(--tl-r-sm);
4892
- color: var(--tl-fg-4);
5968
+ overflow: hidden;
5969
+ color: var(--tl-fg-1);
4893
5970
  font-size: 13px;
5971
+ font-weight: 500;
5972
+ line-height: 1.6;
5973
+ text-overflow: ellipsis;
5974
+ white-space: nowrap;
4894
5975
  }
4895
-
4896
- #codex-overleaf-panel .recent-projects-row-cleanup:hover {
4897
- background: var(--tl-hover);
4898
- color: var(--tl-fail);
4899
- }
4900
-
4901
- #codex-overleaf-panel .recent-projects-row-clear {
4902
- position: absolute;
4903
- top: 8px;
4904
- right: 8px;
4905
- z-index: 2;
4906
- width: 24px;
4907
- height: 24px;
4908
- border-radius: var(--tl-r-sm);
4909
- color: var(--tl-fg-4);
4910
- font-size: 16px;
4911
- line-height: 1;
4912
- opacity: 0;
4913
- transform: translateX(4px);
4914
- transition: color 120ms ease, background 120ms ease, opacity 120ms ease, transform 120ms ease;
4915
- }
4916
-
4917
- #codex-overleaf-panel .recent-projects-row-wrap:hover .recent-projects-row-clear,
4918
- #codex-overleaf-panel .recent-projects-row-clear:focus-visible {
4919
- opacity: 1;
4920
- transform: translateX(0);
4921
- }
4922
-
4923
- #codex-overleaf-panel .recent-projects-row-clear:hover {
4924
- background: var(--tl-hover);
4925
- color: var(--tl-fail);
5976
+ #codex-overleaf-panel .recent-projects-session-title[hidden] { display: none; }
5977
+ #codex-overleaf-panel .recent-projects-session-meta { display: flex; align-items: baseline; gap: 7px; min-width: 0; color: var(--tl-fg-3); font-size: 11px; line-height: 1.5; }
5978
+ #codex-overleaf-panel .recent-projects-row-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 400; }
5979
+ #codex-overleaf-panel .recent-projects-session-time { flex: 0 0 auto; margin-inline-start: auto; color: var(--tl-fg-3); font-size: 10.5px; white-space: nowrap; }
5980
+ #codex-overleaf-panel .recent-projects-session-attention { flex: 0 0 auto; color: var(--tl-review); font-size: 10.5px; }
5981
+ #codex-overleaf-panel .recent-projects-session-attention::before { content: "\00b7"; margin-inline-end: 4px; }
5982
+ #codex-overleaf-panel .recent-projects-session-row[aria-busy="true"] { cursor: progress; }
5983
+ #codex-overleaf-panel .recent-projects-session-row[data-running="true"]:not(.recent-projects-focus) .recent-projects-session-title::before {
5984
+ content: "";
5985
+ display: inline-block;
5986
+ width: 5px;
5987
+ height: 5px;
5988
+ margin-inline-end: 6px;
5989
+ border-radius: 50%;
5990
+ background: var(--tl-run);
4926
5991
  }
4927
-
4928
- #codex-overleaf-panel .recent-projects-loading {
4929
- padding: 10px 12px;
4930
- color: var(--tl-fg-3);
4931
- font-size: 12px;
5992
+ #codex-overleaf-panel .recent-projects-focus {
5993
+ display: flex;
5994
+ flex-direction: column;
5995
+ align-items: stretch;
5996
+ gap: 9px;
5997
+ padding: 12px;
5998
+ margin-bottom: 20px;
5999
+ border-radius: 8px;
6000
+ background: var(--tl-ok-wash);
6001
+ background: color-mix(in srgb, var(--tl-ok-wash) 65%, var(--tl-surface-0));
6002
+ }
6003
+ #codex-overleaf-panel .recent-projects-focus-eyebrow { flex: 0 0 auto; color: var(--tl-fg-3); font-size: 10.5px; font-weight: 400; line-height: 1.5; }
6004
+ #codex-overleaf-panel .recent-projects-focus-eyebrow::after { content: "\00b7"; margin-inline-start: 6px; }
6005
+ #codex-overleaf-panel .recent-projects-focus .recent-projects-session-copy { gap: 6px; }
6006
+ #codex-overleaf-panel .recent-projects-focus .recent-projects-session-meta { justify-content: flex-start; gap: 6px; padding-inline-end: 18px; font-size: 11px; }
6007
+ #codex-overleaf-panel .recent-projects-focus .recent-projects-session-time { margin-inline-start: 0; font-size: inherit; }
6008
+ #codex-overleaf-panel .recent-projects-focus .recent-projects-session-time:not(:empty)::before { content: "\00b7"; margin-inline-end: 7px; }
6009
+ #codex-overleaf-panel .recent-projects-focus .recent-projects-session-title {
6010
+ display: -webkit-box;
6011
+ -webkit-line-clamp: 2;
6012
+ -webkit-box-orient: vertical;
6013
+ white-space: normal;
6014
+ overflow-wrap: anywhere;
6015
+ font-size: 14.5px;
6016
+ font-weight: 500;
6017
+ line-height: 1.5;
4932
6018
  }
4933
-
4934
- #codex-overleaf-panel .recent-projects-row-expand {
4935
- position: absolute;
4936
- right: 8px;
4937
- bottom: 10px;
4938
- z-index: 1;
6019
+ #codex-overleaf-panel .recent-projects-focus .recent-projects-session-title[hidden] { display: none; }
6020
+ #codex-overleaf-panel .recent-projects-focus .recent-projects-row-badge { flex: 1 1 auto; min-width: 0; font-size: 11.5px; line-height: 1.45; }
6021
+ #codex-overleaf-panel .recent-projects-focus-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; }
6022
+ #codex-overleaf-panel .recent-projects-focus > .recent-projects-menu { position: absolute; top: 6px; inset-inline-end: 6px; }
6023
+ #codex-overleaf-panel .recent-projects-continue {
6024
+ flex: 0 0 auto;
4939
6025
  display: inline-flex;
4940
6026
  align-items: center;
4941
6027
  justify-content: center;
4942
- width: auto;
4943
- min-width: 0;
4944
- height: 18px;
4945
- padding: 0 2px;
6028
+ gap: 8px;
6029
+ min-height: 28px;
6030
+ padding: 5px 10px;
4946
6031
  border: 0;
4947
- border-radius: 0;
4948
- color: var(--tl-accent);
4949
- font-size: 11px;
4950
- font-weight: 550;
4951
- background: transparent;
4952
- opacity: 0;
4953
- transform: translateX(4px);
4954
- transition: opacity 120ms ease, transform 120ms ease, color 120ms ease;
4955
- }
4956
-
4957
- #codex-overleaf-panel .recent-projects-row-wrap:hover .recent-projects-row-expand,
4958
- #codex-overleaf-panel .recent-projects-row-expand:focus-visible,
4959
- #codex-overleaf-panel .recent-projects-row-wrap[data-expanded="true"] .recent-projects-row-expand {
4960
- opacity: 1;
4961
- transform: translateX(0);
4962
- }
4963
-
4964
- #codex-overleaf-panel .recent-projects-row-expand:hover {
4965
- background: transparent;
4966
- color: var(--tl-accent);
4967
- text-decoration: underline;
6032
+ border-radius: 6px;
6033
+ background: #357347;
6034
+ color: #fff;
6035
+ font-size: 12px;
6036
+ font-weight: 400;
6037
+ line-height: 1.4;
6038
+ cursor: pointer;
4968
6039
  }
4969
-
4970
- #codex-overleaf-panel .recent-projects-row-wrap[data-expanded="true"] .recent-projects-row-expand {
4971
- color: var(--tl-accent);
6040
+ #codex-overleaf-panel .recent-projects-continue::after { content: "\2192"; }
6041
+ #codex-overleaf-panel .recent-projects-continue:hover:not(:disabled) { text-decoration: underline; text-underline-offset: 3px; }
6042
+ #codex-overleaf-panel .recent-projects-continue:disabled { opacity: 0.55; cursor: progress; }
6043
+ #codex-overleaf-panel .recent-projects-row-badge {
6044
+ display: inline-flex;
6045
+ align-items: baseline;
6046
+ gap: 6px;
6047
+ min-width: 0;
6048
+ padding: 0;
6049
+ border: 0;
4972
6050
  background: transparent;
4973
- }
4974
-
4975
- #codex-overleaf-panel .recent-projects-sessions {
4976
- display: grid;
4977
- gap: 2px;
4978
- border-left: 2px solid var(--tl-border);
4979
- margin: 2px 0 6px 10px;
4980
- padding-left: 8px;
4981
- }
4982
-
4983
- #codex-overleaf-panel .recent-projects-sessions-empty {
4984
- color: var(--tl-fg-4);
6051
+ color: var(--tl-fg-3);
4985
6052
  font-size: 11px;
4986
- padding: 4px 2px;
4987
- }
4988
-
4989
- #codex-overleaf-panel .recent-projects-session-row {
6053
+ font-weight: 400;
6054
+ line-height: 1.6;
6055
+ overflow-wrap: anywhere;
6056
+ text-transform: none;
6057
+ letter-spacing: normal;
6058
+ }
6059
+ #codex-overleaf-panel .recent-projects-row-badge[data-status]::before { content: "\00b7"; flex: 0 0 auto; color: var(--tl-fg-3); }
6060
+ #codex-overleaf-panel .recent-projects-row-badge:is(.badge-completed, .badge-accepted, .badge-background-completed)::before { content: "\2713"; color: var(--tl-ok); }
6061
+ #codex-overleaf-panel .recent-projects-row-badge:is(.badge-failed, .badge-abandoned-after-navigation)::before { content: "!"; color: var(--tl-fail); }
6062
+ #codex-overleaf-panel .recent-projects-row-badge:is(.badge-stale, .badge-interrupted, .badge-needs-review, .badge-needs-review-after-navigation)::before { content: "!"; color: var(--tl-review); }
6063
+ #codex-overleaf-panel .recent-projects-row-badge.badge-running::before { color: var(--tl-run); }
6064
+ #codex-overleaf-panel .recent-projects-history-heading { display: flex; justify-content: space-between; gap: 10px; margin: 0 5px 7px; color: var(--tl-fg-3); font-size: 11px; line-height: 1.5; }
6065
+ #codex-overleaf-panel .recent-projects-history-heading > :last-child { font-size: 10px; }
6066
+ #codex-overleaf-panel .recent-projects-history-list { display: grid; gap: 1px; min-width: 0; }
6067
+ #codex-overleaf-panel .recent-projects-drafts { margin: 18px 5px 0; min-width: 0; }
6068
+ #codex-overleaf-panel .recent-projects-drafts > summary { padding: 5px 0; color: var(--tl-fg-3); font-size: 11px; line-height: 1.5; cursor: pointer; list-style: none; }
6069
+ #codex-overleaf-panel .recent-projects-drafts > summary::-webkit-details-marker { display: none; }
6070
+ #codex-overleaf-panel .recent-projects-drafts > summary::before { content: "\203a"; display: inline-block; margin-inline-end: 6px; font-size: 13px; }
6071
+ #codex-overleaf-panel .recent-projects-drafts[open] > summary::before { transform: rotate(90deg); }
6072
+ #codex-overleaf-panel .recent-projects-drafts-hint { display: block; margin: 3px 0 7px; color: var(--tl-fg-3); font-size: 10.5px; line-height: 1.6; }
6073
+ #codex-overleaf-panel .recent-projects-unavailable-row { display: grid; grid-template-columns: minmax(0, 1fr) 24px; align-items: center; gap: 8px; margin: 10px 5px 0; }
6074
+ #codex-overleaf-panel .recent-projects-unavailable-row .recent-projects-row { min-width: 0; padding: 0; border: 0; background: transparent; color: var(--tl-fg-3); font-size: 12px; text-align: start; }
6075
+ #codex-overleaf-panel .recent-projects-menu { position: relative; justify-self: end; flex: 0 0 auto; }
6076
+ #codex-overleaf-panel .recent-projects-menu > summary {
4990
6077
  display: flex;
4991
6078
  align-items: center;
4992
- gap: 6px;
4993
- min-width: 0;
4994
- border-radius: var(--tl-r-sm);
4995
- padding: 3px 4px;
4996
- }
4997
-
4998
- #codex-overleaf-panel .recent-projects-session-row:hover {
4999
- background: var(--tl-hover);
5000
- }
5001
-
5002
- #codex-overleaf-panel .recent-projects-session-row[data-running="true"] .recent-projects-session-title::before {
5003
- content: "";
5004
- display: inline-block;
5005
- width: 7px;
5006
- height: 7px;
5007
- margin-right: 6px;
5008
- border: 2px solid rgba(78, 201, 176, 0.25);
5009
- border-top-color: var(--tl-run);
5010
- border-radius: 50%;
5011
- vertical-align: -1px;
5012
- animation: codex-session-spin 800ms linear infinite;
5013
- }
5014
-
5015
- #codex-overleaf-panel .recent-projects-session-title {
5016
- flex: 1 1 auto;
5017
- min-width: 0;
5018
- overflow: hidden;
5019
- color: var(--tl-fg-2);
5020
- font-size: 12px;
5021
- text-overflow: ellipsis;
5022
- white-space: nowrap;
5023
- }
5024
-
5025
- #codex-overleaf-panel .recent-projects-session-time {
5026
- flex: 0 0 auto;
5027
- color: var(--tl-fg-4);
5028
- font-size: 11px;
5029
- white-space: nowrap;
5030
- }
5031
-
5032
- #codex-overleaf-panel .recent-projects-session-action {
5033
- flex: 0 0 auto;
5034
- width: 22px;
5035
- height: 22px;
5036
- border-radius: var(--tl-r-sm);
6079
+ justify-content: center;
6080
+ width: 24px;
6081
+ height: 28px;
6082
+ padding: 0;
6083
+ border-radius: 5px;
5037
6084
  color: var(--tl-fg-3);
5038
- opacity: 0.75;
5039
- }
5040
-
5041
- #codex-overleaf-panel .recent-projects-session-action:hover {
5042
- background: var(--tl-hover);
5043
- opacity: 1;
5044
- }
5045
-
5046
- #codex-overleaf-panel .recent-projects-session-action--delete:hover {
5047
- color: var(--tl-fail);
5048
- }
5049
-
5050
- #codex-overleaf-panel .recent-projects-session-action:disabled {
5051
- cursor: not-allowed;
5052
- opacity: 0.3;
5053
- }
5054
-
5055
- #codex-overleaf-panel .recent-projects-session-rename-input {
5056
- flex: 1 1 auto;
5057
- min-width: 0;
5058
- border: 1px solid var(--tl-accent);
5059
- border-radius: var(--tl-r-sm);
5060
- background: var(--tl-surface-0);
5061
- color: var(--tl-fg-1);
5062
- font-size: 12px;
5063
- padding: 2px 6px;
6085
+ font-size: 18px;
6086
+ line-height: 1;
6087
+ cursor: pointer;
6088
+ list-style: none;
5064
6089
  }
5065
-
5066
- #codex-overleaf-panel [data-recent-projects-row] {
6090
+ #codex-overleaf-panel .recent-projects-menu > summary::-webkit-details-marker { display: none; }
6091
+ #codex-overleaf-panel .recent-projects-menu > summary:hover { background: var(--tl-hover); color: var(--tl-fg-1); }
6092
+ #codex-overleaf-panel .recent-projects-menu [data-recent-menu-actions] {
6093
+ position: absolute;
6094
+ top: calc(100% + 5px);
6095
+ inset-inline-end: 0;
6096
+ z-index: 20;
5067
6097
  display: grid;
5068
- grid-template-columns: minmax(0, 1fr) auto;
5069
- grid-template-areas:
5070
- "name time"
5071
- "badge sessions";
5072
- align-items: baseline;
5073
- gap: 6px 12px;
6098
+ min-width: 180px;
6099
+ max-width: min(260px, calc(var(--codex-overleaf-panel-width, 380px) - 56px));
6100
+ padding: 4px;
6101
+ border: 1px solid var(--tl-border-strong);
6102
+ border-radius: 8px;
6103
+ background: var(--tl-surface-1);
6104
+ box-shadow: 0 7px 24px rgba(0, 0, 0, 0.18);
6105
+ }
6106
+ #codex-overleaf-panel .recent-projects-menu:not([open]) > [data-recent-menu-actions] { display: none; }
6107
+ #codex-overleaf-panel .recent-projects-menu [data-recent-menu-actions] > button {
6108
+ display: block;
5074
6109
  width: 100%;
6110
+ min-height: 32px;
6111
+ padding: 8px 10px;
5075
6112
  border: 0;
5076
- border-radius: 6px;
6113
+ border-radius: 4px;
5077
6114
  background: transparent;
5078
6115
  color: var(--tl-fg-2);
5079
- padding: 14px 86px 14px 14px;
5080
- cursor: pointer;
5081
- text-align: left;
5082
- }
5083
-
5084
- #codex-overleaf-panel [data-recent-projects-row]:hover:not(:disabled) {
5085
- background: linear-gradient(90deg, rgba(128, 128, 128, 0.08), transparent 72%);
5086
- }
5087
-
5088
- #codex-overleaf-panel [data-recent-projects-row]:disabled,
5089
- #codex-overleaf-panel [data-recent-projects-row][aria-disabled="true"] {
5090
- cursor: default;
5091
- opacity: 0.55;
5092
- }
5093
-
5094
- #codex-overleaf-panel .recent-projects-row-name {
5095
- grid-area: name;
5096
- color: var(--tl-fg-1);
5097
- font-weight: 650;
5098
- font-size: 13.5px;
5099
- overflow: hidden;
5100
- text-overflow: ellipsis;
5101
- white-space: nowrap;
5102
- }
5103
-
5104
- #codex-overleaf-panel .recent-projects-row-time {
5105
- grid-area: time;
5106
- color: var(--tl-fg-3);
5107
- font-size: 11px;
5108
- letter-spacing: 0.01em;
5109
- white-space: nowrap;
5110
- }
5111
-
5112
- #codex-overleaf-panel .recent-projects-row-summary {
5113
- grid-area: summary;
5114
- color: var(--tl-fg-2);
5115
6116
  font-size: 12px;
5116
6117
  line-height: 1.4;
5117
- word-break: break-word;
5118
- }
5119
-
5120
- #codex-overleaf-panel .recent-projects-row-summary:empty {
5121
- display: none;
6118
+ text-align: start;
6119
+ white-space: normal;
6120
+ overflow-wrap: anywhere;
6121
+ cursor: pointer;
5122
6122
  }
5123
-
5124
- #codex-overleaf-panel .recent-projects-row-warning {
5125
- grid-area: badge;
5126
- color: var(--tl-review);
5127
- font-size: 11px;
5128
- margin-top: 2px;
6123
+ #codex-overleaf-panel .recent-projects-menu [data-recent-menu-actions] > button:hover:not(:disabled) { background: var(--tl-hover); }
6124
+ #codex-overleaf-panel .recent-projects-menu [data-recent-menu-actions] > :is([data-project-clear], [data-row-cleanup], [data-session-delete-dash]) { color: var(--tl-fail); }
6125
+ #codex-overleaf-panel .recent-projects-menu [data-recent-menu-actions] > [data-project-conversations] { margin-top: 4px; border-top: 1px solid var(--tl-border); border-radius: 0 0 4px 4px; }
6126
+ #codex-overleaf-panel .recent-projects-menu [data-recent-menu-actions] > button:disabled { opacity: 0.45; cursor: not-allowed; }
6127
+ #codex-overleaf-panel .recent-projects-session-rename-input {
6128
+ width: 100%;
6129
+ min-width: 0;
6130
+ padding: 4px 6px;
6131
+ border: 1px solid var(--tl-accent);
6132
+ border-radius: 4px;
6133
+ background: var(--tl-surface-0);
6134
+ color: var(--tl-fg-1);
6135
+ font-size: 13px;
5129
6136
  }
5130
-
5131
- #codex-overleaf-panel .recent-projects-row-badge {
5132
- grid-area: badge;
5133
- justify-self: start;
6137
+ #codex-overleaf-panel .recent-projects-settings-entry {
5134
6138
  display: inline-flex;
5135
6139
  align-items: center;
5136
- gap: 5px;
5137
- padding: 0;
5138
- margin-top: 0;
6140
+ align-self: flex-start;
6141
+ margin-top: auto;
6142
+ padding: 8px 4px 0;
5139
6143
  border: 0;
5140
- border-radius: 0;
5141
- font-size: 10.5px;
5142
- letter-spacing: 0.03em;
5143
- line-height: 1.4;
5144
- font-weight: 500;
5145
- text-transform: uppercase;
5146
- opacity: 0.92;
5147
- }
5148
-
5149
- #codex-overleaf-panel .recent-projects-row-badge::before {
5150
- content: "";
5151
- display: inline-block;
5152
- width: 6px;
5153
- height: 6px;
5154
- border-radius: 999px;
5155
- background: currentColor;
5156
- opacity: 0.85;
5157
- }
5158
-
5159
- /* Status badge palette. All ten values from spec §5.10 — reuses the
5160
- existing per-project run-card hues so the dashboard reads identically to
5161
- the in-project surface. */
5162
- #codex-overleaf-panel .recent-projects-row-badge.badge-running {
5163
- color: var(--tl-run);
5164
- }
5165
-
5166
- #codex-overleaf-panel .recent-projects-row-badge.badge-pending {
6144
+ background: transparent;
5167
6145
  color: var(--tl-fg-3);
5168
- }
5169
-
5170
- #codex-overleaf-panel .recent-projects-row-badge.badge-accepted,
5171
- #codex-overleaf-panel .recent-projects-row-badge.badge-completed,
5172
- #codex-overleaf-panel .recent-projects-row-badge.badge-background-completed {
5173
- color: var(--tl-ok);
5174
- }
5175
-
5176
- #codex-overleaf-panel .recent-projects-row-badge.badge-rejected {
5177
- color: var(--tl-fg-2);
5178
- }
5179
-
5180
- #codex-overleaf-panel .recent-projects-row-badge.badge-needs-review,
5181
- #codex-overleaf-panel .recent-projects-row-badge.badge-interrupted,
5182
- #codex-overleaf-panel .recent-projects-row-badge.badge-needs-review-after-navigation,
5183
- #codex-overleaf-panel .recent-projects-row-badge.badge-stale {
5184
- color: var(--tl-review);
5185
- }
5186
-
5187
- #codex-overleaf-panel .recent-projects-row-badge.badge-failed,
5188
- #codex-overleaf-panel .recent-projects-row-badge.badge-abandoned-after-navigation {
5189
- color: var(--tl-fail);
5190
- }
5191
-
5192
- #codex-overleaf-panel .recent-projects-settings-entry {
5193
- display: flex;
5194
- align-items: center;
5195
- justify-content: space-between;
5196
- margin-top: auto;
5197
- padding: 10px 12px;
5198
- border: 1px solid var(--tl-border);
5199
- border-radius: 6px;
5200
- background: var(--tl-surface-1);
5201
- color: var(--tl-fg-2);
5202
- font-size: 12px;
6146
+ font-size: 11px;
6147
+ line-height: 1.5;
5203
6148
  cursor: pointer;
5204
6149
  }
5205
-
5206
- #codex-overleaf-panel .recent-projects-settings-entry:hover {
5207
- border-color: var(--tl-border-strong);
5208
- background: var(--tl-surface-2);
5209
- }
5210
-
5211
- #codex-overleaf-panel .recent-projects-settings-entry-label::after {
5212
- content: "›";
5213
- margin-left: 8px;
5214
- color: var(--tl-fg-3);
5215
- }
6150
+ #codex-overleaf-panel .recent-projects-settings-entry:hover { color: var(--tl-fg-1); }
6151
+ #codex-overleaf-panel .recent-projects-settings-entry-label::after { content: "\203a"; margin-inline-start: 8px; }
6152
+ #codex-overleaf-panel .recent-projects-root :is(button, summary, [role="button"]):focus-visible { outline: 2px solid var(--tl-accent); outline-offset: 3px; }
5216
6153
 
5217
6154
  /* Spec §5.9 — when the panel opens settings in account scope, hide the
5218
6155
  project-only sections so only locale / display / global skills + the
@@ -5225,20 +6162,18 @@
5225
6162
 
5226
6163
  /* v1.7.5: dashboard "Show all projects" expander below the 10-row fold. */
5227
6164
  #codex-overleaf-panel .recent-projects-show-all {
5228
- display: block;
5229
- width: 100%;
5230
- margin-top: 6px;
5231
- padding: 6px 10px;
6165
+ align-self: flex-start;
6166
+ padding: 8px 0;
6167
+ border: 0;
5232
6168
  background: transparent;
5233
- border: 1px dashed var(--tl-border, #2a2a2a);
5234
- border-radius: 6px;
5235
- color: var(--tl-fg-3, #8a8a8a);
5236
- font-size: 11.5px;
6169
+ color: var(--tl-fg-3);
6170
+ font-size: 12px;
5237
6171
  cursor: pointer;
5238
6172
  }
6173
+
5239
6174
  #codex-overleaf-panel .recent-projects-show-all:hover {
5240
- color: var(--tl-fg-1, #e4e4e4);
5241
- border-color: var(--tl-fg-3, #8a8a8a);
6175
+ color: var(--tl-fg-1);
6176
+ text-decoration: underline;
5242
6177
  }
5243
6178
 
5244
6179
  /* v1.7.5: jump-to-turn dropdown pinned above the run history. */
@@ -5254,42 +6189,57 @@
5254
6189
  font-size: 11.5px;
5255
6190
  }
5256
6191
 
5257
- /* v1.7.5: change-history card (Settings) — the audit log's read path. */
5258
- #codex-overleaf-panel .codex-history-filter {
5259
- width: 100%;
5260
- box-sizing: border-box;
5261
- margin-bottom: 8px;
5262
- }
5263
- #codex-overleaf-panel .codex-history-list {
5264
- max-height: 260px;
5265
- overflow-y: auto;
5266
- }
5267
- #codex-overleaf-panel .codex-history-row {
5268
- padding: 6px 0;
5269
- border-top: 1px solid var(--tl-border, #232323);
5270
- font-size: 11.5px;
5271
- }
5272
- #codex-overleaf-panel .codex-history-row:first-child {
5273
- border-top: none;
5274
- }
5275
- #codex-overleaf-panel .codex-history-when {
5276
- color: var(--tl-fg-3, #8a8a8a);
5277
- font-size: 10.5px;
5278
- }
5279
- #codex-overleaf-panel .codex-history-task {
5280
- color: var(--tl-fg-1, #e4e4e4);
5281
- margin: 2px 0;
5282
- overflow: hidden;
5283
- text-overflow: ellipsis;
5284
- white-space: nowrap;
5285
- }
5286
- #codex-overleaf-panel .codex-history-files {
5287
- color: var(--tl-fg-3, #8a8a8a);
5288
- word-break: break-all;
6192
+ /* File changes: readable records over privacy-preserving audit metadata. */
6193
+ #codex-overleaf-panel .codex-history-count { margin-left: 8px; color: var(--tl-fg-3); font-size: 12px; font-weight: 400; font-variant-numeric: tabular-nums; }
6194
+ #codex-overleaf-panel .codex-history-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) 142px; gap: 10px; margin: 14px 0 9px; }
6195
+ #codex-overleaf-panel .codex-history-search { display: flex; align-items: center; gap: 9px; min-width: 0; margin: 0; padding: 0 11px; border: 1px solid var(--tl-border); border-radius: 7px; background: var(--tl-surface-1); }
6196
+ #codex-overleaf-panel .codex-history-search-mark { position: relative; display: inline-block; flex: 0 0 11px; width: 11px; height: 11px; margin-right: 3px; border: 1.3px solid var(--tl-fg-3); border-radius: 50%; }
6197
+ #codex-overleaf-panel .codex-history-search-mark::after { position: absolute; content: ""; width: 5px; height: 1.3px; background: var(--tl-fg-3); right: -4px; bottom: -2px; transform: rotate(45deg); }
6198
+ #codex-overleaf-panel .codex-history-toolbar .codex-history-filter { width: 100%; min-width: 0; min-height: 36px; margin: 0; padding: 6px 0; border: 0; border-radius: 0; background: transparent; color: var(--tl-fg-1); font-size: 12px; }
6199
+ #codex-overleaf-panel .codex-history-toolbar .codex-history-status-filter { width: 100%; min-width: 0; min-height: 36px; margin: 0; padding: 6px 9px; border: 1px solid var(--tl-border); border-radius: 7px; background: var(--tl-surface-1); color: var(--tl-fg-2); font-size: 12px; }
6200
+ #codex-overleaf-panel .codex-history-list { max-height: none; overflow: visible; min-width: 0; }
6201
+ #codex-overleaf-panel .codex-history-row { display: grid; grid-template-columns: 30px minmax(0, 1fr); column-gap: 10px; min-width: 0; padding: 12px 8px; margin: 1px 0; border: 0; border-radius: 8px; font-size: 13px; }
6202
+ #codex-overleaf-panel .codex-history-row:hover { background: var(--tl-hover); }
6203
+ #codex-overleaf-panel .codex-history-mark { display: grid; place-items: center; width: 29px; height: 31px; margin-top: 1px; border-radius: 7px; color: var(--tl-fg-3); background: var(--tl-surface-2); }
6204
+ #codex-overleaf-panel .codex-history-icon { display: inline-flex; align-items: center; }
6205
+ #codex-overleaf-panel .codex-history-icon svg { display: block; width: 16px; height: 16px; }
6206
+ #codex-overleaf-panel .codex-history-copy { min-width: 0; }
6207
+ #codex-overleaf-panel .codex-history-top { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 5px 12px; }
6208
+ #codex-overleaf-panel .codex-history-task { color: var(--tl-fg-1); margin: 0; font-size: 14px; font-weight: 500; line-height: 1.5; white-space: normal; overflow-wrap: anywhere; }
6209
+ #codex-overleaf-panel .codex-history-status { display: inline-flex; align-items: center; padding: 1px 0; color: var(--tl-fg-3); font-size: 11px; line-height: 1.5; white-space: nowrap; }
6210
+ #codex-overleaf-panel .codex-history-status[data-state="accepted"] { color: var(--tl-ok); }
6211
+ #codex-overleaf-panel .codex-history-status[data-state="pending"] { color: var(--tl-review); }
6212
+ #codex-overleaf-panel .codex-history-status[data-state="attention"] { padding: 1px 6px; border-radius: 4px; color: var(--tl-review); background: var(--tl-review-wash); }
6213
+ #codex-overleaf-panel .codex-history-files { color: var(--tl-fg-3); font-size: 12px; line-height: 1.6; margin: 3px 0 5px; overflow-wrap: anywhere; word-break: normal; }
6214
+ #codex-overleaf-panel .codex-history-bottom { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 4px 12px; }
6215
+ #codex-overleaf-panel .codex-history-when { color: var(--tl-fg-3); font-size: 11px; font-variant-numeric: tabular-nums; }
6216
+ #codex-overleaf-panel .codex-history-jump { display: inline-flex; align-items: center; gap: 4px; min-height: 26px; padding: 1px 0; margin: 0; border: 0; border-radius: 3px; background: transparent; box-shadow: none; color: var(--wb-accent, var(--tl-ok)); font: inherit; font-size: 12px; cursor: pointer; }
6217
+ #codex-overleaf-panel .codex-history-jump:hover { background: transparent; text-decoration: underline; text-underline-offset: 3px; }
6218
+ #codex-overleaf-panel .codex-history-jump:disabled { color: var(--tl-fg-3); opacity: 1; cursor: default; text-decoration: none; }
6219
+ #codex-overleaf-panel .codex-history-jump .codex-history-icon svg { width: 12px; height: 12px; }
6220
+ #codex-overleaf-panel .codex-history-empty { display: flex; flex-direction: column; align-items: center; gap: 9px; padding: 26px 12px; color: var(--tl-fg-3); font-size: 12px; line-height: 1.7; text-align: center; }
6221
+ #codex-overleaf-panel .codex-history-include { display: flex; align-items: center; gap: 8px; margin: 13px 0 0; color: var(--tl-fg-3); font-size: 12px; line-height: 1.6; cursor: pointer; }
6222
+ #codex-overleaf-panel .codex-history-include input { appearance: auto; display: inline-block; position: static; width: 14px; height: 14px; min-width: 14px; min-height: 14px; margin: 0; padding: 0; opacity: 1; accent-color: var(--wb-accent, var(--tl-ok)); }
6223
+ #codex-overleaf-panel .codex-history-more { margin: 8px 0 0 48px; }
6224
+ #codex-overleaf-panel :is(.codex-history-more, .codex-history-include)[hidden] { display: none !important; }
6225
+ #codex-overleaf-panel .codex-settings-workbench [data-storage-card] { margin-top: 24px; padding-top: 19px; border-top: 1px solid var(--tl-border); }
6226
+ #codex-overleaf-panel .codex-storage-data-row { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding-top: 8px; }
6227
+ #codex-overleaf-panel .codex-storage-data-copy { min-width: 0; }
6228
+ #codex-overleaf-panel .codex-storage-data-label { font-size: 13px; line-height: 1.5; font-weight: 500; color: var(--tl-fg-1); }
6229
+ #codex-overleaf-panel .codex-storage-data-row [data-storage-usage] { margin: 4px 0 0; font-size: 12px; color: var(--tl-fg-3); }
6230
+ #codex-overleaf-panel .codex-storage-data-row .codex-set-btn { padding: 6px 9px; min-height: 32px; margin: 0; border-color: transparent; background: transparent; color: var(--tl-fail); font-size: 12px; box-shadow: none; }
6231
+ #codex-overleaf-panel .codex-storage-data-row .codex-set-btn:hover { border-color: var(--tl-border); background: var(--tl-fail-wash); }
6232
+ #codex-overleaf-panel .codex-storage-clear-help { max-width: 66ch; margin: 12px 0 0; font-size: 12px; line-height: 1.65; }
6233
+ #codex-overleaf-panel .codex-storage-estimate { margin: 8px 0 0; color: var(--tl-fg-3); font-size: 11px; line-height: 1.6; }
6234
+ @media (max-width: 620px) {
6235
+ #codex-overleaf-panel .codex-history-toolbar { grid-template-columns: minmax(0, 1fr) 116px; gap: 7px; }
6236
+ #codex-overleaf-panel .codex-history-row { grid-template-columns: 25px minmax(0, 1fr); column-gap: 8px; padding: 11px 0; }
6237
+ #codex-overleaf-panel .codex-history-mark { width: 25px; }
6238
+ #codex-overleaf-panel .codex-history-task { font-size: 13px; }
5289
6239
  }
5290
- #codex-overleaf-panel .codex-history-empty {
5291
- color: var(--tl-fg-3, #8a8a8a);
5292
- font-size: 11.5px;
6240
+ @media (pointer: coarse) {
6241
+ #codex-overleaf-panel :is(.codex-history-jump, .codex-history-include, .codex-history-status-filter) { min-height: 44px; }
6242
+ #codex-overleaf-panel .codex-history-toolbar .codex-history-filter { font-size: 16px; }
5293
6243
  }
5294
6244
 
5295
6245
  /* v1.7.5: reload-orphaned runs show as interrupted (amber), not failed. */
@@ -5310,12 +6260,6 @@
5310
6260
  color: var(--tl-fg-1, #e4e4e4);
5311
6261
  font-size: 11.5px;
5312
6262
  }
5313
- #codex-overleaf-panel .codex-history-row--linked {
5314
- cursor: pointer;
5315
- }
5316
- #codex-overleaf-panel .codex-history-row--linked:hover {
5317
- background: var(--tl-hover, rgba(255, 255, 255, 0.04));
5318
- }
5319
6263
  #codex-overleaf-panel .run-card--flash {
5320
6264
  animation: codex-jump-flash 1.6s ease-out;
5321
6265
  }
@@ -5360,15 +6304,6 @@
5360
6304
  border-radius: 50%;
5361
6305
  animation: tl-spin 800ms linear infinite;
5362
6306
  }
5363
- /* v1.8.2: the expand toggle stays a slim icon strip — modestly wider than
5364
- the original 26px for the miss-click fix, but proportionate to the row. */
5365
- #codex-overleaf-panel .recent-projects-row-expand {
5366
- width: 32px;
5367
- }
5368
- #codex-overleaf-panel .recent-projects-row-sessions {
5369
- color: var(--tl-fg-3);
5370
- font-size: 10.5px;
5371
- }
5372
6307
  #codex-overleaf-panel .recent-projects-session-row--linked {
5373
6308
  cursor: pointer;
5374
6309
  }
@@ -5440,6 +6375,14 @@
5440
6375
  user-select: text;
5441
6376
  }
5442
6377
 
6378
+ /* Reinstall notice: numbered steps with the command inline, in the waiting tone. */
6379
+ #codex-overleaf-panel .codex-update-notice-steps { margin: 6px 0 0; padding-left: 16px; color: var(--tl-fg-2, #d5dad6); font-size: 11px; line-height: 1.5; }
6380
+ #codex-overleaf-panel .codex-update-notice-steps .codex-update-notice-command { margin: 2px 0 4px; }
6381
+ #codex-overleaf-panel .codex-update-notice[data-state="manual_install_required"] {
6382
+ background: linear-gradient(100deg, rgba(199, 160, 83, 0.13), transparent 58%), var(--tl-surface-1, #181a19);
6383
+ }
6384
+ #codex-overleaf-panel .codex-update-notice[data-state="manual_install_required"] .codex-update-notice-eyebrow { color: #d4b86f; }
6385
+
5443
6386
  #codex-overleaf-panel .codex-update-notice-actions {
5444
6387
  display: flex;
5445
6388
  gap: 6px;
@@ -5555,7 +6498,7 @@
5555
6498
  min-width: 0;
5556
6499
  padding: 5px 6px;
5557
6500
  border-radius: 6px;
5558
- color: var(--tl-fg-2);
6501
+ color: var(--provider-field-label);
5559
6502
  font-size: 13px;
5560
6503
  font-weight: 500;
5561
6504
  line-height: 1.35;
@@ -5566,8 +6509,8 @@
5566
6509
  }
5567
6510
 
5568
6511
  .codex-provider-dialog-root .codex-provider-capability-option:hover {
5569
- color: var(--tl-fg-1);
5570
- background: rgba(255, 255, 255, 0.035);
6512
+ color: var(--provider-text);
6513
+ background: var(--provider-hover);
5571
6514
  }
5572
6515
 
5573
6516
  .codex-provider-dialog-root .codex-provider-capability-option--wide {
@@ -5595,14 +6538,14 @@
5595
6538
  .codex-provider-dialog-root .codex-provider-capability-control {
5596
6539
  position: relative;
5597
6540
  display: grid;
5598
- flex: 0 0 16px;
5599
- width: 16px;
5600
- height: 16px;
6541
+ flex: 0 0 18px;
6542
+ width: 18px;
6543
+ height: 18px;
5601
6544
  place-items: center;
5602
6545
  box-sizing: border-box;
5603
- border: 1px solid var(--tl-border-strong);
6546
+ border: 1.5px solid var(--provider-checkbox-border);
5604
6547
  border-radius: 4px;
5605
- background: rgba(255, 255, 255, 0.025);
6548
+ background: var(--provider-control-bg);
5606
6549
  transition:
5607
6550
  border-color 120ms ease,
5608
6551
  background 120ms ease,
@@ -5610,14 +6553,14 @@
5610
6553
  }
5611
6554
 
5612
6555
  .codex-provider-dialog-root .codex-provider-capability-input:focus-visible + .codex-provider-capability-control {
5613
- outline: 2px solid color-mix(in srgb, var(--tl-ok) 62%, transparent);
6556
+ outline: 2px solid var(--provider-accent);
5614
6557
  outline-offset: 2px;
5615
6558
  }
5616
6559
 
5617
6560
  .codex-provider-dialog-root .codex-provider-capability-input:checked + .codex-provider-capability-control {
5618
- border-color: var(--tl-ok);
5619
- background: var(--tl-ok);
5620
- box-shadow: 0 0 0 1px color-mix(in srgb, var(--tl-ok) 18%, transparent);
6561
+ border-color: var(--provider-accent);
6562
+ background: var(--provider-accent);
6563
+ box-shadow: none;
5621
6564
  }
5622
6565
 
5623
6566
  .codex-provider-dialog-root .codex-provider-capability-input:checked + .codex-provider-capability-control::after {
@@ -5625,7 +6568,456 @@
5625
6568
  width: 4px;
5626
6569
  height: 8px;
5627
6570
  margin-top: -2px;
5628
- border-right: 2px solid #102016;
5629
- border-bottom: 2px solid #102016;
6571
+ border-right: 2px solid var(--provider-checkbox-mark);
6572
+ border-bottom: 2px solid var(--provider-checkbox-mark);
5630
6573
  transform: rotate(45deg);
5631
6574
  }
6575
+
6576
+ .codex-provider-dialog-root .codex-provider-capability-input:disabled + .codex-provider-capability-control {
6577
+ opacity: 0.65;
6578
+ }
6579
+
6580
+ .codex-provider-dialog-root .codex-provider-capability-option:has(input:disabled) {
6581
+ cursor: not-allowed;
6582
+ }
6583
+
6584
+ /* Native checkboxes in the same floating dialog follow its own theme too. */
6585
+ .codex-provider-dialog-root :is(.codex-provider-model-checkbox, .codex-provider-disclosure) input[type="checkbox"] {
6586
+ appearance: auto;
6587
+ box-sizing: border-box;
6588
+ position: static;
6589
+ flex: 0 0 16px;
6590
+ width: 16px;
6591
+ height: 16px;
6592
+ min-width: 16px;
6593
+ min-height: 16px;
6594
+ margin: 2px 0;
6595
+ padding: 0;
6596
+ clip: auto;
6597
+ clip-path: none;
6598
+ opacity: 1;
6599
+ accent-color: var(--provider-accent);
6600
+ }
6601
+
6602
+ .codex-provider-dialog-root .codex-provider-effort-chips input:checked + span {
6603
+ background: color-mix(in srgb, var(--provider-accent) 12%, var(--provider-surface));
6604
+ }
6605
+
6606
+ .codex-provider-dialog-root .codex-provider-effort-chips input:checked + span::before {
6607
+ content: "\2713";
6608
+ margin-inline-end: 5px;
6609
+ }
6610
+
6611
+ /* Selected text stays compact; edit-only scope is a label, not a selector. */
6612
+ #codex-overleaf-panel [data-composer-selection] {
6613
+ display: flex;
6614
+ align-items: flex-start;
6615
+ gap: 3px;
6616
+ min-width: 0;
6617
+ margin: 8px 10px 0;
6618
+ padding: 0;
6619
+ border: 0;
6620
+ background: transparent;
6621
+ color: var(--tl-fg-2);
6622
+ font-size: 12px;
6623
+ line-height: 1.5;
6624
+ }
6625
+ #codex-overleaf-panel [data-composer-selection][hidden] { display: none; }
6626
+ #codex-overleaf-panel [data-composer-selection] details,
6627
+ #codex-overleaf-panel [data-run-selection] details {
6628
+ flex: 0 1 auto;
6629
+ min-width: 0;
6630
+ max-width: calc(100% - 29px);
6631
+ }
6632
+ #codex-overleaf-panel [data-composer-selection] summary,
6633
+ #codex-overleaf-panel [data-run-selection] summary {
6634
+ display: flex;
6635
+ align-items: center;
6636
+ gap: 5px;
6637
+ box-sizing: border-box;
6638
+ min-height: 28px;
6639
+ min-width: 0;
6640
+ padding: 4px 8px;
6641
+ border: 1px solid var(--tl-border-strong);
6642
+ border-radius: 7px;
6643
+ background: var(--tl-surface-1);
6644
+ color: var(--tl-fg-2);
6645
+ font-size: 12px;
6646
+ font-weight: 400;
6647
+ line-height: 18px;
6648
+ list-style: none;
6649
+ cursor: pointer;
6650
+ }
6651
+ #codex-overleaf-panel [data-composer-selection] summary::-webkit-details-marker,
6652
+ #codex-overleaf-panel [data-run-selection] summary::-webkit-details-marker { display: none; }
6653
+ #codex-overleaf-panel [data-composer-selection] summary:hover,
6654
+ #codex-overleaf-panel [data-run-selection] summary:hover { background: var(--tl-hover); }
6655
+ #codex-overleaf-panel [data-composer-selection] .codex-selection-file,
6656
+ #codex-overleaf-panel [data-run-selection] .codex-selection-file {
6657
+ min-width: 0;
6658
+ overflow: hidden;
6659
+ text-overflow: ellipsis;
6660
+ white-space: nowrap;
6661
+ }
6662
+ #codex-overleaf-panel [data-composer-selection] .codex-selection-range,
6663
+ #codex-overleaf-panel [data-run-selection] .codex-selection-range {
6664
+ flex: 0 0 auto;
6665
+ color: var(--tl-fg-3);
6666
+ white-space: nowrap;
6667
+ }
6668
+ #codex-overleaf-panel [data-composer-selection] details[open],
6669
+ #codex-overleaf-panel [data-run-selection] details[open] { flex: 1 1 auto; }
6670
+ #codex-overleaf-panel [data-composer-selection] pre,
6671
+ #codex-overleaf-panel [data-run-selection] pre {
6672
+ margin: 6px 0 0;
6673
+ padding: 8px 10px;
6674
+ max-height: 140px;
6675
+ overflow: auto;
6676
+ white-space: pre-wrap;
6677
+ overflow-wrap: anywhere;
6678
+ border: 1px solid var(--tl-border-strong);
6679
+ border-radius: 7px;
6680
+ background: var(--tl-surface-1);
6681
+ color: var(--tl-fg-2);
6682
+ font-size: 11px;
6683
+ line-height: 1.6;
6684
+ }
6685
+ #codex-overleaf-panel [data-composer-selection] button {
6686
+ flex: 0 0 26px;
6687
+ display: grid;
6688
+ place-items: center;
6689
+ box-sizing: border-box;
6690
+ width: 26px;
6691
+ height: 28px;
6692
+ min-height: 0;
6693
+ padding: 0;
6694
+ border: 0;
6695
+ border-radius: 6px;
6696
+ background: transparent;
6697
+ color: var(--tl-fg-3);
6698
+ font-size: 15px;
6699
+ line-height: 1;
6700
+ }
6701
+ #codex-overleaf-panel [data-composer-selection] button:hover {
6702
+ background: var(--tl-hover);
6703
+ color: var(--tl-fg-1);
6704
+ }
6705
+ #codex-overleaf-panel [data-composer-selection] summary:focus-visible,
6706
+ #codex-overleaf-panel [data-run-selection] summary:focus-visible,
6707
+ #codex-overleaf-panel [data-composer-selection] button:focus-visible {
6708
+ outline: 2px solid var(--tl-accent, #2f73b8);
6709
+ outline-offset: 2px;
6710
+ }
6711
+ #codex-overleaf-panel [data-composer-selection] .codex-selection-scope,
6712
+ #codex-overleaf-panel [data-run-selection] .codex-selection-scope {
6713
+ flex: 0 0 auto;
6714
+ padding-left: 5px;
6715
+ border-left: 1px solid var(--tl-border-strong);
6716
+ color: var(--tl-fg-2);
6717
+ font-size: 10px;
6718
+ white-space: nowrap;
6719
+ }
6720
+ .codex-selection-actions[data-codex-selection-actions] {
6721
+ position: fixed;
6722
+ inset: auto;
6723
+ z-index: 2147483647;
6724
+ display: flex;
6725
+ align-items: center;
6726
+ gap: 2px;
6727
+ box-sizing: border-box;
6728
+ max-width: calc(100vw - 16px);
6729
+ margin: 0;
6730
+ padding: 4px;
6731
+ border: 1px solid var(--tl-border-strong);
6732
+ border-radius: 9px;
6733
+ background: var(--tl-surface-0);
6734
+ color: var(--tl-fg-1);
6735
+ box-shadow: 0 4px 16px rgba(0, 0, 0, .16);
6736
+ font-size: 13px;
6737
+ font-weight: 500;
6738
+ line-height: 20px;
6739
+ }
6740
+ .codex-selection-actions[data-codex-selection-actions][hidden] { display: none !important; }
6741
+ .codex-selection-actions[data-codex-selection-actions] button {
6742
+ all: unset;
6743
+ display: block;
6744
+ box-sizing: border-box;
6745
+ min-width: 0;
6746
+ min-height: 32px;
6747
+ padding: 6px 10px;
6748
+ border-radius: 5px;
6749
+ color: inherit;
6750
+ font: inherit;
6751
+ text-align: center;
6752
+ white-space: nowrap;
6753
+ overflow: hidden;
6754
+ text-overflow: ellipsis;
6755
+ cursor: pointer;
6756
+ }
6757
+ .codex-selection-actions[data-codex-selection-actions] button:hover { background: var(--tl-hover); }
6758
+ .codex-selection-actions[data-codex-selection-actions] button:focus-visible {
6759
+ outline: 2px solid var(--tl-accent);
6760
+ outline-offset: -2px;
6761
+ }
6762
+ .codex-selection-actions[data-codex-selection-actions] .codex-selection-action-divider {
6763
+ flex: 0 0 1px;
6764
+ width: 1px;
6765
+ height: 18px;
6766
+ margin: 0 2px;
6767
+ background: var(--tl-border-strong);
6768
+ }
6769
+
6770
+ /* Writing style: a project-scoped reference library in General. */
6771
+ #codex-overleaf-panel .ws2 {
6772
+ --ws-accent: #35764b;
6773
+ --ws-danger: #ae4036;
6774
+ --ws-line: var(--tl-border-strong, #d7dcdf);
6775
+ --ws-muted: var(--tl-fg-3, #737b84);
6776
+ --ws-soft: color-mix(in srgb, var(--ws-accent) 8%, transparent);
6777
+ padding: 18px !important;
6778
+ min-width: 0;
6779
+ color: var(--tl-fg-1);
6780
+ background: linear-gradient(135deg, color-mix(in srgb, var(--ws-accent) 2%, transparent), transparent 60%);
6781
+ }
6782
+ #codex-overleaf-panel[data-theme="dark"] .ws2 { --ws-accent: #83c298; --ws-danger: #f0a09b; }
6783
+ #codex-overleaf-panel .ws2 svg { display: block; width: 16px; height: 16px; flex: 0 0 auto; }
6784
+ #codex-overleaf-panel .ws2-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; }
6785
+ #codex-overleaf-panel .ws2-heading-copy { flex: 1; min-width: 0; }
6786
+ #codex-overleaf-panel .ws2-title { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; font-size: 14px; line-height: 1.5; font-weight: 600; cursor: pointer; }
6787
+ #codex-overleaf-panel .ws2-beta { padding: 1px 6px; border-radius: 4px; color: var(--ws-muted); background: var(--tl-hover); font-size: 10px; line-height: 1.7; font-weight: 400; }
6788
+ #codex-overleaf-panel .ws2-description { margin: 5px 0 0; max-width: 64ch; color: var(--tl-fg-2); font-size: 12px; line-height: 1.65; }
6789
+ #codex-overleaf-panel .ws2-heading > .codex-switch { flex: 0 0 auto; margin-top: 2px; }
6790
+ #codex-overleaf-panel .ws2-button,
6791
+ #codex-overleaf-panel .ws2-icon-button,
6792
+ #codex-overleaf-panel .ws2-filter,
6793
+ #codex-overleaf-panel .ws2-manage {
6794
+ appearance: none; display: inline-flex; align-items: center; justify-content: center;
6795
+ gap: 6px; min-height: 30px; padding: 5px 10px; margin: 0;
6796
+ border: 1px solid var(--ws-line); border-radius: 7px; box-shadow: none;
6797
+ background: var(--tl-surface-1, transparent); color: var(--tl-fg-1);
6798
+ font-family: inherit; font-size: 12px; font-weight: 500; line-height: 1.4; cursor: pointer;
6799
+ }
6800
+ #codex-overleaf-panel .ws2-button:hover,
6801
+ #codex-overleaf-panel .ws2-icon-button:hover,
6802
+ #codex-overleaf-panel .ws2-filter:hover { background: var(--tl-hover); }
6803
+ #codex-overleaf-panel .ws2-button-primary { background: var(--ws-accent); border-color: var(--ws-accent); color: #fff; }
6804
+ #codex-overleaf-panel[data-theme="dark"] .ws2-button-primary { color: #14271b; }
6805
+ #codex-overleaf-panel .ws2-button-primary:hover { background: color-mix(in srgb, var(--ws-accent) 90%, #101d15); }
6806
+ #codex-overleaf-panel .ws2-button-quiet,
6807
+ #codex-overleaf-panel .ws2-icon-button { border-color: transparent; background: transparent; color: var(--tl-fg-2); }
6808
+ #codex-overleaf-panel .ws2-button-quiet:hover,
6809
+ #codex-overleaf-panel .ws2-icon-button:hover { border-color: var(--ws-line); }
6810
+ #codex-overleaf-panel .ws2-icon-button { width: 28px; min-height: 28px; padding: 5px; flex: 0 0 auto; }
6811
+ #codex-overleaf-panel .ws2 button:disabled { opacity: .46; cursor: default; }
6812
+ #codex-overleaf-panel .ws2 button:focus-visible,
6813
+ #codex-overleaf-panel .ws2 input:focus-visible { outline: 2px solid var(--ws-accent); outline-offset: 3px; }
6814
+ #codex-overleaf-panel .ws2-manage { padding: 4px 0; min-height: 26px; border: 0; border-radius: 4px; margin-top: 12px; color: var(--ws-accent); background: transparent; }
6815
+ #codex-overleaf-panel .ws2-manage svg { width: 13px; height: 13px; }
6816
+ #codex-overleaf-panel .ws2-manage:hover { text-decoration: underline; text-underline-offset: 3px; }
6817
+ #codex-overleaf-panel .ws2-profile { display: flex; align-items: center; gap: 10px; padding: 12px; margin-top: 14px; background: var(--ws-soft); border-radius: 9px; }
6818
+ #codex-overleaf-panel .ws2-profile-icon { color: var(--ws-accent); }
6819
+ #codex-overleaf-panel .ws2-profile-copy { display: grid; gap: 3px; min-width: 0; flex: 1; }
6820
+ #codex-overleaf-panel .ws2-profile-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 600; }
6821
+ #codex-overleaf-panel .ws2-profile-copy small { color: var(--tl-fg-2); font-size: 11px; line-height: 1.5; }
6822
+ #codex-overleaf-panel .ws2-library { margin-top: 12px; border-top: 1px solid var(--ws-line); padding-top: 12px; }
6823
+ #codex-overleaf-panel .ws2-library-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
6824
+ #codex-overleaf-panel .ws2-label { display: inline-flex; align-items: baseline; gap: 8px; font-size: 12px; font-weight: 600; }
6825
+ #codex-overleaf-panel .ws2-count { color: var(--ws-muted); font-size: 10px; font-weight: 400; font-variant-numeric: tabular-nums; }
6826
+ #codex-overleaf-panel .ws2-library-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 3px; }
6827
+ #codex-overleaf-panel .ws2 [hidden] { display: none !important; }
6828
+ #codex-overleaf-panel .ws2-empty { display: flex; align-items: center; gap: 13px; margin-top: 8px; padding: 17px 12px; border: 1px dashed var(--ws-line); border-radius: 9px; }
6829
+ #codex-overleaf-panel .ws2-empty-icon { padding: 8px; border-radius: 9px; color: var(--ws-accent); background: var(--ws-soft); flex: 0 0 auto; }
6830
+ #codex-overleaf-panel .ws2-empty-icon svg { width: 20px; height: 20px; }
6831
+ #codex-overleaf-panel .ws2-empty strong { font-size: 12px; font-weight: 500; }
6832
+ #codex-overleaf-panel .ws2-empty p { margin: 4px 0 0; font-size: 11px; line-height: 1.55; color: var(--ws-muted); }
6833
+ #codex-overleaf-panel .ws2-source { display: flex; align-items: center; gap: 10px; padding: 11px 0; border-bottom: 1px solid var(--ws-line); }
6834
+ #codex-overleaf-panel .ws2-source:last-child { border-bottom: 0; }
6835
+ #codex-overleaf-panel .ws2-source-icon { display: grid; place-items: center; width: 32px; height: 36px; border: 1px solid var(--ws-line); border-radius: 7px; background: var(--tl-surface-1); color: var(--tl-fg-2); flex: 0 0 auto; }
6836
+ #codex-overleaf-panel .ws2-source-copy { display: grid; gap: 3px; min-width: 0; flex: 1; }
6837
+ #codex-overleaf-panel .ws2-source-copy strong { font-size: 12px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
6838
+ #codex-overleaf-panel .ws2-source-copy small { color: var(--ws-muted); font-size: 11px; line-height: 1.45; }
6839
+ #codex-overleaf-panel .ws2-caption { margin: 8px 0 0; color: var(--ws-muted); font-size: 10px; line-height: 1.6; }
6840
+ #codex-overleaf-panel .ws2-picker { margin: 8px 0 12px; overflow: hidden; border: 1px solid var(--ws-line); border-radius: 10px; background: var(--tl-surface-1); box-shadow: 0 6px 20px #00000008; animation: ws2-enter 150ms ease-out; }
6841
+ #codex-overleaf-panel .ws2-picker-heading { display: flex; align-items: center; gap: 3px; padding: 9px 10px 4px 14px; }
6842
+ #codex-overleaf-panel .ws2-picker-heading strong { flex: 1; font-size: 12px; font-weight: 600; }
6843
+ #codex-overleaf-panel .ws2-search { display: flex; align-items: center; gap: 8px; padding: 8px 10px; margin: 7px 12px 8px; border: 1px solid var(--ws-line); border-radius: 7px; color: var(--ws-muted); }
6844
+ #codex-overleaf-panel .ws2-search:focus-within { border-color: var(--ws-accent); box-shadow: 0 0 0 2px var(--ws-soft); }
6845
+ #codex-overleaf-panel .ws2-search input { appearance: none; min-width: 0; width: 100%; border: 0; border-radius: 0; padding: 0; margin: 0; background: transparent; box-shadow: none; color: var(--tl-fg-1); font-family: inherit; font-size: 12px; line-height: 1.5; outline: none; }
6846
+ #codex-overleaf-panel .ws2-search input:focus-visible { outline: none; }
6847
+ #codex-overleaf-panel .ws2-search input::placeholder { color: var(--ws-muted); }
6848
+ #codex-overleaf-panel .ws2-filters { display: flex; align-items: center; gap: 3px; padding: 0 12px 8px; }
6849
+ #codex-overleaf-panel .ws2-filter { min-height: 26px; padding: 4px 8px; border-color: transparent; background: transparent; color: var(--ws-muted); font-size: 11px; font-weight: 400; }
6850
+ #codex-overleaf-panel .ws2-filter[aria-pressed="true"] { background: var(--ws-soft); color: var(--ws-accent); font-weight: 500; }
6851
+ #codex-overleaf-panel .ws2-projects { max-height: 238px; overflow: auto; overscroll-behavior: contain; scrollbar-gutter: stable; padding: 0 6px 5px; }
6852
+ #codex-overleaf-panel .ws2-project { display: flex; align-items: center; gap: 11px; padding: 9px 10px; margin: 1px 0; min-height: 44px; border: 1px solid transparent; border-radius: 7px; cursor: pointer; }
6853
+ #codex-overleaf-panel .ws2-project:hover { background: var(--tl-hover); }
6854
+ #codex-overleaf-panel .ws2-project[data-selected="true"] { background: var(--ws-soft); }
6855
+ #codex-overleaf-panel .ws2-project-copy { display: grid; min-width: 0; gap: 3px; }
6856
+ #codex-overleaf-panel .ws2-project-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 12px; line-height: 1.45; font-weight: 500; }
6857
+ #codex-overleaf-panel .ws2-project-copy small { color: var(--ws-muted); font-size: 10px; line-height: 1.4; }
6858
+ #codex-overleaf-panel .ws2-check { appearance: none !important; -webkit-appearance: none !important; position: relative; width: 16px !important; height: 16px !important; min-width: 16px; padding: 0 !important; margin: 0 !important; flex: 0 0 auto; border: 1.5px solid var(--ws-muted) !important; border-radius: 4px !important; background: var(--tl-surface-1) !important; opacity: 1; cursor: pointer; }
6859
+ #codex-overleaf-panel .ws2-check:checked { background: var(--ws-accent) !important; border-color: var(--ws-accent) !important; }
6860
+ #codex-overleaf-panel .ws2-check:checked::after { content: ""; position: absolute; left: 4px; top: 1px; width: 4px; height: 8px; border: solid #fff; border-width: 0 1.7px 1.7px 0; transform: rotate(45deg); }
6861
+ #codex-overleaf-panel[data-theme="dark"] .ws2-check:checked::after { border-color: #14271b; }
6862
+ #codex-overleaf-panel .ws2-check:disabled { cursor: default; opacity: .5; }
6863
+ #codex-overleaf-panel .ws2-picker-state { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 84px; padding: 20px 14px; color: var(--ws-muted); font-size: 12px; text-align: center; }
6864
+ #codex-overleaf-panel .ws2-picker-error { flex-direction: column; align-items: flex-start; text-align: left; }
6865
+ #codex-overleaf-panel .ws2-picker-error strong { color: var(--tl-fg-1); font-size: 12px; font-weight: 500; }
6866
+ #codex-overleaf-panel .ws2-picker-error p { margin: 0; line-height: 1.6; }
6867
+ #codex-overleaf-panel .ws2-picker-footer { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 10px 12px; border-top: 1px solid var(--ws-line); }
6868
+ #codex-overleaf-panel .ws2-picker-footer > span { font-size: 11px; color: var(--ws-muted); }
6869
+ #codex-overleaf-panel .ws2-actions { display: flex; align-items: center; gap: 8px; padding-top: 16px; margin-top: 12px; border-top: 1px solid var(--ws-line); }
6870
+ #codex-overleaf-panel .ws2-action-copy { display: grid; gap: 4px; min-width: 0; flex: 1; }
6871
+ #codex-overleaf-panel .ws2-action-copy > span { color: var(--tl-fg-2); font-size: 11px; line-height: 1.5; }
6872
+ #codex-overleaf-panel .ws2-action-copy small { color: var(--ws-muted); font-size: 10px; line-height: 1.5; }
6873
+ #codex-overleaf-panel .ws2-actions > button { flex: 0 0 auto; }
6874
+ #codex-overleaf-panel .ws2-progress { position: relative; margin-top: 14px; padding: 14px; border: 1px solid var(--ws-line); border-radius: 9px; background: var(--ws-soft); }
6875
+ #codex-overleaf-panel .ws2-progress-title { display: flex; align-items: center; gap: 8px; }
6876
+ #codex-overleaf-panel .ws2-progress-title strong { font-size: 12px; font-weight: 500; }
6877
+ #codex-overleaf-panel .ws2-progress > p { margin: 6px 0 12px 15px; color: var(--tl-fg-2); font-size: 11px; line-height: 1.5; overflow-wrap: anywhere; }
6878
+ #codex-overleaf-panel .ws2-pulse { display: inline-block; width: 6px; height: 6px; border-radius: 50%; flex: 0 0 auto; background: var(--ws-accent); animation: ws2-breathe 1.6s ease-in-out infinite; }
6879
+ #codex-overleaf-panel .ws2-steps { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 12px; }
6880
+ #codex-overleaf-panel .ws2-steps > span { min-width: 80px; flex: 1; padding-top: 6px; border-top: 2px solid var(--ws-line); color: var(--ws-muted); font-size: 10px; }
6881
+ #codex-overleaf-panel .ws2-steps > span[data-active="true"] { border-color: var(--ws-accent); color: var(--ws-accent); }
6882
+ #codex-overleaf-panel .ws2-status { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 12px; font-size: 11px; color: var(--tl-fg-2); line-height: 1.6; overflow-wrap: anywhere; }
6883
+ #codex-overleaf-panel .ws2-status[data-tone="error"] { color: var(--ws-danger); }
6884
+ #codex-overleaf-panel .ws2-status[data-tone="success"] { color: var(--ws-accent); }
6885
+ #codex-overleaf-panel .ws2-preview { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--ws-line); animation: ws2-enter 150ms ease-out; }
6886
+ #codex-overleaf-panel .ws2-preview-tabs { display: flex; flex-wrap: wrap; gap: 3px; margin-bottom: 12px; }
6887
+ #codex-overleaf-panel .ws2-guide-body { max-height: 310px; overflow: auto; overscroll-behavior: contain; padding-right: 8px; color: var(--tl-fg-2); font-size: 12px; line-height: 1.8; }
6888
+ #codex-overleaf-panel .ws2-guide-body h4 { font-size: 12px; font-weight: 600; color: var(--tl-fg-1); margin: 15px 0 6px; }
6889
+ #codex-overleaf-panel .ws2-guide-body h4:first-child { margin-top: 0; }
6890
+ #codex-overleaf-panel .ws2-guide-body p { margin: 0 0 10px; white-space: pre-wrap; overflow-wrap: anywhere; }
6891
+ #codex-overleaf-panel .ws2-guide-body ul { padding-left: 18px; margin: 0 0 10px; }
6892
+ #codex-overleaf-panel .ws2-skill-source { margin-top: 12px; color: var(--ws-muted); font-size: 11px; }
6893
+ #codex-overleaf-panel .ws2-skill-source summary { cursor: pointer; }
6894
+ #codex-overleaf-panel .ws2-skill-source pre { margin: 10px 0 0; padding: 12px; max-height: 200px; overflow: auto; border-radius: 7px; background: var(--tl-hover); color: var(--tl-fg-2); white-space: pre-wrap; overflow-wrap: anywhere; font-size: 10px; line-height: 1.7; }
6895
+ @keyframes ws2-enter { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: translateY(0); } }
6896
+ @keyframes ws2-breathe { 50% { opacity: .35; } }
6897
+ @media (max-width: 600px) {
6898
+ #codex-overleaf-panel .ws2 { padding: 14px !important; }
6899
+ #codex-overleaf-panel .ws2-actions { flex-wrap: wrap; }
6900
+ #codex-overleaf-panel .ws2-action-copy { flex-basis: 100%; }
6901
+ #codex-overleaf-panel .ws2-profile { flex-wrap: wrap; }
6902
+ #codex-overleaf-panel .ws2-profile > button { margin-left: 26px; }
6903
+ }
6904
+ @media (prefers-reduced-motion: reduce) {
6905
+ #codex-overleaf-panel .ws2-picker, #codex-overleaf-panel .ws2-preview, #codex-overleaf-panel .ws2-pulse { animation: none; }
6906
+ }
6907
+
6908
+ /* Run presence: animated brand mark, rotating label, and the ∎ settled summary. */
6909
+ #codex-overleaf-panel .codex-sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
6910
+ #codex-overleaf-panel .codex-glyph { width: 14px; height: 14px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
6911
+ #codex-overleaf-panel .run-status[data-presence] { display: flex; flex: 1 1 auto; align-items: center; gap: 7px; min-width: 0; white-space: nowrap; font-size: 12px !important; font-variant-numeric: tabular-nums; }
6912
+ #codex-overleaf-panel .run-presentation-workflow .run-process summary:has(.run-status[data-presence])::before { display: none; }
6913
+ #codex-overleaf-panel .run-presentation-workflow .run-process summary:has(.run-status[data-presence]) { flex-wrap: nowrap; }
6914
+ #codex-overleaf-panel .run-status[data-presence="running"] { color: var(--tl-fg-2) !important; }
6915
+ #codex-overleaf-panel .run-status[data-presence="done"],
6916
+ #codex-overleaf-panel .run-status[data-presence="stopped"] { flex-wrap: wrap; row-gap: 2px; color: var(--tl-fg-2) !important; }
6917
+ #codex-overleaf-panel .run-status[data-presence="failed"] { color: var(--tl-fail) !important; }
6918
+ #codex-overleaf-panel .run-presence-label { display: grid; flex: 0 1 auto; min-width: 0; overflow: hidden; font-weight: 560; }
6919
+ #codex-overleaf-panel .run-presence-label > span { grid-area: 1 / 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: opacity var(--tl-m-base) var(--tl-m-ease), transform var(--tl-m-base) var(--tl-m-ease); }
6920
+ #codex-overleaf-panel .run-presence-label > .is-in { animation: tl-rise var(--tl-m-slow) var(--tl-m-ease); }
6921
+ #codex-overleaf-panel .run-presence-label > .is-out { opacity: 0; transform: translateY(-4px); }
6922
+ #codex-overleaf-panel .run-presence-label code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .92em; }
6923
+ #codex-overleaf-panel .run-presence-timer { margin-left: auto; padding-left: 8px; color: var(--tl-fg-4); font-size: 11px; font-variant-numeric: tabular-nums; }
6924
+ #codex-overleaf-panel .run-shimmer { background: linear-gradient(90deg, var(--tl-fg-3) 0 38%, var(--tl-fg-1) 50%, var(--tl-fg-3) 62% 100%); background-size: 250% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; animation: tl-shimmer 2.2s linear infinite; }
6925
+ #codex-overleaf-panel .run-shimmer.is-egg { background-image: linear-gradient(90deg, var(--tl-review) 0 38%, var(--tl-fg-1) 50%, var(--tl-review) 62% 100%); }
6926
+ #codex-overleaf-panel .run-mark { position: relative; display: inline-block; flex: none; width: 18px; height: 18px; }
6927
+ #codex-overleaf-panel .run-mark > span { position: absolute; inset: 0; background-position: center; background-size: 100% 100%; background-repeat: no-repeat; pointer-events: none; }
6928
+ /* Pixel-exact 96px layers of assets/icons/codex-overleaf-icon.png (cloud, cursor, leaf). Inlined so the
6929
+ runtime updater can ship them without touching the protected bootstrap assets. */
6930
+ #codex-overleaf-panel .run-mark-cloud { background-image: url("data:image/png;base64,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"); }
6931
+ #codex-overleaf-panel .run-mark-cursor { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAABZUlEQVR42u3XPYoVQRSG4ffrHkVBDAQDwcDMDZiaCe7IZQjiLgQ3YOoyJpp0QDCbQKc/k2q4NqPcyyC0zPtA09VJcU79nKoGSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSdJv8j8E2Xa+ZawFliR1yk8f/Oyxr7u2A94Ar4AFmMeK7og/B2027WvgHnABfE5y1TbuhCPLTtup7bu2S2/vU9uHo8+4A/4++FOSpe1z4CvwArgCzsYKvymH/iGvZXzfB94m+dJ2TnK9h1zPdr4RHgGPgR+j9OSgBC2bgd621wmZgZ/j+8neEpz2W4Ea4BI4H3V8Hfw17nk808GTzXvN78GYgHMP4dPL0GvgA/ByrORpU3JyRI7fgPfAR6B7OoSz9ytokrZ9Cjwbt5pTY56B70ku1sPXW9DpP2G76eeu/gesNb1H3Hx6Q15NsricJUmSJEmSJEmSJEmSJEmS9C/9ArDVvs4zSA6OAAAAAElFTkSuQmCC"); }
6932
+ #codex-overleaf-panel .run-mark-leaf { background-image: url("data:image/png;base64,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"); }
6933
+ #codex-overleaf-panel .run-mark-cloud, #codex-overleaf-panel .run-mark-cursor { transform-origin: var(--mark-cloud-origin); }
6934
+ #codex-overleaf-panel .run-mark-leaf { transform-origin: var(--mark-leaf-origin); transition: transform var(--tl-m-slow) var(--tl-m-ease); }
6935
+ #codex-overleaf-panel .run-status[data-presence="running"] .run-mark-cloud { animation: tl-breathe 2.4s ease-in-out infinite; }
6936
+ #codex-overleaf-panel .run-status[data-presence="running"] .run-mark-cursor { animation: tl-breathe 2.4s ease-in-out infinite, tl-blink 1.1s steps(1) infinite; }
6937
+ #codex-overleaf-panel .run-status[data-presence="running"] .run-mark-leaf { animation: tl-sway 1.6s ease-in-out infinite alternate; }
6938
+ #codex-overleaf-panel .run-summary-sep { color: var(--tl-fg-4); }
6939
+ #codex-overleaf-panel .run-summary-add { color: var(--tl-ok); }
6940
+ #codex-overleaf-panel .run-summary-del { color: var(--tl-fail); }
6941
+ #codex-overleaf-panel .run-summary-stopped { color: var(--tl-fg-3); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11.5px; }
6942
+ #codex-overleaf-panel .run-summary-qed { color: var(--tl-ok); font-family: KaTeX_Main, "Times New Roman", serif; font-style: italic; font-size: 13px; }
6943
+ #codex-overleaf-panel .run-status[data-presence] > span:not(.codex-sr-only) { animation: tl-rise var(--tl-m-slow) var(--tl-m-ease) both; }
6944
+ #codex-overleaf-panel .run-status[data-presence="done"]:not(:has(.is-settling)) > span,
6945
+ #codex-overleaf-panel .run-status[data-presence="stopped"]:not(:has(.is-settling)) > span { animation: none; }
6946
+ /* Summary facts land one after another: [sr][∎][time]·[files]·[diff]·[compiled]·[Q.E.D.] */
6947
+ #codex-overleaf-panel .run-status[data-presence] > span:nth-child(n+4) { animation-delay: 80ms; }
6948
+ #codex-overleaf-panel .run-status[data-presence] > span:nth-child(n+6) { animation-delay: 140ms; }
6949
+ #codex-overleaf-panel .run-status[data-presence] > span:nth-child(n+8) { animation-delay: 200ms; }
6950
+ #codex-overleaf-panel .run-status[data-presence] > span:nth-child(n+10) { animation-delay: 260ms; }
6951
+ #codex-overleaf-panel .run-status[data-presence] > .run-summary-qed { animation-delay: 420ms; }
6952
+ #codex-overleaf-panel .run-qed { position: relative; display: inline-grid; flex: none; place-items: center; width: 12px; height: 12px; color: var(--tl-ok); }
6953
+ #codex-overleaf-panel .run-qed svg { width: 10px; height: 10px; overflow: visible; }
6954
+ #codex-overleaf-panel .run-qed rect { fill: currentColor; stroke: currentColor; stroke-width: 1.4; }
6955
+ #codex-overleaf-panel .run-qed.is-open { color: var(--tl-fg-3); }
6956
+ #codex-overleaf-panel .run-qed.is-open rect { fill: none; }
6957
+ #codex-overleaf-panel .run-qed.is-settling svg { animation: tl-qed-drop 560ms var(--tl-m-spring) both; }
6958
+ #codex-overleaf-panel .run-qed.is-settling rect { stroke-dasharray: 40; animation: tl-qed-draw 380ms var(--tl-m-ease) both, tl-qed-fill 220ms 300ms var(--tl-m-ease) both; }
6959
+ #codex-overleaf-panel .run-qed.is-open.is-settling rect { animation: tl-qed-draw 380ms var(--tl-m-ease) both; }
6960
+ #codex-overleaf-panel .run-qed.is-first::after { content: ""; position: absolute; inset: 0; border: 1.5px solid var(--tl-ok); border-radius: 3px; opacity: 0; animation: tl-qed-ring 900ms 420ms var(--tl-m-ease); }
6961
+ #codex-overleaf-panel .run-status[data-presence="failed"] .codex-glyph { width: 14px; height: 14px; }
6962
+ @keyframes tl-rise { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
6963
+ @keyframes tl-shimmer { from { background-position: 120% 0; } to { background-position: -20% 0; } }
6964
+ @keyframes tl-breathe { 50% { transform: scale(1.05); } }
6965
+ @keyframes tl-sway { from { transform: rotate(-10deg); } to { transform: rotate(8deg); } }
6966
+ @keyframes tl-blink { 50% { opacity: 0; } }
6967
+ @keyframes tl-qed-draw { from { stroke-dashoffset: 40; } to { stroke-dashoffset: 0; } }
6968
+ @keyframes tl-qed-fill { from { fill-opacity: 0; } to { fill-opacity: 1; } }
6969
+ @keyframes tl-qed-drop { from { opacity: 0; transform: translateY(-6px) scale(.6); } to { opacity: 1; transform: none; } }
6970
+ @keyframes tl-qed-ring { from { opacity: .9; transform: scale(1); } to { opacity: 0; transform: scale(2.8); } }
6971
+
6972
+ /* Empty state: the mark greets once, then waits for a hover. */
6973
+ #codex-overleaf-panel .run-empty-mark .run-mark { width: 60px; height: 60px; filter: drop-shadow(0 6px 12px rgba(0, 0, 0, 0.24)); }
6974
+ #codex-overleaf-panel .run-empty-mark .run-mark-leaf { animation: tl-sway 1.3s ease-in-out 2 alternate; }
6975
+ #codex-overleaf-panel .run-empty-mark:hover .run-mark-leaf { animation: tl-sway 1.3s ease-in-out infinite alternate; }
6976
+ #codex-overleaf-panel .empty-runs-title { color: var(--tl-fg-1); font-size: 14px; font-weight: 600; }
6977
+ #codex-overleaf-panel .run-empty-project { display: inline-flex; align-items: center; justify-self: center; gap: 5px; max-width: 100%; padding: 1px 9px; border-radius: 999px; background: var(--tl-ok-wash); color: var(--tl-ok); font-size: 11.5px; font-weight: 550; }
6978
+ #codex-overleaf-panel .run-empty-project span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
6979
+ #codex-overleaf-panel .run-empty-project .codex-glyph { width: 12px; height: 12px; }
6980
+ #codex-overleaf-panel .run-empty-tip { display: flex; align-items: flex-start; gap: 8px; width: min(320px, 100%); margin: 6px auto 0; padding: 8px 10px; border: 1px solid var(--tl-border); border-radius: var(--tl-r-md); background: var(--tl-surface-2); color: var(--tl-fg-2); font-size: 11.5px; line-height: 1.5; text-align: left; }
6981
+ #codex-overleaf-panel .run-empty-pilcrow { color: var(--tl-accent); font-family: KaTeX_Main, "Times New Roman", serif; font-size: 16px; line-height: 1.1; }
6982
+ #codex-overleaf-panel .run-empty-tip-text { flex: 1; min-width: 0; animation: tl-rise var(--tl-m-base) var(--tl-m-ease); }
6983
+ #codex-overleaf-panel .run-empty-tip-next { display: inline-grid; place-items: center; flex: none; width: 20px; height: 20px; min-height: 0; padding: 0; border: 0; border-radius: var(--tl-r-sm); background: transparent; color: var(--tl-fg-4); box-shadow: none; cursor: pointer; }
6984
+ #codex-overleaf-panel .run-empty-tip-next:hover { color: var(--tl-fg-1); background: var(--tl-hover); }
6985
+ #codex-overleaf-panel .run-empty-tip-next:focus-visible { outline: 2px solid var(--tl-accent); outline-offset: 1px; }
6986
+ @media (prefers-reduced-motion: reduce) {
6987
+ #codex-overleaf-panel .run-status[data-presence] *,
6988
+ #codex-overleaf-panel .run-status[data-presence] > span,
6989
+ #codex-overleaf-panel .run-empty-mark *, #codex-overleaf-panel .run-empty-tip-text,
6990
+ #codex-overleaf-panel .codex-set-saved .codex-glyph path,
6991
+ #codex-overleaf-panel .run-peek, #codex-overleaf-panel .run-peek-row, #codex-overleaf-panel .run-peek-glyph svg, #codex-overleaf-panel .run-peek-glyph::before,
6992
+ #codex-overleaf-panel .run-setup, #codex-overleaf-panel .run-setup-step, #codex-overleaf-panel .run-setup-calm,
6993
+ #codex-overleaf-panel .run-setup-glyph svg, #codex-overleaf-panel .run-final-answer__meta, #codex-overleaf-panel .run-final-answer__facts-more .codex-glyph,
6994
+ #codex-overleaf-panel .run-workflow-thought-tail > span::after { animation: none !important; transition: none !important; }
6995
+ #codex-overleaf-panel .run-shimmer { background: none; color: var(--tl-fg-2); }
6996
+ }
6997
+
6998
+ /* Written-changes receipt: one folded row per file; inside, only changed lines
6999
+ with word-level marks. Prose font, faint washes, no status labels. */
7000
+ #codex-overleaf-panel .run-written-changes { display: grid; gap: 2px; margin: 4px 0 6px; font-size: 12px; line-height: 1.6; }
7001
+ #codex-overleaf-panel .run-written-file { min-width: 0; border-radius: 6px; }
7002
+ #codex-overleaf-panel .run-written-file[open] { background: var(--tl-surface-1); }
7003
+ #codex-overleaf-panel .run-written-file-sum { display: flex; align-items: baseline; gap: 6px; min-width: 0; padding: 3px 6px; border-radius: 6px; list-style: none; color: var(--tl-fg-2); cursor: pointer; }
7004
+ #codex-overleaf-panel .run-written-file-sum::-webkit-details-marker { display: none; }
7005
+ #codex-overleaf-panel .run-written-file-sum::before { content: "›"; flex: none; color: var(--tl-fg-4); transition: transform var(--tl-m-base, 180ms) var(--tl-m-ease, ease); }
7006
+ #codex-overleaf-panel .run-written-file[open] > .run-written-file-sum::before { transform: rotate(90deg); }
7007
+ #codex-overleaf-panel .run-written-file-sum:hover { background: var(--tl-hover); }
7008
+ #codex-overleaf-panel .run-written-file-sum:focus-visible { outline: 2px solid var(--tl-accent); outline-offset: 1px; }
7009
+ #codex-overleaf-panel .run-written-file-name { flex: none; max-width: 60%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--tl-fg-1); font-weight: 560; }
7010
+ #codex-overleaf-panel .run-written-file-dir { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--tl-fg-4); font-size: 11px; }
7011
+ #codex-overleaf-panel .run-written-file-counts { display: inline-flex; gap: 6px; flex: none; margin-left: auto; font-size: 11px; font-variant-numeric: tabular-nums; }
7012
+ #codex-overleaf-panel .run-written-add { color: var(--tl-ok); }
7013
+ #codex-overleaf-panel .run-written-del { color: var(--tl-fail); }
7014
+ #codex-overleaf-panel .run-written-body { max-height: 320px; overflow: auto; padding: 2px 8px 8px 20px; scrollbar-width: thin; animation: tl-rise var(--tl-m-base, 180ms) var(--tl-m-ease, ease); }
7015
+ #codex-overleaf-panel .run-written-hunk { margin: 6px 0 2px; color: var(--tl-fg-4); font-size: 11px; font-variant-numeric: tabular-nums; }
7016
+ #codex-overleaf-panel .run-written-row { min-height: 1.6em; color: var(--tl-fg-3); white-space: pre-wrap; overflow-wrap: anywhere; }
7017
+ #codex-overleaf-panel .run-written-row.is-changed { color: var(--tl-fg-1); }
7018
+ #codex-overleaf-panel .run-written-gap, #codex-overleaf-panel .run-written-note { color: var(--tl-fg-4); font-size: 11px; font-style: italic; }
7019
+ #codex-overleaf-panel .run-written-row ins { padding: 0 1px; border-radius: 2px; background: color-mix(in srgb, var(--tl-ok) 22%, transparent); color: inherit; text-decoration: none; }
7020
+ #codex-overleaf-panel .run-written-row del { padding: 0 1px; border-radius: 2px; background: color-mix(in srgb, var(--tl-fail) 16%, transparent); color: var(--tl-fg-3); text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--tl-fail) 70%, transparent); }
7021
+ @media (prefers-reduced-motion: reduce) {
7022
+ #codex-overleaf-panel .run-written-body, #codex-overleaf-panel .run-written-file-sum::before { animation: none; transition: none; }
7023
+ }