@agent-workshop/adoc-webapp 0.1.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 (204) hide show
  1. package/LICENSE +5 -0
  2. package/THIRD_PARTY_NOTICES.md +49 -0
  3. package/dist/assets/app.css +406 -0
  4. package/dist/assets/app.js +201 -0
  5. package/dist/assets/chunks/abnfDiagram-YUKMZFIV-UTBMKFXS.js +1 -0
  6. package/dist/assets/chunks/architecture-WOLXFQ4H-S6WNHT5H.js +1 -0
  7. package/dist/assets/chunks/architectureDiagram-47P4ROYG-SQCOEPXG.js +36 -0
  8. package/dist/assets/chunks/blockDiagram-E7TT5TSB-F5DSMBHI.js +140 -0
  9. package/dist/assets/chunks/c4Diagram-CRA5TL53-G4W35RYC.js +38 -0
  10. package/dist/assets/chunks/chunk-2TCGAX73.js +1 -0
  11. package/dist/assets/chunks/chunk-35SWHG2Z.js +1 -0
  12. package/dist/assets/chunks/chunk-4UKVVSLZ.js +2 -0
  13. package/dist/assets/chunks/chunk-56PLA4MI.js +1 -0
  14. package/dist/assets/chunks/chunk-6QSLXF4I.js +1 -0
  15. package/dist/assets/chunks/chunk-7DQROAU7.js +1 -0
  16. package/dist/assets/chunks/chunk-7FXP6RHI.js +1 -0
  17. package/dist/assets/chunks/chunk-7ITQOSYJ.js +15 -0
  18. package/dist/assets/chunks/chunk-7W3KTJUJ.js +1 -0
  19. package/dist/assets/chunks/chunk-ABLFMIK7.js +1 -0
  20. package/dist/assets/chunks/chunk-AVITUR4K.js +1 -0
  21. package/dist/assets/chunks/chunk-AVJJGJEF.js +1 -0
  22. package/dist/assets/chunks/chunk-BYKZQKZN.js +1 -0
  23. package/dist/assets/chunks/chunk-CBAFHIQV.js +213 -0
  24. package/dist/assets/chunks/chunk-CMFTFM5L.js +1 -0
  25. package/dist/assets/chunks/chunk-E2AIA637.js +14 -0
  26. package/dist/assets/chunks/chunk-ENUKY65A.js +72 -0
  27. package/dist/assets/chunks/chunk-EPS7YYLR.js +2 -0
  28. package/dist/assets/chunks/chunk-FDHLSHAZ.js +1 -0
  29. package/dist/assets/chunks/chunk-GBOXGTKU.js +1 -0
  30. package/dist/assets/chunks/chunk-GDF64WIG.js +1 -0
  31. package/dist/assets/chunks/chunk-GTJDAHEV.js +2 -0
  32. package/dist/assets/chunks/chunk-H57PPMTP.js +1 -0
  33. package/dist/assets/chunks/chunk-HHYS5L3R.js +1 -0
  34. package/dist/assets/chunks/chunk-INV6BDXO.js +2 -0
  35. package/dist/assets/chunks/chunk-IR3NHMOO.js +1 -0
  36. package/dist/assets/chunks/chunk-KLF2A562.js +1 -0
  37. package/dist/assets/chunks/chunk-LZTAJOGZ.js +1 -0
  38. package/dist/assets/chunks/chunk-M3XBBO6R.js +135 -0
  39. package/dist/assets/chunks/chunk-NBZPV65B.js +62 -0
  40. package/dist/assets/chunks/chunk-NCTJNXDF.js +1 -0
  41. package/dist/assets/chunks/chunk-O4U2B2FP.js +339 -0
  42. package/dist/assets/chunks/chunk-OB665XPY.js +1 -0
  43. package/dist/assets/chunks/chunk-OFD4YTIR.js +10 -0
  44. package/dist/assets/chunks/chunk-PHKIAKHS.js +1 -0
  45. package/dist/assets/chunks/chunk-R4OZRASH.js +32 -0
  46. package/dist/assets/chunks/chunk-UAGOPMXU.js +1 -0
  47. package/dist/assets/chunks/chunk-UAQETDSH.js +3 -0
  48. package/dist/assets/chunks/chunk-UORYZEAD.js +1 -0
  49. package/dist/assets/chunks/chunk-W4ELJFHG.js +1 -0
  50. package/dist/assets/chunks/chunk-WBPRABWA.js +136 -0
  51. package/dist/assets/chunks/chunk-XISCFCXG.js +88 -0
  52. package/dist/assets/chunks/chunk-XLJVPE6C.js +1 -0
  53. package/dist/assets/chunks/chunk-XQHNSJKC.js +1 -0
  54. package/dist/assets/chunks/chunk-XYDA52BE.js +1 -0
  55. package/dist/assets/chunks/chunk-YAHQK6MQ.js +1 -0
  56. package/dist/assets/chunks/chunk-ZGUCZDEK.js +1 -0
  57. package/dist/assets/chunks/chunk-ZRBDUQXP.js +1 -0
  58. package/dist/assets/chunks/classDiagram-v2-K4WV4PDN-EMBTPOHC.js +217 -0
  59. package/dist/assets/chunks/cose-bilkent-JH36ORCC-CNYFETCT.js +1 -0
  60. package/dist/assets/chunks/cynefin-EF2NZ3EQ-2AP5N5QY.js +1 -0
  61. package/dist/assets/chunks/cynefinDiagram-3GCD6N5R-WVTLESK3.js +62 -0
  62. package/dist/assets/chunks/dagre-W4DXFKR2-FPRZGQVB.js +4 -0
  63. package/dist/assets/chunks/diagram-2UJZ2QOL-VPSSQLZN.js +200 -0
  64. package/dist/assets/chunks/diagram-OVF4WLC6-PZ2RN37Y.js +24 -0
  65. package/dist/assets/chunks/diagram-PFPMY2P6-5GPN6RRZ.js +30 -0
  66. package/dist/assets/chunks/diagram-UMYRVEAY-OHFOPEFR.js +24 -0
  67. package/dist/assets/chunks/diagram-YEKJPTXX-PFA7KRZC.js +41 -0
  68. package/dist/assets/chunks/diagram-ZIFT7M5P-XOPZR7XN.js +3 -0
  69. package/dist/assets/chunks/ebnfDiagram-VR2GEFS7-MAGCN3HN.js +1 -0
  70. package/dist/assets/chunks/elk-IJKZMXRS-FZ2NQWIX.js +27 -0
  71. package/dist/assets/chunks/erDiagram-O2IAPWRE-746JHX2P.js +99 -0
  72. package/dist/assets/chunks/eventmodeling-K75KTNOO-FKRVI4N2.js +1 -0
  73. package/dist/assets/chunks/flowDiagram-OXPTDLAJ-XYHRK7XD.js +1 -0
  74. package/dist/assets/chunks/ganttDiagram-R7TSEDQI-DN5XENJA.js +292 -0
  75. package/dist/assets/chunks/gitGraph-VSP46ZUC-YT36MSRW.js +1 -0
  76. package/dist/assets/chunks/gitGraphDiagram-XJZIOB7I-NXP267LJ.js +106 -0
  77. package/dist/assets/chunks/info-OHQRW6UA-BRTC44VB.js +1 -0
  78. package/dist/assets/chunks/infoDiagram-5W2HQ5XZ-RT6YEU7N.js +2 -0
  79. package/dist/assets/chunks/ishikawaDiagram-K3B6WC7H-EJP5H2KV.js +70 -0
  80. package/dist/assets/chunks/journeyDiagram-COXZFDF6-M6MBFVND.js +139 -0
  81. package/dist/assets/chunks/kanban-definition-P3RFRI5V-WBYRNWVT.js +89 -0
  82. package/dist/assets/chunks/katex-42FXWECD.js +257 -0
  83. package/dist/assets/chunks/mermaid.core-SMXJOLYJ.js +18 -0
  84. package/dist/assets/chunks/mindmap-definition-LZFPQGKD-KVJVOCR5.js +96 -0
  85. package/dist/assets/chunks/packet-JDAUHWVQ-SGFXPYMB.js +1 -0
  86. package/dist/assets/chunks/pegDiagram-BGZESJAR-ECEGDREM.js +1 -0
  87. package/dist/assets/chunks/pie-XZMESJXO-LSQBPXPC.js +1 -0
  88. package/dist/assets/chunks/pieDiagram-CAPJLFHJ-D75MPXOK.js +39 -0
  89. package/dist/assets/chunks/quadrantDiagram-GDMTTRAM-HMUXMSEH.js +7 -0
  90. package/dist/assets/chunks/radar-ABXABTNO-TPYHBLNO.js +1 -0
  91. package/dist/assets/chunks/railroad-I3PHUGI6-WWIXL3LY.js +1 -0
  92. package/dist/assets/chunks/railroad-abnf-LNEFI6M7-DHJUY4R6.js +1 -0
  93. package/dist/assets/chunks/railroad-ebnf-DWYD2UWJ-4OJ4ECXX.js +1 -0
  94. package/dist/assets/chunks/railroad-peg-JR7BVNR7-VUOBDVLQ.js +1 -0
  95. package/dist/assets/chunks/railroadDiagram-SM67HX2B-Z757I54E.js +1 -0
  96. package/dist/assets/chunks/requirementDiagram-X7JNWC4A-7BW46JLY.js +84 -0
  97. package/dist/assets/chunks/sankeyDiagram-UM26HJRW-273BIID3.js +40 -0
  98. package/dist/assets/chunks/sequenceDiagram-ZO4K6R2Y-KG23HXTI.js +169 -0
  99. package/dist/assets/chunks/sizeCapture-INFHLROL-5N3POCQZ.js +1 -0
  100. package/dist/assets/chunks/stateDiagram-v2-TBUQTH76-AIML3PSW.js +291 -0
  101. package/dist/assets/chunks/swimlanes-N4OXWK64-TBFQZWAR.js +1 -0
  102. package/dist/assets/chunks/swimlanesDiagram-K3J5GTZL-TREAP6RB.js +8 -0
  103. package/dist/assets/chunks/timeline-definition-YOQAKGHF-QHTD5EBR.js +120 -0
  104. package/dist/assets/chunks/treeView-D4JQ5SDB-JJEYBPMW.js +1 -0
  105. package/dist/assets/chunks/treemap-SAJKECNS-I3YRCM2B.js +1 -0
  106. package/dist/assets/chunks/usecaseDiagram-VIAY4XPW-GNNFV4RS.js +370 -0
  107. package/dist/assets/chunks/vennDiagram-BLWOH2XV-YE23JXYX.js +34 -0
  108. package/dist/assets/chunks/wardley-7MLQ67FV-AKOGXXNF.js +1 -0
  109. package/dist/assets/chunks/wardleyDiagram-YMQ3BMBF-D7XYLZCZ.js +78 -0
  110. package/dist/assets/chunks/xychartDiagram-TAQBALBS-AT4Y7JWY.js +7 -0
  111. package/dist/assets/fonts/D2Coding-Bold.woff2 +0 -0
  112. package/dist/assets/fonts/D2Coding-OFL.txt +97 -0
  113. package/dist/assets/fonts/D2Coding.woff2 +0 -0
  114. package/dist/assets/fonts/Pretendard-LICENSE.txt +94 -0
  115. package/dist/assets/fonts/PretendardVariable.woff2 +0 -0
  116. package/dist/assets/fonts/SymbolsNerdFont-LICENSE.txt +21 -0
  117. package/dist/assets/fonts/SymbolsNerdFontMono.woff2 +0 -0
  118. package/dist/assets/xterm.css +285 -0
  119. package/dist/index.html +14 -0
  120. package/dist/licenses/@braintree__sanitize-url@7.1.2/LICENSE +21 -0
  121. package/dist/licenses/@chevrotain__cst-dts-gen@13.2.0/LICENSE.txt +202 -0
  122. package/dist/licenses/@chevrotain__gast@13.2.0/LICENSE.txt +202 -0
  123. package/dist/licenses/@chevrotain__regexp-to-ast@13.2.0/LICENSE.txt +202 -0
  124. package/dist/licenses/@chevrotain__utils@13.2.0/LICENSE.txt +202 -0
  125. package/dist/licenses/@iconify__utils@3.1.7/license.txt +21 -0
  126. package/dist/licenses/@mermaid-js__parser@2.0.1/LICENSE +21 -0
  127. package/dist/licenses/@remix-run__route-pattern@0.22.1/LICENSE +21 -0
  128. package/dist/licenses/@upsetjs__venn.js@2.0.0/LICENSE +22 -0
  129. package/dist/licenses/@xterm__addon-fit@0.11.0/LICENSE +19 -0
  130. package/dist/licenses/@xterm__xterm@6.0.0/LICENSE +21 -0
  131. package/dist/licenses/chevrotain@13.2.0/LICENSE.txt +202 -0
  132. package/dist/licenses/cookie-es@3.1.1/LICENSE +28 -0
  133. package/dist/licenses/cose-base@1.0.3/LICENSE +21 -0
  134. package/dist/licenses/cose-base@2.2.0/LICENSE +21 -0
  135. package/dist/licenses/cytoscape-cose-bilkent@4.1.0/LICENSE +21 -0
  136. package/dist/licenses/cytoscape-fcose@2.2.0/LICENSE +19 -0
  137. package/dist/licenses/cytoscape@3.34.3/LICENSE +19 -0
  138. package/dist/licenses/cytoscape@3.34.3/license-update.mjs +32 -0
  139. package/dist/licenses/d3-array@2.12.1/LICENSE +27 -0
  140. package/dist/licenses/d3-array@3.2.4/LICENSE +13 -0
  141. package/dist/licenses/d3-axis@3.0.0/LICENSE +13 -0
  142. package/dist/licenses/d3-brush@3.0.0/LICENSE +13 -0
  143. package/dist/licenses/d3-chord@3.0.1/LICENSE +13 -0
  144. package/dist/licenses/d3-color@3.1.0/LICENSE +13 -0
  145. package/dist/licenses/d3-contour@4.0.2/LICENSE +13 -0
  146. package/dist/licenses/d3-delaunay@6.0.4/LICENSE +14 -0
  147. package/dist/licenses/d3-dispatch@3.0.1/LICENSE +13 -0
  148. package/dist/licenses/d3-drag@3.0.0/LICENSE +13 -0
  149. package/dist/licenses/d3-dsv@3.0.1/LICENSE +13 -0
  150. package/dist/licenses/d3-ease@3.0.1/LICENSE +28 -0
  151. package/dist/licenses/d3-fetch@3.0.1/LICENSE +13 -0
  152. package/dist/licenses/d3-force@3.0.0/LICENSE +13 -0
  153. package/dist/licenses/d3-format@3.1.2/LICENSE +13 -0
  154. package/dist/licenses/d3-geo@3.1.1/LICENSE +34 -0
  155. package/dist/licenses/d3-hierarchy@3.1.2/LICENSE +13 -0
  156. package/dist/licenses/d3-interpolate@3.0.1/LICENSE +13 -0
  157. package/dist/licenses/d3-path@1.0.9/LICENSE +27 -0
  158. package/dist/licenses/d3-path@3.1.0/LICENSE +13 -0
  159. package/dist/licenses/d3-polygon@3.0.1/LICENSE +13 -0
  160. package/dist/licenses/d3-quadtree@3.0.1/LICENSE +13 -0
  161. package/dist/licenses/d3-random@3.0.1/LICENSE +13 -0
  162. package/dist/licenses/d3-sankey@0.12.3/LICENSE +27 -0
  163. package/dist/licenses/d3-scale-chromatic@3.1.0/LICENSE +28 -0
  164. package/dist/licenses/d3-scale@4.0.2/LICENSE +13 -0
  165. package/dist/licenses/d3-selection@3.0.0/LICENSE +13 -0
  166. package/dist/licenses/d3-shape@1.3.7/LICENSE +27 -0
  167. package/dist/licenses/d3-shape@3.2.0/LICENSE +13 -0
  168. package/dist/licenses/d3-time-format@4.1.0/LICENSE +13 -0
  169. package/dist/licenses/d3-time@3.1.0/LICENSE +13 -0
  170. package/dist/licenses/d3-timer@3.0.1/LICENSE +13 -0
  171. package/dist/licenses/d3-transition@3.0.1/LICENSE +13 -0
  172. package/dist/licenses/d3-zoom@3.0.0/LICENSE +13 -0
  173. package/dist/licenses/d3@7.9.0/LICENSE +13 -0
  174. package/dist/licenses/dagre-d3-es@7.0.14/LICENSE.md +23 -0
  175. package/dist/licenses/dayjs@1.11.23/LICENSE +21 -0
  176. package/dist/licenses/delaunator@5.1.0/LICENSE +15 -0
  177. package/dist/licenses/dompurify@3.4.16/LICENSE +202 -0
  178. package/dist/licenses/dompurify@3.4.16/LICENSE-MPL +373 -0
  179. package/dist/licenses/elkjs@0.9.3/LICENSE.md +264 -0
  180. package/dist/licenses/es-toolkit@1.52.0/LICENSE +21 -0
  181. package/dist/licenses/es-toolkit@1.52.0/NOTICE +39 -0
  182. package/dist/licenses/internmap@1.0.1/LICENSE +13 -0
  183. package/dist/licenses/internmap@2.0.3/LICENSE +13 -0
  184. package/dist/licenses/katex@0.16.47/LICENSE +21 -0
  185. package/dist/licenses/khroma@2.1.0/license +21 -0
  186. package/dist/licenses/layout-base@1.0.2/LICENSE +21 -0
  187. package/dist/licenses/layout-base@2.0.1/LICENSE +21 -0
  188. package/dist/licenses/lodash-es@4.18.1/LICENSE +47 -0
  189. package/dist/licenses/lucide-react@1.50.0/LICENSE +43 -0
  190. package/dist/licenses/lucide-react@1.50.0/copyright.mjs +22 -0
  191. package/dist/licenses/marked@16.4.2/LICENSE.md +44 -0
  192. package/dist/licenses/mermaid@12.1.0/LICENSE +21 -0
  193. package/dist/licenses/packages.json +945 -0
  194. package/dist/licenses/pretendard@1.3.9/LICENSE.txt +94 -0
  195. package/dist/licenses/react-dom@19.3.0/LICENSE +21 -0
  196. package/dist/licenses/react-router@8.4.0/LICENSE.md +23 -0
  197. package/dist/licenses/react@19.3.0/LICENSE +21 -0
  198. package/dist/licenses/robust-predicates@3.0.3/LICENSE +24 -0
  199. package/dist/licenses/roughjs@4.6.6/LICENSE +21 -0
  200. package/dist/licenses/scheduler@0.28.0/LICENSE +21 -0
  201. package/dist/licenses/stylis@4.4.0/LICENSE +21 -0
  202. package/dist/licenses/ts-dedent@2.3.0/LICENSE +21 -0
  203. package/dist/licenses/uuid@14.0.2/LICENSE.md +9 -0
  204. package/package.json +44 -0
