@docmentis/udoc-viewer 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/dist/styles.css +1331 -0
  2. package/dist/wasm/udoc_bg.wasm +0 -0
  3. package/dist/worker/WorkerClient.js +1 -1
  4. package/package.json +15 -6
  5. package/dist/WorkerClient.d.ts +0 -36
  6. package/dist/WorkerClient.d.ts.map +0 -1
  7. package/dist/WorkerClient.js +0 -121
  8. package/dist/WorkerClient.js.map +0 -1
  9. package/dist/annotation/AnnotationLayer.d.ts +0 -166
  10. package/dist/annotation/AnnotationLayer.d.ts.map +0 -1
  11. package/dist/annotation/AnnotationLayer.js +0 -1090
  12. package/dist/annotation/AnnotationLayer.js.map +0 -1
  13. package/dist/annotation/index.d.ts +0 -6
  14. package/dist/annotation/index.d.ts.map +0 -1
  15. package/dist/annotation/index.js +0 -6
  16. package/dist/annotation/index.js.map +0 -1
  17. package/dist/components/FloatingBar.d.ts +0 -102
  18. package/dist/components/FloatingBar.d.ts.map +0 -1
  19. package/dist/components/FloatingBar.js +0 -513
  20. package/dist/components/FloatingBar.js.map +0 -1
  21. package/dist/components/Header.d.ts +0 -46
  22. package/dist/components/Header.d.ts.map +0 -1
  23. package/dist/components/Header.js +0 -93
  24. package/dist/components/Header.js.map +0 -1
  25. package/dist/components/index.d.ts +0 -6
  26. package/dist/components/index.d.ts.map +0 -1
  27. package/dist/components/index.js +0 -4
  28. package/dist/components/index.js.map +0 -1
  29. package/dist/components/panels/CommentsPanel.d.ts +0 -33
  30. package/dist/components/panels/CommentsPanel.d.ts.map +0 -1
  31. package/dist/components/panels/CommentsPanel.js +0 -176
  32. package/dist/components/panels/CommentsPanel.js.map +0 -1
  33. package/dist/components/panels/OutlinePanel.d.ts +0 -30
  34. package/dist/components/panels/OutlinePanel.d.ts.map +0 -1
  35. package/dist/components/panels/OutlinePanel.js +0 -144
  36. package/dist/components/panels/OutlinePanel.js.map +0 -1
  37. package/dist/components/panels/ThumbnailsPanel.d.ts +0 -51
  38. package/dist/components/panels/ThumbnailsPanel.d.ts.map +0 -1
  39. package/dist/components/panels/ThumbnailsPanel.js +0 -160
  40. package/dist/components/panels/ThumbnailsPanel.js.map +0 -1
  41. package/dist/components/panels/index.d.ts +0 -7
  42. package/dist/components/panels/index.d.ts.map +0 -1
  43. package/dist/components/panels/index.js +0 -4
  44. package/dist/components/panels/index.js.map +0 -1
  45. package/dist/constants.d.ts +0 -25
  46. package/dist/constants.d.ts.map +0 -1
  47. package/dist/constants.js +0 -46
  48. package/dist/constants.js.map +0 -1
  49. package/dist/core/NavigationController.d.ts +0 -54
  50. package/dist/core/NavigationController.d.ts.map +0 -1
  51. package/dist/core/NavigationController.js +0 -145
  52. package/dist/core/NavigationController.js.map +0 -1
  53. package/dist/core/PerfTimer.d.ts +0 -12
  54. package/dist/core/PerfTimer.d.ts.map +0 -1
  55. package/dist/core/PerfTimer.js +0 -32
  56. package/dist/core/PerfTimer.js.map +0 -1
  57. package/dist/core/ViewerState.d.ts +0 -108
  58. package/dist/core/ViewerState.d.ts.map +0 -1
  59. package/dist/core/ViewerState.js +0 -179
  60. package/dist/core/ViewerState.js.map +0 -1
  61. package/dist/core/constants.d.ts +0 -24
  62. package/dist/core/constants.d.ts.map +0 -1
  63. package/dist/core/constants.js +0 -42
  64. package/dist/core/constants.js.map +0 -1
  65. package/dist/core/index.d.ts +0 -8
  66. package/dist/core/index.d.ts.map +0 -1
  67. package/dist/core/index.js +0 -11
  68. package/dist/core/index.js.map +0 -1
  69. package/dist/core/types.d.ts +0 -573
  70. package/dist/core/types.d.ts.map +0 -1
  71. package/dist/core/types.js +0 -5
  72. package/dist/core/types.js.map +0 -1
  73. package/dist/icons/icons.d.ts +0 -41
  74. package/dist/icons/icons.d.ts.map +0 -1
  75. package/dist/icons/icons.js +0 -51
  76. package/dist/icons/icons.js.map +0 -1
  77. package/dist/icons/index.d.ts +0 -3
  78. package/dist/icons/index.d.ts.map +0 -1
  79. package/dist/icons/index.js +0 -2
  80. package/dist/icons/index.js.map +0 -1
  81. package/dist/layout/BandManager.d.ts +0 -87
  82. package/dist/layout/BandManager.d.ts.map +0 -1
  83. package/dist/layout/BandManager.js +0 -185
  84. package/dist/layout/BandManager.js.map +0 -1
  85. package/dist/layout/LayoutCalculator.d.ts +0 -42
  86. package/dist/layout/LayoutCalculator.d.ts.map +0 -1
  87. package/dist/layout/LayoutCalculator.js +0 -180
  88. package/dist/layout/LayoutCalculator.js.map +0 -1
  89. package/dist/layout/LayoutState.d.ts +0 -46
  90. package/dist/layout/LayoutState.d.ts.map +0 -1
  91. package/dist/layout/LayoutState.js +0 -109
  92. package/dist/layout/LayoutState.js.map +0 -1
  93. package/dist/layout/TransitionCoordinator.d.ts +0 -11
  94. package/dist/layout/TransitionCoordinator.d.ts.map +0 -1
  95. package/dist/layout/TransitionCoordinator.js +0 -22
  96. package/dist/layout/TransitionCoordinator.js.map +0 -1
  97. package/dist/layout/index.d.ts +0 -7
  98. package/dist/layout/index.d.ts.map +0 -1
  99. package/dist/layout/index.js +0 -4
  100. package/dist/layout/index.js.map +0 -1
  101. package/dist/rendering/BandManager.d.ts +0 -87
  102. package/dist/rendering/BandManager.d.ts.map +0 -1
  103. package/dist/rendering/BandManager.js +0 -185
  104. package/dist/rendering/BandManager.js.map +0 -1
  105. package/dist/rendering/PageCache.d.ts +0 -75
  106. package/dist/rendering/PageCache.d.ts.map +0 -1
  107. package/dist/rendering/PageCache.js +0 -122
  108. package/dist/rendering/PageCache.js.map +0 -1
  109. package/dist/rendering/RenderQueue.d.ts +0 -75
  110. package/dist/rendering/RenderQueue.d.ts.map +0 -1
  111. package/dist/rendering/RenderQueue.js +0 -105
  112. package/dist/rendering/RenderQueue.js.map +0 -1
  113. package/dist/rendering/ThumbnailQueue.d.ts +0 -57
  114. package/dist/rendering/ThumbnailQueue.d.ts.map +0 -1
  115. package/dist/rendering/ThumbnailQueue.js +0 -85
  116. package/dist/rendering/ThumbnailQueue.js.map +0 -1
  117. package/dist/rendering/index.d.ts +0 -13
  118. package/dist/rendering/index.d.ts.map +0 -1
  119. package/dist/rendering/index.js +0 -10
  120. package/dist/rendering/index.js.map +0 -1
  121. package/dist/rendering/types.d.ts +0 -72
  122. package/dist/rendering/types.d.ts.map +0 -1
  123. package/dist/rendering/types.js +0 -5
  124. package/dist/rendering/types.js.map +0 -1
  125. package/dist/styles/index.d.ts +0 -6
  126. package/dist/styles/index.d.ts.map +0 -1
  127. package/dist/styles/index.js +0 -1221
  128. package/dist/styles/index.js.map +0 -1
  129. package/dist/types.d.ts +0 -6
  130. package/dist/types.d.ts.map +0 -1
  131. package/dist/types.js +0 -6
  132. package/dist/types.js.map +0 -1
  133. package/dist/ui/Component.d.ts +0 -127
  134. package/dist/ui/Component.d.ts.map +0 -1
  135. package/dist/ui/Component.js +0 -201
  136. package/dist/ui/Component.js.map +0 -1
  137. package/dist/ui/annotation/AnnotationLayer.d.ts +0 -90
  138. package/dist/ui/annotation/AnnotationLayer.d.ts.map +0 -1
  139. package/dist/ui/annotation/AnnotationLayer.js +0 -322
  140. package/dist/ui/annotation/AnnotationLayer.js.map +0 -1
  141. package/dist/ui/annotation/LinkRenderer.d.ts +0 -32
  142. package/dist/ui/annotation/LinkRenderer.d.ts.map +0 -1
  143. package/dist/ui/annotation/LinkRenderer.js +0 -74
  144. package/dist/ui/annotation/LinkRenderer.js.map +0 -1
  145. package/dist/ui/annotation/MarkupRenderer.d.ts +0 -40
  146. package/dist/ui/annotation/MarkupRenderer.d.ts.map +0 -1
  147. package/dist/ui/annotation/MarkupRenderer.js +0 -154
  148. package/dist/ui/annotation/MarkupRenderer.js.map +0 -1
  149. package/dist/ui/annotation/ShapeRenderer.d.ts +0 -46
  150. package/dist/ui/annotation/ShapeRenderer.d.ts.map +0 -1
  151. package/dist/ui/annotation/ShapeRenderer.js +0 -376
  152. package/dist/ui/annotation/ShapeRenderer.js.map +0 -1
  153. package/dist/ui/annotation/TextRenderer.d.ts +0 -36
  154. package/dist/ui/annotation/TextRenderer.d.ts.map +0 -1
  155. package/dist/ui/annotation/TextRenderer.js +0 -199
  156. package/dist/ui/annotation/TextRenderer.js.map +0 -1
  157. package/dist/ui/annotation/index.d.ts +0 -17
  158. package/dist/ui/annotation/index.d.ts.map +0 -1
  159. package/dist/ui/annotation/index.js +0 -13
  160. package/dist/ui/annotation/index.js.map +0 -1
  161. package/dist/ui/annotation/utils.d.ts +0 -40
  162. package/dist/ui/annotation/utils.d.ts.map +0 -1
  163. package/dist/ui/annotation/utils.js +0 -62
  164. package/dist/ui/annotation/utils.js.map +0 -1
  165. package/dist/ui/components/CommentsContent.d.ts +0 -35
  166. package/dist/ui/components/CommentsContent.d.ts.map +0 -1
  167. package/dist/ui/components/CommentsContent.js +0 -203
  168. package/dist/ui/components/CommentsContent.js.map +0 -1
  169. package/dist/ui/components/FloatingBar.d.ts +0 -55
  170. package/dist/ui/components/FloatingBar.d.ts.map +0 -1
  171. package/dist/ui/components/FloatingBar.js +0 -585
  172. package/dist/ui/components/FloatingBar.js.map +0 -1
  173. package/dist/ui/components/Header.d.ts +0 -29
  174. package/dist/ui/components/Header.d.ts.map +0 -1
  175. package/dist/ui/components/Header.js +0 -127
  176. package/dist/ui/components/Header.js.map +0 -1
  177. package/dist/ui/components/LeftPanel.d.ts +0 -54
  178. package/dist/ui/components/LeftPanel.d.ts.map +0 -1
  179. package/dist/ui/components/LeftPanel.js +0 -202
  180. package/dist/ui/components/LeftPanel.js.map +0 -1
  181. package/dist/ui/components/OutlineContent.d.ts +0 -34
  182. package/dist/ui/components/OutlineContent.d.ts.map +0 -1
  183. package/dist/ui/components/OutlineContent.js +0 -147
  184. package/dist/ui/components/OutlineContent.js.map +0 -1
  185. package/dist/ui/components/RightPanel.d.ts +0 -52
  186. package/dist/ui/components/RightPanel.d.ts.map +0 -1
  187. package/dist/ui/components/RightPanel.js +0 -142
  188. package/dist/ui/components/RightPanel.js.map +0 -1
  189. package/dist/ui/components/Viewport.d.ts +0 -70
  190. package/dist/ui/components/Viewport.d.ts.map +0 -1
  191. package/dist/ui/components/Viewport.js +0 -173
  192. package/dist/ui/components/Viewport.js.map +0 -1
  193. package/dist/ui/components/index.d.ts +0 -11
  194. package/dist/ui/components/index.d.ts.map +0 -1
  195. package/dist/ui/components/index.js +0 -10
  196. package/dist/ui/components/index.js.map +0 -1
  197. package/dist/ui/icons/icons.d.ts +0 -43
  198. package/dist/ui/icons/icons.d.ts.map +0 -1
  199. package/dist/ui/icons/icons.js +0 -46
  200. package/dist/ui/icons/icons.js.map +0 -1
  201. package/dist/ui/icons/index.d.ts +0 -11
  202. package/dist/ui/icons/index.d.ts.map +0 -1
  203. package/dist/ui/icons/index.js +0 -18
  204. package/dist/ui/icons/index.js.map +0 -1
  205. package/dist/ui/index.d.ts +0 -7
  206. package/dist/ui/index.d.ts.map +0 -1
  207. package/dist/ui/index.js +0 -9
  208. package/dist/ui/index.js.map +0 -1
  209. package/dist/ui/styles/base.css.d.ts +0 -5
  210. package/dist/ui/styles/base.css.d.ts.map +0 -1
  211. package/dist/ui/styles/base.css.js +0 -49
  212. package/dist/ui/styles/base.css.js.map +0 -1
  213. package/dist/ui/styles/floating-bar.css.d.ts +0 -5
  214. package/dist/ui/styles/floating-bar.css.d.ts.map +0 -1
  215. package/dist/ui/styles/floating-bar.css.js +0 -417
  216. package/dist/ui/styles/floating-bar.css.js.map +0 -1
  217. package/dist/ui/styles/header.css.d.ts +0 -5
  218. package/dist/ui/styles/header.css.d.ts.map +0 -1
  219. package/dist/ui/styles/header.css.js +0 -49
  220. package/dist/ui/styles/header.css.js.map +0 -1
  221. package/dist/ui/styles/index.d.ts +0 -21
  222. package/dist/ui/styles/index.d.ts.map +0 -1
  223. package/dist/ui/styles/index.js +0 -48
  224. package/dist/ui/styles/index.js.map +0 -1
  225. package/dist/ui/styles/panels.css.d.ts +0 -5
  226. package/dist/ui/styles/panels.css.d.ts.map +0 -1
  227. package/dist/ui/styles/panels.css.js +0 -446
  228. package/dist/ui/styles/panels.css.js.map +0 -1
  229. package/dist/ui/styles/responsive.css.d.ts +0 -5
  230. package/dist/ui/styles/responsive.css.d.ts.map +0 -1
  231. package/dist/ui/styles/responsive.css.js +0 -201
  232. package/dist/ui/styles/responsive.css.js.map +0 -1
  233. package/dist/ui/styles/variables.css.d.ts +0 -6
  234. package/dist/ui/styles/variables.css.d.ts.map +0 -1
  235. package/dist/ui/styles/variables.css.js +0 -75
  236. package/dist/ui/styles/variables.css.js.map +0 -1
  237. package/dist/ui/styles/viewport.css.d.ts +0 -5
  238. package/dist/ui/styles/viewport.css.d.ts.map +0 -1
  239. package/dist/ui/styles/viewport.css.js +0 -87
  240. package/dist/ui/styles/viewport.css.js.map +0 -1
  241. package/dist/view/LayoutCalculator.d.ts +0 -42
  242. package/dist/view/LayoutCalculator.d.ts.map +0 -1
  243. package/dist/view/LayoutCalculator.js +0 -180
  244. package/dist/view/LayoutCalculator.js.map +0 -1
  245. package/dist/view/TransitionCoordinator.d.ts +0 -11
  246. package/dist/view/TransitionCoordinator.d.ts.map +0 -1
  247. package/dist/view/TransitionCoordinator.js +0 -22
  248. package/dist/view/TransitionCoordinator.js.map +0 -1
  249. package/dist/view/ViewState.d.ts +0 -46
  250. package/dist/view/ViewState.d.ts.map +0 -1
  251. package/dist/view/ViewState.js +0 -109
  252. package/dist/view/ViewState.js.map +0 -1
  253. package/dist/view/index.d.ts +0 -7
  254. package/dist/view/index.d.ts.map +0 -1
  255. package/dist/view/index.js +0 -4
  256. package/dist/view/index.js.map +0 -1
  257. package/dist/worker/types.d.ts +0 -81
  258. package/dist/worker/types.d.ts.map +0 -1
  259. package/dist/worker/types.js +0 -6
  260. package/dist/worker/types.js.map +0 -1
  261. package/dist/worker.d.ts +0 -2
  262. package/dist/worker.d.ts.map +0 -1
  263. package/dist/worker.js +0 -205
  264. package/dist/worker.js.map +0 -1