package/LICENSE ADDED
@@ -0,0 +1,5 @@
1
+ Copyright (C) 2026 adoc contributors
2
+
3
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.
4
+
5
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -0,0 +1,49 @@
1
+ # Third-party notices
2
+
3
+ adoc's original code and documentation use the Zero-Clause BSD License (0BSD). That license does not replace the
4
+ licenses of third-party components, and no third-party component is relicensed by this repository.
5
+
6
+ ## Browser distributions
7
+
8
+ Two packages carry bundled browser code:
9
+
10
+ - `@agent-workshop/adoc-webapp`: the web UI in `dist/`. Its build records the packages actually bundled in
11
+ `dist/licenses/packages.json` and copies their upstream LICENSE, COPYING, COPYRIGHT and NOTICE files beneath
12
+ `dist/licenses/`.
13
+ - `@agent-workshop/adoc-plugin-sketch`: the drawing board in `client/`, with its inventory and license files in
14
+ `client/licenses/`.
15
+
16
+ Keep these files when redistributing the built browser assets.
17
+
18
+ The main browser dependencies are React, React DOM, React Router, Mermaid (with KaTeX), xterm.js and Lucide in the web
19
+ UI, and Excalidraw with React and Radix UI in the drawing board. Most use MIT, ISC, BSD or Apache-2.0.
20
+
21
+ - DOMPurify offers MPL-2.0 OR Apache-2.0; adoc uses the Apache-2.0 option.
22
+ - Some packages are published without a license file although their manifest names one: Excalidraw, the Radix UI
23
+ primitives, react-remove-scroll-bar and fastdom (all MIT). The build includes the upstream texts kept in
24
+ `tooling/licenses/`.
25
+
26
+ ### Eclipse Layout Kernel / elkjs
27
+
28
+ Mermaid bundles elkjs, a separately licensed layout engine, which adoc uses under EPL-2.0 without modifying it. Its
29
+ license is included in the generated license inventory. Corresponding source is available from:
30
+
31
+ - https://github.com/kieler/elkjs (select the release matching the inventory version)
32
+ - https://github.com/eclipse/elk (the underlying Eclipse Layout Kernel)
33
+ - https://www.eclipse.org/legal/epl-2.0/
34
+
35
+ Recipients may obtain, modify and redistribute the EPL-covered source under EPL-2.0. adoc's 0BSD license applies to its
36
+ independent code, not to ELK.
37
+
38
+ ## Fonts
39
+
40
+ - The web UI serves Pretendard, D2Coding (both SIL Open Font License 1.1) and Symbols Nerd Font Mono; their license
41
+ files are next to them in `dist/assets/fonts/`.
42
+ - The drawing board serves the fonts that Excalidraw ships in `client/fonts/` (Excalifont, Virgil, Nunito, Lilita One,
43
+ Comic Shanns, Cascadia Code, Liberation Sans, Assistant and Xiaolai); they are distributed under the terms that
44
+ Excalidraw states for them in https://github.com/excalidraw/excalidraw.
45
+
46
+ ## Installed runtime dependencies
47
+
48
+ The packages that npm installs next to adoc, such as the MCP SDK, ws, yaml, zod, semver, commander, markdown-it and
49
+ highlight.js, are not bundled: each keeps its own license in its own package.
@@ -0,0 +1,406 @@
1
+ /* _Web_UI_Theme_: the opencode TUI theme "opencode" (packages/tui/src/theme/assets/opencode.json).
2
+ Every colour is a token below, written light-dark(light, dark); nothing else in this file or in plugin HTML
3
+ writes a colour literal. `color-scheme` picks the variant from `data-theme`: the _Adoc_Config_ default (ui.theme), or the
4
+ _Theme_Toggle_'s choice in this browser; `system` leaves it to the operating system. */
5
+
6
+ @font-face { font-family: 'Pretendard Variable'; src: url('fonts/PretendardVariable.woff2') format('woff2-variations'); font-weight: 45 920; font-display: swap; }
7
+ @font-face { font-family: 'D2Coding'; src: url('fonts/D2Coding.woff2') format('woff2'); font-weight: 400; font-display: swap; }
8
+ @font-face { font-family: 'D2Coding'; src: url('fonts/D2Coding-Bold.woff2') format('woff2'); font-weight: 700; font-display: swap; }
9
+ @font-face { font-family: 'Symbols Nerd Font Mono'; src: url('fonts/SymbolsNerdFontMono.woff2') format('woff2'); font-display: swap; }
10
+
11
+ :root {
12
+ color-scheme: light dark;
13
+
14
+ /* surfaces: background → panel (blocks) → element (inputs, hover) */
15
+ --adoc-surface: light-dark(#ffffff, #0a0a0a);
16
+ --adoc-surface-panel: light-dark(#fafafa, #141414);
17
+ --adoc-surface-element: light-dark(#f5f5f5, #1e1e1e);
18
+ --adoc-text: light-dark(#1a1a1a, #eeeeee);
19
+ --adoc-text-muted: light-dark(#8a8a8a, #808080);
20
+ --adoc-border-subtle: light-dark(#d4d4d4, #3c3c3c);
21
+ --adoc-border: light-dark(#b8b8b8, #484848);
22
+ --adoc-border-active: light-dark(#a0a0a0, #606060);
23
+
24
+ /* roles and states */
25
+ --adoc-primary: light-dark(#3b7dd8, #fab283);
26
+ --adoc-secondary: light-dark(#7b5bb6, #5c9cf5);
27
+ --adoc-accent: light-dark(#d68c27, #9d7cd8);
28
+ --adoc-success: light-dark(#3d9a57, #7fd88f);
29
+ --adoc-warning: light-dark(#d68c27, #f5a742);
30
+ --adoc-error: light-dark(#d1383d, #e06c75);
31
+ --adoc-info: light-dark(#318795, #56b6c2);
32
+
33
+ /* diff */
34
+ --adoc-diff-added: light-dark(#1e725c, #4fd6be);
35
+ --adoc-diff-added-bg: light-dark(#d5e5d5, #20303b);
36
+ --adoc-diff-removed: light-dark(#c53b53, #c53b53);
37
+ --adoc-diff-removed-bg: light-dark(#f7d8db, #37222c);
38
+
39
+ /* Markdown */
40
+ --adoc-md-heading: light-dark(#d68c27, #9d7cd8);
41
+ --adoc-md-link: light-dark(#3b7dd8, #fab283);
42
+ --adoc-md-link-text: light-dark(#318795, #56b6c2);
43
+ --adoc-md-code: light-dark(#3d9a57, #7fd88f);
44
+ --adoc-md-blockquote: light-dark(#b0851f, #e5c07b);
45
+ --adoc-md-emph: light-dark(#b0851f, #e5c07b);
46
+ --adoc-md-strong: light-dark(#d68c27, #f5a742);
47
+ --adoc-md-hr: light-dark(#8a8a8a, #808080);
48
+ --adoc-md-list-item: light-dark(#3b7dd8, #fab283);
49
+ --adoc-md-list-enumeration: light-dark(#318795, #56b6c2);
50
+ --adoc-md-code-block: light-dark(#1a1a1a, #eeeeee);
51
+
52
+ /* syntax */
53
+ --adoc-syntax-comment: light-dark(#8a8a8a, #808080);
54
+ --adoc-syntax-keyword: light-dark(#d68c27, #9d7cd8);
55
+ --adoc-syntax-function: light-dark(#3b7dd8, #fab283);
56
+ --adoc-syntax-variable: light-dark(#d1383d, #e06c75);
57
+ --adoc-syntax-string: light-dark(#3d9a57, #7fd88f);
58
+ --adoc-syntax-number: light-dark(#d68c27, #f5a742);
59
+ --adoc-syntax-type: light-dark(#b0851f, #e5c07b);
60
+ --adoc-syntax-operator: light-dark(#318795, #56b6c2);
61
+ --adoc-syntax-punctuation: light-dark(#1a1a1a, #eeeeee);
62
+
63
+ /* floating surfaces (popovers, cards) only */
64
+ --adoc-shadow: 0 8px 28px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.55));
65
+
66
+ /* type and shape: the base size is the largest text; corners are square everywhere, as in the TUI, so accent bars stay straight */
67
+ --adoc-font-text: 'Pretendard Variable', Pretendard, system-ui, sans-serif;
68
+ --adoc-font-mono: 'D2Coding', 'Symbols Nerd Font Mono', ui-monospace, monospace;
69
+ --adoc-size-base: 14px;
70
+ --adoc-size-small: 12px;
71
+ --adoc-size-tiny: 11px;
72
+ --adoc-bar: 3px;
73
+ --adoc-reading-width: 860px;
74
+ }
75
+ :root[data-theme='light'] { color-scheme: light; }
76
+ :root[data-theme='dark'] { color-scheme: dark; }
77
+
78
+ /* ---- base ---- */
79
+ * { box-sizing: border-box; }
80
+ html, body, #root { height: 100%; margin: 0; }
81
+ body { font: var(--adoc-size-base) / 1.6 var(--adoc-font-text); background: var(--adoc-surface); color: var(--adoc-text); -webkit-font-smoothing: antialiased; }
82
+ h1, h2, h3, h4, h5, h6 { font-size: 1em; }
83
+ a { color: var(--adoc-md-link); }
84
+ code, pre, kbd, samp { font-family: var(--adoc-font-mono); }
85
+ ::selection { background: color-mix(in srgb, var(--adoc-primary) 35%, transparent); }
86
+ :focus-visible { outline: 1px solid var(--adoc-border-active); outline-offset: 1px; }
87
+ svg.lucide { width: 1.1em; height: 1.1em; flex-shrink: 0; stroke-width: 1.75; }
88
+
89
+ button {
90
+ font: inherit; font-size: var(--adoc-size-small); cursor: pointer; border: none;
91
+ background: var(--adoc-surface-element); color: var(--adoc-text); padding: 2px 10px; display: inline-flex; align-items: center; gap: 6px;
92
+ }
93
+ button:hover:not(:disabled) { background: color-mix(in srgb, var(--adoc-surface-element), var(--adoc-text) 8%); }
94
+ button:disabled { opacity: 0.4; cursor: default; }
95
+ button.primary { background: var(--adoc-primary); color: var(--adoc-surface); font-weight: 600; }
96
+ button.primary:hover:not(:disabled) { background: color-mix(in srgb, var(--adoc-primary), var(--adoc-text) 12%); }
97
+ button.quiet { background: transparent; color: var(--adoc-text-muted); padding: 2px 4px; }
98
+ button.quiet:hover:not(:disabled) { color: var(--adoc-text); background: var(--adoc-surface-element); }
99
+ button.quiet.active { color: var(--adoc-primary); }
100
+ select { font: inherit; font-size: var(--adoc-size-tiny); border: none; background: var(--adoc-surface-element); color: var(--adoc-text); padding: 1px 4px; }
101
+ textarea { font: inherit; color: var(--adoc-text); }
102
+
103
+ .muted { color: var(--adoc-text-muted); }
104
+ .small { font-size: var(--adoc-size-small); }
105
+ .error { color: var(--adoc-error); }
106
+ .mono { font-family: var(--adoc-font-mono); }
107
+ .status { color: var(--adoc-secondary); font-weight: 600; }
108
+
109
+ /* shared primitives, used by the web UI and by plugin HTML alike */
110
+ /* chip: the one small label shape (no separate badge) */
111
+ .adoc-chip {
112
+ display: inline-flex; align-items: center; gap: 4px; padding: 0 6px;
113
+ background: var(--adoc-surface-element); color: var(--tone, var(--adoc-text-muted)); font-size: var(--adoc-size-tiny); line-height: 18px; white-space: nowrap;
114
+ }
115
+ button.adoc-chip:hover:not(:disabled) { color: var(--adoc-text); }
116
+ button.adoc-chip.active { color: var(--adoc-surface); background: var(--adoc-primary); font-weight: 600; }
117
+
118
+ /* accent bar: emphasis on the left edge of a block */
119
+ .adoc-block { background: var(--adoc-surface-panel); box-shadow: inset var(--adoc-bar) 0 0 var(--tone, var(--adoc-border)); padding: 6px 10px 6px calc(10px + var(--adoc-bar)); }
120
+ .adoc-tone-primary { --tone: var(--adoc-primary); }
121
+ .adoc-tone-secondary { --tone: var(--adoc-secondary); }
122
+ .adoc-tone-accent { --tone: var(--adoc-accent); }
123
+ .adoc-tone-success { --tone: var(--adoc-success); }
124
+ .adoc-tone-warning { --tone: var(--adoc-warning); }
125
+ .adoc-tone-error { --tone: var(--adoc-error); }
126
+ .adoc-tone-info { --tone: var(--adoc-info); }
127
+
128
+ /* ---- _App_Shell_ ---- */
129
+ .app-shell { display: flex; flex-direction: column; height: 100%; }
130
+ .top-bar { display: flex; align-items: stretch; gap: 16px; padding: 0 12px; background: var(--adoc-surface-panel); min-height: 36px; font-size: var(--adoc-size-small); }
131
+ .workspace-name { display: flex; align-items: center; gap: 6px; text-decoration: none; color: var(--adoc-text); font-weight: 600; white-space: nowrap; }
132
+ .workspace-name .product { color: var(--adoc-primary); font-weight: 800; }
133
+ .top-bar-right { display: flex; gap: 14px; align-items: center; margin-left: auto; white-space: nowrap; }
134
+ .connection-status { display: inline-flex; align-items: center; gap: 6px; color: var(--adoc-text-muted); }
135
+ .connection-status .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--adoc-text-muted); }
136
+ .connection-status.connected .dot { background: var(--adoc-success); }
137
+ .connection-status.disconnected { color: var(--adoc-error); }
138
+ .connection-status.disconnected .dot { background: var(--adoc-error); }
139
+ .git-status { display: inline-flex; align-items: center; gap: 4px; color: var(--adoc-text-muted); }
140
+ .git-status.absent { color: var(--adoc-warning); }
141
+ .warning-link { background: transparent; color: var(--adoc-warning); padding: 0 4px; }
142
+ .agent-pane-label { display: inline-flex; align-items: center; gap: 4px; color: var(--adoc-text-muted); font-family: var(--adoc-font-mono); font-size: var(--adoc-size-tiny); }
143
+ .agent-pane-label.none { color: var(--adoc-warning); }
144
+ .agent-pane-label.gone { color: var(--adoc-error); }
145
+ .theme-toggle { background: transparent; color: var(--adoc-text-muted); padding: 2px 4px; }
146
+
147
+ /* _Plugin_Tab_Bar_: plain tabs; the active one has the element surface and a primary bar at the bottom */
148
+ .plugin-tab-bar { display: flex; align-items: stretch; gap: 2px; }
149
+ .plugin-tab { display: flex; align-items: center; gap: 6px; padding: 0 12px; text-decoration: none; color: var(--adoc-text-muted); font-weight: 600; box-shadow: inset 0 -2px 0 transparent; }
150
+ .plugin-tab:hover { color: var(--adoc-text); }
151
+ .plugin-tab.active { color: var(--adoc-text); background: var(--adoc-surface-element); box-shadow: inset 0 -2px 0 var(--adoc-primary); }
152
+ .plugin-tab.failed { color: var(--adoc-error); }
153
+ .plugin-tab .count { font-weight: 400; color: var(--adoc-text-muted); font-size: var(--adoc-size-tiny); }
154
+
155
+ .shell-body { flex: 1; display: flex; min-height: 0; }
156
+ .shell-body.dock-left { flex-direction: row-reverse; }
157
+ .shell-column { flex: 1; min-width: 0; display: flex; flex-direction: column; position: relative; }
158
+
159
+ /* pin and fold (fold.tsx): an unpinned foldable shows its fold-closed part, and its fold-open part while the pointer
160
+ is on it, a text input in it has focus, or something holds it open (`held`, such as a chosen plugin tab) */
161
+ .foldable:not(.unpinned) .fold-closed,
162
+ .foldable.unpinned:is(:hover, :has(textarea:focus), .held) .fold-closed,
163
+ .foldable.unpinned:not(:hover):not(:has(textarea:focus)):not(.held) .fold-open { display: none; }
164
+ /* measuring: a folded region laid out open but invisible for one synchronous measurement (CommentComposer) */
165
+ .foldable.measuring .fold-open { display: block !important; visibility: hidden; }
166
+ .foldable.measuring .fold-closed { display: none !important; }
167
+ .shell-main { flex: 1; min-height: 0; overflow: auto; background: var(--adoc-surface); }
168
+ .pane-placeholder { padding: 32px; color: var(--adoc-text-muted); }
169
+
170
+ /* _Workspace_Home_Panel_ */
171
+ .workspace-home { padding: 28px 32px; max-width: 980px; }
172
+ .workspace-home h1 { margin: 0; color: var(--adoc-md-heading); }
173
+ .workspace-home .root { font-family: var(--adoc-font-mono); font-size: var(--adoc-size-small); color: var(--adoc-text-muted); margin: 2px 0 0; }
174
+ .plugin-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; margin-top: 20px; }
175
+ .plugin-card { display: flex; flex-direction: column; gap: 2px; text-decoration: none; color: var(--adoc-text); --tone: transparent; padding: 10px 14px 12px calc(14px + var(--adoc-bar)); }
176
+ .plugin-card:hover { --tone: var(--adoc-primary); background: var(--adoc-surface-element); }
177
+ .plugin-card.failed { --tone: var(--adoc-error); }
178
+ .plugin-card-key { font-weight: 800; color: var(--adoc-primary); }
179
+ .plugin-card-count { font-size: var(--adoc-size-small); }
180
+ .plugin-card-description { color: var(--adoc-text-muted); font-size: var(--adoc-size-small); }
181
+
182
+ /* ---- plugin route: list (folds into a rail while a document is shown) + detail ---- */
183
+ .plugin-route { display: flex; height: 100%; position: relative; }
184
+ .document-list-slot { width: 280px; flex-shrink: 0; position: relative; }
185
+ .plugin-route.list-unpinned .document-list-slot { width: 0; } /* the rail overlays the detail pane's left padding, so the reading column lines up with the composer */
186
+ .document-list-pane { position: absolute; inset: 0; background: var(--adoc-surface-panel); display: flex; flex-direction: column; z-index: 6; }
187
+ .document-list-pane.unpinned { width: 32px; }
188
+ .document-list-pane.unpinned:is(:hover, :has(textarea:focus), .held) { width: 280px; box-shadow: var(--adoc-shadow); }
189
+ .pane-rail { writing-mode: vertical-rl; padding: 10px 7px; font-size: var(--adoc-size-tiny); font-weight: 700; color: var(--adoc-text-muted); letter-spacing: 0.06em; }
190
+ .pane-title-name { display: inline-flex; align-items: baseline; gap: 6px; }
191
+ .title-separator { color: var(--adoc-border); font-weight: 400; }
192
+ .skill-link { font-family: var(--adoc-font-mono); font-size: var(--adoc-size-tiny); font-weight: 400; letter-spacing: 0; color: var(--adoc-text-muted); text-decoration: none; }
193
+ .skill-link:hover { color: var(--adoc-md-link); text-decoration: underline; }
194
+ .home-skills { display: flex; gap: 14px; margin: 6px 0 0; }
195
+ .pane-title { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px 6px 16px; font-size: var(--adoc-size-tiny); font-weight: 700; color: var(--adoc-text-muted); letter-spacing: 0.06em; white-space: nowrap; }
196
+ .pane-title-controls { display: flex; align-items: center; gap: 4px; font-weight: 400; letter-spacing: normal; }
197
+ .document-rows { flex: 1; overflow: auto; padding: 0 6px 12px; min-width: 268px; }
198
+ .document-rows > p { padding: 0 10px; font-size: var(--adoc-size-small); }
199
+ .document-row { display: block; padding: 6px 10px 6px calc(10px + var(--adoc-bar)); text-decoration: none; color: var(--adoc-text); }
200
+ .document-row:hover { background: var(--adoc-surface-element); }
201
+ .document-row.selected { background: var(--adoc-surface-element); box-shadow: inset var(--adoc-bar) 0 0 var(--adoc-primary); }
202
+ .document-row.parse-error :is(.row-title, .row-title-tooltip) { color: var(--adoc-error); }
203
+ /* the title is one line, so every row has the same height; a longer one ends in an ellipsis and is shown whole in the
204
+ row-title tooltip (floating, below), laid exactly over it */
205
+ .row-title { font-weight: 500; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
206
+ .document-row.selected :is(.row-title, .row-title-tooltip) { font-weight: 700; }
207
+ .row-meta { display: flex; gap: 8px; align-items: center; font-size: var(--adoc-size-tiny); color: var(--adoc-text-muted); white-space: nowrap; }
208
+ /* every line of a row stays one line: a long status or key ends in an ellipsis */
209
+ .row-meta > * { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
210
+ .row-meta > .row-updated { margin-left: auto; flex-shrink: 0; }
211
+ .row-updated.recent { color: var(--adoc-primary); font-weight: 600; }
212
+ .row-key { font-family: var(--adoc-font-mono); }
213
+
214
+ .document-detail-pane { flex: 1; min-width: 0; overflow: auto; display: flex; flex-direction: column; }
215
+ .document-detail-pane > * { width: 100%; max-width: var(--adoc-reading-width); margin-inline: auto; }
216
+ .document-header { padding: 20px 32px 8px; }
217
+ .header-key { font-family: var(--adoc-font-mono); color: var(--adoc-text-muted); font-size: var(--adoc-size-tiny); }
218
+ .header-title { margin: 0 0 4px; font-weight: 700; }
219
+ .header-meta { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; font-size: var(--adoc-size-small); }
220
+ .header-meta .path { font-family: var(--adoc-font-mono); font-size: var(--adoc-size-tiny); color: var(--adoc-text-muted); }
221
+ .action-notice { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 8px; font-size: var(--adoc-size-small); }
222
+ .document-detail-pane > .action-notice { width: calc(100% - 64px); }
223
+ .document-editor { display: flex; flex-direction: column; gap: 6px; padding: 8px 32px 32px; flex: 1; min-height: 0; }
224
+ .editor-toolbar { display: flex; align-items: center; gap: 10px; font-size: var(--adoc-size-small); }
225
+ .editor-toolbar .path { font-family: var(--adoc-font-mono); font-size: var(--adoc-size-tiny); color: var(--adoc-text-muted); }
226
+ .editor-toolbar .spacer { flex: 1; }
227
+ .editor-notice { color: var(--adoc-text-muted); }
228
+ .editor-notice.error { color: var(--adoc-error); }
229
+ .editor-text { flex: 1; min-height: 60vh; resize: none; border: none; outline: none; padding: 10px 12px calc(10px + var(--adoc-composer-space, 0px)) calc(12px + var(--adoc-bar)); background: var(--adoc-surface-panel); box-shadow: inset var(--adoc-bar) 0 0 var(--adoc-secondary); font-family: var(--adoc-font-mono); font-size: var(--adoc-size-small); line-height: 1.6; tab-size: 2; }
230
+ .document-body { position: relative; padding: 8px 48px 32px 32px; flex: 1; }
231
+ .document-body.parse-error pre { white-space: pre-wrap; color: var(--adoc-error); }
232
+ .pending-update { margin-bottom: 12px; font-size: var(--adoc-size-small); }
233
+
234
+ /* ---- rendered plugin HTML: Markdown colours, anchors, references, drop zones ---- */
235
+ .rendered { color: var(--adoc-text); overflow-wrap: anywhere; }
236
+ .rendered h1, .rendered h2, .rendered h3, .rendered h4, .rendered h5, .rendered h6 { color: var(--adoc-md-heading); font-weight: 700; margin: 18px 0 6px; }
237
+ .rendered h1 { font-weight: 800; }
238
+ .rendered p { margin: 6px 0; }
239
+ .rendered a { color: var(--adoc-md-link-text); text-decoration-color: var(--adoc-md-link); }
240
+ .rendered strong { color: var(--adoc-md-strong); }
241
+ .rendered em { color: var(--adoc-md-emph); }
242
+ .rendered blockquote { margin: 8px 0; padding: 2px 0 2px calc(12px + var(--adoc-bar)); box-shadow: inset var(--adoc-bar) 0 0 var(--adoc-border-subtle); color: var(--adoc-md-blockquote); }
243
+ .rendered hr { border: none; border-top: 1px solid var(--adoc-md-hr); opacity: 0.5; margin: 16px 0; }
244
+ .rendered ul, .rendered ol { padding-left: 22px; margin: 6px 0; }
245
+ .rendered ul > li::marker { color: var(--adoc-md-list-item); }
246
+ .rendered ol > li::marker { color: var(--adoc-md-list-enumeration); }
247
+ .rendered li.adoc-task-item { list-style: none; margin-left: -20px; }
248
+ .rendered li.adoc-task-item > input { margin: 0 6px 0 0; vertical-align: -2px; accent-color: var(--adoc-success); }
249
+ .rendered :not(pre) > code { color: var(--adoc-md-code); font-size: 0.95em; }
250
+ .rendered pre { background: var(--adoc-surface-panel); color: var(--adoc-md-code-block); padding: 10px 14px; overflow: auto; font-size: var(--adoc-size-small); line-height: 1.5; }
251
+ .rendered pre.adoc-mermaid.drawn:not(.failed) { background: transparent; padding: 8px 0; text-align: center; overflow-x: auto; }
252
+ .rendered pre.adoc-mermaid svg { max-width: 100%; height: auto; }
253
+ .rendered table { border-collapse: collapse; font-size: var(--adoc-size-small); margin: 8px 0; }
254
+ .rendered th, .rendered td { padding: 4px 10px; text-align: left; border-bottom: 1px solid var(--adoc-border-subtle); }
255
+ .rendered th { color: var(--adoc-text-muted); font-weight: 600; }
256
+ .rendered [data-adoc-anchor] { }
257
+ .rendered [data-adoc-anchor]:hover { background: var(--adoc-surface-panel); box-shadow: inset var(--adoc-bar) 0 0 var(--adoc-border); }
258
+ .adoc-ref { white-space: nowrap; text-decoration: none; font-family: var(--adoc-font-mono); font-size: 0.92em; color: var(--adoc-md-link); border-bottom: 1px dashed currentColor; }
259
+ .adoc-ref.adoc-ref-broken { color: var(--adoc-error); text-decoration: line-through; }
260
+ .adoc-drop-over { box-shadow: inset 0 0 0 1px var(--adoc-primary) !important; background: var(--adoc-surface-element) !important; }
261
+ .adoc-flash { animation: adoc-flash 1.4s ease-out; }
262
+ @keyframes adoc-flash { from { background: color-mix(in srgb, var(--adoc-primary) 30%, transparent); } to { background: transparent; } }
263
+
264
+ /* syntax (highlight.js classes from the plugin-kit Markdown) */
265
+ .hljs-comment, .hljs-quote { color: var(--adoc-syntax-comment); font-style: italic; }
266
+ .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-doctag, .hljs-meta .hljs-keyword { color: var(--adoc-syntax-keyword); }
267
+ .hljs-title, .hljs-title.function_, .hljs-section, .hljs-built_in { color: var(--adoc-syntax-function); }
268
+ .hljs-variable, .hljs-template-variable, .hljs-attr, .hljs-name, .hljs-tag, .hljs-property { color: var(--adoc-syntax-variable); }
269
+ .hljs-string, .hljs-regexp, .hljs-addition, .hljs-symbol, .hljs-template-tag { color: var(--adoc-syntax-string); }
270
+ .hljs-number, .hljs-bullet, .hljs-link { color: var(--adoc-syntax-number); }
271
+ .hljs-type, .hljs-title.class_, .hljs-class .hljs-title, .hljs-params { color: var(--adoc-syntax-type); }
272
+ .hljs-operator, .hljs-meta, .hljs-selector-attr, .hljs-selector-pseudo { color: var(--adoc-syntax-operator); }
273
+ .hljs-punctuation { color: var(--adoc-syntax-punctuation); }
274
+ .hljs-deletion { color: var(--adoc-diff-removed); }
275
+ .hljs-emphasis { font-style: italic; }
276
+ .hljs-strong { font-weight: 700; }
277
+
278
+ /* ---- floating: anchor button, popover, tooltips, draft card ---- */
279
+ .floating { position: absolute; background: var(--adoc-surface-element); box-shadow: var(--adoc-shadow); }
280
+ .anchor-comment-button { position: absolute; padding: 3px; z-index: 5; color: var(--adoc-text-muted); }
281
+ .anchor-comment-button:hover:not(:disabled) { color: var(--adoc-primary); }
282
+ .comment-popover { width: 380px; z-index: 10; box-shadow: var(--adoc-shadow), inset var(--adoc-bar) 0 0 var(--adoc-secondary); }
283
+ .action-confirm-backdrop { position: fixed; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; background: color-mix(in srgb, var(--adoc-surface), transparent 40%); }
284
+ .action-confirm-dialog { width: min(420px, calc(100vw - 32px)); padding: 16px 18px 16px calc(18px + var(--adoc-bar)); background: var(--adoc-surface-panel); box-shadow: var(--adoc-shadow), inset var(--adoc-bar) 0 0 var(--adoc-primary); display: flex; flex-direction: column; gap: 12px; }
285
+ .action-confirm-dialog p { margin: 0; }
286
+ .action-confirm-dialog label { display: flex; align-items: center; gap: 6px; }
287
+ .action-confirm-buttons { display: flex; justify-content: flex-end; gap: 8px; }
288
+ .reference-tooltip { min-width: 220px; max-width: 360px; padding: 8px 12px; z-index: 20; pointer-events: none; font-size: var(--adoc-size-small); }
289
+ .tooltip-key { font-family: var(--adoc-font-mono); font-size: var(--adoc-size-tiny); color: var(--adoc-text-muted); }
290
+ .tooltip-title { font-weight: 700; margin: 2px 0 4px; }
291
+ .reference-tooltip table { border-collapse: collapse; width: 100%; }
292
+ .reference-tooltip th { text-align: left; color: var(--adoc-text-muted); font-weight: 500; padding: 1px 10px 1px 0; }
293
+ /* fixed, so the scrolling _Document_List_Pane_ does not clip it */
294
+ .row-title-tooltip { position: fixed; z-index: 20; pointer-events: none; font-weight: 500; line-height: 1.4; overflow-wrap: anywhere; padding: 6px 10px; margin: -6px 0 0 -10px; box-sizing: content-box; }
295
+
296
+ /* _Draft_Comment_Input_ (inside the _Comment_Popover_) */
297
+ .draft-comment-input { padding: 8px 10px 8px calc(10px + var(--adoc-bar)); display: flex; flex-direction: column; gap: 6px; }
298
+ .draft-comment-input textarea { resize: vertical; width: 100%; padding: 4px 6px; border: none; background: var(--adoc-surface); }
299
+ .draft-comment-input textarea:focus { outline: none; }
300
+ .composer-target { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; font-size: var(--adoc-size-tiny); color: var(--adoc-text-muted); }
301
+ .composer-target code { color: var(--adoc-secondary); }
302
+ .composer-quote { margin: 0; padding: 2px 0 2px 8px; box-shadow: inset 2px 0 0 var(--adoc-border-subtle); color: var(--adoc-md-blockquote); font-size: var(--adoc-size-small); max-height: 80px; overflow: auto; }
303
+ .composer-actions { display: flex; justify-content: flex-end; gap: 6px; }
304
+
305
+ /* _Draft_Marker_Column_ */
306
+ .draft-marker-column { position: absolute; top: 0; bottom: 0; right: 28px; width: 1ch; }
307
+ .draft-marker { position: absolute; right: 0; color: var(--adoc-secondary); cursor: default; line-height: 1; padding: 4px 0; }
308
+ .draft-marker svg.lucide { width: 9px; height: 9px; fill: currentColor; }
309
+ .draft-card { right: 1.5ch; top: -4px; width: 260px; padding: 8px 10px 8px calc(10px + var(--adoc-bar)); color: var(--adoc-text); font-size: var(--adoc-size-small); z-index: 15; box-shadow: var(--adoc-shadow), inset var(--adoc-bar) 0 0 var(--adoc-secondary); line-height: 1.5; }
310
+ .draft-card blockquote { margin: 4px 0; padding-left: 8px; box-shadow: inset 2px 0 0 var(--adoc-border-subtle); color: var(--adoc-md-blockquote); }
311
+ .draft-card-target { font-family: var(--adoc-font-mono); font-size: var(--adoc-size-tiny); color: var(--adoc-secondary); }
312
+ .draft-card-actions { display: flex; justify-content: flex-end; gap: 2px; margin-top: 4px; }
313
+
314
+ /* ---- _Message_Dock_: one header, then the terminal or the pending messages, drafts and the composer ---- */
315
+ /* _Panel_Resizer_: a 1px rule centred in the 4px hit area, so the _Terminal_Panel_ never reads as part of the main area */
316
+ .panel-resizer { position: relative; width: 4px; cursor: col-resize; background: linear-gradient(var(--adoc-border-subtle), var(--adoc-border-subtle)) center / 1px 100% no-repeat, var(--adoc-surface); flex-shrink: 0; }
317
+ .panel-swap { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 8; padding: 3px; color: var(--adoc-text-muted); background: var(--adoc-surface-element); box-shadow: var(--adoc-shadow); }
318
+ .panel-swap:hover:not(:disabled) { color: var(--adoc-primary); }
319
+ .panel-resizer:hover, body.resizing .panel-resizer { background: var(--adoc-border-active); }
320
+ body.resizing { user-select: none; cursor: col-resize; }
321
+ .message-dock { flex-shrink: 0; background: var(--adoc-surface-panel); display: flex; flex-direction: column; min-width: 0; }
322
+ .message-dock.collapsed { width: auto !important; }
323
+ .dock-header { display: flex; align-items: center; gap: 8px; padding: 0 8px 0 12px; min-height: 32px; font-size: var(--adoc-size-small); white-space: nowrap; overflow: hidden; }
324
+ .dock-header .agent-name { font-weight: 700; }
325
+ .dock-header .where { font-family: var(--adoc-font-mono); font-size: var(--adoc-size-tiny); color: var(--adoc-text-muted); overflow: hidden; text-overflow: ellipsis; }
326
+ .dock-header .spacer { flex: 1; }
327
+ .agent-status { font-size: var(--adoc-size-tiny); color: var(--adoc-warning); }
328
+ .agent-status.idle, .agent-status.done { color: var(--adoc-text-muted); }
329
+ .terminal-phase { display: inline-flex; color: var(--adoc-text-muted); }
330
+ .terminal-phase.control { color: var(--adoc-primary); }
331
+ .message-dock.collapsed .dock-header { writing-mode: vertical-rl; padding: 10px 0; min-height: 0; }
332
+ .terminal-panel { flex: 1; min-height: 0; display: flex; flex-direction: column; background: var(--adoc-surface); }
333
+ .terminal-host { flex: 1; min-height: 0; padding: 4px 0 0 6px; overflow: hidden; } /* a frame wider than the panel never reaches the page */
334
+ .dock-note { margin: 0; font-size: var(--adoc-size-small); }
335
+ .pending-message-list { flex: 1; overflow: auto; list-style: none; margin: 0; padding: 8px; display: flex; flex-direction: column; gap: 6px; font-size: var(--adoc-size-small); }
336
+ .pending-empty { flex: 1; padding: 12px; margin: 0; font-size: var(--adoc-size-small); }
337
+ .pending-message.comment { --tone: var(--adoc-secondary); }
338
+ .pending-message.action { --tone: var(--adoc-warning); }
339
+ .pending-head { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; color: var(--adoc-text-muted); font-size: var(--adoc-size-tiny); }
340
+ .pending-head .number { font-weight: 700; color: var(--adoc-text); }
341
+ .pending-head code { color: var(--adoc-secondary); }
342
+ .pending-message blockquote { margin: 2px 0; padding-left: 8px; box-shadow: inset 2px 0 0 var(--adoc-border-subtle); color: var(--adoc-md-blockquote); }
343
+ .pending-text { white-space: pre-wrap; }
344
+ .pending-comment { margin-top: 4px; }
345
+
346
+ /* _Draft_Chip_List_ */
347
+ .draft-chip-list { display: flex; flex-wrap: wrap; gap: 4px; padding-top: 6px; }
348
+ .draft-chip { padding: 0; color: var(--adoc-secondary); font-family: var(--adoc-font-mono); }
349
+ .draft-chip button { background: transparent; color: inherit; font-size: inherit; padding: 0 2px 0 6px; }
350
+ .draft-chip .chip-remove { color: var(--adoc-text-muted); padding: 0 4px 0 2px; }
351
+ .draft-chip .chip-remove:hover { color: var(--adoc-error); background: transparent; }
352
+
353
+ /* _Comment_Composer_: floating over the bottom of the main area, as wide as the reading column; three lines that grow, on
354
+ the element surface with the agent's accent bar; unpinned, one line until hovered or focused */
355
+ .composer-area { position: absolute; left: var(--adoc-main-inset, 0px); right: 0; bottom: 0; z-index: 7; width: auto; max-width: var(--adoc-reading-width); margin-inline: auto; padding: 0 32px 12px; pointer-events: none; }
356
+ .composer-area > * { pointer-events: auto; }
357
+ .composer-target .spacer { flex: 1; }
358
+ .composer-folded { width: 100%; padding: 5px 8px 5px calc(10px + var(--adoc-bar)); color: var(--adoc-text-muted); box-shadow: var(--adoc-shadow), inset var(--adoc-bar) 0 0 var(--adoc-secondary); }
359
+ .main-scroll { padding-bottom: calc(var(--adoc-composer-space, 0px) + 16px); }
360
+ .comment-composer { margin-top: 6px; padding: 6px 6px 6px calc(10px + var(--adoc-bar)); background: var(--adoc-surface-element); box-shadow: var(--adoc-shadow), inset var(--adoc-bar) 0 0 var(--adoc-secondary); display: flex; flex-direction: column; gap: 4px; }
361
+ .composer-row { display: flex; align-items: flex-end; gap: 6px; }
362
+ .comment-composer textarea { flex: 1; resize: none; border: none; background: transparent; padding: 2px 0; max-height: 30vh; line-height: 1.5; }
363
+ .comment-composer textarea:focus { outline: none; }
364
+ .comment-composer textarea::placeholder { color: var(--adoc-text-muted); }
365
+ .send-button { padding: 4px; }
366
+
367
+ /* _Warning_Panel_, _Action_Notice_ */
368
+ .overlay { position: fixed; inset: 0; background: color-mix(in srgb, var(--adoc-surface) 60%, transparent); display: flex; align-items: flex-start; justify-content: center; padding-top: 80px; z-index: 50; }
369
+ .warning-panel { position: static; width: min(760px, 92vw); max-height: 70vh; overflow: auto; padding: 14px 18px; }
370
+ .panel-header { display: flex; justify-content: space-between; align-items: center; }
371
+ .panel-header h2 { margin: 0; color: var(--adoc-md-heading); }
372
+ .warning-list { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 6px; font-size: var(--adoc-size-small); }
373
+ .warning-list li { display: grid; grid-template-columns: 64px 150px 1fr; gap: 8px; }
374
+ .warning-list .level { font-weight: 700; text-transform: uppercase; font-size: var(--adoc-size-tiny); color: var(--tone); }
375
+ .warning-list .kind { font-family: var(--adoc-font-mono); font-size: var(--adoc-size-tiny); }
376
+ .warning-list .path { grid-column: 3; color: var(--adoc-text-muted); font-size: var(--adoc-size-tiny); font-family: var(--adoc-font-mono); }
377
+
378
+ /* _Change_Toggle_, _Change_Base_Picker_ */
379
+ .change-toggle.on { color: var(--adoc-surface); background: var(--adoc-info); font-weight: 600; }
380
+ .change-toggle.unavailable { color: var(--adoc-text-muted); }
381
+
382
+ /* ---- generic classes for plugin HTML (listed in the plugin-kit authoring guide) ---- */
383
+ .adoc-title { margin: 0 0 12px; font-weight: 700; color: var(--adoc-md-heading); }
384
+ .adoc-muted { color: var(--adoc-text-muted); font-size: var(--adoc-size-small); }
385
+ .adoc-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-bottom: 16px; font-size: var(--adoc-size-small); }
386
+ .adoc-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 1px; }
387
+ .adoc-item { display: flex; align-items: baseline; gap: 10px; padding: 4px 8px 4px calc(8px + var(--adoc-bar)); }
388
+ .adoc-item input[type='checkbox'] { transform: translateY(1px); accent-color: var(--adoc-primary); }
389
+ .adoc-done > span { color: var(--adoc-text-muted); text-decoration: line-through; }
390
+ .adoc-section { padding: 2px 8px 2px calc(8px + var(--adoc-bar)); margin-bottom: 4px; }
391
+ .adoc-section h2 { margin: 14px 0 4px; }
392
+ .adoc-board { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start; }
393
+ .adoc-column { flex: 1 1 200px; background: var(--adoc-surface-panel); padding: 8px; min-height: 120px; display: flex; flex-direction: column; gap: 6px; }
394
+ .adoc-column-title { display: flex; justify-content: space-between; font-weight: 700; font-size: var(--adoc-size-tiny); letter-spacing: 0.06em; color: var(--adoc-text-muted); padding: 0 2px; }
395
+ .adoc-card { background: var(--adoc-surface-element); padding: 6px 10px 6px calc(10px + var(--adoc-bar)); font-size: var(--adoc-size-small); }
396
+ .adoc-card:hover { box-shadow: inset var(--adoc-bar) 0 0 var(--adoc-primary); }
397
+ .adoc-card[draggable='true'] { cursor: grab; }
398
+ .adoc-trash { margin-top: 8px; padding: 8px; color: var(--adoc-error); background: var(--adoc-surface-panel); box-shadow: inset var(--adoc-bar) 0 0 var(--adoc-error); text-align: center; font-size: var(--adoc-size-small); }
399
+ .adoc-diff { font-family: var(--adoc-font-mono); font-size: var(--adoc-size-small); overflow: auto; background: var(--adoc-surface-panel); padding: 6px 0; }
400
+ .adoc-diff > div { white-space: pre-wrap; padding: 0 10px; }
401
+ .adoc-diff-mark { display: inline-block; width: 1.4em; color: var(--adoc-text-muted); user-select: none; }
402
+ .adoc-added { background: var(--adoc-diff-added-bg); box-shadow: inset var(--adoc-bar) 0 0 var(--adoc-diff-added); }
403
+ .adoc-diff .adoc-added { color: var(--adoc-diff-added); }
404
+ .adoc-removed { background: var(--adoc-diff-removed-bg); box-shadow: inset var(--adoc-bar) 0 0 var(--adoc-diff-removed); text-decoration: line-through; color: var(--adoc-text-muted); }
405
+ .adoc-diff .adoc-removed { color: var(--adoc-diff-removed); }
406
+ .adoc-changed { box-shadow: inset var(--adoc-bar) 0 0 var(--adoc-warning); background: color-mix(in srgb, var(--adoc-warning) 10%, transparent); }