@@ -0,0 +1,1331 @@
1
+ .udoc-viewer-root {
2
+ display: flex;
3
+ flex-direction: column;
4
+ height: 100%;
5
+ container-type: inline-size;
6
+ container-name: udoc-viewer;
7
+ }
8
+
9
+ .udoc-viewer-root .toolbar-slot {
10
+ flex: 0 0 auto;
11
+ }
12
+
13
+ .udoc-viewer-root .body-slot {
14
+ flex: 1 1 auto;
15
+ display: flex;
16
+ overflow: hidden;
17
+ }
18
+
19
+ .udoc-viewer-root .left-panel-slot {
20
+ flex: 0 0 auto;
21
+ }
22
+
23
+ .udoc-viewer-root .right-panel-slot {
24
+ flex: 0 0 auto;
25
+ }
26
+
27
+ .udoc-viewer-root .viewport-slot {
28
+ flex: 1 1 auto;
29
+ overflow: hidden;
30
+ }
31
+
32
+ .udoc-viewer-root .udoc-viewport {
33
+ position: relative;
34
+ width: 100%;
35
+ height: 100%;
36
+ background: #e0e0e0;
37
+ }
38
+
39
+ .udoc-viewer-root .udoc-viewport__scroll {
40
+ width: 100%;
41
+ height: 100%;
42
+ overflow: auto;
43
+ scrollbar-gutter: stable;
44
+ }
45
+
46
+ .udoc-viewer-root .udoc-viewport__container {
47
+ position: relative;
48
+ min-height: 100%;
49
+ box-sizing: border-box;
50
+ /* height set dynamically for virtual scrolling */
51
+ }
52
+
53
+ /* Spread */
54
+ .udoc-viewer-root .udoc-spread {
55
+ display: flex;
56
+ flex-direction: row;
57
+ justify-content: flex-start;
58
+ flex-shrink: 0;
59
+ }
60
+
61
+ .udoc-viewer-root .udoc-spread--hidden {
62
+ display: none;
63
+ }
64
+
65
+ /* Page slot within spread */
66
+ .udoc-viewer-root .udoc-spread__slot {
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+ background: white;
71
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
72
+ }
73
+
74
+ .udoc-viewer-root .udoc-viewport--seamless .udoc-spread__slot {
75
+ box-shadow: none;
76
+ }
77
+
78
+ .udoc-viewer-root .udoc-spread__slot--empty {
79
+ background: transparent;
80
+ box-shadow: none;
81
+ }
82
+
83
+ .udoc-viewer-root .udoc-spread__canvas {
84
+ display: block;
85
+ }
86
+
87
+ /* Floating Toolbar */
88
+ .udoc-viewer-root .udoc-floating-toolbar {
89
+ position: absolute;
90
+ bottom: 20px;
91
+ left: 50%;
92
+ transform: translateX(-50%);
93
+ display: flex;
94
+ align-items: center;
95
+ gap: 4px;
96
+ padding: 6px 10px;
97
+ background: #fff;
98
+ border-radius: 8px;
99
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
100
+ z-index: 100;
101
+ }
102
+
103
+ .udoc-viewer-root .udoc-floating-toolbar__section {
104
+ display: flex;
105
+ align-items: center;
106
+ gap: 4px;
107
+ }
108
+
109
+ .udoc-viewer-root .udoc-floating-toolbar__divider {
110
+ width: 1px;
111
+ height: 20px;
112
+ background: rgba(0, 0, 0, 0.15);
113
+ margin: 0 4px;
114
+ }
115
+
116
+ .udoc-viewer-root .udoc-floating-toolbar__btn {
117
+ display: flex;
118
+ align-items: center;
119
+ justify-content: center;
120
+ width: 28px;
121
+ height: 28px;
122
+ padding: 0;
123
+ border: none;
124
+ border-radius: 4px;
125
+ background: transparent;
126
+ color: rgba(0, 0, 0, 0.7);
127
+ cursor: pointer;
128
+ }
129
+
130
+ .udoc-viewer-root .udoc-floating-toolbar__btn:hover {
131
+ background: rgba(0, 0, 0, 0.08);
132
+ }
133
+
134
+ .udoc-viewer-root .udoc-floating-toolbar__btn:active {
135
+ background: rgba(0, 0, 0, 0.15);
136
+ }
137
+
138
+ .udoc-viewer-root .udoc-floating-toolbar__btn:disabled {
139
+ color: rgba(0, 0, 0, 0.25);
140
+ cursor: default;
141
+ }
142
+
143
+ .udoc-viewer-root .udoc-floating-toolbar__btn:disabled:hover {
144
+ background: transparent;
145
+ }
146
+
147
+ .udoc-viewer-root .udoc-floating-toolbar__btn svg {
148
+ width: 18px;
149
+ height: 18px;
150
+ }
151
+
152
+ .udoc-viewer-root .udoc-floating-toolbar__page-info {
153
+ display: flex;
154
+ align-items: center;
155
+ color: rgba(0, 0, 0, 0.8);
156
+ font-size: 13px;
157
+ }
158
+
159
+ .udoc-viewer-root .udoc-floating-toolbar__page-input {
160
+ width: 36px;
161
+ padding: 2px 4px;
162
+ border: 1px solid rgba(0, 0, 0, 0.15);
163
+ border-radius: 4px;
164
+ background: transparent;
165
+ color: rgba(0, 0, 0, 0.8);
166
+ font-size: 13px;
167
+ text-align: center;
168
+ }
169
+
170
+ .udoc-viewer-root .udoc-floating-toolbar__page-input:focus {
171
+ outline: none;
172
+ border-color: rgba(0, 0, 0, 0.3);
173
+ background: white;
174
+ }
175
+
176
+ .udoc-viewer-root .udoc-floating-toolbar__page-total {
177
+ white-space: nowrap;
178
+ }
179
+
180
+ .udoc-viewer-root .udoc-floating-toolbar__zoom-level {
181
+ min-width: 44px;
182
+ color: rgba(0, 0, 0, 0.8);
183
+ font-size: 13px;
184
+ text-align: center;
185
+ }
186
+
187
+ .udoc-viewer-root .udoc-floating-toolbar__btn--active {
188
+ background: rgba(0, 0, 0, 0.12);
189
+ }
190
+
191
+ /* Zoom Dropdown */
192
+ .udoc-viewer-root .udoc-zoom-dropdown {
193
+ position: relative;
194
+ height: 28px;
195
+ display: flex;
196
+ align-items: center;
197
+ }
198
+
199
+ .udoc-viewer-root .udoc-zoom-dropdown__toggle {
200
+ display: flex;
201
+ align-items: center;
202
+ gap: 0;
203
+ height: 100%;
204
+ border: 1px solid rgba(0, 0, 0, 0.15);
205
+ border-radius: 4px;
206
+ background: transparent;
207
+ }
208
+
209
+ .udoc-viewer-root .udoc-zoom-dropdown__toggle:focus-within {
210
+ border-color: rgba(0, 0, 0, 0.3);
211
+ background: white;
212
+ }
213
+
214
+ .udoc-viewer-root .udoc-zoom-dropdown__input {
215
+ width: 44px;
216
+ padding: 2px 4px;
217
+ border: none;
218
+ border-radius: 4px 0 0 4px;
219
+ background: transparent;
220
+ color: rgba(0, 0, 0, 0.8);
221
+ font-size: 13px;
222
+ text-align: center;
223
+ }
224
+
225
+ .udoc-viewer-root .udoc-zoom-dropdown__input:focus {
226
+ outline: none;
227
+ }
228
+
229
+ .udoc-viewer-root .udoc-zoom-dropdown__chevron {
230
+ display: flex;
231
+ align-items: center;
232
+ justify-content: center;
233
+ padding: 2px 2px;
234
+ border: none;
235
+ border-left: 1px solid rgba(0, 0, 0, 0.1);
236
+ border-radius: 0 4px 4px 0;
237
+ background: transparent;
238
+ color: rgba(0, 0, 0, 0.5);
239
+ cursor: pointer;
240
+ }
241
+
242
+ .udoc-viewer-root .udoc-zoom-dropdown__chevron:hover {
243
+ background: rgba(0, 0, 0, 0.08);
244
+ color: rgba(0, 0, 0, 0.7);
245
+ }
246
+
247
+ .udoc-viewer-root .udoc-zoom-dropdown__chevron--active {
248
+ background: rgba(0, 0, 0, 0.12);
249
+ }
250
+
251
+ .udoc-viewer-root .udoc-zoom-dropdown__chevron svg {
252
+ width: 14px;
253
+ height: 14px;
254
+ }
255
+
256
+ .udoc-viewer-root .udoc-zoom-dropdown__menu {
257
+ position: absolute;
258
+ bottom: calc(100% + 8px);
259
+ left: 50%;
260
+ transform: translateX(-50%);
261
+ padding: 6px;
262
+ background: #fff;
263
+ border-radius: 8px;
264
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
265
+ min-width: 100px;
266
+ }
267
+
268
+ .udoc-viewer-root .udoc-zoom-dropdown__section {
269
+ display: flex;
270
+ flex-direction: column;
271
+ }
272
+
273
+ .udoc-viewer-root .udoc-zoom-dropdown__divider {
274
+ height: 1px;
275
+ background: rgba(0, 0, 0, 0.1);
276
+ margin: 6px 0;
277
+ }
278
+
279
+ .udoc-viewer-root .udoc-zoom-dropdown__item {
280
+ display: block;
281
+ width: 100%;
282
+ padding: 6px 10px;
283
+ border: none;
284
+ border-radius: 4px;
285
+ background: transparent;
286
+ color: rgba(0, 0, 0, 0.8);
287
+ font-size: 13px;
288
+ text-align: left;
289
+ cursor: pointer;
290
+ white-space: nowrap;
291
+ }
292
+
293
+ .udoc-viewer-root .udoc-zoom-dropdown__item:hover {
294
+ background: rgba(0, 0, 0, 0.08);
295
+ }
296
+
297
+ .udoc-viewer-root .udoc-zoom-dropdown__item--active {
298
+ background: rgba(0, 102, 204, 0.15);
299
+ color: #0066cc;
300
+ }
301
+
302
+ .udoc-viewer-root .udoc-zoom-dropdown__item--active:hover {
303
+ background: rgba(0, 102, 204, 0.2);
304
+ }
305
+
306
+ /* View Mode Menu */
307
+ .udoc-viewer-root .udoc-view-mode-menu {
308
+ position: relative;
309
+ height: 28px;
310
+ display: flex;
311
+ align-items: center;
312
+ }
313
+
314
+ .udoc-viewer-root .udoc-view-mode-menu__dropdown {
315
+ position: absolute;
316
+ bottom: calc(100% + 8px);
317
+ left: 0;
318
+ padding: 8px;
319
+ background: #fff;
320
+ border-radius: 8px;
321
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
322
+ min-width: 160px;
323
+ }
324
+
325
+ .udoc-viewer-root .udoc-view-mode-menu__section {
326
+ margin-bottom: 8px;
327
+ }
328
+
329
+ .udoc-viewer-root .udoc-view-mode-menu__section:last-child {
330
+ margin-bottom: 0;
331
+ }
332
+
333
+ .udoc-viewer-root .udoc-view-mode-menu__title {
334
+ font-size: 10px;
335
+ font-weight: 600;
336
+ text-transform: uppercase;
337
+ color: rgba(0, 0, 0, 0.5);
338
+ margin-bottom: 4px;
339
+ padding: 0 4px;
340
+ }
341
+
342
+ .udoc-viewer-root .udoc-view-mode-menu__options {
343
+ display: flex;
344
+ gap: 2px;
345
+ }
346
+
347
+ .udoc-viewer-root .udoc-view-mode-menu__option {
348
+ display: flex;
349
+ align-items: center;
350
+ justify-content: center;
351
+ width: 32px;
352
+ height: 32px;
353
+ padding: 0;
354
+ border: none;
355
+ border-radius: 4px;
356
+ background: transparent;
357
+ color: rgba(0, 0, 0, 0.6);
358
+ cursor: pointer;
359
+ }
360
+
361
+ .udoc-viewer-root .udoc-view-mode-menu__option:hover {
362
+ background: rgba(0, 0, 0, 0.08);
363
+ }
364
+
365
+ .udoc-viewer-root .udoc-view-mode-menu__option--active {
366
+ background: rgba(0, 102, 204, 0.15);
367
+ color: #0066cc;
368
+ }
369
+
370
+ .udoc-viewer-root .udoc-view-mode-menu__option--active:hover {
371
+ background: rgba(0, 102, 204, 0.2);
372
+ }
373
+
374
+ .udoc-viewer-root .udoc-view-mode-menu__option--disabled {
375
+ color: rgba(0, 0, 0, 0.25);
376
+ cursor: default;
377
+ }
378
+
379
+ .udoc-viewer-root .udoc-view-mode-menu__option--disabled:hover {
380
+ background: transparent;
381
+ }
382
+
383
+ .udoc-viewer-root .udoc-view-mode-menu__option-icon {
384
+ display: flex;
385
+ align-items: center;
386
+ justify-content: center;
387
+ }
388
+
389
+ .udoc-viewer-root .udoc-view-mode-menu__option-icon svg {
390
+ width: 20px;
391
+ height: 20px;
392
+ }
393
+
394
+ /* Left Panel */
395
+ .udoc-viewer-root .udoc-left-panel {
396
+ position: relative;
397
+ display: flex;
398
+ width: 240px;
399
+ height: 100%;
400
+ background: #f5f5f5;
401
+ border-right: 1px solid #ddd;
402
+ transition: width 0.2s ease, opacity 0.2s ease;
403
+ }
404
+
405
+ .udoc-viewer-root .udoc-left-panel--closed {
406
+ width: 0;
407
+ overflow: hidden;
408
+ border-right: none;
409
+ }
410
+
411
+ .udoc-viewer-root .udoc-left-panel__tabs {
412
+ display: flex;
413
+ flex-direction: column;
414
+ width: 40px;
415
+ background: #e8e8e8;
416
+ border-right: 1px solid #ddd;
417
+ }
418
+
419
+ .udoc-viewer-root .udoc-left-panel__tab {
420
+ display: flex;
421
+ align-items: center;
422
+ justify-content: center;
423
+ width: 40px;
424
+ height: 40px;
425
+ padding: 0;
426
+ border: none;
427
+ background: transparent;
428
+ color: #666;
429
+ cursor: pointer;
430
+ }
431
+
432
+ .udoc-viewer-root .udoc-left-panel__tab:hover {
433
+ background: rgba(0, 0, 0, 0.08);
434
+ }
435
+
436
+ .udoc-viewer-root .udoc-left-panel__tab--active {
437
+ background: #f5f5f5;
438
+ color: #333;
439
+ border-right: 2px solid #0066cc;
440
+ }
441
+
442
+ .udoc-viewer-root .udoc-left-panel__tab svg {
443
+ width: 20px;
444
+ height: 20px;
445
+ }
446
+
447
+ .udoc-viewer-root .udoc-left-panel__content {
448
+ flex: 1;
449
+ overflow: hidden;
450
+ }
451
+
452
+ .udoc-viewer-root .udoc-left-panel__resize-handle {
453
+ position: absolute;
454
+ right: 0;
455
+ top: 0;
456
+ width: 4px;
457
+ height: 100%;
458
+ cursor: col-resize;
459
+ background: transparent;
460
+ z-index: 10;
461
+ }
462
+
463
+ .udoc-viewer-root .udoc-left-panel__resize-handle:hover,
464
+ .udoc-viewer-root .udoc-left-panel--resizing .udoc-left-panel__resize-handle {
465
+ background: rgba(0, 102, 204, 0.3);
466
+ }
467
+
468
+ .udoc-viewer-root .udoc-left-panel--resizing {
469
+ transition: none;
470
+ }
471
+
472
+ /* Thumbnail Panel */
473
+ .udoc-viewer-root .udoc-thumbnail-panel {
474
+ display: flex;
475
+ flex-direction: column;
476
+ gap: 12px;
477
+ padding: 12px;
478
+ height: 100%;
479
+ overflow-y: auto;
480
+ overflow-x: hidden;
481
+ }
482
+
483
+ .udoc-viewer-root .udoc-thumbnail-item {
484
+ display: flex;
485
+ flex-direction: column;
486
+ align-items: center;
487
+ gap: 4px;
488
+ padding: 8px;
489
+ border-radius: 4px;
490
+ cursor: pointer;
491
+ transition: background 0.15s ease;
492
+ flex-shrink: 0;
493
+ width: 100%;
494
+ box-sizing: border-box;
495
+ }
496
+
497
+ .udoc-viewer-root .udoc-thumbnail-item:hover {
498
+ background: rgba(0, 0, 0, 0.05);
499
+ }
500
+
501
+ .udoc-viewer-root .udoc-thumbnail-item--active {
502
+ background: rgba(0, 102, 204, 0.1);
503
+ outline: 2px solid #0066cc;
504
+ outline-offset: -2px;
505
+ }
506
+
507
+ .udoc-viewer-root .udoc-thumbnail-item__canvas {
508
+ display: block;
509
+ max-width: calc(100% - 16px);
510
+ background: white;
511
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
512
+ }
513
+
514
+ .udoc-viewer-root .udoc-thumbnail-item__label {
515
+ font-size: 11px;
516
+ color: #666;
517
+ text-align: center;
518
+ }
519
+
520
+ .udoc-viewer-root .udoc-thumbnail-item--active .udoc-thumbnail-item__label {
521
+ color: #0066cc;
522
+ font-weight: 500;
523
+ }
524
+
525
+ /* Outline Panel */
526
+ .udoc-viewer-root .udoc-outline-panel {
527
+ display: flex;
528
+ flex-direction: column;
529
+ height: 100%;
530
+ overflow-y: auto;
531
+ overflow-x: hidden;
532
+ padding: 8px 0;
533
+ }
534
+
535
+ .udoc-viewer-root .udoc-outline-panel__loading,
536
+ .udoc-viewer-root .udoc-outline-panel__empty {
537
+ padding: 16px;
538
+ color: #888;
539
+ font-size: 13px;
540
+ text-align: center;
541
+ }
542
+
543
+ .udoc-viewer-root .udoc-outline-item {
544
+ display: flex;
545
+ flex-direction: column;
546
+ }
547
+
548
+ .udoc-viewer-root .udoc-outline-item__header {
549
+ display: flex;
550
+ align-items: center;
551
+ padding: 6px 12px 6px 8px;
552
+ gap: 4px;
553
+ min-height: 28px;
554
+ }
555
+
556
+ .udoc-viewer-root .udoc-outline-item__header--clickable {
557
+ cursor: pointer;
558
+ }
559
+
560
+ .udoc-viewer-root .udoc-outline-item__header--clickable:hover {
561
+ background: rgba(0, 0, 0, 0.05);
562
+ }
563
+
564
+ .udoc-viewer-root .udoc-outline-item__header--active {
565
+ background: rgba(0, 102, 204, 0.1);
566
+ }
567
+
568
+ .udoc-viewer-root .udoc-outline-item__header--active .udoc-outline-item__title {
569
+ color: #0066cc;
570
+ font-weight: 500;
571
+ }
572
+
573
+ .udoc-viewer-root .udoc-outline-item__toggle {
574
+ display: flex;
575
+ align-items: center;
576
+ justify-content: center;
577
+ width: 16px;
578
+ height: 16px;
579
+ padding: 0;
580
+ border: none;
581
+ background: transparent;
582
+ color: #666;
583
+ cursor: pointer;
584
+ flex-shrink: 0;
585
+ transition: transform 0.15s ease;
586
+ }
587
+
588
+ .udoc-viewer-root .udoc-outline-item__toggle:hover {
589
+ color: #333;
590
+ }
591
+
592
+ .udoc-viewer-root .udoc-outline-item__toggle--expanded {
593
+ transform: rotate(90deg);
594
+ }
595
+
596
+ .udoc-viewer-root .udoc-outline-item__spacer {
597
+ width: 16px;
598
+ flex-shrink: 0;
599
+ }
600
+
601
+ .udoc-viewer-root .udoc-outline-item__title {
602
+ font-size: 13px;
603
+ color: #333;
604
+ overflow: hidden;
605
+ text-overflow: ellipsis;
606
+ white-space: nowrap;
607
+ flex: 1;
608
+ }
609
+
610
+ /* .udoc-outline-item__children: Indentation is handled via padding-left on header */
611
+
612
+ .udoc-viewer-root .udoc-toolbar {
613
+ display: flex;
614
+ align-items: center;
615
+ height: 40px;
616
+ padding: 0 8px;
617
+ background: #f5f5f5;
618
+ border-bottom: 1px solid #ddd;
619
+ }
620
+
621
+ .udoc-viewer-root .udoc-toolbar__left,
622
+ .udoc-viewer-root .udoc-toolbar__right {
623
+ display: flex;
624
+ align-items: center;
625
+ gap: 4px;
626
+ }
627
+
628
+ .udoc-viewer-root .udoc-toolbar__spacer {
629
+ flex: 1;
630
+ }
631
+
632
+ .udoc-viewer-root .udoc-toolbar__btn {
633
+ display: flex;
634
+ align-items: center;
635
+ justify-content: center;
636
+ width: 32px;
637
+ height: 32px;
638
+ padding: 0;
639
+ border: none;
640
+ border-radius: 4px;
641
+ background: transparent;
642
+ color: #555;
643
+ cursor: pointer;
644
+ }
645
+
646
+ .udoc-viewer-root .udoc-toolbar__btn:hover {
647
+ background: rgba(0, 0, 0, 0.08);
648
+ }
649
+
650
+ .udoc-viewer-root .udoc-toolbar__btn:active {
651
+ background: rgba(0, 0, 0, 0.12);
652
+ }
653
+
654
+ .udoc-viewer-root .udoc-toolbar__btn svg {
655
+ width: 20px;
656
+ height: 20px;
657
+ }
658
+
659
+ /* Right Panel */
660
+ .udoc-viewer-root .udoc-right-panel {
661
+ position: relative;
662
+ display: flex;
663
+ flex-direction: column;
664
+ width: 300px;
665
+ height: 100%;
666
+ background: #f5f5f5;
667
+ border-left: 1px solid #ddd;
668
+ transition: width 0.2s ease, opacity 0.2s ease;
669
+ }
670
+
671
+ .udoc-viewer-root .udoc-right-panel--closed {
672
+ width: 0;
673
+ overflow: hidden;
674
+ border-left: none;
675
+ }
676
+
677
+ .udoc-viewer-root .udoc-right-panel__resize-handle {
678
+ position: absolute;
679
+ left: 0;
680
+ top: 0;
681
+ width: 4px;
682
+ height: 100%;
683
+ cursor: col-resize;
684
+ background: transparent;
685
+ z-index: 10;
686
+ }
687
+
688
+ .udoc-viewer-root .udoc-right-panel__resize-handle:hover,
689
+ .udoc-viewer-root .udoc-right-panel--resizing .udoc-right-panel__resize-handle {
690
+ background: rgba(0, 102, 204, 0.3);
691
+ }
692
+
693
+ .udoc-viewer-root .udoc-right-panel--resizing {
694
+ transition: none;
695
+ }
696
+
697
+ .udoc-viewer-root .udoc-right-panel__content {
698
+ flex: 1;
699
+ overflow: auto;
700
+ }
701
+
702
+ /* Annotation Layer */
703
+ .udoc-viewer-root .udoc-spread__annotation-layer {
704
+ position: absolute;
705
+ pointer-events: none;
706
+ z-index: 1;
707
+ }
708
+
709
+ /* Base annotation */
710
+ .udoc-viewer-root .udoc-annotation {
711
+ position: absolute;
712
+ box-sizing: border-box;
713
+ }
714
+
715
+ /* Link annotation */
716
+ .udoc-viewer-root .udoc-annotation--link {
717
+ pointer-events: auto;
718
+ cursor: pointer;
719
+ transition: background-color 0.15s ease;
720
+ }
721
+
722
+ .udoc-viewer-root .udoc-annotation--link:hover {
723
+ background-color: rgba(0, 102, 204, 0.15);
724
+ }
725
+
726
+ /* Highlight annotation */
727
+ .udoc-viewer-root .udoc-annotation--highlight {
728
+ pointer-events: none;
729
+ }
730
+
731
+ .udoc-viewer-root .udoc-annotation__quad {
732
+ mix-blend-mode: multiply;
733
+ }
734
+
735
+ /* Underline annotation */
736
+ .udoc-viewer-root .udoc-annotation--underline {
737
+ pointer-events: none;
738
+ }
739
+
740
+ /* StrikeOut annotation */
741
+ .udoc-viewer-root .udoc-annotation--strikeout {
742
+ pointer-events: none;
743
+ }
744
+
745
+ /* Squiggly annotation */
746
+ .udoc-viewer-root .udoc-annotation--squiggly {
747
+ pointer-events: none;
748
+ }
749
+
750
+ /* Text (sticky note) annotation */
751
+ .udoc-viewer-root .udoc-annotation--text {
752
+ pointer-events: auto;
753
+ cursor: pointer;
754
+ display: flex;
755
+ align-items: center;
756
+ justify-content: center;
757
+ transition: filter 0.15s ease;
758
+ }
759
+
760
+ .udoc-viewer-root .udoc-annotation--text:hover {
761
+ filter: brightness(1.1) drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3));
762
+ }
763
+
764
+ .udoc-viewer-root .udoc-annotation--text svg {
765
+ width: 100%;
766
+ height: 100%;
767
+ }
768
+
769
+ /* Annotation popup */
770
+ .udoc-viewer-root .udoc-annotation-popup {
771
+ position: absolute;
772
+ z-index: 100;
773
+ min-width: 200px;
774
+ max-width: 300px;
775
+ background: #ffffc0;
776
+ border: 1px solid #d4d4a0;
777
+ border-radius: 4px;
778
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
779
+ font-size: 12px;
780
+ color: #333;
781
+ pointer-events: auto;
782
+ }
783
+
784
+ .udoc-viewer-root .udoc-annotation-popup__header {
785
+ display: flex;
786
+ align-items: center;
787
+ justify-content: space-between;
788
+ padding: 6px 8px;
789
+ background: #f0f0c0;
790
+ border-bottom: 1px solid #d4d4a0;
791
+ border-radius: 4px 4px 0 0;
792
+ }
793
+
794
+ .udoc-viewer-root .udoc-annotation-popup__author {
795
+ font-weight: 600;
796
+ color: #555;
797
+ overflow: hidden;
798
+ text-overflow: ellipsis;
799
+ white-space: nowrap;
800
+ }
801
+
802
+ .udoc-viewer-root .udoc-annotation-popup__close {
803
+ width: 16px;
804
+ height: 16px;
805
+ border: none;
806
+ background: transparent;
807
+ cursor: pointer;
808
+ padding: 0;
809
+ display: flex;
810
+ align-items: center;
811
+ justify-content: center;
812
+ opacity: 0.6;
813
+ flex-shrink: 0;
814
+ margin-left: 8px;
815
+ }
816
+
817
+ .udoc-viewer-root .udoc-annotation-popup__close:hover {
818
+ opacity: 1;
819
+ }
820
+
821
+ .udoc-viewer-root .udoc-annotation-popup__close svg {
822
+ width: 12px;
823
+ height: 12px;
824
+ }
825
+
826
+ .udoc-viewer-root .udoc-annotation-popup__content {
827
+ padding: 8px;
828
+ white-space: pre-wrap;
829
+ word-wrap: break-word;
830
+ max-height: 200px;
831
+ overflow-y: auto;
832
+ }
833
+
834
+ /* FreeText annotation */
835
+ .udoc-viewer-root .udoc-annotation--freetext {
836
+ pointer-events: auto;
837
+ overflow: hidden;
838
+ font-size: 12px;
839
+ padding: 2px;
840
+ }
841
+
842
+ /* Stamp annotation */
843
+ .udoc-viewer-root .udoc-annotation--stamp {
844
+ pointer-events: none;
845
+ }
846
+
847
+ /* Caret annotation - rendered via SVG, minimal styling needed */
848
+ .udoc-viewer-root .udoc-annotation--caret {
849
+ pointer-events: none;
850
+ }
851
+
852
+ /* Shape annotations - rendered via SVG overlay */
853
+ .udoc-viewer-root .udoc-annotation--line,
854
+ .udoc-viewer-root .udoc-annotation--square,
855
+ .udoc-viewer-root .udoc-annotation--circle,
856
+ .udoc-viewer-root .udoc-annotation--polygon,
857
+ .udoc-viewer-root .udoc-annotation--polyLine,
858
+ .udoc-viewer-root .udoc-annotation--ink {
859
+ pointer-events: none;
860
+ }
861
+
862
+ /* Redact annotation */
863
+ .udoc-viewer-root .udoc-annotation--redact {
864
+ pointer-events: none;
865
+ }
866
+
867
+ /* Annotation Panel */
868
+ .udoc-viewer-root .udoc-annotation-panel {
869
+ display: flex;
870
+ flex-direction: column;
871
+ height: 100%;
872
+ }
873
+
874
+ .udoc-viewer-root .udoc-annotation-panel__placeholder {
875
+ display: flex;
876
+ flex-direction: column;
877
+ align-items: center;
878
+ justify-content: center;
879
+ height: 100%;
880
+ padding: 32px 16px;
881
+ text-align: center;
882
+ color: #888;
883
+ }
884
+
885
+ .udoc-viewer-root .udoc-annotation-panel__placeholder-icon {
886
+ color: #ccc;
887
+ margin-bottom: 12px;
888
+ }
889
+
890
+ .udoc-viewer-root .udoc-annotation-panel__placeholder-icon svg {
891
+ width: 48px;
892
+ height: 48px;
893
+ }
894
+
895
+ .udoc-viewer-root .udoc-annotation-panel__placeholder-title {
896
+ font-size: 14px;
897
+ font-weight: 500;
898
+ color: #666;
899
+ margin-bottom: 4px;
900
+ }
901
+
902
+ .udoc-viewer-root .udoc-annotation-panel__placeholder-message {
903
+ font-size: 12px;
904
+ color: #999;
905
+ }
906
+
907
+ .udoc-viewer-root .udoc-annotation-panel__loading {
908
+ display: flex;
909
+ align-items: center;
910
+ justify-content: center;
911
+ height: 100%;
912
+ color: #888;
913
+ font-size: 13px;
914
+ }
915
+
916
+ /* Comments List */
917
+ .udoc-viewer-root .udoc-comments-list {
918
+ display: flex;
919
+ flex-direction: column;
920
+ }
921
+
922
+ /* Page Group */
923
+ .udoc-viewer-root .udoc-comments-page-group {
924
+ border-bottom: 1px solid #e0e0e0;
925
+ }
926
+
927
+ .udoc-viewer-root .udoc-comments-page-group:last-child {
928
+ border-bottom: none;
929
+ }
930
+
931
+ .udoc-viewer-root .udoc-comments-page-header {
932
+ display: flex;
933
+ align-items: center;
934
+ gap: 6px;
935
+ padding: 10px 12px;
936
+ cursor: pointer;
937
+ user-select: none;
938
+ background: #f0f0f0;
939
+ transition: background 0.15s;
940
+ }
941
+
942
+ .udoc-viewer-root .udoc-comments-page-header:hover {
943
+ background: #e8e8e8;
944
+ }
945
+
946
+ .udoc-viewer-root .udoc-comments-page-header svg {
947
+ width: 16px;
948
+ height: 16px;
949
+ color: #666;
950
+ flex-shrink: 0;
951
+ transition: transform 0.2s ease;
952
+ }
953
+
954
+ .udoc-viewer-root .udoc-comments-page-header span {
955
+ font-size: 13px;
956
+ font-weight: 500;
957
+ color: #333;
958
+ }
959
+
960
+ .udoc-viewer-root .udoc-comments-page-count {
961
+ margin-left: auto;
962
+ padding: 2px 6px;
963
+ background: #ddd;
964
+ border-radius: 10px;
965
+ font-size: 11px;
966
+ font-weight: 500;
967
+ color: #666;
968
+ }
969
+
970
+ /* Collapsed state */
971
+ .udoc-viewer-root .udoc-comments-page-group--collapsed .udoc-comments-page-header svg {
972
+ transform: rotate(-90deg);
973
+ }
974
+
975
+ .udoc-viewer-root .udoc-comments-page-group--collapsed .udoc-comments-page-content {
976
+ display: none;
977
+ }
978
+
979
+ /* Page Content */
980
+ .udoc-viewer-root .udoc-comments-page-content {
981
+ display: flex;
982
+ flex-direction: column;
983
+ }
984
+
985
+ /* Comment Item */
986
+ .udoc-viewer-root .udoc-comment-item {
987
+ display: flex;
988
+ gap: 8px;
989
+ padding: 10px 12px;
990
+ cursor: pointer;
991
+ transition: background 0.15s;
992
+ border-bottom: 1px solid #eee;
993
+ }
994
+
995
+ .udoc-viewer-root .udoc-comment-item:last-child {
996
+ border-bottom: none;
997
+ }
998
+
999
+ .udoc-viewer-root .udoc-comment-item:hover {
1000
+ background: rgba(0, 102, 204, 0.05);
1001
+ }
1002
+
1003
+ /* Reply indentation */
1004
+ .udoc-viewer-root .udoc-comment-reply {
1005
+ background: #fafafa;
1006
+ }
1007
+
1008
+ .udoc-viewer-root .udoc-comment-depth-1 {
1009
+ padding-left: 28px;
1010
+ }
1011
+
1012
+ .udoc-viewer-root .udoc-comment-depth-2 {
1013
+ padding-left: 44px;
1014
+ }
1015
+
1016
+ .udoc-viewer-root .udoc-comment-depth-3 {
1017
+ padding-left: 60px;
1018
+ }
1019
+
1020
+ /* Comment Icon */
1021
+ .udoc-viewer-root .udoc-comment-icon {
1022
+ flex-shrink: 0;
1023
+ width: 20px;
1024
+ height: 20px;
1025
+ display: flex;
1026
+ align-items: center;
1027
+ justify-content: center;
1028
+ color: #888;
1029
+ }
1030
+
1031
+ .udoc-viewer-root .udoc-comment-icon svg {
1032
+ width: 16px;
1033
+ height: 16px;
1034
+ }
1035
+
1036
+ /* Comment Body */
1037
+ .udoc-viewer-root .udoc-comment-body {
1038
+ flex: 1;
1039
+ min-width: 0;
1040
+ display: flex;
1041
+ flex-direction: column;
1042
+ gap: 4px;
1043
+ }
1044
+
1045
+ /* Comment Header */
1046
+ .udoc-viewer-root .udoc-comment-header {
1047
+ display: flex;
1048
+ align-items: center;
1049
+ gap: 8px;
1050
+ flex-wrap: wrap;
1051
+ }
1052
+
1053
+ .udoc-viewer-root .udoc-comment-author {
1054
+ font-size: 12px;
1055
+ font-weight: 600;
1056
+ color: #333;
1057
+ }
1058
+
1059
+ /* Status Badge */
1060
+ .udoc-viewer-root .udoc-comment-status {
1061
+ padding: 1px 6px;
1062
+ border-radius: 8px;
1063
+ font-size: 10px;
1064
+ font-weight: 500;
1065
+ text-transform: capitalize;
1066
+ }
1067
+
1068
+ .udoc-viewer-root .udoc-comment-status--accepted {
1069
+ background: #d4edda;
1070
+ color: #155724;
1071
+ }
1072
+
1073
+ .udoc-viewer-root .udoc-comment-status--rejected {
1074
+ background: #f8d7da;
1075
+ color: #721c24;
1076
+ }
1077
+
1078
+ .udoc-viewer-root .udoc-comment-status--completed {
1079
+ background: #cce5ff;
1080
+ color: #004085;
1081
+ }
1082
+
1083
+ .udoc-viewer-root .udoc-comment-status--cancelled {
1084
+ background: #e2e3e5;
1085
+ color: #383d41;
1086
+ }
1087
+
1088
+ .udoc-viewer-root .udoc-comment-status--marked {
1089
+ background: #fff3cd;
1090
+ color: #856404;
1091
+ }
1092
+
1093
+ .udoc-viewer-root .udoc-comment-status--unmarked {
1094
+ background: #e2e3e5;
1095
+ color: #383d41;
1096
+ }
1097
+
1098
+ /* Comment Contents */
1099
+ .udoc-viewer-root .udoc-comment-contents {
1100
+ font-size: 12px;
1101
+ color: #555;
1102
+ line-height: 1.4;
1103
+ white-space: pre-wrap;
1104
+ word-wrap: break-word;
1105
+ overflow: hidden;
1106
+ display: -webkit-box;
1107
+ -webkit-line-clamp: 3;
1108
+ line-clamp: 3;
1109
+ -webkit-box-orient: vertical;
1110
+ }
1111
+
1112
+ /* Reply Toggle */
1113
+ .udoc-viewer-root .udoc-comment-toggle {
1114
+ display: inline-flex;
1115
+ align-items: center;
1116
+ gap: 4px;
1117
+ padding: 4px 8px;
1118
+ margin-top: 4px;
1119
+ border: none;
1120
+ border-radius: 4px;
1121
+ background: transparent;
1122
+ color: #0066cc;
1123
+ font-size: 11px;
1124
+ cursor: pointer;
1125
+ transition: background 0.15s;
1126
+ }
1127
+
1128
+ .udoc-viewer-root .udoc-comment-toggle:hover {
1129
+ background: rgba(0, 102, 204, 0.1);
1130
+ }
1131
+
1132
+ .udoc-viewer-root .udoc-comment-toggle svg {
1133
+ width: 12px;
1134
+ height: 12px;
1135
+ transition: transform 0.2s ease;
1136
+ }
1137
+
1138
+ .udoc-viewer-root .udoc-comment-toggle--expanded svg {
1139
+ transform: rotate(90deg);
1140
+ }
1141
+
1142
+ /* Replies Container */
1143
+ .udoc-viewer-root .udoc-comment-replies {
1144
+ display: flex;
1145
+ flex-direction: column;
1146
+ }
1147
+
1148
+ .udoc-viewer-root .udoc-comment-replies--collapsed {
1149
+ display: none;
1150
+ }
1151
+
1152
+ /* Annotation Highlight Animation */
1153
+ @keyframes udoc-annotation-pulse {
1154
+ 0% {
1155
+ box-shadow: 0 0 0 0 rgba(0, 102, 204, 0.7);
1156
+ }
1157
+ 50% {
1158
+ box-shadow: 0 0 0 8px rgba(0, 102, 204, 0.3);
1159
+ }
1160
+ 100% {
1161
+ box-shadow: 0 0 0 12px rgba(0, 102, 204, 0);
1162
+ }
1163
+ }
1164
+
1165
+ .udoc-viewer-root .udoc-annotation--highlighted {
1166
+ animation: udoc-annotation-pulse 1.5s ease-out;
1167
+ outline: 2px solid #0066cc;
1168
+ outline-offset: 2px;
1169
+ border-radius: 2px;
1170
+ z-index: 10;
1171
+ }
1172
+
1173
+ /* Highlight indicator for full-layer markup annotations */
1174
+ .udoc-viewer-root .udoc-annotation-highlight-indicator {
1175
+ position: absolute;
1176
+ box-sizing: border-box;
1177
+ pointer-events: none;
1178
+ animation: udoc-annotation-pulse 1.5s ease-out;
1179
+ outline: 2px solid #0066cc;
1180
+ outline-offset: 2px;
1181
+ border-radius: 2px;
1182
+ z-index: 10;
1183
+ }
1184
+
1185
+ /* Mobile Panel Overlay */
1186
+ .udoc-viewer-root .udoc-panel-overlay {
1187
+ display: none;
1188
+ position: absolute;
1189
+ top: 0;
1190
+ left: 0;
1191
+ right: 0;
1192
+ bottom: 0;
1193
+ background: rgba(0, 0, 0, 0.3);
1194
+ z-index: 140;
1195
+ }
1196
+
1197
+ /* ===== Responsive: Small Mobile (≤480px) ===== */
1198
+ @container udoc-viewer (max-width: 480px) {
1199
+ /* Make body-slot a positioning context */
1200
+ .udoc-viewer-root .body-slot {
1201
+ position: relative;
1202
+ }
1203
+
1204
+ /* Collapse panels to slide-out drawers */
1205
+ .udoc-viewer-root .udoc-left-panel {
1206
+ position: absolute;
1207
+ top: 0;
1208
+ left: 0;
1209
+ bottom: 0;
1210
+ width: 280px !important;
1211
+ z-index: 150;
1212
+ box-shadow: 4px 0 20px rgba(0, 0, 0, 0.15);
1213
+ transform: translateX(-100%);
1214
+ transition: transform 0.3s ease;
1215
+ }
1216
+
1217
+ .udoc-viewer-root .udoc-left-panel:not(.udoc-left-panel--closed) {
1218
+ transform: translateX(0);
1219
+ }
1220
+
1221
+ .udoc-viewer-root .udoc-left-panel--closed {
1222
+ width: 280px !important;
1223
+ transform: translateX(-100%);
1224
+ }
1225
+
1226
+ .udoc-viewer-root .udoc-right-panel {
1227
+ position: absolute;
1228
+ top: 0;
1229
+ right: 0;
1230
+ bottom: 0;
1231
+ width: 280px !important;
1232
+ z-index: 150;
1233
+ box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);
1234
+ transform: translateX(100%);
1235
+ transition: transform 0.3s ease;
1236
+ }
1237
+
1238
+ .udoc-viewer-root .udoc-right-panel:not(.udoc-right-panel--closed) {
1239
+ transform: translateX(0);
1240
+ }
1241
+
1242
+ .udoc-viewer-root .udoc-right-panel--closed {
1243
+ width: 280px !important;
1244
+ transform: translateX(100%);
1245
+ }
1246
+
1247
+ /* Show overlay when panel is open */
1248
+ .udoc-viewer-root.udoc-panel-open .udoc-panel-overlay {
1249
+ display: block;
1250
+ }
1251
+
1252
+ /* Convert floating bar to full-width bottom toolbar */
1253
+ .udoc-viewer-root .udoc-floating-toolbar {
1254
+ position: absolute;
1255
+ bottom: 0;
1256
+ left: 0;
1257
+ right: 0;
1258
+ transform: none;
1259
+ border-radius: 0;
1260
+ box-sizing: border-box;
1261
+ height: 40px;
1262
+ padding: 0 12px;
1263
+ gap: 8px;
1264
+ max-width: none;
1265
+ justify-content: center;
1266
+ box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
1267
+ }
1268
+
1269
+ /* Viewport scroll area needs padding for bottom toolbar */
1270
+ .udoc-viewer-root .udoc-viewport__scroll {
1271
+ padding-bottom: 40px;
1272
+ }
1273
+
1274
+ /* Hide fullscreen button on mobile */
1275
+ .udoc-viewer-root .udoc-toolbar__btn--fullscreen {
1276
+ display: none;
1277
+ }
1278
+
1279
+ /* Touch targets for mobile */
1280
+ .udoc-viewer-root .udoc-floating-toolbar__btn {
1281
+ padding: 6px;
1282
+ min-width: 28px;
1283
+ min-height: 28px;
1284
+ }
1285
+
1286
+ .udoc-viewer-root .udoc-floating-toolbar__btn svg {
1287
+ width: 18px;
1288
+ height: 18px;
1289
+ }
1290
+
1291
+ /* Larger panel tab buttons for touch */
1292
+ .udoc-viewer-root .udoc-left-panel__tabs {
1293
+ width: 44px;
1294
+ padding: 8px 0;
1295
+ }
1296
+
1297
+ .udoc-viewer-root .udoc-left-panel__tab {
1298
+ width: 44px;
1299
+ height: 44px;
1300
+ }
1301
+
1302
+ .udoc-viewer-root .udoc-left-panel__tab svg {
1303
+ width: 22px;
1304
+ height: 22px;
1305
+ }
1306
+
1307
+ /* Toolbar adjustments */
1308
+ .udoc-viewer-root .udoc-toolbar {
1309
+ padding: 0 4px;
1310
+ gap: 4px;
1311
+ }
1312
+
1313
+ .udoc-viewer-root .udoc-toolbar__btn {
1314
+ padding: 8px;
1315
+ }
1316
+
1317
+ /* View mode menu - right align */
1318
+ .udoc-viewer-root .udoc-view-mode-menu__dropdown {
1319
+ left: auto;
1320
+ right: 0;
1321
+ }
1322
+
1323
+ .udoc-viewer-root .udoc-zoom-dropdown__item {
1324
+ padding: 12px 16px;
1325
+ }
1326
+
1327
+ .udoc-viewer-root .udoc-view-mode-menu__option {
1328
+ width: 36px;
1329
+ height: 36px;
1330
+ }
1331
+ }